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

C++
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à "". Một biểu thức logic sử dụng phép and 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ép or 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ép not sẽ chuyển giá trị trả về từ true sang false và từ false sang true. Trong C++, phép not đượ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

C++
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\)\(a\) chia hết cho \(b\), ngược lại in ra \(0\).

Mã nguồn

C++
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

C++
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

C++
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)(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:

C++
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ị truefalse. 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

C++
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

C++
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

C++
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:

C++
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

C++
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

C++
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

C++
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

C++
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

C++
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";
}