Wednesday, April 27, 2011

Bí mật switch-case, có phải ai cũng biết?

Tôi tin chắc rằng bạn sẽ có trải nghiệm  thú vị về câu lệnh switch - case thông qua những gì mà tôi sẽ chia sẽ dưới đây ^^
I) Switch - case là gì?
switch - case là cấu trúc cho phép kiểm tra giá trị của 1 biến kiểu nguyên để thực hiện nhiều nhóm câu lệnh tương ứng khác nhau.
Hình 1: cú pháp lệnh switch - case
Hình 1 mô tả một cấu trúc switch - case hoàn chỉnh, biến điều khiển đầu vào là a và có kiểu nguyên, cấu trúc này có 3 khối lệnh, Block 1, Block 2Block 3.
Nếu a có giá trị 0 thì các các câu lệnh trong Block 1 sẽ được thực hiện, nếu a có giá trị 1 thì các câu lệnh trong Block 2 sẽ được thực hiện.
Ngược lại, nếu a khác 0 và khác 1 thì các câu lệnh trong Block 3 sẽ được thực hiện.

II) Switch - case có những bí mật nào?
Secret 1: Biểu thức được sử dụng trong switch phải là kiểu nguyên (integral type) int, char hoặc enum, ngoài ra các kiểu dữ liệu khác đều không hợp lệ khi sử dụng trong switch.
Hình 1: Lỗi khi sử dụng biến kiểu float trong switch.
Secret 2: Nếu một trường hợp "case" thỏa mãn thì chương trình sẽ thực hiện tất cả các câu lệnh bắt đầu từ vị trí "case" đó cho đến khi gặp lệnh break;
Hình 2: Chương trình thực hiện ngoài ý muốn nếu thiếu break;
Trong trường nhợp như Hình 2 vì kết thúc case 0 chương trình không gặp lệnh break; nên nó sẽ tiếp tục thực hiện case 1 cho đến khi gặp lệnh break; do đó kết quả thực hiện chương trình sẽ là:
Secret 3: Câu lệnh default có thể đặt bất cứ chỗ nào trong switch, không nhất thiết phải là cuối cùng trong switch.
Hình 3: bạn có thể đặt khối lệnh default ở bất mọi vị trí bạn muốn trong switch
Secret 4: Đối số theo sau case phải là hằng số:
Hình 4: theo sau case nhất định phải là hằng số
Đoạn chương trình như trong Hình 4 sẽ báo lỗi tại dòng lệnh "case var: ..." vì var là một biến kiểu int, nó không phải là một hằng số nên không thể đặt sau case.
Secret 5Không thể có hai trường hợp case có cùng giá trị tham chiếu giống nhau:
Hình 5: Lỗi vì case 1 xuất hiện 2 lần.

Congratulation! xem đến đây tức là bạn đã được trang bị đầy đủ về cú pháp của lệnh switch - case, tôi hi vọng cách tiếp cận này sẽ cho bạn một chút thú vị và ấn tượng hơn so với sự khô khan của một văn bản khoa học ^^!



No comments:

Post a Comment