Câu điều kiện Switch (Switch statements)
Bên dưới là chương trình sử dụng chuỗi các câu điều kiện If (Chaining if statements) để kiểm tra giá trị của một biến, khá dài và khó đọc:
#include
using namespace std; const int SUNDAY = 1; const int MONDAY = 2; const int TUESDAY = 3; const int WEDNESDAY = 4; const int THURSDAY = 5; const int FRIDAY = 6; const int SATURDAY = 7; int main() { int dayOfWeek(TUESDAY); if (dayOfWeek == SUNDAY) cout << "Sunday" << endl; else if (dayOfWeek == MONDAY) cout << "Monday" << endl; else if (dayOfWeek == TUESDAY) cout << "Tuesday" << endl; else if (dayOfWeek == WEDNESDAY) cout << "Wednesday" << endl; else if (dayOfWeek == THURSDAY) cout << "Thursday" << endl; else if (dayOfWeek == FRIDAY) cout << "Friday" << endl; else if (dayOfWeek == SATURDAY) cout << "Saturday" << endl; else cout << "Unknown" << endl; return 0; }
Outputs:
Câu điều kiện if/else trong chương trình trên có thể viết lại dưới dạng câu điều kiện switch:
#include
using namespace std; const int SUNDAY = 1; const int MONDAY = 2; const int TUESDAY = 3; const int WEDNESDAY = 4; const int THURSDAY = 5; const int FRIDAY = 6; const int SATURDAY = 7; int main() { int dayOfWeek(TUESDAY); switch (dayOfWeek) { case SUNDAY: cout << "Sunday" << endl; break; case MONDAY: cout << "Monday" << endl; break; case TUESDAY: cout << "Tuesday" << endl; break; case WEDNESDAY: cout << "Wednesday" << endl; break; case THURSDAY: cout << "Thursday" << endl; break; case FRIDAY: cout << "Friday" << endl; break; case SATURDAY: cout << "Saturday" << endl; break; default: cout << "Unknown" << endl; break; } return 0; }
Kết quả cho ra từ 2 cách viết trên là như nhau. Bây giờ, chúng ta sẽ cùng tìm hiểu chi tiết hơn về câu điều kiện switch.
Tổng quan
Switch statements so sánh một biến (hoặc biểu thức) kiểu số nguyên với một danh sách giá trị các số nguyên, các hằng kí tự hoặc biểu thức hằng. Mỗi giá trị trong danh sách chính là một case label (nhãn trường hợp) trong khối codes của switch. Trong khối code switch còn có thể có một default label (nhãn mặc định) có thể có hoặc không. Trong mỗi label còn chứa các khối code tương ứng.
Cấu trúc câu điều kiện switch
switch (expression)
{case constant_1:{Statements;break;}case constant_2:{Statements;break;}// …case constant_n:{Statements;break;}default:{Statements;}}
Nguyên tắc trong câu điều kiện switch
- Expression là một biến (hoặc biểu thức) có giá trị kiểu số nguyên (char, short, int, long, int32_t, enum, …).
- Case labels (nhãn trường hợp) sử dụng từ khóa case, đi sau nó là một hằng số (số nguyên, các hằng kí tự hoặc biểu thức hằng). Số lượng các case labels là không giới hạn, và không có trường hợp trùng nhau giữa các case.
Ví dụ:
switch (dayOfWeek) { case 1: case 1: // Không hợp lệ, vì case 1 đã tồn tại case SUNDAY: // Không hợp lệ, vì SUNDAY tương đương với 1 };
- Default label (nhãn mặc định) sử dụng từ khóa default. Nếu không có case label nào tương ứng với giá trị của expression của switch, default label sẽ được thực thi. Default label có thể không có hoặc chỉ có 1.
- Từ khóa break có thể sử dụng hoặc không. Nếu không được sử dụng thì chương trình sẽ không kết thúc cấu trúc switch…case khi đã thực hiện hết khối code của case label có giá trị bằng với biểu thức nguyên. Thay vào đó, nó sẽ thực hiện tiếp các khối codes tiếp theo cho đến khi gặp từ khoá break hoặc dấu “}“ cuối cùng của cấu trúc switch…case.
Ví dụ:
#include
using namespace std; int main() { int month, day; cout << "Month: "; cin >> month; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 30; break; case 4: case 6: case 9: case 11: day = 31; break; default: day = 28; } cout << day << endl; return 0; }
Outputs:
The default Keyword
The
default
keyword specifies some code to run if there is no
case match:
Example
switch (day) {
case 6:
printf(“Today is Saturday”);
break;
case 7:
printf(“Today is Sunday”);
break;
default:
printf(“Looking forward to the Weekend”);
// Outputs “Looking forward to the Weekend”
Note: The default keyword must be used as the last statement in the switch, and it does not need a break.
Câu điều kiện Switch trong C++ (Switch statements)
FAQs on C switch Statement
What is the switch case in C?
The switch case statement is a flow control statement in which we can define a switch variable and then execute different code based on the value of the switch variable. It is an alternative of if else if ladder.
What is the case in the switch statement in C?
The case keyword is used to define the different cases and their associated code in the switch statement.
What does the break in the switch case do?
The break keyword is used to exit the switch block after executing the matching case.
What are the differences between switch and if else if ladder in C?
Following are the main differences between C switch and C if else if ladder:
It executes the different cases on the basis of the value of the switch variable. | It executes the different blocks based on the condition specified. |
It can only evaluate the int or char type expressions. | It can evaluate any type of expression. |
Faster and easier to read for the large number of conditions. | It can get messy when there are lots of conditions. |
Must Read:
Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!
Last Updated :
18 Nov, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment…
Lệnh switch case là một cấu trúc điều khiển & rẽ nhánh hoàn toàn có thể được thay thế bằng cấu trúc if else. Tuy nhiên, việc sử dụng switch case sẽ giúp code của chúng ta dễ viết và dễ đọc hơn; Một điều nữa là sử dụng switch case có vẻ như cho hiệu năng tốt hơn so với sử dụng if else. Bạn có thể xem rõ hơn về ưu nhược điểm của dùng lệnh switch case ở phần tài liệu tham khảo
Video hướng dẫn lệnh switch case
Cách hoạt động của cấu trúc switch case
Dưới đây là cú pháp của lệnh switch case:
switch (expression) { case constant1: // statements break; case constant2: // statements break; . . . default: // default statements }
-
expression
phải bắt buộc là giá trị hằng, có thể là biểu thức nhưng kết quả cần là hằng số. -
Trong đó,
expression
sẽ được tính toán 1 lần duy nhất và sau đó so sánh với các giá trị của các
case
. -
Nếu có 1 case nào đó khớp giá trị, các khối lệnh tương ứng sau case đó sẽ được thực hiện cho tới khi gặp lệnh
break
. Do đó, nếu chúng ta không sử dụng
break
thì tất cả các case kể từ case khớp giá trị đều được thực hiện. -
Case
default
sẽ được thực hiện nếu không có case nào khớp giá trị với
expression
.
Dưới đây là sơ đồ khối mô tả hoạt động của lệnh switch case:
Bài tập thực hành
Ví dụ:
+ 2 3 => In ra 2 + 3
*/
#include
int main() { int a, b; char opera; printf(“nNhap phep toan: “); scanf(“%c”, &opera); printf(“nNhap vao 2 so a, b: “); scanf(“%d%d”, &a, &b); switch (opera) { case ‘+’: printf(“%d + %d = %d”, a, b, a + b); break; case ‘-‘: printf(“%d – %d = %d”, a, b, a – b); break; case ‘*’: printf(“%d * %d = %d”, a, b, a * b); break; case ‘/’: if(b == 0){ printf(“Khong the chia cho 0!”); }else{ printf(“%d / %d = %.2f”, a, b, (float)a / b); } break; default: printf(“Khong co phep toan %c!”, opera); break; } }
Kết quả chạy chương trình:
PS G:c_courcesday_22> .SwitchStatement.exe Nhap phep toan: + Nhap vao 2 so a, b: 2 3 2 + 3 = 52 – 3 = -1 PS G:c_courcesday_22> .SwitchStatement.exe Nhap phep toan: * Nhap vao 2 so a, b: 2 3 2 * 3 = 6
Lệnh goto trong C
Lệnh
goto
cho phép code của bạn nhảy đến thực hiện ở vị trí
label
bất kỳ của chương trình mà không cần nhất định phải theo thứ tự từ trên xuống. Do tính chất nhảy “lung tung” chẳng giống ai nên lệnh
goto
không được khuyến khích sử dụng.
Cú pháp của lệnh
goto
như sau:
goto label; … .. … … .. … label: statement;
Trong đó,
label
là một định danh. Hình dưới đây cho thấy code đang chạy nếu gặp lệnh
goto
sẽ bỏ tiến trình sau nó mà nhảy tới nơi
label
để chạy tiếp.
Ví dụ về việc sử dụng lệnh
goto
trong C:
#include
int main(){ int count = 0; go_here: printf(“Lap trinh khong kho!n”); if(count < 5){ count++; goto go_here; } }
Kết quả chạy chương trình:
PS G:c_courcesday_22> .GoToStatement.exe Lap trinh khong kho! Lap trinh khong kho! Lap trinh khong kho! Lap trinh khong kho! Lap trinh khong kho! Lap trinh khong kho!
Tài liệu tham khảo
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Câu điều kiện Switch trong C++ (Switch statements) dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!
Example
#include
int main () { /* local variable definition */ int a = 100; int b = 200; switch(a) { case 100: printf(“This is part of outer switch\n”, a ); switch(b) { case 200: printf(“This is part of inner switch\n”, a ); } } printf(“Exact value of a is : %d\n”, a ); printf(“Exact value of b is : %d\n”, b ); return 0; }
When the above code is compiled and executed, it produces the following result −
This is part of outer switch This is part of inner switch Exact value of a is : 100 Exact value of b is : 200
c_decision_making.htm
Advertisements