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++

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