3.2. Các thành phần cơ bản
3.3.3. Câu lệnh lựa chọn CASE OF
Ở phần trên, chúng ta đã nghiên cứu và làm 2 ví dụ về câu lệnh If để thực hiện chỉ rẽ vào một trong hai nhánh tương ứng với giá trị của biểu thức logic. Trong phần này, chúng ta nghiên cứu câu lệnh lựa chọn Case (rẽ nhánh theo giá trị) cho phép lựa chọn để thực hiện một trong nhiều công việc tùy theo giá trị của biểu thức. Cú pháp: Case <biểu thức> of Tập_hằng 1: <Lệnh 1>; Tập_hằng 2: <Lệnh 2>; Tập_hằng 3: <Lệnh 3>; .... Tập_hằng n: <Lệnh n>; Tập_hằng 1: <Lệnh 1> Else <Tập lệnh n+1> End;
Lệnh Case có thể không có phần Else <lệnh n+1> Giải thích:
- Tập_hằng_i (i=1,2, ...,n) có thể bao gồm các hằng và các đoạn con; - Giá trị của <Biểu thức> và giá trị trong các Tập_hằng_i phải có cùng kiểu dữ liệu và phải là kiểu vô hướng đếm được (Ví dụ: kiểu số nguyên, logic, ký tự, liệt kê)
- Tập hằng nào có chứa giá trị tương đương với giá trị của <biểu thức> thì lệnh sau dấu hai chấm (:) của tập hằng đó được thực hiện, sau đó máy thoát khỏi lệnh Case.
- Trong trường hợp tất cả các tập hằng không chứa giá trị tương ứng với giá trị của <biểu thức> thì lệnh sau từ khóa Else được thực hiện. Trường hợp này, nếu
96
không có cả phần Else <lệnh n+1>; thì lệnh Case này thoát và không có lệnh nào sau dấu hai chấm được thực hiện.
Ví dụ: Viết chương trình cho nhập vào một số nguyên trong khoảng từ 1 ..12. Cho biết tháng đó có bao nhiêu ngày.
Program Kiem_tra_ngay_trong_thang; Uses crt;
Var thang: byte; Begin
Clrscr;
Write(‘Nhap vao so (tu 1..12): ’); Readln(thang);
Case Thang of
4, 6, 9, 11: Writeln(‘Thang nay co 30 ngay’); 2: Writeln(‘Thang nay co 28 hoac 29 ngay’) Else
Writeln(‘Thang nay co 31 ngay’); End;
Readln End.