Giới Thiệu Lập Trình Kiểu Dữ Liệu Cơ Bản
TS. Lê Nguyên Khôi Trường Đại học Công nghệ, ĐHQGHN
Nội Dung
(cid:1) Kiểu dữ liệu cơ bản (cid:1) Phép toán (cid:1) Biến số (cid:1) Hằng số (cid:1) Hàm số toán học
1
Giới Thiệu Lập Trình
Kiểu Số Nguyên Trong C++
(cid:1) Khi sử dụng kiểu dữ liệu, ví dụ int, cần biết
(cid:1) Kiểu dữ liệu int biểu diễn số nguyên
miền giá trị biểu diễn được
(cid:1) Có ảnh hưởng gì không?
2
Giới Thiệu Lập Trình
từ -2.147.483.648 đến +2.147.483.647
Tên Lửa Đẩy Ariane 5
(cid:1) Cơ quan Vũ trụ châu Âu phóng tên lửa đẩy
(cid:1) Ariane 5 dùng lại mã của hệ thống điều khiển
ngày 04/06/1996, trị giá 7 tỷ đô la Mỹ
(cid:1) Tốc độ A5 lớn hơn A4, nhưng khi thiết kế không kiểm tra miền dữ liệu biểu diễn
(cid:1) Khi A5 đạt tới tốc độ nhất định, xảy ra lỗi tràn
đẩy của Ariane 4
(cid:1) A5 bị mất điều khiển, sau đó gây nổ
3
Giới Thiệu Lập Trình
bộ nhớ, bộ xử lý tắt
Hệ Thống Số
(cid:1) Số nguyên dương
Cơ số 10 (3 chữ số) (cid:1)(cid:2)(cid:1) (cid:1)(cid:2) (cid:5)
(cid:1)(cid:2)(cid:3) (cid:1)(cid:2)(cid:2) (cid:4)
(cid:1)(cid:2)(cid:2) (cid:1) (cid:3) = (cid:4) ∗ (cid:1)(cid:2)(cid:2) + (cid:5) ∗ (cid:1)(cid:2) + ((cid:3) ∗ (cid:1))
Cơ số 2 (3 chữ số) (cid:3)(cid:2) (cid:1) (cid:1)
(cid:3)(cid:3) (cid:11) (cid:1)
(cid:3)(cid:1) (cid:3) (cid:2)
= (cid:1) ∗ (cid:11) + (cid:2) ∗ (cid:3) + ((cid:1) ∗ (cid:1))
(cid:1) Số nguyên âm: sử dụng bit trái ngoài cùng để biểu diễn
(cid:4)(cid:5)(cid:3) = (cid:4) ∗ −(cid:1)(cid:2)(cid:2) + (cid:5) ∗ (cid:1)(cid:2) + ((cid:3) ∗ (cid:1)) = −(cid:3)(cid:11)(cid:13) (cid:1)(cid:2)(cid:1) = (cid:1) ∗ −(cid:11) + (cid:2) ∗ (cid:3) + ((cid:1) ∗ (cid:1)) = −(cid:4)
4
Giới Thiệu Lập Trình
Kiểu Số Nguyên char
(cid:1) Trong C++ kiểu dữ liệu char là kiểu nhỏ nhất (cid:1) Sử dụng 1 byte bộ nhớ (cid:1) 1 byte trong máy tính gồm 8 bit (cid:1) Như vậy, khoảng biểu diễn từ -128 đến +127
−2(cid:23) −128
2(cid:24) 64
2(cid:25) 32
2(cid:26) 16
2(cid:27) 8
2(cid:17) 4
2(cid:20) 2
2(cid:21) 1
(cid:1) 10000000(cid:17) = −128(cid:20)(cid:21) và 01111111(cid:17) = 127(cid:20)(cid:21) (cid:1) Khoảng biểu diễn từ −2(cid:23) đến +2(cid:23) − 1
5
Giới Thiệu Lập Trình
Kiểu Cơ Bản Trong C++ - Số Nguyên
Kiểu char Độ Lớn Miền Giá Trị 1 byte
short 2 byte
int 4 byte
6
Giới Thiệu Lập Trình
-128 đến +127 (−2(cid:23), +2(cid:23) − 1) -32.768 đến +32.767 (−2(cid:20)(cid:25), +2(cid:20)(cid:25) − 1) -2.147.483.648 đến +2.147.483.647 (−2(cid:27)(cid:20), +2(cid:27)(cid:20) − 1)
Kiểu Cơ Bản Trong C++ - Số Thực
Kiểu float Độ Lớn Miền Giá Trị 4 byte (−10(cid:27) , +10(cid:27) )
double 8 byte (−10(cid:27)(cid:21) , +10(cid:27)(cid:21) )
10 byte (−10(cid:26)!(cid:27)(cid:17), +10(cid:26)!(cid:27)(cid:17))
7
Giới Thiệu Lập Trình
long double
Phép Toán Số Học Trong C++ kiểu của toán hạng, xác định phép toán tương ứng
Cộng
Áp Dụng
+
số nguyên & số thực
Trừ
-
số nguyên & số thực
Nhân
*
số nguyên & số thực
Chia
/
số nguyên & số thực
chỉ số nguyên
Phần dư
%
8
Giới Thiệu Lập Trình
Phép Toán Toán Tử Ví Dụ a + b 1 + 2 1.1 + 2.2 a - b 1 – 2 1.1 – 2.2 a * b 1 * 2 1.1 * 2.2 a / b 1 / 2 1.1 / 2.2 a % b 1 % 2
Phép Chia Số Học Trong C++
(cid:1) Chia nguyên: cả hai toán hạng là số nguyên (cid:1) Chia thực: một trong hai toán hạng là số thực
main()
i = 1, j = 2, k; f = 1.0, g = 2.0, h;
1 int 2 { 3 int 4 double 5 k = i / j; // chia nguyên k = 0 6 k = j / i; // chia nguyên k = 2 7 h = f / g; // chia thực h = 0.5 8 h = i / g; // chia thực h = 0.5 9 h = f / j; // chia thực h = 0.5
10 return 0; 11 }
9
Giới Thiệu Lập Trình
Biến Số - Đặc Tính
(cid:1) Để sử dụng hiệu quả kết quả của các phép
(cid:1) Biến số dùng để lưu giá trị thuộc một kiểu dữ
toán, cần lưu kết quả sau khi tính toán vào các biến số
(cid:1) Mỗi biến số có 03 thuộc tính: tên, kiểu, giá trị (cid:1) Để sử dụng biến số, phải đặt tên hợp lệ bằng
liệu nhất định, ví dụ: int, double
(cid:1) Phải khai báo biến số trước khi sử dụng
(cid:1) Nếu không trình biên dịch sẽ báo lỗi chưa khai báo
error: … was not declared in this scope
10
Giới Thiệu Lập Trình
cách khai báo biến số
Biến Số - Khai Báo
(cid:1) Cú pháp: (cid:1) Ý nghĩa: tạo một biến số có tên là tênBiến để
tênBiến; kiểuDL
lưu dữ liệu kiểu kiểuDL
(cid:1) Ví dụ: (cid:1) Ý nghĩa : khai báo biến số nguyên x kiểu int
(cid:1) Chú ý: ngay sau khai báo, biến số đã có giá trị!
(cid:1) sử dụng mệnh lệnh cout << in ra giá trị biến (cid:1) Lưu ý: khi nào sử dụng biến số mới khai báo
11
Giới Thiệu Lập Trình
int x;
Biến Số - Phép Gán
(cid:1) Cú pháp:
(cid:1) Ý nghĩa: lưu giáTrị hoặc kết quả của biểuThức
tênBiến = giáTrị; tênBiến = biểuThức;
(cid:1) Ví dụ:
vào biến số có tên là tênBiến
(cid:1) Chú ý: bên trái của phép gán (dấu =) là giá trị
x = 24; x = (x * 24) / y;
12
Giới Thiệu Lập Trình
trái (gt-T), bên phải là giá trị phải (gt-P) (cid:1) x có thể vừa là gt-T và gt-P trong cùng một phép gán
Biến Số - Khởi Tạo (Khai Báo & Gán)
(cid:1) Cú pháp:
(cid:1) Ý nghĩa: tạo một biến số có tên là tênBiến để
kiểuDL kiểuDL tênBiến = giáTrị; tênBiến = biểuThức;
(cid:1) Ví dụ:
lưu dữ liệu kiểu kiểuDL, sau đó lưu giáTrị hoặc kết quả của biểuThức vào biến số đó
(cid:1) Chú ý: đây là phong cách lập trình tốt, do khi chỉ khai báo, biến vẫn có một giá trị nào đó
int x = 24; int x = (x * 24) / y;
int x; x = x + 1;
int x; cout << x;
13
Giới Thiệu Lập Trình
Biến Số - Quy Tắc Đặt Tên
(cid:1) Tên biến số dùng để định danh (cid:1) Bắt đầu bằng chữ cái hoặc dấu gạch chân “_” (cid:1) Tiếp đến là chữ cái, chữ số, dấu gạch chân (cid:1) Không có dấu cách “ “ trong tên biến số (cid:1) C++ phân biệt chữ hoa và chữ thường (cid:1) Tên biến số không được trùng với từ khóa C++
(cid:1) Ví dụ: i, k62, X, x, soPT, soThu1, soThu2 ,
(cid:1) Chú ý: tên biến số nên gợi nghĩa và ngắn gọn
14
Giới Thiệu Lập Trình
tong, hieu
Hằng Số
(cid:1) Biến số: giá trị có thể thay đổi trong quá trình
(cid:1) Hằng số: giá trị không được phép thay đổi như
chạy chương trình
(cid:1) Ví dụ: số ngày trong một tuần, số năm trong
biến số, nếu thay đổi, dịch báo lỗi
(cid:1) Hằng số phải có giá trị ngay khi khai báo và sử
một tháng, tốc độ ánh sáng, số pi, số e
dụng từ khóa const
15
Giới Thiệu Lập Trình
const double PI = 3.14159; const double SOL = 1.079e+9;
Phép Gán Trong C++
(cid:1) Cú pháp:
(cid:1) Ví dụ:
(cid:1) Thực hiện xác định gt-P của phép gán (tính
tênBiến = giáTrị; tênBiến = biểuThức; x = 24; x = (x * 24) / y;
(cid:1) Chú ý:
(cid:1) gt-T của phép gán phải là một biến số (cid:1) Kiểu dữ liệu của gt-P phải giống kiểu dữ liệu gt-T
16
Giới Thiệu Lập Trình
toán giá trị của biểuThức) sau đó gán giá trị đó cho gt-T của phép gán
Chuyển Đổi Kiểu Dữ Liệu Trong C++
(cid:1) Giá trị thuộc một kiểu dữ liệu có thể được
(cid:1) Ví dụ: 1 → 1.0 hoặc 1.0 → 1 (cid:1) 2 cách:
chuyển sang giá trị thuộc một kiểu dữ liệu khác
(cid:1) Tự động bởi C++ int x = 1.0; double y = 1;
double y = 1.0; int x = y;
(cid:1) Chủ động bởi lập trình viên double y = 1.0; int x = (int)1.0; double y = (double)1; int x = (int)y; (cid:1) Lưu ý: chuyển đổi kiểu làm thay đổi độ chính
17
Giới Thiệu Lập Trình
xác của giá trị. Sử dụng cẩn thận
Kiểu Cơ Bản Trong C++ - Lô-gic
Kiểu bool Độ Lớn Miền Giá Trị 1 byte
(cid:1) Các phép toán so sánh và các phép toán lô-gic
đúng hoặc sai (true, false)
18
Giới Thiệu Lập Trình
trả về giá trị kiểu lô-gic.
Phép Toán So Sánh Trong C++
Kết quả true
<
true
<=
Nhỏ hơn hoặc bằng
false
Lớn hơn
>
false
>=
Lớn hơn hoặc bằng
false
Bằng
==
true
!=
Không bằng (khác)
19
Giới Thiệu Lập Trình
Phép Toán Toán Tử Ví Dụ a < b Nhỏ hơn 1 < 2 a <= b 1 <= 2 a > b 1 > 2 a >= b 1 >= 2 a == b 1 == 2 a != b 1 != 2
Phép Toán Lô-gic Trong C++
Và
Kết quả true
&&
Hoặc
||
Phủ định
!
20
Giới Thiệu Lập Trình
Phép Toán Toán Tử Ví Dụ a && b true && true a || b false || false false !a false !true
Bảng Lô-gic (Toán Tử Lười)
a
b
a && b
a
b
a || b
false
false false
false
false false false true true false
false false
false true true false
true true
true
true
true
true
true
true
int a = 0; bool b; b = (false) && (1/a); cout << b; b = (true) || (1/a); cout << b;
21
Giới Thiệu Lập Trình
Độ Ưu Tiên Các Phép Toán
(cid:1) Xác định thứ tự để tính giá trị biểu thức
Độ Ưu Tiên Cao nhất
Toán Tử ++, --, ! *, /, % +, - <, <=, >, >= ==, != && || =, +=, -=, *=, /=, %=
Thấp nhất
(cid:1) Sử dụng cặp dấu ngoặc () để dễ đọc
22
Giới Thiệu Lập Trình
Hàm Số Toán Học Trong C++
(cid:1) Nhiều hàm số toán học được định nghĩa sẵn (cid:1) Ví dụ: khai căn (sqrt), số mũ (pow), trị tuyệt
(cid:1) Để sử dụng các hàm toán học cần tải các thư
đối (abs)
viện tương ứng
// x = 3.0 // y = 9.0
#include
#include
double x = sqrt(9);
double y = pow(3, 2);
int z = rand();
23
Giới Thiệu Lập Trình
Hàm Số Toán Học Tự Định Nghĩa
(cid:1) Trong toán học có thể tự định nghĩa hàm số
, -, . = -(cid:27) + 2-(cid:17). + 3-.(cid:17) + 4.(cid:27)
(cid:1) Từ định nghĩa của hàm và giá trị của biến số,
(cid:1) Tên hàm, danh sách biến số (cid:1) Kiểu dữ liệu của hàm và biến số (cid:1) Định nghĩa của hàm dựa trên danh sách biến số (cid:1) Sử dụng câu lệnh return để trả về giá trị của hàm
sau khi tính
24
Giới Thiệu Lập Trình
có thể tính được giá trị của hàm , - = 2, . = 1 = -(cid:27) + 2-(cid:17). + 3-.(cid:17) + 4.(cid:27) = 26 (cid:1) Chuyển sang ngôn ngữ lập trình, cần có
Hàm Tự Định Nghĩa Trong C++
(cid:1) Tên hàm: f (cid:1) Danh sách biến số: a, b (cid:1) Kiểu dữ liệu: int (cid:1) Định nghĩa của hàm: (cid:1) Sử dụng câu lệnh return để trả về giá trị của
, -, . = -(cid:27) + 2-(cid:17). + 3-.(cid:17) + 4.(cid:27)
hàm sau khi tính
int f(int a, int b) {
return a^3 + 2*a^2*b + 3*a*b^2 + 4*b^3;
}
25
Giới Thiệu Lập Trình
Hàm Tự Định Nghĩa Trong C++
(cid:1) Lập trình viên có thể tự định nghĩa các hàm
(cid:1) Các hàm tự định nghĩa nằm ở: (cid:1) Ngoài và trước int main()
hữu ích, phục vụ mục đích cụ thể dựa trên yêu cầu bài toán
1 #include
2
3 int hieu(int a, int b)
4 {
5 return a – b;
6 }
7 int main() { … … … … … }
26
Giới Thiệu Lập Trình
Hàm Tự Định Nghĩa
1 #include
2
3 int hieu(int a, int b) { return a – b; }
4
5 int main()
6 {
7 int a, b;
8 std::cin >> a; std::cin >> b;
9 while (a != b)
10 { 11 if (a > b) a = hieu(a, b); 12 else b = hieu(b, a); 13 } 14 std::cout << "UCLN: " << a << std::endl; 15 return 0; 16 }
27
Giới Thiệu Lập Trình
Tự Đọc
(cid:1) Sử dụng cout <<, cin >>, cerr << (cid:1) In dữ liệu ở các định dạng khác nhau (cid:1) Sử dụng kiểu số nguyên char để quản lý các
(cid:1) Số nguyên trong các hệ cơ số khác (8, 16) (cid:1) Các toán tử gán phức hợp +=, -=, *=, /=, %= (cid:1) Các toán tử tăng/giảm một đơn vị ++, -- (cid:1) Các hàm toán học trong cmath, cstdlib (cid:1) Tự định nghĩa một số hàm đơn giản
28
Giới Thiệu Lập Trình
ký tự (xem bảng mã ASCII)
Tham Khảo
(cid:1) Làm quen với CodeBlock và các chức năng hỗ
(cid:1) Làm các bài tập trên codehub.now-ip.org (cid:1) Đọc sách:
(cid:1) Chương 2, Lập Trình Cơ Bản C++
29
Giới Thiệu Lập Trình
biên soạn của CodeBlock