Dành cho sinh viên chính quy
chuyên ngành Công Nghệ Thông Tin
ThS. Nguyễn Cao Trí
www.dit.hcmut.edu.vn/~caotri
Các phát biểu điều khiển
Phát biểu điều khiển và flowchart
So sánh và đánh giá
Tổng quan
Phát biểu điều khiển: là những dòng lệnh dùng để điều khiển hoạt động
của chương trình.
Các phát biểu điều khiển cơ bản
1.
2.
Phát biểu gán (assignment statement)
Các phát biểu điều khiển (control statements)
Phát biểu ghép BEGIN END;
2.
Phát biểu điều kiện IF
3.
Phát biểu điều kiện CASE
4.
Phát biểu lặp WHILE
5.
Phát biểu lặp REPEAT
6.
Phát biểu lặp FOR
7.
Phát biểu GOTO
8.
Phát biểu gọi thủ tục (procedure call): gọi các chương trình con loại
procedure
Phát biểu WITH : dùng với kiểu dữ liệu record.
1.
3.
Phát biểu ghép BEGIN END;
Dùng để ghép nhiều phát biểu thành một phát biểu.
Cú pháp : BEGIN các phát biểu; END;
Ví dụ
S1;
S2;
…..
Sn;
N phát biểu
S1
S2
Sn
BEGIN
END;
Begi
n
S1;
S2;
…..
Sn;
1End;
phát biểu
Begin
t:=x;
x:=y;
y:=t;
writeln(‘đã đổi
xong’);
End;
PhátDùng
biểu
IF
để thực hiện hay không một
phát biểu theo một điều kiện.
Cú pháp
if <condition> then statement;
Condition
No
Yes
Statements
Chỉ có 1
phát biểu
trong thân
của IF
Ví dụ
If Delta > 0 then
begin
X1:= (-b + sqrt(Delta))/2/a
X2:= (-b - sqrt(Delta))/2/a
end;
Phát biểu IF Then Else
Dùng để chọn lựa phát biểu nào sẽ được thực hiện
giữa 2 phát biểu.
Cú pháp
if <condition> then statement1 else statement2 ;
Condition
No
Yes
Statement1
Statement2
Ví dụ
If Delta > 0 then
begin
X1:= (-b + sqrt(Delta))/2/a
X2:= (-b - sqrt(Delta))/2/a
end
else Writeln(‘Còn xét tiếp’);
Trường hợp đặc biệt
Xét phát biểu sau:
If ĐK1 then if ĐK2 then S1 else S2;
else
? else
ELSE sẽ thuộc về IF nào gần 1 chưa có ELSE
Yes
ĐK2
ĐK2
No
No
Yes
S1
S2
Phát biểu CASE
Dùng để chọn một trong
số những phat1 biểu để
thực hiện tùy theo giá trị
của biểu thức chọn.
Các nhãn case: chỉ ra
các trường hợp phân
nhánh.
Các nhãn case là một
hay nhiều giá trị rời rạc
theo sau là dấu : và một
phát biểu tương ứng.
Case BiểuThứcChọn of
nhãn1: S1;
nhãn2: S2;
nhãnN: Sn;
else S0;
End;
Nhãn1
S1
BiểuThứcChọn
Nhãn2
S2
NhãnN
SN
Else
S0
Phát biểu While
Dùng để lặp đi lặp lại nhiều lần
một công việc nào đó.
Cú pháp
While <ĐK> Do statement;
While kiểm tra điều kiện trước rồi
mới thực hiện phát biểu.
Số lầp lặp là không biết trước.
Số lần lặp tối thiểu là 0 và tối đa là
không xác định.
Chú ý: Trong thân của while phải
có ít nhất một phát biểu có khả
năng thay đổi giá trị của điều kiện.
Nếu không sẽ lặp vô tận (infinite
loop)
Ví dụ:
gt:=1; i:=1
While i
begin
i:=i+1;
gt:=gt*I;
end;
Yes
ĐK
S1
No
Phát biểu Repeat
Dùng để lặp đi lặp lại nhiều lần
một công việc nào đó.
Cú pháp
Repeat statements until <ĐK>;
Repeat thực hiện xong các phát
biểu rồi mới kiểm tra điều kiện.
Số lầp lặp là không biết trước.
Số lần lặp tối thiểu là 1 và tối đa là
không xác định.
Chú ý: Trong thân của repeat phải
có ít nhất một phát biểu có khả
năng thay đổi giá trị của điều kiện.
Nếu không sẽ lặp vô tận (infinite
loop)
Ví dụ:
gt:=1; i:=1
repeat
i:=i+1;
gt:=gt*I;
until i>n;
S1
No
ĐK
Yes
While vs. Repeat
While và Repeat là hai phát biểu có thể chuyển đổi cho nhau.
White <ĐK> do statement;
=> If <ĐK> then repeat statement until NOT(<ĐK>);
Repeat statements until <ĐK>;
=> Begin
Một phát biểu
statements;
while NOT(<ĐK>) do begin
statements;
end;
End;
Chú ý khả năng bị lặp vô tận.
Phát biểu FOR
Dùng để lặp lại một công việc nào đó với số lần lặp là xác
định được.
Sử dụng biến đếm và biểu thức cận để xác định số lần lặp
lại.
For biendem:=BT1 to BT2 do statement;
Số lần lặp là BT2-BT1+1;
Sau mỗi lần lặp biendem tăng đến giá trị kế tiếp;
For biendem:=BT1 downto BT2 do statement;
Số lần lặp là BT1-BT2+1;
Sau mỗi lần lặp biendem giảm đến giá trị kế tiếp;
Một số chú ý với phát biểu FOR
Biến đếm và các biểu thức cận phải thuộc cùng một kiểu rời
rạc.
Trong thân của FOR, dù cho các thành phần của biểu thức cận
thay đổi vẫn không ảnh hưởng đến số lần lặp. Ví dụ đoạn code
sau:
a:=5;
For i:=1 to a do a:=a+1;
vẫn chỉ lặp đúng 5 lần dù a bị thay đổi.
Giá trị của biến đếm sau vòng lặp FOR là KHÔNG XÁC
ĐỊNH. Phụ thuộc vào từng compiler. Do đó không được sử
dụng tiếp giá trị này cho các tính toàn tiếp theo mà phải gán lại
giá trị cụ thể mới.
Không được thay đổi giá trị biến đếm trong thân vòng lặp
FOR.