CÂU LỆNH CASE
8.2.1. Cú pháp, u đồ và ý nghĩa :
Trong một số trường hợp, khi phải lựa chọn một việc trong nhiều việc thì
các cấu trúc IF lồng nhau tỏ ra rắc rối, khó viết, khó kiểm tra tính đúng đắn
của nó. Việc dùng cu trúc CASE có thể khắc phục được nhược điểm này.
Lnh CASE có hai dạng, chúng chỉ khác nhau ở một điểm là trong dng 2
có ELSE LệnhQ, còn trong dng 1 thì không ( hình 8.3).
CASE biểuthức OF
hằng1 : LệnhP1;
hằng2 : LệnhP2;
. . . .
hằngk : LệnhPk;
END;
CASE biểuthức OF
hằng1 : LệnhP1;
hằng2 : LệnhP2;
. . . .
hằngk : LệnhPk;
ELSE LệnhQ;
END;
Dạng 1 Dạng 2
Hình 8.3 : Cú pháp của lệnh Case
Chú ý là lệnh CASE phải kết thúc bằng END;
Các yêu cầu:
Kiểu dữ liệu của biểuthức chỉ có thể là nguyên, ký tự, Lôgic, hoặc kiểu liệt
kê hay kiểu đoạn con. Xin nhấn mạnh rằng: biểuthức không được là kiểu
thực hay kiểu chuỗi, và đây chính là hạn chế của lnh CASE so với lệnh IF.
Các hằng1, hằng2, ..., hằngk phải có kiểu dữ liu phù hợp với kiểu dữ liu
của biểuthức.
Ý nghĩa: Tùy theo gía trị của biểuthức bằng hằng nào trong các hằng1,
hằng2, ..., hằngk mà quyết định thực hiện lệnh nào trong các lệnhP1, lệnhP2,
..., LnhPk.
Cách thức thực hiện của lệnh CASE như sau:
Bước 1: Tính tn gía trị của biuthức
Bước 2: So nh và lựa chọn:
Nếu gía trị của biểuthức = hằng1 thì thực hiện LnhP1, rồi chuyển sang
lnh kế tiếp sau End, ngược lại:
Nếu gía trị của biểuthức = hằng2 thì thực hiện LnhP2, rồi chuyển sang
lnh kế tiếp sau End, ngược lại:
.v.v.
Nếu gía trị của biểuthức = hngk thì thực hiện LnhPk, rồi chuyển sang
lnh kế tiếp sau End, ngược lại :
a) chuyn ngay sang lệnh kế tiếp sau End ( nếu là dng 1)
b) thc hiện LnhQ, rồi chuyển sang lệnh kế tiếp sau End (nếu là dng 2) .
Hình 8.4 hình 8.5 là các sơ đồ ca lệnh CASE vẽ cho trường hợp k=3.
Trong hình vẽ , ta ký hiệu:
G là gía trị của biểuthức
H1, H2, H3 hng1, hằng2, hằng3
P1, P2, P3, Q là LnhP1, LệnhP2 , LệnhP3 va?LệnhQ.
8.2.2. Các ví d :
Ví dụ 8.8: Nhập vào họ tên năm sinh của một người, cho biết người
này thuộc lứa tuổi nào: sinh, nhi đồng, thiếu niên, thanh niên, trung niên
hay người lớn tuổi, biết rằng:
Sơ sinhtuổi từ 0 đến 1
Nhi đồng : có tuổi từ 2 đến 9
Thiếu niên có tui từ 10 đến 15
Thanh niên có tui từ 16 đến 32
Trung niên có tui từ 33 đến 50
Người lớn tui có tuổi trên 50.
Chương trình được viết như sau:
PROGRAM VIDU88;
Var
Ho_ten: String[20];
Namsinh, Namnay, Tuoi : Integer ;
Phanloai : String[14];
Begin
Write(‘ Nhập họ và tên: ‘);