← Danh sách bài học
🔀

Điều kiện

Cấu trúc điều kiện cho phép chương trình rẽ nhánh: chọn hành động khác nhau dựa vào dữ liệu. Đây là nền tảng của mọi logic nghiệp vụ.

1. if / else if / else

Cú pháp: if (điều_kiện) { ... } else if (...) { ... } else { ... }. Chỉ một nhánh được thực thi.

int diem; cin >> diem;
if (diem >= 8) cout << "Gioi";
else if (diem >= 6.5) cout << "Kha";
else if (diem >= 5) cout << "Trung binh";
else cout << "Yeu";

2. Toán tử ba ngôi

Rút gọn if-else đơn giản: điều_kiện ? giá_trị_khi_đúng : giá_trị_khi_sai.

int max_ab = (a > b) ? a : b;

3. switch-case

Dùng với giá trị nguyên/ký tự có nhiều nhánh rõ ràng. Nhớ break sau mỗi case, nếu không sẽ bị fall-through (chạy tiếp các case sau).

switch (thang) {
    case 1: case 3: case 5: case 7:
    case 8: case 10: case 12: cout << 31; break;
    case 4: case 6: case 9: case 11: cout << 30; break;
    case 2: cout << 28; break;
    default: cout << "Thang khong hop le";
}

💻 Code mẫu thực chiến

Kiểm tra năm nhuận

Năm nhuận: chia hết cho 4 và (không chia hết cho 100 hoặc chia hết cho 400).

int y; cin >> y;
bool nhuan = (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
cout << (nhuan ? "Nam nhuan" : "Khong nhuan");

Phân loại BMI

BMI = cân nặng (kg) / chiều cao² (m²).

double kg, m; cin >> kg >> m;
double bmi = kg / (m*m);
if (bmi < 18.5) cout << "Gay";
else if (bmi < 25) cout << "Binh thuong";
else if (bmi < 30) cout << "Thua can";
else cout << "Beo phi";

Máy tính bỏ túi 4 phép

Nhập a, phép, b — in kết quả. Cẩn thận chia cho 0.

double a, b; char op;
cin >> a >> op >> b;
switch (op) {
    case '+': cout << a+b; break;
    case '-': cout << a-b; break;
    case '*': cout << a*b; break;
    case '/':
        if (b == 0) cout << "Loi: chia 0";
        else cout << a/b;
        break;
    default: cout << "Phep khong hop le";
}

💡 Mẹo & lưu ý

  • So sánh double không dùng ==, hãy dùng abs(a-b) < 1e-9.
  • if không có {} chỉ áp dụng cho câu lệnh ngay sau — dễ gây bug, luôn dùng {}.
  • switch chỉ nhận kiểu nguyên (int, char, enum), không nhận string.