Cách dùng câu lệnh Switch trong C++
Câu lệnh điều kiện là tính năng chung của tất cả ngôn ngữ lập trình. Các câu lệnh này được dùng để kiểm soát luồng chương trình và chỉ định khi nào khối mã cụ thể nên được thực thi.
Các câu lệnh điều kiện chính dùng trong C++ là if và if ... else. Ngoài ra, C++ cung cấp câu lệnh switch. Câu lệnh này đánh giá một biểu thức đối với nhiều trường hợp tiềm năng và thực thi khối mã nếu biểu thức khớp với trường hợp tương ứng của khối đó. Câu lệnh switch hoạt động tương tự như câu lệnh if bao gồm nhiều câu lệnh if ... else.
Trong hướng dẫn này, chúng ta sẽ thảo luận — bao gồm qua ví dụ — cách sử dụng câu lệnh switch trong C++. Chúng ta cũng sẽ thảo luận cách sử dụng từ khóa break và default với câu lệnh switch. Sau khi đọc hướng dẫn này, bạn sẽ thành thạo việc sử dụng câu lệnh switch C++.
Câu lệnh Điều kiện C++
Câu lệnh điều kiện như if và if ... else được dùng để đưa ra quyết định trong chương trình. Ví dụ, câu lệnh if có thể chỉ thị chương trình chạy khối mã nếu người dùng trên 16 tuổi, hoặc nếu hôm nay là thứ Tư.
Câu lệnh if và if ... else là hình thức phổ biến nhất của câu lệnh điều kiện. Chúng chạy khối mã nếu điều kiện đúng; ngược lại, không làm gì. Đây là ví dụ câu lệnh if C++:
int age = 15;
if (age > 16) {
cout<<"Người dùng này trên 16 tuổi."
}
Trong ví dụ này, mã của chúng ta đánh giá xem biến age có lớn hơn 16 không. Nếu có, câu Người dùng này trên 16 tuổi. được in ra console; ngược lại, không có gì xảy ra. Trong trường hợp này, người dùng 15 tuổi, nên age > 16 đánh giá là sai. Do đó, chương trình không thực thi mã liên quan đến câu lệnh if của chúng ta.
Nhưng nếu bạn muốn đánh giá đối với nhiều điều kiện thì sao?
Đó là nơi câu lệnh switch xuất hiện. Mặc dù bạn có thể dùng câu lệnh if ... else để đánh giá nhiều điều kiện trong câu lệnh if, cách tiếp cận này có thể kém hiệu quả và làm mã khó đọc hơn. Vì vậy, nhà phát triển thường dùng câu lệnh switch để đánh giá một câu lệnh đối với nhiều trường hợp tiềm năng.
Câu lệnh Switch C++
Câu lệnh switch, còn gọi là câu lệnh switch ... case, cho phép bạn kiểm tra xem một biểu thức có bằng một trong nhiều case hay không. Nếu biểu thức nêu ra khớp (nghĩa là bằng) một trong các case trong khối switch, mã cụ thể liên quan đến case đó sẽ được thực thi.
Câu lệnh switch chứa một hoặc nhiều câu lệnh case. Chương trình dùng câu lệnh case để khai báo điều kiện mà biểu thức mục tiêu nên được đánh giá đối với.
Câu lệnh switch chấp nhận một biểu thức để kiểm tra, được bao quanh bởi dấu ngoặc đơn, cũng như một hoặc nhiều case bạn muốn đánh giá biểu thức của mình đối với. Các case này được bao quanh trong ngoặc nhọn.
Đây là cú pháp cho câu lệnh switch C++:
switch (biểu_thức) {
case case_thứ_nhất:
// Mã được thực thi nếu biểu_thức khớp case_thứ_nhất
break;
case case_thứ_hai:
// Mã được thực thi nếu biểu_thức khớp case_thứ_hai
break;
default:
// Mã được thực thi nếu không biểu thức nào khớp
}
Đây là logic cho câu lệnh switch C++ trên:
- Chương trình đánh giá biểu thức.
biểu_thứcđược so sánh vớicase_thứ_nhất. Nếu khớp, chương trình sẽ thực thi mã trong khốicase_thứ_nhất. Sau đó, từ khóabreaksẽ chạy, kết thúc khối switch.
Lưu ý: chúng ta thảo luận từ khóa break trong phần sau của bài viết. Về cơ bản, từ khóa này nói cho chương trình biết để chuyển sang phần sau khối switch hiện tại.
- Nếu
biểu_thứckhông khớpcase_thứ_nhất,biểu_thứcsẽ được so sánh vớicase_thứ_hai. - Nếu
biểu_thứckhớpcase_thứ_hai, chương trình sẽ thực thi mã bên trong khốicase_thứ_hai, và câu lệnhbreaksẽ kết thúc khối switch. - Nếu
biểu_thứckhông khớp bất kỳ case nào trong khối switch, chương trình sẽ thực thi nội dung câu lệnh casedefault.
Lưu ý: chúng ta thảo luận khái niệm câu lệnh default, khi nó liên quan đến câu lệnh switch, trong phần sau. default là từ khóa nói cho chương trình biết làm gì nếu không có câu lệnh case nào trong khối switch khớp với biểu thức.
Trong câu lệnh switch, chương trình sẽ trước tiên đánh giá case đầu tiên. Nếu không đánh giá là đúng, chương trình sẽ đánh giá các case tiếp theo cho đến khi một điều kiện được thỏa mãn hoặc cho đến khi tất cả điều kiện được đánh giá.
Ví dụ C++ Switch
Hãy đi qua một ví dụ từng bước để khám phá cách câu lệnh switch hoạt động trong C++.
Giả sử chúng ta viết chương trình cho biết còn bao nhiêu ngày đến cuối tuần. Trong chương trình này, mỗi ngày trong tuần sẽ được biểu diễn bằng số nguyên — ví dụ: Thứ Hai là 1, Thứ Ba là 2, Thứ Tư là 3, và cứ thế.
Chương trình này sẽ lấy ngày hiện tại trong tuần (được biểu diễn như số nguyên) và so sánh nó với một tập hợp case. Mỗi case sẽ chỉ thị chương trình in ra câu nói số ngày còn lại đến cuối tuần, dựa trên ngày trong tuần hiện tại.
Đây là mã chúng ta có thể dùng để hoàn thành tác vụ này:
#include <iostream>
using namespace std;
int main() {
int dayOfWeek = 3;
switch (dayOfWeek) {
case 1:
cout<<"Còn 5 ngày đến cuối tuần!";
break;
case 2:
cout<<"Còn 4 ngày đến cuối tuần!";
break;
case 3:
cout<<"Còn 3 ngày đến cuối tuần!";
break;
case 4:
cout<<"Còn 2 ngày đến cuối tuần!";
break;
case 5:
cout<<"Còn 1 ngày đến cuối tuần!";
break;
}
}
Mã của chúng ta trả về:
Còn 3 ngày đến cuối tuần.
Hãy phân tích mã của chúng ta. Đầu tiên, chúng ta khai báo biến, gọi là dayOfWeek, lưu ngày hiện tại trong tuần như số nguyên. Chúng ta sau đó dùng câu lệnh switch chỉ định năm case.
Đầu tiên, chương trình kiểm tra xem dayOfWeek có bằng 1 không. Nếu có, chương trình in Còn 5 ngày đến cuối tuần! ra console, sau đó thoát khỏi câu lệnh switch nhờ break.
Nếu dayOfWeek không bằng 1, chương trình đánh giá case tiếp theo. Điều này sẽ tiếp diễn cho đến khi chương trình đánh giá mọi case trong câu lệnh switch của chúng ta — trừ khi một case đánh giá là đúng, lúc đó câu lệnh break sẽ chạy và câu lệnh switch sẽ kết thúc.
Trong ví dụ của chúng ta, chúng ta nói rằng ngày trong tuần là 3 — nghĩa là Thứ Tư. Kết quả, chương trình in Còn 3 ngày đến cuối tuần! ra console. Sau đó, chương trình kết thúc khối mã switch và tiếp tục chạy chương trình chính.
Break trong C++
Câu lệnh switch C++ thường dùng từ khóa break trong mỗi case, như chúng ta làm trong ví dụ trên. Khi chương trình thực thi câu lệnh break, mã trong khối đã cho sẽ ngừng thực thi và phần còn lại của chương trình sẽ tiếp tục chạy.
Câu lệnh break thường dùng với câu lệnh switch vì chúng ngăn chương trình đánh giá phần còn lại của các case trong câu lệnh switch.
Đây là ví dụ từ khóa break trong câu lệnh switch, lấy từ ví dụ mở rộng ở trên:
...
case 3:
cout<<"Còn 3 ngày đến cuối tuần!";
break;
...
Vì vậy, trong ví dụ trên, nếu dayOfWeek bằng 3, chương trình sẽ thực thi câu lệnh break để không có case nào khác được đánh giá. Điều này hợp lý vì nếu dayOfWeek bằng 3, nó không thể bằng 4 hoặc 5, là case tiếp theo trong câu lệnh switch của chúng ta.
Nếu dayOfWeek bằng 3, thông báo Còn 3 ngày đến cuối tuần! được in ra console. Sau đó, câu lệnh switch ngừng thực thi vì câu lệnh break chỉ thị chương trình chuyển sang phần sau khối switch.
Default trong C++
Trong C++, từ khóa case default tùy chọn nói cho mã của chúng ta biết làm gì nếu không case nào đánh giá là đúng.
Trong ví dụ trên, mã của chúng ta chỉ tính đến các ngày trong tuần. Vì vậy, nếu đã là cuối tuần, chương trình sẽ không làm gì. Nếu chúng ta dùng câu lệnh default, chúng ta có thể chỉ thị mã thực hiện hành động nếu không case nào được thỏa mãn.
Giả sử chúng ta muốn in thông báo Đã là cuối tuần! ra console nếu là Thứ Bảy hoặc Chủ Nhật. Chúng ta có thể dùng ví dụ câu lệnh switch từ trên và mã sau để hoàn thành tác vụ này:
...
case 5:
cout<<"Còn 1 ngày đến cuối tuần!";
break;
default:
cout<<"Đã là cuối tuần!";
break;
...
Theo mã này, nếu dayOfWeek không bằng bất kỳ case nào chúng ta chỉ định — hoặc, nói cách khác, nếu dayOfWeek bằng 6 hoặc 7 — nội dung câu lệnh default sẽ được thực thi. Vì vậy, nếu hôm nay là Thứ Bảy, ví dụ, thông báo sau sẽ được in ra console:
Đã là cuối tuần!
Kết luận
Câu lệnh switch được dùng trong C++ để đánh giá một câu lệnh đối với nhiều kết quả có thể. Nếu một trong các biểu thức này đánh giá là đúng, chương trình sẽ thực thi mã liên quan đến kết quả đó. Nếu không biểu thức nào đánh giá là đúng, chương trình sẽ thực thi nội dung câu lệnh default, nếu được chỉ định.
Hướng dẫn này thảo luận, với ví dụ, cách dùng câu lệnh switch C++ và cách dùng từ khóa break và default với switch. Bây giờ bạn đã sẵn sàng bắt đầu sử dụng câu lệnh switch trong mã của bạn như một chuyên gia!