Vũng Lp (tt)
Vòng lặp không xác định
While.....Do
Repeat........Until
Vịng Lặp (tt)
Begin
C«ng viƯc
FALSE
BiĨu thøc Boolean
TRUE
End
Repeat
<C«ng viƯc>
until BiĨu_thøc_Boolean;
Vịng Lặp (tt)
Begin
FALSE
BiĨu thøc Boolean
TRUE
C«ng viƯc
End
While BiĨu_thøc_Boolean DO
<C«ng viƯc>
Vũng Lp (tt)
Begin
Công việc
FALSE
Begin
FALSE
Biểu thức Boolean
TRUE
Biểu thức Boolean
Công việc
TRUE
End
End
So sánh hai vòng lặp
REPEAT ... UNTIL...
WHILE ... DO...
Vịng Lặp (tt)
TÝnh tỉng sau: A = 1 + 2+3+….+N;
Dùng vòng Repeat
PROGRAM TINH_TONG;
VAR
I, N: integer;
A: Real;
BEGIN
Write(' N = '); Readln(N);
A := 0; I:=1;
REPEAT
A := A + I;
I := I+1; (* thay đổi giá trị biểu thức Boolean *)
UNTIL I > N;
Writeln(' TONG = ', A :10:2);
END.
Dùng vòng Repeat ở đây ?
Vịng Lặp (tt)
Dïng vßng While
VAR
N, I: integer; A: Real;
BEGIN
Write(' N = '); Readln(N);
A := 0; I:=1;
WHILE I <= N DO
BEGIN
A := Dùng
A + I;vịng While ở đây?
I := I+1;(*thay ®ỉi giá trị biểu thức Boolean*)
END;
Writeln(' TONG = ', A :10:2);
End.
Vũng Lp (tt)
Có thể dùng For đợc không?
VAR
N, I: integer; A: Real;
BEGIN
Write(' N = '); Readln(N);
A := 0;
FOR I:=1 TO N DO A:= A + I
Writeln(' TONG = ', A :10:2);
End.
Vịng Lặp (tt)
T×m UCLN(a,b)
Chó ý:
NÕu a=b th× UCLN(a,b) = a
NÕu a>b th× UCLN(a,b) = UCLN(a-b,b)
NÕu a
Vịng Lặp (tt)
Dïng vßng While
VAR
a, b: integer;
BEGIN
Write(' a = '); Readln(a);
Write(' b = '); Readln(b);
WHILE a<>b DO
BEGIN
vònga:=
While
ở đây?
If Dùng
a>b then
a-b;
If a
END;
Writeln(‘UCLN(a,b)= ', a);
End.
Vịng Lặp (tt)
Dïng vßng Repeat
VAR
a, b: integer;
BEGIN
Write(' a = '); Readln(a);
Write(' b = '); Readln(b);
Repeat
If a>b then a:= a-b;
Dùng vòng Repeat ở đây?
If a
Until a=b;
Writeln(‘UCLN(a,b)= ', a);
End.
Vũng Lp (tt)
Có thể dùng vòng For đợc không?
Không thể
vì không biết số lần lặp
Vũng Lp (tt)
Vòng chờ từ bàn phím
VAR
TraLoi : Char;
BEGIN
REPEAT
......
(* Thay ®ỉi ®iỊu kiƯn thư *)
Write(' Cã tiep tuc nua kh«ng ?(C/K) ');
Readln(TraLoi);
UNTIL (TraLoi = 'K') OR (TraLoi = 'k');
END.