Xem mẫu

  1. KỸ THUẬT LẬP TRÌNH C BÀI 2: BIỂU THỨC & CÁC PHÉP TOÁN Hoàng Quốc Tuấn tuanhq@fpt.edu.vn http://hoangquoctuanpro.wordpress.com
  2. Nội dung I. Biểu thức II. Các phép toán III. Biểu thức điều kiện IV. Bài tập minh họa 2
  3. I – BIỂU THỨC Biểu thức là một sự kết hợp các giá trị (hằng, biến, hàm) bằng các phép tính để sinh ra một giá trị mới. Kiểu của biểu thức là kiểu của giá trị mà nó sinh ra. Ví dụ: int x = 2, y = 7; int i, a = 3; x = (x + 2 * y); a = (i = a * 11); 3
  4. II – CÁC PHÉP TOÁN 1. Các phép toán số học 2. Các phép toán thao tác trên bit 3. Các phép toán quan hệ và logic 4. Chuyển đổi kiểu dữ liệu 5. Các phép toán tăng giảm 6. Câu lệnh gán 4
  5. 1. Các phép toán số học Các phép toán số học bao gồm: cộng (+), trừ (-), nhân (*), chia (/) thực hiện trên các kiểu dữ liệu int, char, float, double. Ví dụ: float x = 15.0; float y = 3.0; float phep_cong = x + y; /* 15.0 + 3.0 = 18.000000 */ float phep_chia = x / y; /* 15.0 / 3.0 = 5.000000 */ 5
  6. 1. Các phép toán số học Phép chia (/) của hai số nguyên cho ra kết quả thương là số nguyên. Để lấy phần dư của phép chia hai số nguyên thì phải sử dụng phép modulo (%). Ví dụ: int x = 10; int y = 3; int kq1 = x / y; /* cho kết quả là số nguyên: 10/3 =3 */ int kq2 = x % y; /* 10%3 = 1 ( 10/3 = 3 dư 1 ) */ 6
  7. 1. Các phép toán số học Ngoài các phép toán, ngôn ngữ C còn trang bị cho chúng ta một số hàm toán học chuẩn được khai báo trong thư viện math.h abs sqrt pow sin cos tan asin acos atan floor ceil log ... 7
  8. 2. Các phép toán thao tác bit Các phép toán thao tác bit cho phép xử lý từng bit của một số nguyên (không dùng cho kiểu float và double) Các toán tử and &, or |, xor ^ dịch trái , bù bít ~ 8
  9. 2. Các phép toán thao tác bit Bảng giá trị chân lý Kết quả Toán hạng 1 Toán hạng 2 & | ^ 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 Ví dụ: Giả thiết một số nguyên (int) được biểu diễn bằng 16 bit. unsigned int a = 3737; /* 0000111010011001*/ unsigned int b = 7474; /* 0001110100110010*/ unsigned int c = a | b; /* 0001111110111011*/ unsigned int d = b&c; /* 0001110100110010*/ unsigned int e = c^d; /* 0000001010001001*/ 9
  10. 2. Các phép toán thao tác bit Biểu thức a > n sẽ dịch chuyển các bit trong a sang phải n vị trí. Đối với kiểu không dấu, ta có: a
  11. 2. Các phép toán thao tác bit Ví dụ: unsigned int a = 3737; /* 0000111010011001 */ unsigned int b = a > 2; /* 0000001110100110 */ unsigned int d = c
  12. 2. Các phép toán thao tác bit Bù bit ~: ~1 = 0 ~0 = 1 Ví dụ: unsigned int a = 3737; /* 0000111010011001*/ unsigned int b = ~a; /* 1111000101100110*/ 12
  13. 3. Các phép toán quan hệ và logic Các phép toán quan hệ Các phép toán logic 13
  14. 3.1. Các phép toán quan hệ Các phép toán quan hệ so sánh giá trị của các toán hạng, rồi co kết quả 0 (sai), hoặc 1(đúng). Các phép toán so sánh: bằng == lớn hơn > lớn hơn hoặc bằng >= khác != nhỏ hơn < nhỏ hơn hoặc bằng
  15. 3.1. Các phép toán quan hệ Ví dụ: float kq1 = (3 > 5); /* kq1 = (3 > 5) = 0.000000 */ float kq2 = (5 >= 3); /* kq2 = (5 > 3) = 1.000000 */ float kq3 = (12 + 6 != 5; /* (18 != 5) = 1.000000 */ float kq4 = (15 != 3*5) /* 15 != 3*5) = 0.000000 */ 15
  16. 3.2. Các phép toán logic Các phép toán logic dùng để kết hợp các biểu thức khác nhau thành một biểu thức logic. Các phép toán: NOT (!), AND (&&), OR (||) Kết quả cho ra giá trị 0 (sai), hoặc 1 (đúng). Kết quả A B !A A && B A || B 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1 16
  17. 4. Chuyển đổi kiểu dữ liệu (ép kiểu) trong một phép toán khi hai toán hạng khác kiểu dữ liệu thì kiểu dữ liệu thấp được nâng thành kiểu dữ liệu cao trước khi tính toán. Ví dụ: − Biểu thức f + i, nếu f có kiểu float, i có kiểu int thì i sẽ tạm thời được chuyển kiểu sang kiểu float để để thực hiện phép tính. − Biểu thức f = i1 + i2, nếu f kiểu float, i1 và i2 kiểu int, i1=10, i2 =3, thì f sẽ có giá trị là 3.0 (kết quả không chính xác). Muốn kết quả chính xác, ta phải ép kiểu: f = (float) i1 + i2; 17
  18. 4. Chuyển đổi kiểu dữ liệu (ép kiểu) Ví dụ: int a, b = 4, c = 5 ; float x, y = 6.8, z = 3.8 ; a=y; /* a = 6 */ a = -y ; /* a = -6 */ x = a / b + c ; /* x = 4.0 */ x = a / b + (float) c ; /* x = 4.0 */ x = (float) a / b + c ; /* x = 3.5 */ a=y–z; /* a = 3 */ 18
  19. 5. Các phép toán tăng giảm Phép toán tăng là ++ Phép toán giảm là -- Các phép toán tăng giảm dùng để tăng hoặc giảm một đơn vị đối với các biến. Cú pháp: Tăng giảm sau: biến++, biến-- Tăng giảm trước: ++biến, --biến Ví dụ: i = 5; j = 8 ; i = 5; j = 8 ; i++; // kết quả i = 6 i--; // kết quả i = 4 ++j; // kết quả j = 9 --j; // kết quả j = 7 19
  20. 5. Các phép toán tăng giảm Phép toán giảm trước và phép toán tăng giảm sau có sự khác nhau khi sử dụng nó trong biểu thức có sự phối hợp các phép toán. − Phép toán tăng giám trước sẽ thực hiện phép toán tăng giảm của biến trước rồi mới thực hiện các phép toán khác. − Phép toán tăng giám sau sẽ thực hiện phép toán tăng giảm của biến sau khi phép toán khác khác đã thực hiện. Ví dụ: i = 3; i = 3; tong = ++i; // i = 4, tong = 4 tong = i ++; // i = 4, tong = 3 20
nguon tai.lieu . vn