II. Cấu trúc rẽ nhánh với lệnh IF

Download Report

Transcript II. Cấu trúc rẽ nhánh với lệnh IF

HỌC VIỆN QUÂN Y
Bộ môn Toán – Tin học
Cấu trúc rẽ nhánh và tuyển
chọn trong PASCAL
Người trình bày: Hoàng Anh
Nội dung
I.
II.
III.
Phân loại câu lệnh trong Pascal
Cấu trúc rẽ nhánh với lệnh IF
Cấu trúc lựa chọn với lệnh CASE ... OF
I. Phân loại câu lệnh trong Pascal
Phép gán
Câu lệnh đơn
Lời gọi procedure
Lệnh nhảy GO TO
Câu lệnh ghép:
BEGIN ... END
Câu lệnh
Câu lệnh có cấu
trúc
Cấu trúc rẽ nhánh, lựa chọn:
IF ... THEN ... ELSE
CASE ... OF ...
WITH...
Các vòng lặp:
FOR ... TO ... DO ...
REPEAT...UNTIL...
WHILE ... DO ...
I. Phân loại câu lệnh trong Pascal
•
Phép gán: Biến:= Biểu thức;
x := 34;
x:= x + 1;
•
Lời gọi hàm, thủ tục:
Readln(x); Write(‘x=‘, x);
Clrscr;
•
Câu lệnh ghép
Begin
Câu lệnh 1;
Câu lệnh 2;
....
Câu lệnh n;
End;
Câu lệnh ghép có thể hiểu theo một ý nghĩa nào đó tương tự như một cặp ngoặc trong
một biểu thức.
II. Cấu trúc rẽ nhánh với lệnh IF
•
Tác dụng:
Cấu trúc rẽ nhánh với lệnh If...Then...Else cho phép lựa chọn một trong hai nhánh tuỳ
thuộc vào giá trị của một biểu thức logic (Boolean Expression) là đúng hay sai
•
Cú pháp:
Dạng 1
Dạng 2
If <btl> Then
If <btl> Then
<Việc 1> ;
<Việc 1>
Else
<Việc 2>;
btl là biểu thức logic.
Việc 1, Việc 2 có thể là câu lệnh đơn hoặc câu lệnh có cấu trúc
II. Cấu trúc rẽ nhánh với lệnh IF
•
Nguyên lý hoạt động của cấu trúc If dạng 1:
1.
Máy xác định giá trị của biểu thức logic
2.
Nếu:
•
Biểu thức có giá trị đúng, máy tính thực hiện Việc 1 sau đó thoát khỏi cấu trúc If đi
thực hiện các câu lệnh tiếp theo cấu trúc If.
•
Biểu thức có giá trị sai, máy sẽ bỏ qua việc 1 đi thực hiện các câu lệnh tiếp theo cấu
trúc If.
True
btl
False
Việc 1
Nhận xét: Việc 1 có thể được thực hiện hoặc không tuỳ thuộc vào giá trị của biểu thức logic
II. Cấu trúc rẽ nhánh với lệnh IF
•
Nguyên lý hoạt động của cấu trúc If dạng 2:
1.
Máy xác định giá trị của biểu thức logic
2.
Nếu:
•
Biểu thức có giá trị đúng, máy tính thực hiện Việc 1 sau đó thoát khỏi cấu trúc If đi
thực hiện các câu lệnh tiếp theo cấu trúc If.
•
Biểu thức có giá trị sai, máy tính thực hiện Việc 2 sau đó thoát khỏi cấu trúc If đi thực
hiện các câu lệnh tiếp theo cấu trúc If.
True
Việc 1
btl
False
Việc 2
Nhận xét: Hoặc Việc 1, hoặc Việc 2 được thực hiện hoặc không tuỳ thuộc vào giá trị của biểu
thức logic
II. Cấu trúc rẽ nhánh với lệnh IF
•
Ví dụ
Viết chương trình tìm số lớn nhất trong 3 số
a, b, c đọc vào từ bàn phím
•
Program max_3_so;
Var
a, b, c, max: Real;
Thuật toán tìm Max trong một dãy số:
 Cho Max là số thứ nhất
Begin
Write(‘a=’); Readln(a);
 Lần lượt so sánh Max giả định đó với các
số còn lại trong dãy số. Nếu có số thứ i nào
đó lớn hơn Max thì lấy số đó làm Max. Như
vậy, sau khi duyệt xong dãy số, ta sẽ có
Max là số lớn nhất
a
b
c
12
-100
46
Write(‘b=’); Readln(b);
Write(‘c=’); Readln(c);
max := a;
if max < b then
max := b;
if max < c then
max := c;
12
Writeln(‘Max’ =, max);
46
readln;
Max
End.
II. Cấu trúc rẽ nhánh với lệnh IF
•
Sự lồng nhau của cấu trúc If
<Việc 1>, <Việc 2> có thể là câu lệnh đơn hoặc câu lệnh có cấu trúc.
Trong trường hợp <Việc 1> hoặc <Việc 2> lại là một cấu trúc if, chúng ta có trường hợp if
lồng nhau.
-1 nếu x < 0
if x<0 then
•
Ví dụ: Để tính hàm dấu Sg(x)
Sg(x) =
0 nếu x = 0
y := -1
else
•
Chú ý



Khi số từ khoá If đúng bằng số từ
khoá else thì rất dễ dàng xác định
các cặp If ... Else tương ứng.
Khi số từ khoá If nhiều hơn số từ
khoá Else, rất khó xác định Else nào
đi với If nào,
Nguyên tắc xác định: Else sẽ thuộc
về If không có Else gần nhất trước
nó (xét ngược từ dưới lên
1 nếu x > 0
if x=0 then
y := 0
Ví dụ:
else
if n>0 then
if a>b then
z:= a
else
z:= b;
y := 1;
II. Cấu trúc lựa chọn Case ... Of
•
Tác dụng:
Cấu trúc Case ... Of cho phép lựa chọn để
thực hiện một trong nhiều công việc tuỳ theo
giá trị của một biểu thức
•
Cú pháp

Case <bt> of
TËp h»ng 1: ViÖc 1;
Ví dụ về các hằng và đoạn hằng:
TËp h»ng 2: ViÖc 2;
3, 10, 12..30
..............................
‘A’, ‘D’. ‘I”..’H’
TËp h»ng n: ViÖc n;

<bt> là một biểu thức. Giá trị của bt và
giá trị của các hằng trong tập hằng phải
cùng kiểu dữ liệu và phải là kiểu vô
hướng đếm được (nguyên, ký tự, logic)

Việc 1, Việc n là câu lệnh đơn hoặc câu
lệnh có cấu trúc
[else
ViÖc n+1];
End;
Tập hằng i ( i = 1..n ) là dẫy các hằng và
các đoạn hằng được phân cách với nhau
bởi dấy phảy.
II. Cấu trúc lựa chọn Case ... Of
•
Nguyên lý hoạt động:
1. Máy tính đi tính giá trị của biểu thức bt
2. Máy tính đi xét giá trị của các hằng trong mỗi tập hằng
-
Nếu tập hằng thứ i là tập đầu tiên chứa giá trị của bt thì máy tính đi
thực hiện Việc i. Sau đó nó thoát ra khỏi cấu trúc Case ... Of để đi
thực hiện các câu lệnh tiếp theo.
-
Nếu không có tập hằng nào chứa giá trị của bt thì:
Trường hợp không dùng Else: máy thoát khỏi cấu trúc Case ... Of
để đi thực hiện các câu lệnh tiếp theo
Trường hợp có dùng Else: máy thực hiện Việc n+1. Sau đó nó
thoát ra khỏi cấu trúc Case ... Of để đi thực hiện các câu lệnh tiếp
theo
II. Cấu trúc lựa chọn Case ... Of
•
Ví dụ:
Đọc từ bàn phím điểm của một học sinh. Điểm là một số nguyên từ 0 đến
10. Dựa vào điểm để đưa ra kết luận theo quy định sau:
Loại xuất sắc nếu điểm bằng 10
Loại giỏi nếu điểm bằng 8 hoặc 9
Loại khá nếu điểm bằng 7
Loại trung bình nếu điểm bằng 5 hoặc 6
Loại yếu nếu điểm bằng 4
Loại quá yếu nếu điểm dưới 4
II. Cấu trúc lựa chọn Case ... Of
Program phan_loai_hoc_sinh;
Var
diem:integer;
Begin
Write(‘diem = ‘); Readln(diem);
Case diem of
10
: Writeln(‘Xuat sac’);
8, 9
: Writeln(‘Gioi’);
7
: Writeln(‘Kha’);
5,6
: Writeln(‘Trung binh’);
4
: Writeln(‘Yeu’);
0..3
: Writeln(‘Qua yeu’);
End;
Readln;
End.