Giáo trình Nhập môn Tin học LỜi nóI ĐẦU



tải về 4.67 Mb.
trang48/63
Chuyển đổi dữ liệu20.05.2018
Kích4.67 Mb.
1   ...   44   45   46   47   48   49   50   51   ...   63

6.2.2 Câu lệnh lựa chọn CASE


6.2.2.1 Ý nghĩa

Câu lệnh IF chỉ thực hiện rẽ 2 nhánh tương ứng với giá trị của biểu thức <Điều kiện>. Khi cần lựa chọn để thực hiện một trong nhiều khả năng khác nhau ta phải dùng rất nhiều lệnh IF. Câu lệnh CASE sẽ giới thiệu sau đây là lệnh rẽ nhánh theo giá trị cho phép lựa chọn để thực hiện 1 trong nhiều công việc.



6.2.2.2 Cú pháp

Dạng khuyết

Dạng đủ

Case of

Tập hằng 1: ;

Tập hằng 2: ;

....


Tập hằng i: ;

....


Tập hằng n: ;

End;



Case of

Tập hằng 1: ;

Tập hằng 2: ;

....


Tập hằng i: ;

....


Tập hằng n: ;

Else ;

End;


Trong đó:

- <Điều kiện> là biểu thức số học, cho kết quả là một kiểu vô hướng đếm được (nguyên, ký tự, logic, liệt kê).



  • (i=1,..,n) có thể là các hằng và các đoạn hằng, ví dụ:

3: ;

5, 10..15: ;

2, 4, 6: ;

<5 : ;

’a’..’z’: ;



  • có thể là lệnh đơn giản hoặc khối lệnh. Nếu 1 khối lệnh phải được đặt trong Begin..End;

Giá trị của phải cùng kiểu với kiểu của và cũng phải là kiểu vô hướng liệt kê.

6.2.2.3 Sự hoạt động

Sự thực hiện của lệnh CASE ..OF phụ thuộc vào giá trị của




Dạng khuyết




Dạng đủ

Nếu giá trị của thuộc thì được thực hiện và ra khỏi lệnh CASE; Nếu giá trị của không thuộc tập hằng nào thì thoát ra khỏi lệnh CASE mà không làm gì.




Nếu giá trị của thuộc thì được thực hiện và ra khỏi lệnh CASE; Nếu giá trị của không thuộc tập hằng nào thì thực hiện rồi thoát ra khỏi lệnh CASE .


Có thể biểu diễn câu lệnh theo sơ đồ hoạt động sau:

...... ......



Hình 6.2a: Sơ đồ hoạt động của câu lệnh CASE dạng đủ.

...... ......



Hình 6.2b: Sơ đồ hoạt động của câu lệnh CASE dạng khuyết.

6.2.2.4 Lệnh IF .. THEN .. ELSE có thể chuyển thành CASE .. OF như sau

IF <Điều kiện> THEN

ELSE


;

Case <Điều kiện> of

TRUE : ;

FALSE: ;

End;



Ví dụ 6.2: Viết chương trình nhập vào tháng (và năm nếu cần), máy sẽ đưa ra số ngày của tháng đó.

Program VIDU_6_2;

Uses Crt;

Var songay, thang: Byte;

nam: Integer;

BEGIN


ClrScr;

Write('Cho biet thang (dang so): '); ReadLn(thang);

Write('Cho biet nam '); ReadLn(nam);

Case thang of

4,6,9,11: songay:=30;

2:If nam mod 4 = 0 then

if (nam mod 100 = 0)and(nam mod 400 <> 0)then

songay:=28

else songay:=29;

Else songay:=28;

Else { else cua CASE}

songay:=31;

End; {của Case}

{In ket qua }

WriteLn('Thang ', thang, '/',nam,' co: ',songay,' ngay')

ReadLn;


END.

V
Nếu x>y

Nếu x<=y
í dụ 6.3:
Nhập vào hai số x, y. Tính giá trị biểu thức sau: F=

Với bài này ta có thể giải bằng cách sử dụng câu lệnh IF hoặc CASE



Cách 1: sử dụng câu lệnh IF

Program vidu_6_3_IF;

Var x,y,F:real;

Begin


Write(‘ Nhap x = ’);readln(x);

Write(‘ Nhap y = ‘);readln(y);

If x>y then

F:= x+y


Else {nguoc lai cua x>y tuc la x<=y}

F:=abs(x+y);

Writeln(‘ Gia tri cua bieu thuc F = ‘,F:8:2);

Readln;


End.
Cách 2: sử dụng câu lệnh CASE

Program vidu_6_3_CASE;

Var x,y,F:real;

Begin


Write(‘ Nhap x = ’);readln(x);

Write(‘ Nhap y = ‘);readln(y);

Case x>y of

True: F:= x+y;

False: F:=abs(x+y);

End;


Writeln(‘ Gia tri cua bieu thuc F = ‘,F:8:2);

Readln;


End.
Ví dụ 6.4: Lập chương trình tính chiều dài đoạn thẳng AB khi đã biết toạ độ hai đầu mút (Xa, Ya) và (Xb, Yb).

Program VIDU_6_4;

Uses Crt;

Var Xa, Ya, Xb, Yb, d: Real;

BEGIN

ClrScr;


Write('Nhap toa do x cua diem A Xa= '); ReadLn(Xa);

Write('Nhap toa do y cua diem A Ya= '); ReadLn(Ya);

Write('Nhap toa do x cua diem B Xb= '); ReadLn(Xb);

Write('Nhap toa do y cua diem B Yb= '); ReadLn(Yb);

{ Tinh do dai doan thang AB }

d := SQRT(SQR(Xa-Xb)+SQR(Ya-Yb));

{ In ket qua }

WriteLn('Do dai doan thang AB = ', d:10:4);

ReadLn;

END.
Ví dụ 6.5: Lập chương trình biện luận nghiệm của phương trình bậc hai ax2+bx+c=0 với các hệ số a, b nhập vào từ bàn phím.



Program VIDU_6_5;

Uses Crt;

Var a, b, c, x1, x2, delta: Real;

BEGIN


ClrScr;

Write('Nhap he so thu nhat a= '); ReadLn(a);

Write('Nhap he so thu hai b= '); ReadLn(b);

Write('Nhap he so thu ba c= '); ReadLn(c);

If a=0 then

WriteLn('Phuong trinh bac hai suy bien, khong xet!')

Else

Begin


delta := SQR(b)-4*a*c; { Tinh delta }

{ Xet delta }

If delta < 0 then WriteLn('Phuong trinh vo nghiem')

Else


If Delta = 0 then

Begin


WriteLn('Phuong trinh co nghiem kep');

x1:=-b/(2*a);

WriteLn('PT co nghiem kep x1=x2= ',x1:8:3);

end


Else

Begin


WriteLn('PT co hai nghiem rieng biet');

x1:=(-b+SQRT(Delta))/(2*a);

x2:=(-b-SQRT(Delta))/(2*a);

WriteLn('Nghiem thu nhat cua PT la x1= ',x1:8:3);

WriteLn('Nghiem thu hai cua PT la x2= ',x2:8:3);

End;


End;

ReadLn;


END.
1   ...   44   45   46   47   48   49   50   51   ...   63


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương