







Preview text:
10/17/2025
5. Biểu thức và Phép toán 5.1 Biểu thức
Trường Đại học Thủ Dầu Một Viện ĐT CNTT - CĐS 5.2 Các phép toán
5.3 Độ ưu tiên của các toán tử CƠ SỞ LẬP TRÌNH 5.4 Viết biểu thức CHƯƠNG II
GIỚI THIỆU NGÔN NGỮ C (tiếp theo) 2 3 5.1 Biểu thức 5.2 Các phép toán Khái niệm: Toán tử gán =
Tạo thành từ các toán tử (Operator) và các toán hạng
Dùng để gán giá trị cho biến. (Operand). Cú pháp:
Toán tử tác động lên các giá trị của toán hạng và cho giá trị có = ; kiểu nhất định. = ;
Toán tử: +, –, *, /, %…. = ;
Toán hạng: hằng, biến, lời gọi hàm...
Có thể thực hiện liên tiếp phép gán. Ví dụ
2 + 3, a / 5, (a + b) * 5, … 4 5 1 10/17/2025 5.2 Các phép toán 5.2 Các phép toán Toán tử gán =
Các toán tử toán học Ví dụ: Toán tử 1 ngôi void main()
• Chỉ có một toán hạng trong biểu thức. {
int a, b, c, d, e, thuong;
• ++ (tăng 1 đơn vị), -- (giảm 1 đơn vị) a = 10;
• Đặt trước toán hạng b = a;
− Ví dụ ++x hay --x: thực hiện tăng/giảm trước.
thuong = a / b;
a = b = c = d = e = 156; • Đặt sau toán hạng e = 156;
− Ví dụ x++ hay x--: thực hiện tăng/giảm sau. d = e; c = d; Ví dụ b = c;
x = 10; y = x++; // y = 10 và x = 11 a = b;
x = 10; y = ++x; // x = 11 và y = 11 } // tất cả là 156 6 7 5.2 Các phép toán 5.2 Các phép toán
Các toán tử toán học
Các toán tử trên bit Toán tử 2 ngôi
Tác động lên các bit của toán hạng (nguyên).
• Có hai toán hạng trong biểu thức.
& (and), | (or), ^ (xor), ~ (not hay lấy số bù 1)
• +, –, *, /, % (chia lấy phần dư)
>> (shift right), << (shift left) • x = x + y x += y; & 0 1 | 0 1 Ví dụ 0 0 0 0 0 1
• a = 1 + 2; b = 1 – 2; c = 1 * 2; d = 1 / 2; 1 0 1 1 1 1
• e = 1*1.0 / 2; f = float(1) / 2; g = float(1 / 2); ^ 0 1 ~ 0 1 • h = 1 % 2; 0 0 1 1 0
• x = x * (2 + 3*5); x *= 2 + 3*5; 1 1 0 8 9 2 10/17/2025 5.2 Các phép toán 5.2 Các phép toán
Các toán tử trên bit
Các toán tử quan hệ Ví dụ:
So sánh 2 biểu thức với nhau void main() { Trả kết quả
int a = 5; // 0000 0000 0000 0101 • 0 (false) nếu sai
int b = 6; // 0000 0000 0000 0110
• hoặc 1(true) nếu đúng
int z1, z2, z3, z4, z5, z6;
Các phép toán: ==, >, <, >=, <, <=, !=
z1 = a & b; // 0000 0000 0000 0100
z2 = a | b; // 0000 0000 0000 0111 Ví dụ
z3 = a ^ b; // 0000 0000 0000 0011 • s1 = (1 == 2); s2 = (1 != 2);
z4 = ~a; // 1111 1111 1111 1010 • s3 = (1 > 2); s4 = (1 >= 2);
z5 = a >> 2;// 0000 0000 0000 0001 • s5 = (1 < 2); s6 = (1 <= 2);
z6 = a << 2;// 0000 0000 0001 0100 } 10 11 5.2 Các phép toán 5.2 Các phép toán
Các toán tử luận lý
Toán tử điều kiện
Tổ hợp nhiều biểu thức quan hệ với nhau.
Đây là toán tử 3 ngôi (gồm có 3 toán hạng)
Các phép toán: && (and), | (or), ! (not) Cú pháp: ? :
• đúng thì giá trị là . && 0 1 || 0 1 • sai thì giá trị là . 0 0 0 0 0 1 1 0 1 1 1 1 Ví dụ
• s1 = (1 > 2) ? 2912 : 1706; Ví dụ • int s2 = 0;
• s1 = (1 > 2) && (3 > 4);
• 1 < 2 ? s2 = 2912 : s2 = 1706;
• s2 = (1 > 2) || (3 > 4); • s3 = !(1 > 2); 12 13 3 10/17/2025 5.2 Các phép toán
5.3 Độ ưu tiên của các toán tử Toán tử phẩy Toán tử Độ ưu tiên () [] -> .
Cú pháp: biến = (biểu thức 1, biểu thức 2,…);
! ++ -- - + * (cast) & sizeof * / %
Các biểu thức con lần lượt được tính từ trái sang phải. + -
Biến nhận giá trị của biểu thức bên phải cùng. << >> < <= > >= Ví dụ: == != & x = (a++, b = b + 2); | ^ a++; b = b + 2; x = b; && || ?: = += -= *= /= %= &= … , 14 15
5.3 Độ ưu tiên của các toán tử
5.4 Viết biểu thức
Quy tắc thực hiện
Viết biểu thức cho các mệnh đề sau
• Thực hiện biểu thức trong ( ) sâu nhất trước. x lớn hơn hay bằng 3
• Thực hiện theo thứ tự ưu tiên các toán tử. x >= 3 a và b cùng dấu Ví dụ
((a>0) && (b>0)) | ((a<0) && (b<0)) • n = 2 + 3 * 5;
(a>0 && b>0) | (a<0 && b<0) => n = 2 + (3 * 5); p bằng q bằng r
• a > 1 && b < 2
(p == q) && (q == r) hoặc (p == q && q == r)
=> (a > 1) && (b < 2) –5 < x < 5
(x > –5) && (x < 5) hoặc (x > –5 && x < 5)
hoặc (–5 < x && x < 5) 16 17 4 10/17/2025
6. Các lệnh Nhập / Xuất
6.1 Xuất dữ liệu ra màn hình
6.1 Xuất dữ liệu ra màn hình Trong C
Khai báo thư viện: #include 6.2 Chuỗi định dạng Cú pháp:
6.3 Nhập dữ liệu từ bàn phím
printf([, <đs1>, <đs2>, …]); Trong đó:
• Chuỗi định dạng là cách trình bày thông tin hiển thị, được
đặt trong cặp nháy kép “”
Đối số (đs1…): có thể là biến, hằng hay biểu thức. Ví dụ: printf(“Chao cac ban \n”);
printf(“so nguyen n = %d \n” , n);
printf(“so thuc x = %f, y = %f”, x, y) ; 18 19
6.1 Xuất dữ liệu ra màn hình
6.2 Chuỗi định dạng Trong C++ Gồm 3 loại
Khai báo thư viện: #include
Văn bản thường (literal text) using namespace std;
Ký tự điều khiển (escape sequence) Cú pháp:
Đặc tả (conversion specifier)
cout<< Đối_số_1 << Đối_số_2 <<…. ; Trong đó:
Đối số có thề là chuỗi định dạng, hằng, biến hay biểu thức. Ví dụ: cout<<“Hello! \n”
cout<<“ so nguyen : “<cout<<“so thuc f1 = “<< f1 <<“ , f2 = “<< f1/2; 20 21 5 10/17/2025
6.2 Chuỗi định dạng
6.2 Chuỗi định dạng
Văn bản thường (literal text): Được xuất y hệt như lúc
Ký tự điều khiển (escape sequence): Gồm dấu \ và một ký tự như trong bảng sau
gõ trong chuỗi định dạng
Ký tự điều khiển Ý nghĩa
Ví dụ: Xuất chuỗi Hello World \a Tiếng chuông \b Lùi lại một bước \n Xuống dòng printf(“Hello World”); \t Dấu tab \\ In dấu \ \? In dấu ? \” In dấu “ Ví dụ:
printf(“\t”); printf(“\n”); printf(“\t\n”); 22 23
6.2 Chuỗi định dạng
6.2 Chuỗi định dạng
Ký tự Đặc tả (conversion specifier)
Ký tự Đặc tả (conversion specifier)
Gồm dấu % và một ký tự. Ví dụ:
Xác định kiểu của biến/giá trị muốn xuất. int a = 10, b = 20;
Các đối số chính là các biến/giá trị muốn xuất, được liệt kê printf(“%d”, a); Xuất ra 10
theo thứ tự cách nhau dấu phẩy. printf(“%d”, b); Xuất ra 20
printf(“%d %d”, a, b); Xuất ra 10 20 Đặc tả Ý nghĩa Kiểu %c Ký tự char %d, %ld Số nguyên có dấu char, int, short, long float x = 15.06; %f, %lf Số thực float, double %s Chuỗi ký tự char[], char* printf(“%f”, x); Xuất ra 15.060000 %u Số nguyên không dấu unsigned int/short/long printf(“%f”, 1.0/3); Xuất ra 0.333333 24 25 6 10/17/2025
6.2 Chuỗi định dạng
6.3 Nhập dữ liệu từ bàn phím
Định dạng xuất số nguyên Trong C
Định dạng xuất số nguyên: %nd
Khai báo thư viện: #include
Định dạng xuất số thực: %n.kf Cú pháp: Ví dụ:
scanf([, <đs1>, <đs1>, …]); int a = 1706; Trong đó: float x = 176.85; •
printf(“%10d”, a);printf(“\n”);
Chuỗi định dạng giống định dạng xuất nhưng chỉ có các đặc
printf(“%10.2f”, x);printf(“\n”); tả
printf(“%.2f”, x);printf(“\n”);
• Các đối số là tên các biến sẽ chứa giá trị nhập và được đặt trước dấu & 1 7 0 6 1 7 6 . 8 5 1 7 6 . 8 5 26 27
6.3 Nhập dữ liệu từ bàn phím
6.3 Nhập dữ liệu từ bàn phím Trong C Trong C++
Ví dụ: cho a và b kiểu số nguyên
Khai báo thư viện: #include
scanf(“%d”, &a); // Nhập giá trị cho biến a using namespace std; Cú pháp:
scanf(“%d”, &b); // Nhập giá trị cho biến b
cin>> bien1>>bien 2>>… ;
scanf(“%d%d”, &a, &b); Ví dụ:
Các câu lệnh sau đây sai
cout<<“Nhap so nguyen n = ”; scanf(“%d”, a); // Thiếu dấu & int n;
scanf(“%d”, &a, &b);// Thiếu %d cho biến b cin>>n; scanf(“%f”, &a);
// a là biến kiểu số nguyên float f1,f2; scanf(“%9d”, &a);
// không được định dạng
cout<<“Nhap hai so thuc: “;
scanf(“a = %d, b = %d”, &a, &b”); cin>>f1>>f2; 28 29 7 10/17/2025
7. Một số hàm trong C
7. Một số hàm trong C
Các hàm trong thư viện toán học
Các hàm trong thư viện toán học Khai báo: #include Ví dụ
acos, asin, atan, cos, sin, …
int x = 4, y = 3, z = -5; exp, log, log10 float t = -1.2; sqrt
float kq1 = sqrt(x1); ceil, floor
int kq2 = pow(x, y); abs, fabs
float kq3 = pow(x, 1/3);
double pow(double x, double y)
float kq4 = pow(x, 1.0/3);
int kq5 = abs(z); 30 31 Ví dụ Bài tập
Nhập năm sinh của một người và tính tuổi của người
1. Nhập 2 số a và b. Tính tổng, hiệu, tích và thương của hai số đó. đó. #include
2. Nhập tên sản phẩm, số lượng và đơn giá. Tính tiền và thuế #include
giá trị gia tăng phải trả, biết: void main()
a. Tiền = số lượng * đơn giá {
b. Thuế giá trị gia tăng = 10% tiền
int NamSinh, Tuoi;
3. Nhập điểm thi và hệ số các môn Toán, Lý, Hóa của một
printf(“Nhap nam sinh: ”);
sinh viên. Tính điểm trung bình của sinh viên đó.
scanf(“%d”, &NamSinh);
4. Nhập bán kính của đường tròn. Tính chu vi và diện tích của
Tuoi = 2025 – NamSinh; hình tròn đó.
printf(“Tuoi cua ban la %d”, Tuoi);
5. Nhập vào 3 cạnh của 1 tam giác tính chu vi và diện tích của getch(); tam giác đó. } 32 33 8