Bài giảng Tin học đại cương - Phần 3, Chương 2: Kiểu dữ liệu và biểu thức trong C
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học đại cương - Phần 3, Chương 2: Kiểu dữ liệu và biểu thức trong C", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_tin_hoc_dai_cuong_phan_3_chuong_2_kieu_du_lieu_va.pptx
Nội dung text: Bài giảng Tin học đại cương - Phần 3, Chương 2: Kiểu dữ liệu và biểu thức trong C
- Phần 3: Lập trình C Nội dung chính • Chương 1: Tổng quan về ngôn ngữ C • Chương 2: Kiểu dữ liệu và biểu thức trong C • Chương 3: Vào ra dữ liệu • Chương 4: Cấu trúc điều khiển • Chương 5: Mảng, con trỏ và xâu ký tự • Chương 6: Cấu trúc • Chương 7: Hàm • Chương 8: Tệp dữ liệu 01-Jan-16 50
- Chương 2: Kiểu dữ liệu và biểu thức trong C Nội dung chính 1. Các kiểu dữ liệu chuẩn trong C 2. Biểu thức trong C 3. Các toán tử trong C 4. Một số toán tử đặc trưng 01-Jan-16 51
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Các kiểu đơn Kiểu dữ liệu Ý nghĩa Kích thước Miền dữ liệu char Kí tự; 1 byte -128 127 Số nguyên có dấu int Số nguyên 2 byte -32.76832.767 short int có dấu long Số nguyên có dấu 4 byte -2,147,483,648 2,147,483,647 long int float Số thực dấu phẩy 4 byte 3.4E-38 động, 3.4E+38 độ chính xác đơn double Số thực dấu phẩy 8 byte 1.7E-308 động, 1.7E+308 độ chính xác kép 01-Jan-16 52
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Các kiểu kết hợp Với số nguyên, thêm từ khóa unsigned để chỉ ra số không dấu Kiểu dữ liệu Ý nghĩa Kích thước Miền dữ liệu unsigned char Số nguyên 1 byte 0 255 không dấu unsigned short Số nguyên 2 byte 065.535 unsigned không dấu unsigned int unsigned long Số nguyên 4 byte 0 4,294,967,295 unsigned long int không dấu long double Số thực dấu 10 byte 3.4E-4932 phẩy động, 1.1E+4932 void Là kiểu rỗng, kích thước không 01-Jan-16 53
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Biểu diễn hằng số Kiểu dữ liệu Ví dụ Ý nghĩa Số nguyên 123, -12 Số thập phân 012, 03777 Số bát phân 0x7F, 0x3fe15 Số hệ 16 39u 0267u, 0xFFu Số không dấu Số nguyên lớn 12L, 07723L 0xFFL, -10L 0xFFUL,0xFFLU Số thực 3.1415 -12.3, .327 10e-12, -15.3E12 3.1415F, -12.F 01-Jan-16 54
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Khai báo biến • Một biến phải được khai báo trước khi sử dụng • Cú pháp khai báo: KieuDuLieu TenBien; KieuDuLieu TenBien1, , TenBien_N; • Ví dụ: //Khai báo biến x là một số nguyên 2 byte có dấu int x; //Khai báo các biến y, z là các số thực 4 byte float y,z; //Sau khi khai báo, có thể sử dụng x = 3; y = x + 1; 01-Jan-16 55
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Khai báo biến • Sau khi khai báo, biến chưa có giá trị xác định. int n; m = 2 * n; m=? – Biến cần được gán giá trị trước khi sửdụng • C cho phép kết hợp khai báo và khởi tạo biến KieuDuLieu TenBien = GiaTriBanDau; KieuDuLieu Bien1=GiaTri1, BienN=Gia_TriN; • Ví dụ: //Khai báo biến nguyên a và khởi tạo gia tri bằng 3 int a = 3; //Khai báo biến thực x,y và khởi tạo giá tri bằng 5.0 và 7.6 float x = 5.0, y = 7.6; 01-Jan-16 56
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Khai báo hằng Dùng chỉ thị #define Không có dấu chấm phây (;) • Cú pháp: # define Tên_hằng Giá_trị • Ví dụ: #define MAX_SINH_VIEN 50 #define CNTT “Cong nghe thong tin” #define DIEM_CHUAN 23.5 01-Jan-16 57
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Khai báo hằng Dùng từ khóa const • Cú pháp: const Kiểu Tên_hằng = giá_trị; • Ví dụ: const int MAX_SINH_VIEN = 50; const char CNTT[20] = “Cong nghe thong tin”; const float DIEM_CHUAN = 23.5; 01-Jan-16 58
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.1 Các kiểu dữ liệu chuẩn trong C Khai báo hằng Chú ý: • Giá trị của các hằng phải được xác định ngay khi khai báo. • Trong chương trình, KHÔNG thể thay đổi được giá trị của hằng. • #define là chỉ thị tiền xử lý – Dễ đọc, dễ thay đổi – Dễ chuyển đổi giữa các nền tảng phần cứng hơn – Tốc độ nhanh hơn 01-Jan-16 59
- Chương 2: Kiểu dữ liệu và biểu thức trong C Nội dung chính 1. Các kiểu dữ liệu chuẩn trong C 2. Biểu thức trong C 3. Các toán tử trong C 4. Một số toán tử đặc trưng 01-Jan-16 60
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.2 Biểu thức trong C Mục đích sử dụng • Làm vế phải của lệnh gán. • Làm toán hạng trong các biểu thức khác. • Làm tham số thực sự trong lời gọi hàm. • Làm biểu thức kiểm tra trong các cấu trúc điều khiển – Cấu trúc lặp: for, while, do while. – Cấu trúc rẽ nhánh: if, switch. 01-Jan-16 61
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.2 Biểu thức trong C Tính toán giá trị biểu thức • Các toán hạng được thay thế bởi giá trị tương ứng • Các phép tính được thực hiên Ví dụ (alpha = 10, beta = 81) Biểu thức: alpha + sqrt(beta) : alpha + sqrt(81) : alpha + 9.0 : 10 + 9.0 : 19.0 01-Jan-16 62
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.2 Biểu thức trong C Các loại biểu thức • Biểu thứ số học • Biểu thức quan hệ • Biểu thức logic 01-Jan-16 63
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.2 Biểu thức trong C Biểu thức số học • Là biểu thức mà giá trị của nó là các đại lượng số học (số nguyên, số thực). – Sử dụng các toán tử là các phép toán số học (cộng, trừ, nhân, chia ), – Các toán hạng là các đại lượng số học (hằng số, biến, biểu thức khác). • Ví dụ: a, b, c là các biến thuộc kiểu số thực. 3 * 3.7 8 + 6/3 a + b – c 01-Jan-16 64
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.2 Biểu thức trong C Biểu thức quan hệ • Là những biểu thức có sử dụng các toán tử quan hệ như lớn hơn, nhỏ hơn, khác nhau • Chỉ có thể trả về một trong 2 giá trị logic Đúng (TRUE) hoặc Sai (FALSE) Ví dụ 01-Jan-16 65
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.2 Biểu thức trong C Biểu thức logic • Là biểu thức trả về các giá trị logic Đúng/Sai – Các phép toán logic gồm có AND VÀ logic, sử dụng toán tử && OR HOẶC logic, sử dụng toán tử || NOT PHỦ ĐỊNH, sử dụng toán tử ! – Biểu thức quan hệ là trường hợp riêng của biểu thức logic. • Ngôn ngữ C coi các giá trị nguyên khác 0 (2, 8, -5, ) là giá trị logic đúng (TRUE), giá trị 0 là giá trị logic sai (FALSE) – Biểu thức logic cũng trả về một giá trị số học 0/1 01-Jan-16 66
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.2 Biểu thức trong C Biểu thức logic →Ví dụ 5 * (12 > 6) →? 01-Jan-16 67
- Chương 2: Kiểu dữ liệu và biểu thức trong C Nội dung chính 1. Các kiểu dữ liệu chuẩn trong C 2. Biểu thức trong C 3. Các toán tử trong C 4. Một số toán tử đặc trưng 01-Jan-16 68
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Các toán tử chính Các toán tử cho phép tạo nên các biểu thức từ các hằng và biến • Toán tử số học • Toán tử quan hệ • Toán tử logic • Toán tử logic bit • Toán tử gán 01-Jan-16 69
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các phép tử trong C Các toán tử số học Toán Ý nghĩa Kiểu dữ liệu của Ví dụ tử toán hạng (int a = 12; float x=3.0) - Đảo dấu float, double, int, long, -12, -12.34, - a, - x (Số nguyên hoặc thực) - -a →12, a →? + Cộng float, double, int, long, 12 + -x → 9.0 - Trừ float, double, int, long, 12.0 - -3 →15.0 * Nhân float, double, int, long, 12 * 3.0 →36.0 (Số nguyên hoặc thực) 12 * 3 → 36 / Chia Nếu có ít nhất 1 toán 17.0/3.0 →5.666667 hạng là số thực 17/3.0 →5.666667 17.0/3 →5.666667 / Chia lấy nguyên Số nguyên int, long, 17/3→5 % Chia lấy dư Số nguyên: int, long, 17%3 →2 01-Jan-16 70
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Các toán tử quan hệ , =, ==, != • Dùng cho phép so sánh giá trị 2 toán hạng • Kết quả phép so sánh là một số nguyên 1 nếu quan hệ có kết quả là đúng, 0 nếu quan hệ có kết quả sai Ví dụ: 6 > 4 → Trả về giá trị 1 6 6) → 5 71
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Các toán tử logic Sử dụng để xây dựng các biểu thức logic • Biểu thức logic có kết quả logic đúng → Trả về giá trị 1 • Biểu thức logic có kết quả logic sai → Trả về giá trị 0 Các toán tử Và logic: Op1 && Op2 Hoặc logic: Op1 || Op2 Phủ định logic: ! Op Oprand: Toán hạng 01-Jan-16 72
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Các toán tử logic (tiếp) Và logic ( && ) : – Cho kết quả đúng (trả về giá trị 1) khi cả 2 toán hạng đều đúng (khác 0) – Ví dụ: 3 6 → 0 Hoặc logic ( || ): – Cho kết quả sai (trả về giá trị 0) chỉ khi cả 2 toán hạng đều sai (bằng 0) – Ví dụ: 4 || 5 6 → 0 Phủ định logic ( ! ): – Cho kết quả đúng (1) hoặc sai (0) khi toán hạng là sai (0) hoặc đúng (khác 0) – Ví dụ: ! 3 → 0; !(2 > 3) → 1; 01-Jan-16 73
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Toán tử logic bit Toán tử bit được sử dụng với kiểu số nguyên Và nhị phân: Op1 & Op2 Hoặc nhị phân : Op1 | Op2 Hoặc có loại trừ nhị phân: Op1 ^ Op2 Đảo bít nhị phân : ~ Op Oprand: Toán hạng Dịch trái: Op > n (Chia với 2n) Op là giá trị được dịch, n là số bit dịch 01-Jan-16 74
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Toán tử logic bit (tiếp) char Op1 = 83, Op2 = -38, Op = 3; char r = Op1 & Op2; char r = Op1 | Op2; 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 r = 0 1 0 1 0 0 1 0 → (82) r = 1 1 0 1 1 0 1 1 → (-37) char r = Op1 ^ Op2; char r = ~ Op2; 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 r = 0 0 1 0 0 1 0 1 → (37) r = 1 0 0 0 1 0 0 1 → (-119) unsigned char r = Op1 | Op2; r = 1 1 0 1 1 0 1 1 → 219 01-Jan-16 75
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Toán tử logic bit (tiếp) char Op1 = 83, Op2 = -38, Op = 3; char r = Op1 >> Op; 0 1 0 1 0 0 1 1 r = 0 0 0 0 1 0 1 0 → (10) char r = Op2 >> Op; unsigned char Op =218; 1 1 0 1 1 0 1 0 unsigned char r =Op >> 3; r =1 1 1 1 1 0 1 1 → (-5) 1 1 0 1 1 0 1 0 r =0 0 0 1 1 0 1 1 → (27) char r = Op2 << 2; r = 0 1 1 0 1 0 0 0 →(104) (unsigned) int r = Op2<<2 →? 01-Jan-16 76
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Toán tử gán Biến = Biểu_thức; • Ký tự “=“ là toán tử gán – Biểu thức bên phải dấu bằng tược tính toán – Giá trị của biểu_thức được gán cho biến • Ví dụ: int a, b, c; a = 3; b = a + 5; c = a * b; 01-Jan-16 77
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Toán tử gán • Biểu thức gán là biểu thức nên cũng có giá trị. – Giá trị của biểu thức gán bằng giá trị của biểu_thức bên phải toán tử – Có thể gán giá trị của biểu thức gán cho một biến khác – Có thể sử dụng như một biểu thức bình thường • Ví dụ: int a, b, c; a = b = 2007; c = (a = 20) * (b = 30);// c→600 01-Jan-16 78
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.3 Các toán tử trong C Toán tử gán → Dạng kết hợp Var = Exp Var = Var Exp Toán tử số học: += -= *= /= %= Ví dụ: a *= b // a= a * b Toán tử logic bit: &= |= ^= Ví dụ: x &= 0x3F // x = x & 0x3F Toán tử dịch: >= Ví dụ: s <<= 4 // s = s << 4 01-Jan-16 79
- Chương 2: Kiểu dữ liệu và biểu thức trong C Nội dung chính 1. Các kiểu dữ liệu chuẩn trong C 2. Biểu thức trong C 3. Các toán tử trong C 4. Một số toán tử đặc trưng 01-Jan-16 80
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Các toán tử • Tăng/giảm tự động một đơn vị • Lấy địa chỉ • Biểu thức điều kiện • Toán tử phẩy 01-Jan-16 81
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Tăng giảm tự động một đơn vị ++ Tăng tự động ++Var, Var++ Giảm tự động Var, Var Variable: Biến • Tiền tố (hậu tố): biến được tăng(++)/giảm( ) trước (sau) khi sử dụng để tính toán biểu thức Ví dụ: int a = 5, b, c, d, e; b = a++; // b = 5 sau đó a = 6 c = ++a; // a = 7 rồi tới c = 7 d = a ; // d = 7 rồi tới a = 6 e = a; // a = 5 sau đó e= 5 01-Jan-16 82
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Toán tử lấy địa chỉ & Tên_biến Ký tự & là toán tử lấy địa chỉ biến • Biến thực chất là một vùng 1 . nhớ của máy tính được đặt tên → tên của biến . 157 • Mọi ô nhớ trên bộ nhớ máy a D6 158 tính đều được đánh địa chỉ. 07 159 → Mọi biến đều có địa chỉ 160 . Ví dụ: . . int a = 2006; &a → Địa chỉ của ô nhớ dùng Kiểu địa chỉ? 01-Jan-16 chứa giá trị biến a 83
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Toán tử phỏng điều kiện (biểu thức điều kiện) exp1 ? exp 2 : exp3 expression: Biểu thức • Nếu exp1 ≠ 0 (giá trị đúng), biểu thức điều kiện trả về giá trị của exp2 • Nếu exp1 = 0 (giá trị sai) biểu thức điều kiện trả về giá trị của exp3 Ví dụ: float x= 5.2, y = 3.8, z; z = (x < y) ? x : y; → z = 3.8 // z = min{x, y} if (x < y) z = x; else z = y; 01-Jan-16 84
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Toán tử phẩy biểu_thức_1, biểu thức_2, • Toán tử phẩy ( , ) cho phép sử dụng nhiều biểu thức tại nơi chỉ cho phép viết một biểu thức • Các biểu thức được tính toán từ trái qua phải • Giá trị và kiểu của biểu thức là giá trị và kiểu của biểu thức cuối cùng, bên phải Ví dụ: if (i = 0, a !=b) for(i = 0, j = 0; i < 100; i++, j++) . 01-Jan-16 85
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Chuyển kiểu (Kiểu) biểu thức • Chuyển kiểu tự động – Chương trình dịch tự động chuyển đổi từ kiểu có phạm vi biểu diễn thấp tới kiểu có phạm vi biểu diễn cao char → int → long int → float → double → long double • Ép kiểu – Bằng câu lệnh tường minh trong chương trình – Được sử dụng khi muốn chuyển sang kiểu có phạm vi biểu diễn thấp hơn 01-Jan-16 86
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Chuyển kiểu→Ví dụ #include #include void main(){ long L = 0xABCDEF; float f = 123.456; int i; L = 11259375; i = -12817(CDEF) clrscr(); f = 123.456001; L = 123; i = 123 i = (int) L; printf(“\n L = %ld; i = %d(%X)”, L, i, i); i = (int) f; L = (long) f; printf(“\n f = %f; L = %ld; i = %d”, f, L, i); } 01-Jan-16 87
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Thứ tự ưu tiên các toán tử Mức Toán tử Chức năng Chiều 1 -> . [ ] () ++ hậu tố hậu tố Lựa chọn, chỉ số → 2 ++ ~ ! + - * & () sizeof Toán tử 1 ngôi, ép kiểu, 3 * / % Toán tử số học lớp nhân → Chiều 4 + - Toán tử số học lớp cộng → kết kết hợp 5 >> >= Toán tử quan hệ → 7 == != Bằng, khác → với 8 & AND nhị phân → các toán 9 ^ XOR nhị phân → 10 | OR nhị phân → 11 && AND logic → hạng 12 || OR logic → 13 ? : Toán tử phỏng điều kiện 14 01-Jan-16 = *= += <<= &= Toán tử gán 88
- Chương 2: Kiểu dữ liệu và biểu thức trong C 2.4 Một số toán tử đặc trưng Thứ tự ưu tiên các toán tử Nguyên tắc • Biểu thức con trong ngoặc được tính toán trước • Phép toán một ngôi đứng bên trái toán hạng được kết hợp với toán hạng đi liền nó. • Toán hạng đứng cạnh hai toán tử – Nếu hai toán tử có độ ưu tiên khác nhau thì toán tử nào có độ ưu tiên cao hơn sẽ kết hợp với toán hạng – Nếu hai toán tử cùng độ ưu tiên thì dựa vào trật tự kết hợp của các toán tử để xác định toán tử được kết hợp với toán hạng. Ví dụ a < 10 && 2 * b < c ( a < 10 ) && ( ( 2 * b ) < c ) Chú ý: int x = 5, a = 5 * x++; → a = 25, x = 6 01-Jan-16 89
- Chương 2: Kiểu dữ liệu và biểu thức trong C Ví dụ const int N=10; int a= 3, b=4, c; float S= 0.0; c = a++ * ++b; int b; S = N/3 +1; b=(S>4); a= ? b= ? c= ? S= ? b = ? int k ,num=30; k =num>5 ? (num <=10 ? 100 : 200): 500; k=? 01-Jan-16 90
- Chương 2: Kiểu dữ liệu và biểu thức trong C Ví dụ const int N=10; int a= 3, b=4, c; float S= 0.0; c = a++ * ++b; int b; S = N/3 +1; b=(S>4); a=4 b= 5 c=15 S= 4 b = 0 int k ,num=30; k =num>5 ? (num <=10 ? 100 : 200): 500; k=200 01-Jan-16 91
- Chương 2: Kiểu dữ liệu và biểu thức trong C Tóm tắt • Kiểu dữ liệu – Nguyên : char, unsigned char, int, long, unsigned int, unsigned long – Thực : float, double, long double • Giá trị logic – Đúng/TRUE : 1 (Khác 0) – Sai/FALSE : 0 • Toán tử – Một ngôi : + -; ++ ; ~ !; &; (); – Hai ngôi : + - * / %; == != >=; >; &, ^, |, && ||; = *= += – 3 ngôi : ? : 01-Jan-16 92