ng LÆp
I. Vßng lÆp bíc lÆp c¸c ®Þnh
Tríc t chóng ta xÐt vÝ sau :
G sö ta phi viÕt ra n h×nh c¸c sè tõ 0 ®Õn 24, mçi chiÕm 1 dßng
ViÖcy cã t thùc hiÖn b»ng 25 lÖnh Writeln
Writeln(0)
Writeln(1)
..........
Writeln(24)
C¸ch vt nµy râ rµng lµi dßng vµ tÎ nh¹t trong khi nã quy luËt
Chóng ta thÓ thay thÕ b»ngnh Writeln(I) trong ®ã I lµ mét bn ngunt k×
nn g trÞ 0..24
FOR I:=0 TO 24 DO Writeln(I)
ngpy cho I ch¹y 0 ®Õn 24 víi mçi g trÞ cña I,y sÏ thùc hiÖn c«ng vc
vt sau ch÷ DO (lµm), ë ®©y lµ Writeln(I)
MÉu viÕt tæng qu¸t :
FOR BniÒu_khiÓn:=Gi¸_trÞ_®Çu TO Gi¸_trÞ_cuèi DO <viÖc>
Vµ ngîc l¹i ta cã mÉu :
FOR BniÒu_khiÓn:=Gi¸_trÞ_®Çu DOWNTO Gi¸_trÞ_cuèi DO <viÖc>
II. Vßng lÆp sè bícp kng x¸c ®Þnh
Cã 2 kiÓu vßng lÆp kh«ng x¸c ®Þnh
REPEAT WHILE <biÓu thøc Boolean>DO
<c«ng vc>; BEGIN
UNTIL <BiÓu thøc Boolean>; <c«ng viÖc>;
END;
Trong lÖnh REPEAT ... UNTIL ... m¸y
tÝnh lÆp ®i lÆp l¹i chu k× sau : thùc hiÖn
<c«ng viÖc> cho ®Õn khi <bu thøc Boolean>
gi¸ trÞ TRUE. Ga REPEAT vµ UNTIL
kh«ng cÇn dïng BEGIN END
Cßn trongng lÆp WHILE ... DO m¸y tÝnh p ®i lÆpi chu k× sau : chõng
nµo <biÓu thøc Boolean> cã g trÞ TRUE th× ®i thùc hiÖn <c«ng viÖc> ®îc ®Æt gi÷a
BEGIN END
C haing lÆp ®Òu sè lÇnp kh«ng x¸c ®Þnh tr íc. CÇn pi lu ý lµ trong khi
thùc hiÖn <c«ng viÖc>p, ta phi t lÖnh lµm thay ®æi mét bn trong biÓu
1
thøc Boolean ®Ó thay ®æi g trÞ biÓu thøc nh»m dõng vßngp l¹i v× nÕu kh«ng
vßng lÆp sÏ ch¹yi kh«ng dõng
VD : TÝnh A = 1 + 1/2 + 1/3 + ... + 1/N
Dïng REPEAT vµ cho I ch¹y thuËn
A:=0;I:=1;
REPEAT
A := A + 1/I;
I := I + 1;
UNTIL I>N;
Writeln('Tæng = ',A:10:8);
Dïng WHILE cho I ch¹y ngîc
A:=0;I:=N;
WHILE I>0 DO
BEGIN
A := A + 1/I;
I := I - 1;
END;
Bµi 1:{ NhËp sè nguyªn d¬ng N. Sau ®ã nhËp N sè nguyªn d¬ng. T×m lín nhÊt,
n nhÊt vµ tÝnh trung b×nh cña c¸c phÇn tö}
var i,a,n:integer;{Khai b¸o i,a,n kiÓu integer}
max,min,tong:integer;{Khai o max,min,tong ku integer}
begin
write('N = ');readln(n);{NhËp N}
min:=maxint;{G¸n min b»ng maxint}
max:=0;tong:=0;{G¸n max tæng b»ng 0}
for i:=1 to n do{Cho i ch¹y 1 ®Õn n}
begin
write('So thu ',i,' : ');readln(a);{§äc t i vµo bn a}
if min>a then min:=a;{NÕu min>a th× g¸n min b»ng a}
if max<a then max:=a;{u max<a th× g¸n max b»ng a}
inc(tong,a);{T¨ng tæng lªn a ®¬n vÞ}
end;
writeln('Max = ',max);{XuÊt max}
writeln('Min = ',min);{XuÊt min}
writeln('Trung binh : ',tong/n:0:2);{XuÊt trungnh}
readln;
end.
2
Bµi 2:
{ N¨m nay con a tuæi, cha b tuæi. Dïng WHILE tÝnh xem sauy n¨m n÷a hoÆc tr íc
®©y mÊy n¨m ti cha gÊp ®«i tuæi con
Híng dÉn
NÕu a*2=b th× ë hiÖn t¹i
NÕu a*2<b th× ë t¬ng lai
NÕu a*2>b th× ë trong qu¸ khø}
var a,b,so:integer;{a,b,so kiÓu integer}
begin
write('Nhap tuoi con, tuoi cha : ');readln(a,b);{NhËp ti con, ti cha}
if a=b*2 then write('Hien tai tuoi cha gap doi con'){NÕu a=b th× ë hiÖn t¹i}
else if a*2<b then{Ngîc l¹i nÕu a*2<b th×}
begin
so:=0;{G¸n so b»ng 0}
while (a+so)*2<b+so do inc(so);{Trong khi (a+so)*2<b+so th×ngn}
writeln('Sau ',so,' nam nua tuoi cha gap doi tuoi con');{XuÊt ra sau "so" nam nua}
end
else
begin
so:=0;{G¸n so b»ng 0}
while (a-so)*2>b-so do inc(so);{Trong khi (a-so)*2<b-so th× t¨ng sèn}
writeln('Truoc day ',so,' nam tuoi cha gap doi tuoi con');{XuÊt ra truoc do "so" nam}
end;
readln;
end.
Bµi 3:
{ NhËp 2 sè nguyªn d¬ng.m íc chung lín nhÊt béi chung n nhÊt cña 2 sè ®ã
Híng dÉn
UCLN(a,b) = UCLN(a,a-b) nÕu a>b
= UCLN(a,b-a) nÕu b>a
BCNN(a,b) = a*b div UCLN(a,b)}
var a,b:integer;{a,b kiÓu integer}
3
tich:longint;{tich kiÓu longint}
begin
write('A, B = ');readln(a,b);{§äc a,b}
tich:=a*b;{G¸n tich b»ng a*b}
while a<>b do{Trong khi a<>b th×}
if a>b then a:=a-b else b:=b-a;{NÕu a>b th× g¸n a=a-b ngîci g¸n b=b-a}
writeln('UCLN = ',a);{XuÊt UCLN (a hoÆc b)}
writeln('BCNN = ',tich div b);{XuÊt BCNN}
readln;
end.
Bµi 4:
{ Dïng REPEAT ... UNTIL in ran h×nhng nn N ( Nx1 tíi Nx10)}
var i,n:integer;{Khai b¸o i,n ku integer}
begin
write('N = ');readln(n);{§äc N}
i:=0;{G¸n i b»ng 0}
repeat
inc(i);{ng i}
writeln(n:2,' x ',i:2,' = ',n*i:3);{XuÊt n,i,n*i}
until i=10;
readln;
end.
Bµi 5:{ In ra mµnnhc gi¸ trÞ sin, cos, tan cña c¸cc 0, 5, 10, 15 ... 90
Híng dÉn
Dïngm sin(x) cos(x) nhng phi ®æi ®é sang radian (X ®¬n vÞ lµ radian) b»ng
CT Radian = pi* ®é / 180
TÝnh tang dùa vµo CT tan=sin/cos nhng nhí tan90 kh«ngn i}
const pi=3.14;{Khai b¸o h»ng pi=3.14}
var i:integer;{i kiÓu integer}
x:real;{x kiÓu real}
begin
for i:=0 to 18 do{Cho i ch¹y tõ 0 ®Õn 18 (i*5 t¬ng øng sè ®é)}
begin
x:=pi*i*5/180;{§æi i*5 ®é sang x radian}
write('Sin ',i*5:2,' = ',sin(x):0:5,' ');{XuÊt sin}
write('Cos ',i*5:2,' = ',cos(x):0:5,' ');{XuÊt cos}
if i<>18 then write('Tan ',i*5:2,' = ',sin(x)/cos(x):0:5){NÕu i<>18 th× xuÊt sin(x)/cos(x)}
4
else write('Tan 90 khong ton tai');{Ngîc l¹i xuÊt Tan kh«ngn t¹i}
writeln;
end;
readln;
end.
Bµi 6:
{ BiÕt N! = 1x2x3x..xN
In rannh giai tac sè 1 tíi 12
1! = 1
2! = 2
3! = 6
Híng dÉn
Phi dïng kiÓu longint ®Ó tÝnh v× sè rÊt lín }
uses crt;
var
i,n:longint;{Khai o i,n kiÓu longint}
begin
clrscr;{Xo¸ mµnnh}
n:=1;{G¸n n b»ng 1}
for i:=1 to 12 do{Cho i ch¹y tõ 1 ®Õn 12}
begin
n:=n*i;{n n b»ng n*i}
writeln(i,' ! = ',n);{XuÊt ra N}
end;
readln;
end.
Bµi 7:
{ NhËp nguyªn d¬ng N (N<10).
a. In ran nhc chØnhpp chËp 3 cña N phÇn
b. In ran nhc chØnhp kh«ng lÆp chËp 3 cña N pn tö.
c. In ra mµn h×nh c¸c tæ hîp chËp 3 cña N.
Híng dÉn
ChØnhpp :
i=1->N j=1->N k=1->N : XuÊt i,j,k
ChØnhp kh«ngp :
i=1->N j=1->N k=1->N :
NÕu i<>j<>k th× xt
5