IV.3 Cấu trỳc switch

Một phần của tài liệu §¹i häc quèc gia hµ néi khoa c«ng nghÖgi¸o tr×nh tin häc c¬ së phÇn lËp tr×nh potx (Trang 50 - 52)

IV Cỏc cấu trỳc điều khiển chương trỡnh

IV.3 Cấu trỳc switch

Cấu trỳc switch cho phộp lựa chọn một nhỏnh trong nhiều khả năng tuỳ vào điều kiện xẩy ra. Cỳ phỏp như sau

switch (<bt_E>) { case <bt_1>: S1 ; case <bt_2>: S2 ; . . . case <bt_n>: Sn ; [ default : S ; ] } Trong đú − <bt_E> là biểu thức nguyờn. − <bt_1>, <bt_2>,..,<bt_n> là cỏc biểu thức hằng, nguyờn và chỳng phải khỏc nhau.

− S1,S2, .., Sn , S là một hoặc nhiều lệnh được gọi là thõn của cấu trỳc switch.

− case, default là cỏc từ khoỏ

S hot động ca switch

ƒ Đầu tiờn <bt_E> được tớnh, sau đú lần lượt so sỏnh giỏ trị của <bt_E> với cỏc biểu thức hằng <bt_1>, <bt_2>,..<bt_n>.

ƒ Nếu giỏ trị của một biểu thức hằng thứ k trong cỏc biểu thức này trựng với giỏ trị

của <bt_E> thỡ chương trỡnh sẽ thực hiện cỏc lệnh bắt đầu từ Sk và tiếp tục cỏc lệnh phớa dưới cho tới khi:

- gặp cõu lệnh : break (tất nhiờn nếu gặp cỏc cõu lệnh return, exit thỡ cũng kết thỳc)

- gặp dấu đúng múc } hết cấu trỳc switch

ƒ Nếu <bt_E> khụng trựng với giỏ trị nào trong cỏc biểu thức hằng thỡ cõu lệnh S (cỏc lệnh sau mệnh đề default nếu cú) sẽ được thực hiện, rồi ra khỏi cấu trỳc switch.

Vớ dụ 3.1: Chương trỡnh nhập một biểu thức đơn giản dạng a⊗b (a, b là cỏc số nguyờn, ⊗

là một trong cỏc dấu phộp toỏn số học +, -, *, x, /, :,) tớnh và in kết quả.

Giải : Ởđõy chỳng ta giả sử cú thể dựng phộp nhõn là dấu * hoặc chữ x, phộp chia cú thể

là dấu : hay /. Giả thiết người dựng nhập biểu thức đỳng dạng a⊗b.

Chỳng ta cú chương trỡnh như sau: 1: #include <stdio.h> 2: #include <conio.h> 3: void main() 4: { 5: int a,b; 6: char tt; // dấu toỏn tử

7: printf("\nnhap bieu thuc don gian :");

8: scanf("%d%c%d",&a,&tt,&b);

9: switch(tt)

10: {

11: case '+': printf("\n %d %c %d = %d ",a,tt,b, a+b);

12: break;

13: case '-': printf("\n %d %c %d = %d ",a,tt,b, a-b);

14: break;

15: case 'x':

16: case '*': printf("\n %d %c %d = %d ",a,tt,b, a*b);

17: break;

18: case ':':

19: case '/': if(b!=0)

20: printf("\n %d %c %d = %d ",a,tt,b, a/b);

21: else

22: printf("loi chia cho 0");

23: break;

24: default: printf("\n\nkhong hieu phep toan %c",tt);

25: }

26: getch();

27: }

Trong chương trỡnh vớ dụ này nếu bạn nhập biểu thức vớ dụ như 9+2 tức là ta cú a=9, b=2, tt (dấu toỏn tử) = ‘+’.

Như vậy mệnh đề case ‘+’ (dũng 11) đỳng, chương trỡnh thực hiện cõu lệnh printf("\n %d %c %d = %d ",a,tt,b, a+b);

break;

và chương trỡnh in ra kết quả

9 + 2 = 11

Nếu bạn nhập 9*2 hoặc 9x2, thỡ sự hoạt động cũng tương tự và kết quả in ra là 9 * 2 = 18

hoặc 9 x 2 = 18

Nếu bạn nhập khụng đỳng phộp toỏn hoặc khụng đỳng khuụn dạng thỡ mệnh đề default

được thực hiện và bạn sẽ nhận được thụng bỏo ‘khong hieu phep toan..’.

Lưu ý :

− Khi hết cỏc lệnh (Si) tương ứng của mệnh đề case <bt_i> nếu khụng cú cõu lệnh break (hoặc một lệnh kết thỳc khỏc) thỡ điều khiển được chuyển tới lệnh Si+1 mà khụng cần kiểm tra biểu thức hằng <bt_i+1> cú bằng <bt_E> hay khụng.

− Mệnh đề default cú thể xuất hiện tại vị trớ tuỳ ý trong thõn của switch chứ khụng nhất thiết phải là cuối của cấu trỳc ( tất nhiờn khi đú cần cõu lệnh break).

− Cấu trỳc switch cú thể lồng nhau hoặc cú thể chứa cỏc cấu trỳc điều khiển khỏc.

Một phần của tài liệu §¹i häc quèc gia hµ néi khoa c«ng nghÖgi¸o tr×nh tin häc c¬ së phÇn lËp tr×nh potx (Trang 50 - 52)

Tải bản đầy đủ (PDF)

(103 trang)