Cấu trúc rẽ nhánh switch case và minh họa với C++

Đây là bài 16/43 bài của series môn học Nhập môn lập trình

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

Switch case trong C++
Lưu đồ switch case trong C++

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.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Cấu trúc rẽ nhánh if else và minh họa với C++Cú pháp và cách sử dụng toán tử điều kiện trong C++ >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.