Vòng Lặp Trong pascal
Vòng Lặp Trong pascal
Vßng LÆp
I. Vßng lÆp cã sè bíc lÆp c¸c ®Þnh
Tr íc hÕt chóng ta xÐt vÝ dô sau :
Gi¶ sö ta ph¶i viÕt ra mµn h×nh c¸c sè tõ 0 ®Õn 24, mçi sè chiÕm 1 dßng
ViÖc nµy cã thÓ thùc hiÖn b»ng 25 lÖnh Writeln
Writeln(0)
Writeln(1)
..........
Writeln(24)
C¸ch viÕt nµy râ rµng lµ dµi dßng vµ tÎ nh¹t trong khi nã cã quy luËt
Chóng ta cã thÓ thay thÕ b»ng lÖnh Writeln(I) trong ®ã I lµ mét biÕn nguyªn bÊt k×
nhËn gi¸ trÞ tõ 0..24
FOR I:=0 TO 24 DO Writeln(I)
Vßng lÆp nµy cho I ch¹y tõ 0 ®Õn 24 víi mçi gi¸ trÞ cña I, m¸y sÏ thùc hiÖn c«ng viÖc
viÕt sau ch÷ DO (lµm), ë ®©y lµ Writeln(I)
MÉu viÕt tæng qu¸t :
FOR BiÕn_®iÒu_khiÓn:=Gi¸_trÞ_®Çu TO Gi¸_trÞ_cuèi DO
Vµ ngîc l¹i ta cã mÉu :
FOR BiÕn_®iÒu_khiÓn:=Gi¸_trÞ_®Çu DOWNTO Gi¸_trÞ_cuèi DO
II. Vßng lÆp cã sè bíc lÆp kh«ng x¸c ®Þnh
Cã 2 kiÓu vßng lÆp kh«ng x¸c ®Þnh
REPEAT WHILE DO
; BEGIN
UNTIL ; ;
END;
Trong lÖnh REPEAT ... UNTIL ... m¸y
tÝnh sÏ lÆp ®i lÆp l¹i chu k× sau : thùc hiÖn
cho ®Õn khi
cã gi¸ trÞ TRUE. Gi÷a REPEAT vµ UNTIL
kh«ng cÇn dïng BEGIN vµ END
Cßn trong vßng lÆp WHILE ... DO m¸y tÝnh sÏ lÆp ®i lÆp l¹i chu k× sau : chõng
nµo cã gi¸ trÞ TRUE th× ®i thùc hiÖn ®îc ®Æt gi÷a
BEGIN vµ END
C¶ hai vßng lÆp ®Òu cã sè lÇn lÆp kh«ng x¸c ®Þnh tr íc. CÇn ph¶i lu ý lµ trong khi
thùc hiÖn lÆp, ta ph¶i cã mét lÖnh lµm thay ®æi mét biÕn trong biÓu
1
thøc Boolean ®Ó thay ®æi gi¸ trÞ biÓu thøc nh»m dõng vßng lÆp l¹i v× nÕu kh«ng
vßng lÆp sÏ ch¹y m·i 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 vµ 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 sè lín nhÊt,
nhá 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 b¸o max,min,tong kiÓu integer}
begin
write('N = ');readln(n);{NhËp N}
min:=maxint;{G¸n min b»ng maxint}
max:=0;tong:=0;{G¸n max vµ tæng b»ng 0}
for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn n}
begin
write('So thu ',i,' : ');readln(a);{§äc sè thø i vµo biÕn a}
if min>a then min:=a;{NÕu min>a th× g¸n min b»ng a}
if maxBµi 2:
{ N¨m nay con a tuæi, cha b tuæi. Dïng WHILE tÝnh xem sau mÊy n¨m n÷a hoÆc tr íc
®©y mÊy n¨m tuæi cha gÊp ®«i tuæi con
H íng dÉn
NÕu a*2=b th× ë hiÖn t¹i
NÕu a*2b 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 tuæi con, tuæi 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 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 ab do{Trong khi ab th×}
if a>b then a:=a-b else b:=b-a;{NÕu a>b th× g¸n a=a-b ngîc l¹i 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 ra mµn h×nh b¶ng nh©n N (tõ Nx1 tíi Nx10)}
var i,n:integer;{Khai b¸o i,n kiÓu integer}
begin
write('N = ');readln(n);{§äc N}
i:=0;{G¸n i b»ng 0}
repeat
inc(i);{T¨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µn h×nh c¸c gi¸ trÞ sin, cos, tan cña c¸c gãc 0, 5, 10, 15 ... 90
H íng dÉn
Dïng hµm sin(x) cos(x) nhng ph¶i ®æi sè ®é sang radian (X cã ®¬n vÞ lµ radian) b»ng
CT Radian = pi*Sè ®é / 180
TÝnh tang dùa vµo CT tan=sin/cos nhng nhí tan90 kh«ng tån t¹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 i18 then write('Tan ',i*5:2,' = ',sin(x)/cos(x):0:5){NÕu i18 th× xuÊt sin(x)/cos(x)}
4
else write('Tan 90 khong ton tai');{Ngîc l¹i xuÊt Tan kh«ng tån t¹i}
writeln;
end;
readln;
end.
Bµi 6:
{ BiÕt N! = 1x2x3x..xN
In ra mµn h×nh giai thõa c¸c sè tõ 1 tíi 12
1! = 1
2! = 2
3! = 6
H íng dÉn
Ph¶i dïng kiÓu longint ®Ó tÝnh v× sè rÊt lín }
uses crt;
var
i,n:longint;{Khai b¸o i,n kiÓu longint}
begin
clrscr;{Xo¸ mµn h×nh}
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;{G¸n n b»ng n*i}
writeln(i,' ! = ',n);{XuÊt ra N}
end;
readln;
end.
Bµi 7:
{ NhËp sè nguyªn d¬ng N (NN j=1->N k=1->N : XuÊt i,j,k
ChØnh hîp kh«ng lÆp :
i=1->N j=1->N k=1->N :
NÕu ijk th× xuÊt
5
Tæ hîp
i=1->N-2 j=i+1->N-1 k=j+1->N : XuÊt i,j,k}
var
i,j,k,n:byte;{i,j,k,n kiÓu byte}
begin
write('N = ');readln(n);{§äc N}
writeln('Cac chinh hop lap :');
for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N}
for j:=1 to n do{Cho j ch¹y tõ 1 ®Õn N}
for k:=1 to n do{Cho k ch¹y tõ 1 ®Õn N}
write(i,j,k,' ');
readln;
writeln('Cac chinh hop khong lap :');
for i:=1 to n do{Cho i ch¹y tõ 1 ®Õn N}
for j:=1 to n do{Cho j ch¹y tõ 1 ®Õn N}
for k:=1 to n do{Cho k ch¹y tõ 1 ®Õn N}
if(ij)and(jk)and(ik)then write(i,j,k,' ');{NÕu ijk th× xuÊt míi xuÊt i,j,k}
readln;
writeln('Cac to hop :');
for i:=1 to n-2 do{Cho i ch¹y tõ 1 ®Õn N-2}
for j:=i+1 to n-1 do{Cho j ch¹y tõ i+1 ®Õn N-1}
for k:=j+1 to n do{Cho k ch¹y tõ j+1 ®Õn N}
write(i,j,k,' ');
readln;
end.
Bµi 8:
{ In ra mµn h×nh b¶ng cöu ch¬ng tõ 1->10
H íng dÉn
Dïng hµm GOTOXY(x,y) ®Ó di chuyÓn tíi to¹ ®é cét x dßng y trªn mµn h×nh
Ta chia chiÒu ngang mµn h×nh thµnh 5 cét, chiÒu däc mµn h×nh thµnh 2 hµng. Tõ
hµng
2..11 ta in b¶ng 1,2,3,4,5. Tõ hµng 13..22 ta in b¶ng 6,7,8,9,10
Khi ta tíi hµng i x j th× to¹ ®é b¾t ®Çu sÏ lµ
y = j+1 nÕu i=6
x = ((i-1)mod 5)*16+1;}
uses crt;
6
var i,j,x,y:byte;{i,j,x,y kiÓu byte}
begin
clrscr;{Xo¸ mµn h×nh}
for i:=1 to 10 do{Cho i ch¹y tõ 1 ®Õn 10 (i lµ b¶ng)}
for j:=1 to 10 do{Cho j ch¹y tõ 1 ®Õn 10}
begin
if i begin
writeln('So trau dung : ',std);{XuÊt std}
writeln('So trau nam : ',stn);{XuÊt stn}
writeln('So trau gia : ',stg3*3);{XuÊt stg}
writeln;
end;
readln;
end.
Bµi 10:
{ T×m tÊt c¶ c¸c sè cã 3 ch÷ sè sao cho
abc = A^3 + B^3 + C^3}
var a,b,c:byte;{a,b,c kiÓu byte}
begin
writeln('Cac so can tim la : ');
for a:=1 to 9 do{Cho a ch¹y}
for b:=0 to 9 do{Cho b ch¹y}
for c:=0 to 9 do{Cho c ch¹y}
if a*100+b*10+c=a*a*a+b*b*b+c*c*c then writeln(a,b,c);{NÕu §K tho¶ th× xuÊt a,b,c}
readln;
end.
Bµi 11:
{ NhËp sè nguyªn N.
a. In ra mµn h×nh N sè nguyªn d¬ng lÎ ®Çu tiªn lµ béi cña 3
b. In ra mµn h×nh sè nguyªn ch½n ®Çu tiªn chia hÕt cho 3 d 2, chia 5 d 4
c. In ra mµn h×nh c¸c sè chÝnh ph¬ng nhá h¬n hoÆc b»ng N*N
H íng dÉn
a. DÔ thÊy d·y lµ cÊp sè céng. Sè nguyªn ®Çu tiªn lµ 3, c«ng sai lµ 6
Sè nguyªn d¬ng lÎ thø i lµ béi cña 3
3+(i-1)*6
b. D·y lµ cÊp sè céng. Sè nguyªn ®Çu tiªn lµ 14, c«ng sai lµ 3*5*2=30. Sè thø i sÏ cã
c«ng thøc
14+(i-1)*30;
c. DÔ dµng nhËn ra ®ã lµ nh÷ng sè i*i(i writeln;writeln('Cau b');
for i:=1 to n do write(14+(i-1)*30:5);{Cho i ch¹y vµ in ra n phÇn tö theo CT ë thuËt
to¸n}
writeln;writeln('Cau c');
for i:=1 to n do write(i*i:5);{Cho i ch¹y vµ in ra n phÇn tö theo CT ë thuËt to¸n}
readln;
end.
Bµi 12:
{ NhËp mét sè N kiÓu longint.
a. In ra mµn h×nh sè ch÷ sè cña nã.
b. TÝnh sè M b»ng c¸ch lÊy ngîc l¹i sè N
VD : N = 1234
Cã 4 ch÷ sè
M = 4321
H íng dÉn
LÇn lît c¾t tõng ch÷ sè cña N tõ tr¸i qua N = N div 10. T¨ng sè ch÷ sè lªn 1 vµ kÕt hîp
ch÷ sè ®ã vµo tr íc M}
var
n,m:longint;{N, M kiÓu longint}
scs:byte;{scs kiÓu byte}
begin
write('N = ');readln(n);{§äc N}
m:=0;scs:=0;{G¸n m vµ scs b»ng 0}
while n>0 do{Trong khi n>0 th×}
begin
m:=m*10+n mod 10;{KÕt hîp ch÷ sè hµng ®¬n vÞ cña N vµo sau M}
inc(scs);{T¨ng sè ch÷ sè lªn 1}
n:=n div 10;{C¾t bá ch÷ sè hµng ®¬n vÞ cña N}
end;
writeln('So chu so : ',scs);{XuÊt sè ch÷ sè}
writeln('M = ',m);{XuÊt M}
readln;
end.
Bµi 13:{ NhËp chiÒu dµi, chiÒu réng cña mét hcn. H·y vÏ ra mµn h×nh
VD : a=4 b=6
a. * * * * * *
******
9
******
******
b.* * * * * *
**
**
* * * * * *}
uses crt;
var
i,j,a,b:byte;{i,j,a,b kiÓu byte}
begin
clrscr;{Xo¸ mµn h×nh}
write('A, B = ');readln(a,b);{§äc a,b}
writeln('Cau a');
for i:=1 to a do{Cho a ch¹y tõ 1 ®Õn a}
begin
for j:=1 to b do write('* ');{In ra b kÝ tù '* '}
writeln;
end;
writeln('Cau b');
for j:=1 to b do write('* ');writeln;{In ra b kÝ tù '* '}
for i:=1 to a-2 do{Cho i ch¹y tõ 1 ®Õn a-2}
begin
write('* ');
for j:=1 to b-2 do write(' ');{In ra b kÝ tù ' '}
writeln('*');
end;
for j:=1 to b do write('* ');{In ra b kÝ tù '* '}
readln;
end.
Bµi 14:
{ NhËp ®é cao h cña mét tam gi¸c. In ra mµn h×nh c¸c tam gi¸c cã d¹ng
* ***** *
** **** ***
*** *** *****
**** ** *******
***** * ******* * *
h=5}
10
uses crt;
var
i,j,h:byte;{i,j,h kiÓu byte}
begin
clrscr;{Xo¸ mµn h×nh}
write('H = ');readln(h);{NhËp H}
writeln('Cau a');
for i:=1 to h do{Cho i ch¹y tõ 1 ®Õn h}
begin
for j:=1 to i do write('*');{In ra i kÝ tù '*' cña dßng i}
writeln;
end;
readln;
writeln('Cau b');
for i:=h downto 1 do{Cho i ch¹y tõ h xuèng 1}
begin
for j:=1 to i do write('*');{In ra i kÝ tù '*' cña dßng i}
writeln;
end;
readln;
writeln('Cau c');
for i:=1 to h do{Cho i ch¹y tõ 1 ®Õn h}
begin
for j:=1 to h-i do write(' ');{In ra h-i kÝ tù ' '}
for j:=1 to 2*i-1 do write('*');{In ra 2*i- 1 kÝ tù '*'}
writeln;
end;
readln;
end.
Bµi 15:
{ T×m c¸c sè tù nhiªn nhá h¬n 1000 sao cho nã b»ng tæng c¸c íc cña nã (kh«ng kÓ
chÝnh nã)
H íng dÉn
Cho i ch¹y tõ 2 ®Õn 1000
- TÝnh tæng c¸c íc cña i
11
- NÕu tæng = i th× xuÊt i}
var
i,j,tong:integer;{i,j,tong kiÓu integer}
begin
writeln('Cac so can tim');
for i:=2 to 1000 do{Cho i ch¹y tõ 2 ®Õn 1000}
begin
tong:=0;{G¸n tong b»ng 0}
for j:=1 to i div 2 do{Cho j ch¹y tõ 1 ®Õn i div 2}
if i mod j=0 then tong:=tong+j;{NÕu i chia hÕt cho j th× céng j vµo tong}
if tong=i then writeln(i);{NÕu tong=i th× xuÊt i}
end;
readln;
end.
Bµi 16:
{ NhËp sè N. KiÓm tra N xem nã cã ph¶i lµ sè nguyªn tè kh«ng
H íng dÉn
Cho i ch¹y tõ 2 ®Õn trunc(sqrt(n)).
- NÕu trong lóc ch¹y N mod i=0 th× N kh«ng nguyªn tè
- Ngîc l¹i N nguyªn tè}
var
i,n:integer;{i,n kiÓu integer}
kq:boolean;{kq kiÓu boolean}
begin
write('N = ');readln(n);{§äc N}
kq:=true;{G¸n kq b»ng true}
for i:=2 to trunc(sqrt(n))do{Cho i ch¹y tõ 2 ®Õn trunc(sqrt(N))}
if n mod i=0 then{NÕu n chia hÕt cho i th×}
begin
kq:=false;{G¸n kq=false}
break;{BÎ g·y vßng lÆp b»ng lÖnh Break (kh«ng cho vßng lÆp ch¹y tiÕp}
end;
if kq then writeln('So nguyen to')else write('Khong la so nguyen to');{NÕu kq th× N lµ
sè nguyªn tè ngîc l¹i th× kh«ng}
readln;
end.
12
13