No7 - Cấu trúc lệnh switch ... case trong C/C++

1.    Câu lệnh lựa chọn switch

a.    Ý nghĩa

C++ cung cấp một câu lệnh cấu trúc switch, cho phép chương trình có thể chọn một trong nhiều nhánh để thực hiện.

b.    Cú pháp

switch (biểu thức điều khiển)
{
    case biểu_thức_1: dãy lệnh 1 ;
    case biểu_thức_2: dãy lệnh 2 ;
    case ..... ;
    case biểu_thức_n: dãy lệnh n ;
    default: dãy lệnh n+1;
}

Trong đó:
-        biểu thức điều khiển: phải có kiểu nguyên hoặc kí tự,
-        các biểu_thức_i: được tạo từ các hằng nguyên hoặc kí tự,
-        các dãy lệnh có thể rỗng. Không cần bao dãy lệnh bởi cặp dấu {},
-        nhánh default có thể có hoặc không và vị trí của nó có thể nằm bất kỳ trong câu lệnh.
Cấu trúc switch trong C/C++

c.    Cách thực hiện     

- Chương trình tính giá trị của biểu thức điều khiển (btđk)
- So sánh kết quả của btđk với giá trị của các biểu_thức_i bên dưới
       + Nếu giá trị của btđk bằng giá trị của biểu thức thứ i đầu tiên nào đó thì chương trình sẽ thực hiện dãy lệnh thứ i cho đến hết.
       + Nếu giá trị của btđk không gặp biểu thức (nhánh case) nào bằng thì chương trình thực hiện dãy lệnh trong default.
        + Trường hợp câu lệnh switch không có nhánh default và btđk không khớp với bất cứ nhánh case nào thì chương trình không làm gì.
Nếu muốn lệnh switch chỉ thực hiện nhánh thứ i (khi btđk = biểu_thức_i) ta đặt thêm lệnh break; 

2.    Ví dụ minh hoạ

Ví dụ 1 : In số ngày của một tháng bất kỳ nào đó được nhập từ bàn phím.
   int th;
   cout << “Cho biết tháng cần tính: “ ; cin >> th ;
   switch (th)
   {
               case 1: case 3: case 5: case 7: case 8: case 10:
               case 12: cout << "tháng này có 31 ngày" ; break ;
               case 2: cout << "tháng này có 28 ngày" ; break;
               case 4: case 6: case 9:
case 11: cout << "tháng này có 30 ngày" ; break;
               default: cout << "Bạn đã nhập sai tháng, không có tháng này" ;
   }
    
Ví dụ 2 : Nhập 2 số a và b vào từ bàn phím. Nhập kí tự thể hiện một trong bốn phép toán: cộng, trừ, nhân, chia. In ra kết quả thực hiện phép toán đó trên 2 số a, b.
void main()
{
   float a, b, c ;                           // các toán hạng a, b và kết quả c
   char dau ;                              // phép toán được cho dưới dạng kí tự
   cout << "Hãy nhập 2 số a, b: " ; cin >> a >> b ;
   cout << "và dấu phép toán: " ; cin >> dau ;
   switch (dau)
   {
               case '+': c = a + b ; break ;
               case '-': c = a - b ; break ;
               case 'x': case '.': case '*': c = a * b ; break ;
               case ':': case '/': c = a / b ; break ;
   }
   cout << setiosflags(ios::showpoint) << setprecision(4) ;           // in 4 số lẻ
   cout << "Kết quả là: " << c ;
}

Trong chương trình trên ta chấp nhận các kí tự x, ., * thể hiện cho phép toán nhân và :, / thể hiện phép toán chia.

Post a Comment

0 Comments