bai giang 2
TRANSCRIPT
Nội dung trình bày
• Biểu thức logic và các toán tử logic• Tối ưu biểu thức• Câu lệnh rẽ nhánh if• Câu lệnh if lồng nhau• Câu lệnh rẽ nhánh switch• So sánh if và switch
Biểu thức logic
• Biểu thức Logic (hay còn gọi là biểu thức điềukiện hoặc biểu thức nhị phân) là biểu thức trongđó có thể chứa các toán tử so sánh, biến logic, hằng logic, các toán tử logic. Giá trị của biểuthức Logic chỉ là 1 trong 2 giá trị true (đúng ; 1) hoặc false (sai ; 0)
• Ví dụ:a > (b + 4)2 < 0
Biểu thức Logic đơn
• Biểu thức Logic đơn là biểu thức chứamột hằng số hoặc một biến số thuộc kiểubool
• Ví dụ:falsebool x, y;x = true; // true là một biểu thức logic đơny = x; // x là một biểu thức logic đơn
Các toán tử so sánh
• Ký hiệu của các toán tử so sánh– So sánh bằng: ‘==‘– So sánh khác: ‘!=‘– So sánh lớn hơn: ‘>’– So sánh nhỏ hơn: ‘<‘– So sánh lớn hơn hoặc bằng: ‘>=‘– So sánh nhỏ hơn hoặc bằng: ‘<=‘
Biểu thức Logic được tạo thành từcác toán tử so sánh
• Bằng việc sử dụng một toán tử so sánh tacó thể tạo thành một biểu thức logic.
• Ví dụ:15 < 20 => BThức Logic mang giá trị falsefloat x = 3.5;const float PI = 3.14;bool y = (x == PI);
//ở đây (x == PI) là BThức Logic mang giá trị false
Biểu thức Logic được tạo thành từcác toán tử so sánh
• Giả sử ta có các giátrị sau:A = 5B = 6
false(-1+B) != AtrueA != BtrueA <= 5trueA >= 5falseA >= BtrueA < BfalseA > BtrueA == 5falseA == B
Kết quảBiểu thức
Các toán tử Logic
• Ký hiệu của các toán tử Logic:– Toán tử Và: ‘&&’– Toán tử Hoặc: ‘||’– Toán tử Phủ định: ‘!’
Bảng chân lý của các toán tử Logic
• Nhận xét:– A && B chỉ nhận giá trị true khi cả A và B đều bằng
true.– A || B chỉ nhận giá trị false khi cả A và B đều bằng
false.
falsefalsefalse
falsetruefalse
falsefalsetrue
truetruetrue
A&&BBA
falsefalsefalse
truetruefalse
truefalsetrue
truetruetrue
A||BBA
falsetrue
truefalse
! AA
Biểu thức Logic được tạo thành từcác toán tử logic
• Bằng việc sử dụng kết hợp các toán tửlogic với nhau ta có thể tạo thành một biểuthức logic.
• Ví dụ: Giả sử A, B, C, D là các biến số kiểu bool, ta có:– A && B //Đây là một biểu thức Logic– bool y;
y = A && (B || C) || (!D) // Vế phải cũng là mộtbiểu thức Logic
Biểu thức Logic phức tạp
• Biểu thức Logic phức tạp được tạo thànhbởi sự kết hợp giữa các toán tử so sánh, các toán tử logic, …
• Ví dụ:– (A>5) && (B<=6)– (A!=B) || (B==4)– ! (B>6)– ! (A==4) && (B<3)– (A>2) && ((B<3) || (A>4)))
Mức ưu tiên của các toán tử
• Mức ưu tiên của các toán tử theo thứ tự giảmdần như sau:
!*, /, %+, -<, <=, >=, >==, !=&&||=
Bảng mã ASCIIASCII (American Standard Code for Information Interchange -Chuẩn mã trao đổi thông tin Hoa Kì), là bộ kí tự và bộ mã kí tựdựa trên bảng chữ cái La Tinh được dùng trong tiếng Anh hiệnđại và các ngôn ngữ Tây Âu khác. Nó thường được dùng đểhiển thị văn bản trong máy tính và các thiết bị thông tin khác.
So sánh ký tự
• Tất cả các ký tự được sắp xếp theo mộtthứ tự nhất định trong bảng mã ASCII. Do đó việc so sánh 2 ký tự chính là so sánhthứ tự (hay mã) của chúng.
• Ví dụ:– ‘a’ > ‘c’ => BThức Logic mang giá trị false– ‘1’ < ‘A’ => BThức Logic mang giá trị true– ‘$’ > ‘1’ => BThức Logic mang giá trị false
Câu lệnh rẽ nhánh if
• Câu lệnh if thực hiện rẽ nhánh công việcbằng cách xét đến yếu tố thỏa mãn hay không thỏa mãn một điều kiện nào đó.Ví dụ: Nếu A thỏa mãn điều kiện B thì thực hiện
công việc C, còn nếu A không thỏa mãn điềukiện B thì thực hiện công việc D.
• Có 2 dạng câu lệnh rẽ nhánh if– Dạng khuyết– Dạng đầy đủ
Câu lệnh rẽ nhánh if dạng khuyết
• Ví dụ:– Kiểm tra xem giá trị của a có nhỏ hơn giá trị của b hay không ?
if (a < b)cout << “Gia tri cua a nho hon gia tri cua b.” << endl;
– Nếu giá trị của a lớn hơn hoặc bằng giá trị của b thì thựchiện công việc sau:
• a sẽ bằng hiệu của a và b• In giá trị mới của a ra màn hìnhif (a >= b){
a = a – b;cout << “Gia tri moi cua a la: “ << a << endl;
}
Câu lệnh rẽ nhánh if dạng đầy đủ
• Ví dụ: Sử dụng lại ví dụ trên ta có thể viết kếthợp cả 2 ý vào một câu lệnh if dạng đầy đủ nhưsau:
if (a < b)cout << “Gia tri cua a nho hon gia tri cua b.” << endl;
else{
a = a – b;cout << “Gia tri moi cua a la: “ << a << endl;
}
Câu lệnh rẽ nhánh if lồng nhau
• Ví dụ 1: Tính nghiệm của phương trình bậc 2if (delta < 0)
cout<<“Vo nghiem”;else
if (delta > 0){
x1 = (-b + sqrt(delta)) / (2*a);x2 = (-b + sqrt(delta)) / (2*a);
}else // delta == 0
x1 = -b / (2*a);
Câu lệnh rẽ nhánh if lồng nhau
• Ví dụ 2: Xếp loại if (diem >= 9)
cout<<‘A’;else if (diem >= 8)
cout<<‘B’;else if (diem >= 7)
cout<<‘C’;else if (diem >= 6)
cout<<‘D’;else // diem < 6
cout<<‘F’;
Câu lệnh rẽ nhánh switch• Dùng để thể hiện sự rẽ nhánh dựa trên giá trị của một
biểu thức.• Cú pháp:
switch (biểu thức){
case <giá trị 1>:<câu lệnh 1>;break;
case <giá trị 2>:<câu lệnh 2>;break;
...
default:<câu lệnh n>;break;
}
Câu lệnh rẽ nhánh switch• Ví dụ: Viết dạng chữ của một số từ 1 đến 3
switch (so){
case 1:cout<<“So mot nhe !”;break;
case 2:cout<<“Ah so hai !”;break;
case 3:cout<<“So ba day ma !”;break;
default:cout<<“Ban nhap sai roi !”;break;
}