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... 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
Trang 1Dành cho sinh viên chính quy
chuyên ngành Công Nghệ Thông Tin
ThS Nguyễn Cao Trí caotri@dit.hcmut.edu.vn www.dit.hcmut.edu.vn/~caotri
Trang 2Cá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á
Trang 3Tổ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 Phát biểu gán (assignment statement)
2 Các phát biểu điều khiển (control statements)
1. 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
3. Phát biểu WITH : dùng với kiểu dữ liệu record
Trang 4Phá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;
S1;
S2;
…
Sn;
Begi n
S1;
S2;
…
Sn;
End;
Ví dụ
Begin t:=x;
x:=y;
y:=t;
writeln(‘đã đổi xong’);
End;
S1 S2
Sn
N phát biểu BEGIN 1 phát biểu
END;
Trang 5Phát biểu IF
phát biểu theo một điều kiện.
if <condition> then statement;
If Delta > 0 then
begin X1:= (-b + sqrt(Delta))/2/a X2:= (-b - sqrt(Delta))/2/a end ;
Condition
Statements Yes
Chỉ có 1
phát biểu trong thân của IF
No
Trang 6Phát biểu IF Then Else
giữa 2 phát biểu.
if <condition> then statement1 else statement2 ;
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’) ;
Condition
Statement1
Yes
No
Statement2
Trang 7Trường hợp đặc biệt
Xét phát biểu sau:
If ĐK1 then if ĐK2 then S1 else S2 ;
ELSE sẽ thuộc về IF nào gần 1 chưa có ELSE
else ? else
ĐK2
S1
Yes
No
S2
ĐK2
Yes
No
Trang 8Phá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;
BiểuThứcChọn
Nhãn1 Nhãn2 NhãnN Else
Trang 9Phá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<n do begin
i:=i+1;
gt:=gt*I;
end;
ĐK
S1
Yes
No
Trang 10Phá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;
ĐK
S1
Yes No
Trang 11While 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
statements;
while NOT(<ĐK>) do begin
statements;
end;
End;
Chú ý khả năng bị lặp vô tận
Một phát biểu
Trang 12Phá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;
Trang 13Mộ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