Phép toán so sánh, câu lệnh điều kiện
"Nếu trời mưa, em sẽ ở nhà. Ngược lại, em sẽ đi chơi."
Biểu thức đại số, biểu thức quan hệ và biểu thức logic
Biểu thức đại số
Biểu thức đại số là một tổ hợp các số và biến số được nối với nhau bởi dấu các phép tính cộng, trừ, nhân, chia, nâng lên lũy thừa và các cặp ngoặc.
Ví dụ
\(4 + 5 - 7, 2^4 \times (4 - 5), a, 7.32, x^2 - 3x + 7\) là các biểu thức đại số.
Biểu thức quan hệ
Biểu thức quan hệ là một biểu thức dùng để so sánh hai biểu thức đại số.
Phép toán quan hệ | Kí hiệu trong C++ |
---|---|
Lớn hơn | > |
Lớn hơn hoặc bằng | >= |
Nhỏ hơn | < |
Nhỏ hơn hoặc bằng | <= |
Bằng nhau | == |
Khác nhau | != |
Biểu thức quan hệ chỉ trả về hai giá trị: true
\((1)\) nếu biểu thức đúng hoặc false
\((0)\) nếu biểu thức sai.
Ví dụ
Mã nguồn
int a = 10, b = 20;
cout << (a != b) << "\n"; // Biểu thức trả về true, in ra 1
cout << (a < b) << "\n"; // Biểu thức trả vê true, in ra 1
cout << (a >= b); // Biểu thức trả về false, in ra 0
Đầu ra
1
1
0
Toán tử logic
- Phép toán
and
(\&\&
) là phép toán logic mang ý nghĩa là "và". Một biểu thức logic sử dụng phépand
chỉ nhận giá trịtrue
nếu hai biểu thức trong nó đều đúng. - Phép toán
or
(||
) là phép toán logic mang ý nghĩa là "hoặc". Một biểu thức logic sử dụng phépor
nhận giá trịtrue
nếu ít nhất một biểu thức trong nó đúng.
A |
B |
A && B |
A || B |
---|---|---|---|
true |
true |
true |
true |
true |
false |
false |
true |
false |
true |
false |
true |
false |
false |
false |
false |
- Phép toán
not
là phép toán logic mang ý nghĩa là "phủ định". Một biểu thức logic sau khi sử dụng phépnot
sẽ chuyển giá trị trả về từtrue
sangfalse
và từfalse
sangtrue
. TrongC++
, phépnot
được viết kí hiệu bằng \(1\) dấu chấm than!
, đặt ở bên trái biểu thức.
A |
!A |
---|---|
true |
false |
false |
true |
Biểu thức logic
Biểu thức logic là biểu thức mà giá trị của nó là các giá trị logic, tức là một trong hai giá trị true
hoặc false
.
Biểu thức logic thường bao gồm một hoặc nhiều các biểu thức quan hệ nhỏ hơn, được liên kết nhau bởi các toán tử logic.
Ví dụ 1
Chương trình sau in ra giá trị của ba biểu thức logic.
Mã nguồn
cout << (5 > 3 && 2 < 4) << "\n";
cout << !(2 + 3 == 5) << "\n";
cout << (!(1 > 5) || 2 > 3);
Đầu ra
1
0
1
Ví dụ 2
Chương trình sau in ra \(1\) nếu \(b\) khác \(0\) và \(a\) chia hết cho \(b\), ngược lại in ra \(0\).
Mã nguồn
int a, b;
cin >> a >> b;
cout << (b != 0 && a % b == 0);
Đầu vào 1
1 0
Đầu ra 1
0
Đầu vào 2
4 3
Đầu ra 2
0
Đầu vào 3
4 2
Đầu ra 3
1
Kết quả của biểu thức logic b != 0 && a % b == 0
phụ thuộc vào giá trị của biến \(a, b\).
Biểu thức logic cũng có thể là một biểu thức đại số. Một biểu thức có giá trị khác 0
trả về true
, biểu thức có giá trị bằng 0
trả về false
.
Ví dụ 3
Mã nguồn
bool a = (2 + 3);
// a có giá trị là true
bool b = (10 % 5);
// b có giá trị là false
cout << a << " " << b;
Đầu ra
1 0
Lưu ý
Không viết rút gọn điều kiện kiểu (a, b > 0)
hoặc (a > b > c)
. Cách viết đúng cho hai điều kiện trên là (a > 0 && b > 0)
và (a > b && b > c)
.
Câu lệnh điều kiện
Câu lệnh điều kiện dạng thiếu
Cú pháp:
if (<điều_kiện>) {
// Các câu lệnh được thực thi khi điều kiện đúng
}
<điều_kiện>
là một biểu thức logic trả về 2 giá trị true
và false
. Câu lệnh if
dùng để kiểm tra <điều_kiện>
và thực hiện các lệnh bên trong cặp ngoặc nhọn {}
nếu <điều_kiện>
đúng.

Ví dụ 1
Chương trình sau kiểm tra số a
là số nguyên dương hay không.
Mã nguồn
int a = 5;
if (a > 0) {
cout << "a la so duong" << "\n";
}
Đầu ra
a la so duong
Ví dụ 2
Chương trình sau kiểm tra hai số có phải là cạnh của hình chữ nhật hợp lệ không, nếu đúng thì in ra chu vi và diện tích hình đó.
Mã nguồn
int a, b;
cin >> a >> b;
if (a > 0 && b > 0) {
cout << "Chu vi: " << (a + b) * 2 << "\n";
cout << "Dien tich: " << a * b;
}
Đầu vào 1
5 3
Đầu ra 1
Chu vi: 16
Dien tich: 15
Đầu vào 1
5 0
Đầu ra 1
Khối lệnh"
Các câu lệnh đặt bên trong cặp ngoặc nhọn \{\}
được gọi là một khối lệnh.
Một khối lệnh có thể chứa nhiều câu lệnh khác nhau, hoặc chỉ một câu lệnh, hoặc không chứa câu lệnh nào. Đặc biệt, nếu một khối lệnh chỉ có duy nhất 1 câu lệnh, có thể loại bỏ cặp ngoặc nhọn như sau:
Ví dụ
Mã nguồn
if (2 + 3 != 5)
cout << "Trong lenh dieu kien";
cout << "Ngoai lenh dieu kien";
Đầu ra
Ngoai lenh dieu kien
Câu lệnh điều kiện dạng đủ
Cú pháp:
if (<điều_kiện>) {
// Các câu lệnh được thực thi khi điều kiện đúng
} else {
// Các câu lệnh được thực thi khi điều kiện sai
}
Câu lệnh if - else
dùng để kiểm tra <điều_kiện>
và thực hiện các lệnh bên trong khối lệnh thứ nhất nếu <điều_kiện>
đúng, ngược lại thực hiện các lệnh bên trong khối lệnh thứ hai.

Ví dụ 1
Mã nguồn
int a = -3;
if (a > 0) {
cout << a la so duong << "\n";
} else {
cout << a la so khong duong << "\n";
}
Đầu ra
a la so khong duong
Ví dụ 2
Mã nguồn
int a, b;
cin >> a >> b;
if (a > 0 && b > 0) {
cout << "Chu vi: " << (a + b) * 2 << "\n";
cout << "Dien tich: " << a * b;
} else
cout << "Hinh chu nhat khong hop le";
Đầu vào 1
5 3
Đầu ra 1
Chu vi: 16
Dien tich: 15
Đầu vào 2
5 0
Đầu ra 2
Hinh chu nhat khong hop le
Các câu lệnh điều kiện cũng có thể được viết liền với nhau để tạo ra một "chuỗi điều kiện".
Ví dụ 3
Mã nguồn
if (a > 0) {
cout << "a la so duong" << "\n";
} else if (a < 0) {
cout << "a la so am" << "\n";
} else {
cout << "a bang 0" << "\n";
}
Ví dụ 4
Mã nguồn
if (diem_trung_binh >= 8.0) {
cout << "Gioi";
} else if (diem_trung_binh >= 6.5) {
cout << "Kha";
} else if (diem_trung_binh >= 5.0) {
cout << "Trung binh";
} else {
cout << "Yeu";
}
Ví dụ 5
Mã nguồn
if (tuoi < 0) {
cout << "Tuoi khong hop le!";
} else if (tuoi < 13) {
cout << "Tre em";
} else if (tuoi < 18) {
cout << "Thanh thieu nien";
} else if (tuoi < 60) {
cout << "Nguoi lon";
} else {
cout << "Nguoi cao tuoi";
}