Pascal - Câu lệnh case - pdf 17

Download miễn phí Pascal - Câu lệnh case



Xây dựng thực đơn cho phép lựa chọn một trong bốn việc : tính tổng , tính
hiệu, tính tích hay tính thương của hai số x, y nhập từ bàn phím.
Màn hình cần hiện ra bốn mục sau cho mọi người lựa chọn :
A. TÍNH TỔNG HAI SỐ
B. TÍNH HIỆU HAI SỐ
C. TÍNH TÍCH HAI SỐ
D. TÍNH THƯƠNG HAI SỐ
Muốn chọn mục nào ta gõ chữ cái đầu của mục đó. Ví dụ gõ A thì màn
hình hiện kết qủa của x+y, gõ B thì hiện kết qủa của x-y, . Ðối với mục
D, nếu y khác không thì in kết qủa của x/y, còn y=0 thì in câu "Không xác
định".



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

CÂU LỆNH CASE
8.2.1. Cú pháp, lư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 cấu trúc CASE có thể khắc phục được nhược điểm này.
Lệnh CASE có hai dạng, chúng chỉ khác nhau ở một điểm là trong dạng 2
có ELSE LệnhQ, còn trong dạng 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, hay 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 lệnh CASE so với lệnh IF.
Các hằng1, hằng2, ..., hằngk phải có kiểu dữ liệu phù hợp với kiểu dữ liệu
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,
..., LệnhPk.
Cách thức thực hiện của lệnh CASE như sau:
Bước 1: Tính toán gía trị của biểuthức
Bước 2: So sánh và lựa chọn:
Nếu gía trị của biểuthức = hằng1 thì thực hiện LệnhP1, rồi chuyển sang
lệnh 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 LệnhP2, rồi chuyển sang
lệnh kế tiếp sau End, ngược lại:
.v.v.
Nếu gía trị của biểuthức = hằngk thì thực hiện LệnhPk, rồi chuyển sang
lệnh kế tiếp sau End, ngược lại :
a) chuyển ngay sang lệnh kế tiếp sau End ( nếu là dạng 1)
b) thực hiện LệnhQ, rồi chuyển sang lệnh kế tiếp sau End (nếu là dạng 2) .
Hình 8.4 và hình 8.5 là các sơ đồ của 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 là hằng1, hằng2, hằng3
P1, P2, P3, Q là LệnhP1, 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 và năm sinh của một người, cho biết người
này thuộc lứa tuổi nào: sơ 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ơ sinh có tuổi từ 0 đến 1
Nhi đồng : có tuổi từ 2 đến 9
Thiếu niên có tuổi từ 10 đến 15
Thanh niên có tuổi từ 16 đến 32
Trung niên có tuổi từ 33 đến 50
Người lớn tuổi 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: ‘);
Readln(Ho_ten);
Write(‘ Nhập năm sinh và năm nay : ‘);
Readln(Namsinh, Namnay);
Tuoi:=Namnay - Namsinh;
If Tuoi< 0 then writeln( ‘Nhập sai ‘)
else
begin
Case Tuoi OF
0 ,1 : Phanloai:= ‘sơ sinh’;
2 ..9 : Phanloai:= ‘nhi đong’;
10 ..15 : Phanloai:= ‘thieu niên’;
16 ..32 : Phanloai:= ‘thanh nien’;
33 ..50 : Phanloai:= ‘trung nien’;
else Phanloai:= ‘nguoi lon tuoi’;
End; { hết Case }
Writeln(Ho_ten, #32 , Tuoi, #32 , Phanloai);
end;
Readln;
End.
Chạy
Chép file nguồn
Trong ví dụ này, lệnh CASE dựa vào Tuổi để xác định lứa tuổi, kết qủa
lưu vào biến Phanloai. Ðóng vai trò hằng1 là hai số 0 và 1 viết cách nhau
bởi dấu phẩy, và dòng :
0,1: Phanloai:=‘So sinh’ ;
có nghĩa là khi Tuổi bằng 0 hay bằng 1 thì thực hiện lệnh gán:
Phanloai:=‘So sinh’ ;
Ðóng vai trò hằng2 là tất cả các số nguyên trong phạm vi từ 2 đến 9, và
dòng :
2 ..9 : Phanloai:= ‘nhi đong’;
có nghĩa là khi Tuổi bằng một trong các số nguyên từ 2 đến 9 thì thực hiện
lệnh gán: Phanloai:= ‘nhi đong’;
Ví dụ 8.9:
Xây dựng thực đơn cho phép lựa chọn một trong bốn việc : tính tổng , tính
hiệu, tính tích hay tính thương của hai số x, y nhập từ bàn phím.
Màn hình cần hiện ra bốn mục sau cho mọi người lựa chọn :
A. TÍNH TỔNG HAI SỐ
B. TÍNH HIỆU HAI SỐ
C. TÍNH TÍCH HAI SỐ
D. TÍNH THƯƠNG HAI SỐ
Muốn chọn mục nào ta gõ chữ cái đầu của mục đó. Ví dụ gõ A thì màn
hình hiện kết qủa của x+y, gõ B thì hiện kết qủa của x-y, ... Ðối với mục
D, nếu y khác không thì in kết qủa của x/y, còn y=0 thì in câu " Không xác
định".
Nếu người dùng nhập một ký tự khác A, B, C, D, a, b, c, d thì máy hiện
lời nhắc : " Không có mục này ".
Biến Ch kiểu ký tự được dùng để lưu chữ cái (mục) mà người dùng đã
chọn. Tùy theo giá trị của Ch mà lệnh CASE sẽ quyết định phải làm gì.
Chương trình được viết như sau :
PROGRAM VIDU89;
{ Thực đơn }
Uses Crt;
Var
x, y : Real;
Ch : Char;
Begin
Clrscr;
Write('Nhap x va y:');
Readln(x, y);
Gotoxy(10, 3); Write('A. TINH TONG HAI SO');
Gotoxy(10, 5); Write('B. TINH HIEU HAI SO');
Gotoxy(10, 7); Write('C. TINH TICH HAI SO');
Gotoxy(10, 9); Write('D. TINH THUONG HAI SO');
Gotoxy(2,11); Write('-Ban chon muc nao (A, B, C, D) ?:');
Readln(Ch);
CASE Ch of
'A', 'a': Writeln('Tong =', x+y :6:2);
'B', 'b': Writeln(' Hieu =', x-y :6:2);
'C', 'c': Writeln(' Tich =', x*y :6:2);
'D', 'd': If y0 then Writeln(' Thuong =', x/y:6:2 )
else Writeln(' Khong xac dinh !');
ELSE
Writeln(' Khong co muc ', Ch);
END;
Readln;
End.
Chạy
Chép file nguồn
Trong chương trình có sử dụng thủ tục : GOTOXY ( m, n) thuộc thư viện
CRT, có chức năng đặt con trỏ màn hình vào tọa độ cột thứ m, dòng thứ n
trên màn hình. Ví dụ lệnh Gotoxy (10, 3); đặt con trỏ màn hình vào tọa độ
cột 10, dòng 3.
Ví dụ 8.10:
Nhập vào tháng và năm, cho biết tháng đó trong năm đó có bao nhiêu
ngày.
Theo dương lịch :
Các tháng 4, 6, 9, và 11: có 30 ngày,
Các tháng 1, 3, 5, 7, 8, 10 và 12: có 31 ngày,
Riêng tháng 2 thì bình thường có 28 ngày, nhưng nếu là năm nhuận thì có
29 ngày.
Cách xác định một năm là nhuận như sau:
* hay là năm chia hết cho 400 (ví dụ năm 1600, năm 2000).
* hay là năm không chia hết cho 100 và chia hết cho 4 ( ví dụ các
năm 1988, 1992, 1996 đều là năm nhuận).
Trong chương trình ta dùng một biến lôgic có tên là Nhuan để xác định có
phải là năm nhuận hay không.
PROGRAM VIDU810;
{ Xác định số ngày của tháng }
Var
Thang, Nam, Songay : Integer ;
Nhuan : Boolean;
Begin
Write(‘Nhập Thang, Nam : ‘);
Readln(Thang, Nam);
If (Thang12) then writeln(‘ Nhập sai ’)
else
begin
Case Thang OF
4, 6, 9, 11 : Songay:=30;
1, 3, 5, 7, 8, 10, 12 : Songay:=31;
2 : begin
Nhuan:= (Nam mod 400=0) or
( (Nam mod 1000) and (Nam mod 4=0) );
If Nhuan= TRUE then Songay:=29 else Songay:=28;
end;
End; { Hết Case }
Writeln(‘ Số ngày là : ‘ , Songay);
end;
Readln;
End.
Chạy
Chép file nguồn
Trong ví dụ này, khi Tháng=2 thì phải làm hai lệnh được đặt trong khối
begin và end, đó chính là một lệnh ghép:
begin
Nhuan:= (Nam mod 400=0) or ( (Nam mod 1000) and (Nam mod
4=0) );
If Nhuan= TRUE then Songay:=29 else Songay:=28;
end;
8.2.3. Câu lệnh CASE lồng nhau :
Trong cấu trúc CASE, khi một trong các LệnhP1, LệnhP2, ..., LệnhPk hay
LệnhQ lại là một lệnh CASE thì ta có cấu trúc CASE lồng nhau.
Ví dụ 8.11: Một xí nghiệp tính tiền thưởng hàng tháng cho công nhân
theo công thức : Tiền thưởng= Hệ số * 200.
Trong đó Hệ số được tính dựa vào kết qủa bình chọn phân loại lao động
(loại A, B hay C) và nơi làm việc (cơ sở 1 hay cơ sở 2) của mỗi người trong
tháng, ...
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status