Lệnh if chỉ cho phép ta chọn một trong hai phương án tùy theo biểu thức điều kiện. Tuy nhiên đôi khi ta cần phải lựa chọn 1 trong nhiều phương án khác nhau. Để thuận tiện ta sẽ dùng câu lệnh switch: switch (biểu thức) { case hằng1 : [ khối lệnh 1 ; ] case hằng2 : [ khối lệnh 2 ; ] ... case hằngn : [ khối lệnh n ; ] [default : khối lệnh n+1 ; ] } Trong đó :
biểu thức: là biểu thức nguyên bất kì Các hằng i phải có giá trị khác nhau
Các khối lệnh i và thành phần default là không bắt buộc. • Sự hoạt động của câu lệnh switch :
Máy sẽ so sánh biểu thức với các hằng i theo thứ tự từ trên xuống. Khi biểu thức có giá trị bằng hằng i thì khối lệnh i được thực hiện. Nếu trong khối lệnh đó không có lệnh nhảy thì sẽ thực hiện tiếp tục các khối lệnh bên dưới mà không cần so sánh tiếp. Nếu trong khối lệnh đó có lệnh break thì sẽ thoát ra khỏi câu lệnh switch. Khi biểu thức có giá trị khác với tất cả hằng i thì sẽ thực hiện khối lệnh n+1 (nếu có).
Khi biểu thức bằng với hằng i, để sau khi thực hiện xong khối lệnh i chương trình sẽ thoát ra ngoài câu lệnh switch sớm hơn ta có thể dùng lệnh break. Ta cũng có thể sử dụng lệnh goto để nhảy ra khỏi câu lệnh switch (ta không nên dùng lệnh goto).
Ví dụ : #include <stdio.h> #include <conio.h> main() { char ch;
printf(“\n Nhap 1 ki tu:”); scanf(“%c”,&ch);
switch (ch) {
case ‘A’ : printf(“\nChu A”); break;
case ‘B’ : printf(“\nChu B”); break;
case ‘C’ : printf(“\nChu C”); break;
default : printf(“\nKhong phai cac chu A,B,C”); }
getch(); return 0; }
• Nhiều giá trị case trong một trường hợp :
Máy sẽ tiếp tục làm việc khi chưa gặp lệnh thoát, vì vậy ta có thể sắp xếp để có nhiều giá trị case trong một trường hợp
Ví dụ : #include <stdio.h> #include <conio.h> main() { int n; printf(“Nhap diem:”); scanf(“%d”,&n);
switch (n) { case 0: case 1: case 2: case 3:
case 4: printf(“loại kém”);break; case 5:
case 6: printf(“loại trung bình”);break; case 7:
case 8: printf(“loại giỏi”);break; default: printf(“loại giỏi”); }
getch(); return 0; }
Trong C++ ta có thể viết như sau : #include <stdio.h> #include <conio.h> main() { int n; printf(“Nhap diem:”); scanf(“%d”,&n); switch (n) {
case 0,1,2,3,4: printf(“loại kém”);break; case 5,6: printf(“loại trung bình”);break; case 7,8: printf(“loại giỏi”);break; default: printf(“loại giỏi”);
} getch(); return 0; }
Ta nên sử dụng default cho dù không bao giờ xảy ra trường hợp đó: ta dùng default để kiểm tra xem có thể có lỗi hay không bằng cách đặt một thông báo lỗi ở đó, từ đó ta dễ gỡ rối.