Bài đăng nổi bật


Câu lệnh switch cho phép ta đưa ra quyết định có nhiều cách lựa chọn, nó kiểm tra giá trị của một biểu thức trên một danh sách các hằng số nguyên hoặc kí tự. Khi nó tìm thấy một giá trị trong danh sách trùng với giá trị của biểu thức điều kiện, các câu lệnh gắn với giá trị đó sẽ được thực hiện. Cú pháp tổng quát của lệnh switch như sau:
         switch (biểu_thức)
         {        case hằng_1:
                            chuỗi_câu_lệnh;
                            break;
                   case hằng_2:
                            chuỗi_câu_lệnh;
                            break;
                   case hằng_3:
                            chuỗi_câu_lệnh;
                            break;
                   default:
                            chuỗi_câu_lệnh;
         }
Ở đó, switch, casedefault là các từ khoá, chuỗi_câu_lệnh có thể là lệnh đơn hoặc lệnh ghép và không cần đặt trong cặp dấu ngoặc. Biểu_thức theo sau từ khóa switch phải được đặt trong dấu ngoặc ( ), và toàn bộ phần thân của lệnh switch phải được đặt trong cặp ngoặc nhọn { }. Kiểu dữ liệu kết quả của biểu_thức và kiểu dữ liệu của các hằng theo sau từ khoá case phải đồng nhất. Chú ý, hằng số sau case chỉ có thể là một hằng số nguyên hoặc hằng ký tự. Nó cũng có thể là các hằng biểu thức –  những biểu thức không chứa bất kỳ một  biến nào. Tất cả các giá trị của case phải khác nhau.
Trong câu lệnh switch, biểu thức được xác định giá trị, giá trị của nó được so sánh với từng giá trị gắn với từng case theo thứ tự đã chỉ ra. Nếu một giá trị trong một case trùng với giá trị của biểu thức, các lệnh gắn với case đó sẽ được thực hiện. Lệnh break (sẽ nói ở phần sau) cho phép thoát ra khỏi switch. Nếu không dùng lệnh break, các câu lệnh gắn với case bên dưới sẽ được thực hiện không kể giá trị của nó có trùng với giá trị của biểu thức điều kiện hay không. Chương trình cứ tiếp tục thực hiện như vậy cho đến khi gặp một lệnh break. Chính vì thế, lệnh break được coi là lệnh quan trọng nhất khi dùng switch.
Các câu lệnh gắn với default sẽ được thực hiện nếu không có case nào thỏa mãn. Lệnh default là tùy chọn. Nếu không có lệnh default và không có case nào thỏa mãn, không có hành động nào được thực hiện. Có thể thay đổi thứ tự của case và default.
Ví dụ:
#include <stdio.h>
int main () {
         char ch;             
         printf(“\nEnter a lower cased alphabet (a - z): ”);
         scanf(“%c”, &ch);
         if (ch < ‘a’ || ch > ‘z’)
                   printf(“\nCharacter not a lower cased alphabet”);
         else
                   switch (ch){
                            case ‘a’:
                            case ‘e’:
                            case ‘i’:
                            case ‘o’:
                            case ‘u’:
                                     printf(“\nCharacter is a vowel”);
                                     break;
                            case ‘z’:
                                     printf (“\nLast Alphabet (z) was entered”);
                                     break;
                            default:
                                     printf(“\nCharacter is a consonant”);
                                     break;
                   }
}
Chương trình trên nhận vào một kí tự ở dạng chữ thường và hiển thị thông báo kí tự đó là nguyên âm, là chữ z hay là một phụ âm. Nếu nó không phải ba loại ở trên, chương trình hiển thị thông báo “Character not a lower cased alphabet”.
Nên sử dụng lệnh break trong cả case cuối cùng hoặc default mặc dù về mặt logic là không cần thiết. Nhưng điều đó rất có ích nếu sau này chúng ta đưa thêm case vào cuố
Dưới đây là một ví dụ, ở đó biểu thức của switch là một biến kiểu số nguyên và giá trị của mỗi case là một số nguyên.
Ví dụ
/* Integer constants as case labels */
#include <stdio.h>
void main() {
         int basic;
         printf(“\n Please enter your basic: ”);
         scanf(“%d”, &basic);
         switch (basic) {
                   case 200:
                            printf(“\n Bonus is dollar %d\n”, 50);
                            break;
                   case 300:
                            printf(“\n Bonus is dollar %d\n”, 125);
                            break;
                   case 400:
                            printf(“\n Bonus is dollar %d\n”, 140);
                            break;
                   case 500:
                            printf(“\n Bonus is dollar %d\n”, 175);
                            break;
                   default:
                            printf(“\n Invalid entry”);
                            break;
          }
}

Từ ví dụ trên, lệnh switch rất thuận lợi khi chúng ta muốn kiểm tra một biểu thức dựa trên một danh sách giá trị riêng biệt. Nhưng nó không thể dùng để kiểm tra một giá trị có nằm trong một miền nào đó hay không. Ví dụ, không thể dùng switch để kiểm tra xem basic có nằm trong khoảng từ 200 đến 300 hay không, để từ đó xác định mức tiền thưởng. Trong những trường hợp như vậy, ta phải sử dụng if-else.

Post a Comment

Mới hơn Cũ hơn