Ngoài cấu cấu điều khiển rẻ nhánh là if else, còn có cấu trúc rẻ nhánh switch case. Cấu trúc switch case cho phép lựa chọn một trong nhiều khối lệnh để thực hiện tùy vào biểu thức được lựa chọn.
1. Cú pháp switch case
switch (expression) {
case value-1:
// code block 1
break;
case value-2:
// code block 2
break;
.
.
.
default:
// default code block
}
Lưu đồ xử lý của cấu trúc switch case
2. Quy tắc lệnh switch case
– Biểu thức (expression) switch có thể là một giá trị kiểu char, short, hoặc int,… và phải luôn nằm trong dấu ngoặc tròn.
– value-1, value-2,… phải có cùng kiểu dữ liệu với giá trị của biểu thức switch.
– Từ khóa break; là tùy chọn, nhưng nên được sử dụng cuối mỗi trường hợp để thoát khỏi phần còn lại của lệnh switch. Nếu không có lệnh break;, lệnh case tiếp theo sẽ được thực hiện.
– Trường hợp default là tùy chọn, được thực hiện khi không value nào đúng với biểu thức.
– Thứ tự của các value (kể cả default) là không quan trọng. Tuy nhiên, sắp xếp các value theo một trình tự logic và đặt trường hợp default cuối cùng.
3. Chương trình C++ minh họa switch case
Chương trình xuất ra màn hình số ngày trong tháng sử dụng switch case
#include <iostream>
using namespace std;
int main()
{
int month, year;
cout<<"Input month:";
cin>>month;
cout<<"Input year:";
cin>>year;
switch (month) {
case 1:cout<<"Month has 31 days!"; break;
case 3:cout<<"Month has 31 days!"; break;
case 5:cout<<"Month has 31 days!"; break;
case 7:cout<<"Month has 31 days!"; break;
case 8:cout<<"Month has 31 days!"; break;
case 10:cout<<"Month has 31 days!"; break;
case 12:cout<<"Month has 31 days!"; break;
case 4:cout<<"Month has 30 days!"; break;
case 6:cout<<"Month has 30 days!"; break;
case 9:cout<<"Month has 30 days!"; break;
case 11:cout<<"Month has 30 days!"; break;
case 2:
if ((year % 100 != 0 && year % 4 == 0) || (year % 400 == 0))
cout<<"Month has 29 days!";
else
cout<<"Month has 28 days!";
break;
default:
cout<<"There is not this month!";
}
system("pause");
}
Nên sử dụng break; linh hoạt, chương trình trên có thể viết gọn lại như sau:
#include <iostream>
using namespace std;
int main()
{
int month, year;
cout<<"Input month:";
cin>>month;
cout<<"Input year:";
cin>>year;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:cout<<"Month has 31 days!"; break;
case 4:
case 6:
case 9:
case 11:cout<<"Month has 30 days!"; break;
case 2:
if ((year % 100 != 0 && year % 4 == 0) || (year % 400 == 0))
cout<<"Month has 29 days!";
else
cout<<"Month has 28 days!";
break;
default:
cout<<"There is not this month!";
}
system("pause");
}
Lưu ý: Đừng quên dùng lệnh break; hợp lý khi cần thiết.