Giới thiệu
Trong ngôn ngữ lập trình C/C++, có một cấu trúc rẽ nhánh mạnh mẽ mang tên switch ... case, giúp ta giải quyết các logic trong chương trình. Trên thực tế, cấu trúc này rất hữu ích và linh hoạt.
Cú pháp của cấu trúc rẽ nhánh switch...case
Để sử dụng cấu trúc switch...case, ta sử dụng cú pháp như sau:
switch (biểu_thức) {
case giá_trị_1: {
// Các lệnh thực thi
break;
}
case giá_trị_2: {
// Các lệnh thực thi
break;
}
...
case giá_trị_n: {
// Các lệnh thực thi
break;
}
default: {
// Các lệnh thực thi (trường hợp mặc định)
}
}
Nguyên tắc hoạt động của cấu trúc switch...case
Cấu trúc switch...case hoạt động theo nguyên tắc sau:
- Biểu thức được tính toán và so sánh lần lượt với giá trị của từng case.
- Nếu giá trị biểu thức trùng khớp với giá trị của case đầu tiên, các lệnh trong case sẽ được thực thi cho tới khi gặp từ khóa break.
- Nếu không tìm thấy giá trị trùng khớp với các case, các lệnh trong default sẽ được thực thi (nếu có).
- Sau khi cấu trúc switch...case kết thúc, chương trình sẽ tiếp tục thực hiện các dòng lệnh tiếp theo.
Lưu ý khi sử dụng cấu trúc rẽ nhánh switch...case
Khi sử dụng cấu trúc rẽ nhánh switch...case, ta cần lưu ý những điểm sau:
- Các giá trị của mỗi case phải cùng kiểu dữ liệu với giá trị của biểu thức được so sánh.
- Số lượng các case không giới hạn, nhưng chỉ có thể có duy nhất một case mặc định (default).
- Giá trị của các case phải là hằng số và khác nhau.
- Từ khóa break có thể sử dụng hoặc không. Nếu không sử dụng, chương trình sẽ không kết thúc cấu trúc switch...case sau khi thực thi khối lệnh của case, và sẽ tiếp tục thực hiện các khối lệnh tiếp theo cho đến khi gặp từ khóa break hoặc dấu } cuối cùng của cấu trúc switch...case. Điều này giúp ta sử dụng một khối lệnh cho nhiều trường hợp khác nhau.
Ví dụ
Sử dụng cấu trúc switch...case để tính số ngày trong một tháng:
#include
using namespace std;
int main() {
int month, days;
cout << "Nhập tháng: ";
cin >> month;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: {
days = 31;
break;
}
case 4:
case 6:
case 9:
case 11: {
days = 30;
break;
}
default: {
days = 28;
}
}
cout << "Tháng " << month << " có " << days << " ngày." << endl;
return 0;
}
Kết luận
Với cấu trúc rẽ nhánh switch...case, ta có thể linh hoạt giải quyết các logic phức tạp trong chương trình C/C++. Bằng cách sử dụng các khối lệnh trong các trường hợp khác nhau, ta có thể xử lý các tình huống và điều kiện kỹ thuật một cách dễ dàng và hiệu quả.
Sơ đồ cấu trúc switch ... case
Đọc thêm code Tính ngày kế tiếp có sử dụng switch-case.