algoritmi i programiranje u pascal- v. milanovid 43 · 2014. 12. 7. · algoritmi i programiranje u...

21
13. Naredbe za ponavljanje U programima često postoji potreba da se deo programa više puta uzastopno izvede. U tu svrhu koriste se tzv. naredbe za ponavljanje. Pascal koristi tri vrste naredbi za ponavljanje: FOR, WHILE, REPEAT - UNTIL. Naredba FOR omoguduje bezuslovno ponavljanje određenog dela programa toliko puta koliko programer želi. To se može prikazati dijagramom toka na slededi način: Evo prvog primera naredbe FOR: FOR i := 1 TO 5 DO write ('+') Kad je izvršena naredba FOR, naredba WRITE de se izvršiti pet puta i računar de ispisati: + + + + + Naredba write je zapravo deo FOR naredbe. U prvom izvršavanju vrednost i je 1, u drugom ponavljanju i je 2 itd. Ako upotrebimo DOWNTO umesto TO računar de brojati unazad: FOR h:=5 DOWNTO 1 DO WRITE (i:4) rezultat de biti: 54321 Naredba koja se ponavlja razmatra se kao deo FOR naredbe. To znači da tačka-zarez odvaja naredbu FOR od susednih naredbi koje dolaze pre FOR i posle naredbe koja se ponavlja. Na primer, razmotrimo sledede: x:=3.5; FOR i:=1 TO 5 DO write (i:4); y : = 7.9 Pišudi naredbu, koja se ponavlja, u istom redu kao ostatak naredbe FOR, istakli smo, da je write (i:4) deo naredbe FOR. Isti princip važi kad je naredba za ponavljanje složena naredba. U tom slučaju naredba FOR se sastoji od svega što je između reči FOR do reči END koja završava složenu naredbu. Tačka-zarez odvaja naredbu FOR od sledede naredbe koja dolazi posle reči END. msc Velimir Milanovic

Upload: others

Post on 21-Jan-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43

Autor: Velja Milanovid msc. prof.

13. Naredbe za ponavljanje

U programima često postoji potreba da se deo programa više puta uzastopno izvede. U tu svrhu koriste se tzv. naredbe za ponavljanje. Pascal koristi tri vrste naredbi za ponavljanje:

FOR, WHILE, REPEAT - UNTIL.

Naredba FOR omoguduje bezuslovno ponavljanje određenog dela programa toliko puta

koliko programer želi. To se može prikazati dijagramom toka na slededi način:

Evo prvog primera naredbe FOR:

FOR i := 1 TO 5 DO write ('+')

Kad je izvršena naredba FOR, naredba WRITE de se izvršiti pet puta i računar de ispisati:

+ + + + +

Naredba write je zapravo deo FOR naredbe. U prvom izvršavanju vrednost i je 1, u drugom ponavljanju i je 2 itd.

Ako upotrebimo DOWNTO umesto TO računar de brojati unazad:

FOR h:=5 DOWNTO 1 DO WRITE (i:4)

rezultat de biti: 54321

Naredba koja se ponavlja razmatra se kao deo FOR naredbe. To znači da tačka-zarez odvaja naredbu FOR od susednih naredbi koje dolaze pre FOR i posle naredbe koja se ponavlja. Na primer, razmotrimo sledede:

x:=3.5; FOR i:=1 TO 5 DO write (i:4); y : = 7.9

Pišudi naredbu, koja se ponavlja, u istom redu kao ostatak naredbe FOR, istakli smo, da je write (i:4) deo naredbe FOR. Isti princip važi kad je naredba za ponavljanje složena naredba. U tom slučaju naredba FOR se sastoji od svega što je između reči FOR do reči END koja završava složenu naredbu. Tačka-zarez odvaja naredbu FOR od sledede naredbe koja dolazi posle reči END.

msc Velimir Milanovic

Page 2: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 44

Autor: Velja Milanovid msc. prof.

Primer: x:=3.5; FOR i == 1 TO 5 DO BEGIN read (j); write (j:4) END; y:=7.9

ZADACI:

Neka je data slededa grupa naredbi.

a := 5; for i :=1 to 5 do a :=a-i; a :=a-4;

kolika de biti vrednost promenljive a posle izvršenja datog koda ?

Rešenje:

1. prolaz: a=a-i=5-1=4

2. prolaz: a=a-i=4-2=2

3. prolaz: a=a-i=2-3-=1

4. prolaz: a=a-i=-1-4=-5

5. prolaz: a=a-i=-5-5=-10

i na kraju se izvršava naredba: a=a-4=-10-4=-14

Uočite da je u telu ciklusa samo naredba a := a-i koja de biti izvršena pet puta, dok de naredba a :=a-4 biti izvršena samo jednom.

Napisati program i nacrtati algoritam koji izračunava zbir svih brojeva do n: PROGRAM AA; VAR S,n,i:integer; BEGIN writeln( ' Unesi n ' ); readln (n); S:=0; for i:=1 to n do S:=S+i Writeln( ' Zbir je jednak ' , S:4 ); END.

p

n

S=n

i<=n

S=s+i

s

k

ne

da

msc Velimir Milanovic

Page 3: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 45

Autor: Velja Milanovid msc. prof.

Napisati program koji sabira i množi brojeve od 30 do 50 :

PROGRAM ABC; VAR P,S,i:integer; BEGIN P:=1; S:=0 for i:=30 to 50 do begin S:=S+i; P:=P*i end; writeln( ' Zbir je ' , S:4, ' Proizvod je ' , P:4); readln END.

p

P=1

30<i<50

S=s+i

s

k

ne

da

S=0

P=p*i

Napisati program koji sabira i množi brojeve deljive sa 3,u intervalu od 10 do 50:

PROGRAM ABCD; VAR P,S,i:integer; BEGIN P:=1; S:=0; for i:=10 to 50 do if i mod 3 = 0 then begin S:=S+i; P:=P*i end; writeln( ' Zbir je ' , S:4); writeln( ' Proizvod je ' , P:4); readln END.

p

P=1

30<i<50

S=s+i

s

k

ne

da

S=0

P=p*i

msc Velimir Milanovic

Page 4: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 46

Autor: Velja Milanovid msc. prof.

Nacrtati algoritam i napisati program koji izračunava zbir n brojeva koji se unose sa tastature (odnosno sa ulaza):

PROGRAM ABC; VAR n,S,i,x:integer; BEGIN writeln( ' Unesi n ' ); readln(n); S:=0; for i:=1 to n do begin writeln( ' Unesi broj x ' ); readln(x); S:=S+x end; writeln( ' Zbir je ' , S:4); readln END.

p

n

S=0

i<=n

Unesi x

x

S=s+x

s

k

Nacrtati algoritam i napisati program koji sabira i množi n brojeva koji se unose sa tastature,a imaju osobinu da su deljivi sa 3 i 6:

PROGRAM ABC; VAR x,n,S,P:integer; BEGIN writeln( ' Unesi n ' ); readln(n); S:=0; P:=1; for i:=1 to n do begin writeln( ' Unesi x ' ); readln(x); if (x mod 3) and (x mod 6) then begin S:=S+x; P:=P*x end; end; writeln( ' Vrednost zbira je ' ,s:4); writeln( ' Vrednost proizvoda je ',P:4 ); readln END.

p

n

S=0

i<=n

unesi

x

Xmod...

S=s+x

P=p*x

S,p

k

ne

da

P=1

msc Velimir Milanovic

Page 5: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 47

Autor: Velja Milanovid msc. prof.

Napisati program i nacrtati algoritam koji nalazi aritmetičku sredinu svih parnih brojeva koji se unose sa tastature:

PROGRAM ABCD; VAR S,x,n,br,i:integer; Sr:real; BEGIN writeln( ' Unesi n ' ); readln(n); S:=0; br:=0; for i:=1 to n do begin writeln( ' Unesi x ' ); readln(x); if x mod 2=0 then begin S:=S+x; br:=br+1; end; end; Sr:=S/br; writeln( ' Srednja vrednost je ' , Sr:4:2 ); readln END.

msc Velimir Milanovic

Page 6: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 48

Autor: Velja Milanovid msc. prof.

Napisati program koji omoguduje unošenje n brojeva,a zatim izračunava aritmetičku sredinu svih brojeva koji su parni. Zatim ispisuje sve ponovo unešene brojeve koji su manji od aritmetičke sredine: PROGRAM ABCD; VAR Sr:real; i,x,n,S,br:integer; BEGIN writeln( ' Unesi n ' ); readln(n); S:=0; br:=0; for i:=1 to n do begin writeln( ' Unesi x ' ); readln(x); if x mod 2 =0 then begin S:=S+x; br:=br+1; end; end; Sr:=S/br; writeln( ' Srednja vrednost je ' , Sr:4:2); writeln ( ' Nastavak ' ); for i:=1 to n do begin readln(x); if x< Sr then writeln( x:4 ); end; readln END.

msc Velimir Milanovic

Page 7: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 49

Autor: Velja Milanovid msc. prof.

Napisati program koji omogudava unos n brojeva ako je broj n paran racuna zbir Sp=13+23…(n-1)3 a u suprotnom Sn=23+43…(n-1)3

Program Abc; Var n,i,Sn,Si:integer; Begin Writeln(’unesi n’); Readln(n); Sp:=0; Sn:=0; if N mod 2=0 then Begin For I:= to n-1 do Sp:=Sp+sqr(I)*I; End Else Begin For i:=2 to n-1 do begin i:=i+2; Sn:=Sn+sqr(i)*I; End; Writeln(’sn i sp’, sn:3, sp:3); Readln End.

msc Velimir Milanovic

Page 8: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 50

Autor: Velja Milanovid msc. prof.

Kreirati algoritamsku šemu i napisati odgovarajudi program kojim se učitava realna promenljiva x različita od nule, a zatim se izračunava, slededa suma:

2 2 22 4 10

.....2 4 10

Sx x x

Program bbv; var X,s:real; i;integer; Begin Writeln('Unesite realni broj x'); Readln(x); S:=0; For i:=2 to 10 do begin S:=(s+sqr(i))/(x*sqrt(i)); I:=i+2 End; Writeln('rezultat je =',s:4:2); Readln End.

Kreirati algoritamsku šemu i napisati odgovarajudi program koji za unetu vrednost prirodnog broja n izračunava slededi količnik:

1! 2! 3! ... !

1 1 11 ...

2 3

nR

n

Program ccdd; Var I,n,fakt,s:integer; Im,r:real; Begin Writeln('Unesite prirodan broj n:'); Readln(n); s:=0;Im:=0;Fakt:=1; For i:=1 to n do Begin Fakt:=fakt*i; s:=s+fakt; im:=1/i end; R:=s/im; Writeln('Rezultat =',R:5:2); Readln End.

msc Velimir Milanovic

Page 9: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 51

Autor: Velja Milanovid msc. prof.

Zadaci sa bloka ( If i For )

11.. SSaassttaavviittii pprrooggrraamm kkoojjiimm ssee zzaa zzaaddaattee rreeaallnnee bbrroojjeevvee xx,, yy,, zz iizzrraaččuunnaavvaa QQ ppoo

ffoorrmmuullii::

3 min( , , ), 0

4*max( , , ), 0

x y z y

x y z y

Q

22.. NNaappiissaattii pprrooggrraamm kkoojjii zzaa 44 pprriirrooddnnaa bbrroojjaa aa,, bb,, cc,, dd ooddrreeđđuujjee kkoolliikkoo jjee nnjjiihh ddeelljjiivvoo ssaa 22,,

kkoolliikkoo ssaa 66,, aa kkoolliikkoo ssaa 44 ii 66..

33.. UUččiittaattii pprriirrooddaann bbrroojj nn,, aa zzaattiimm nn cceelliihh bbrroojjeevvaa.. IIssppiissaattii zzbbiirr ppaarrnniihh ii zzbbiirr nneeppaarrnniihh

ooddvvoojjeennoo,, aa zzaattiimm iissppiittaattii kkoojjii jjee oodd nnjjiihh vveeććii..

4. Napiši program koji ispisuje trocifrene brojeve deljive sa 8 ili 4 i izračunava njihovu aritmetičku sredinu.

55.. NNaappiissaattii pprrooggrraamm kkoojjii zzaa 44 pprriirrooddnnaa bbrroojjaa aa,, bb,, cc,, dd ooddrreeđđuujjee kkoolliikkoo jjee nnjjiihh ddeelljjiivvoo ssaa 33,,

kkoolliikkoo ssaa 44,,

aa kkoolliikkaa ssaa 33 ii 44..

66.. ZZaaddaajjuu ssee bbrroojjeevvii UU ii VV.. SSaassttaavviittii pprrooggrraamm kkoojjii pprriikkaazzuujjee vvrreeddnnoosstt vveelliiččiinnee KK:: 4

2

3 2

( )............

*......

5 3

u vza u v

uK

u u vza u v

7. Napisati program za izračunavanje zbira kvadrata parnih i kubova neparnih prirodnih brojeva od n do m, aa zzaattiimm iissppiittaattii kkoojjii jjee oodd nnjjiihh vveeććii..

8. UUččiittaattii pprriirrooddaann bbrroojj nn,, aa zzaattiimm nn cceelliihh bbrroojjeevvaa.. IIssppiissaattii bbrroojj ppoozziittiivvnniihh,, bbrroojj nneeggaattiivvnniihh ii

bbrroojj oonniihh kkoojjii ssuu jjeeddnnaakkii nnuullii ii nnjjiihhoovvuu aarriittmmeettiiččkkuu ssrreeddiinnuu..

99.. SSaassttaavviittii pprrooggrraamm zzaa iizzrraaččuunnaavvaannjjee ppoovvrrššiinnee ii oobbiimmaa ttrroouuggllaa aakkoo ssuu ddaattee ssvvee ttrrii ssttaanniiccee uuzz

ppoossttaavvlljjaannjjee uusslloovvaa ddaa jjee zzbbiirr ddvvee ssttrraanniiccee vveeććii oodd ttrreeććee!!

1100.. NNaappiissaattii pprrooggrraamm kkoojjii zzaa 44 pprriirrooddnnaa bbrroojjaa aa,, bb,, cc,, dd ooddrreeđđuujjee kkoolliikkoo jjee nnjjiihh ddeelljjiivvoo ssaa 44,,

kkoolliikkoo ssaa 55 ii rraazzlliikkuu nnjjiihhoovviihh zzbbiirroovvaa..

1111.. NNaappiissaattii pprrooggrraamm kkoojjii ssaabbiirraa ii mmnnoožžii bbrroojjeevvee nnaa iinntteerrvvaalluu 11 ddoo nn ppooččeevv oodd 11 ii uuzziimmaajjuuććii

ssvvee nnaarreeddnnee bbrroojjeevvee kkoojjii ssee mmeeđđuussoobbnnoo rraazzlliikkuujjuu zzaa 33..

1122.. UUččiittaattii pprriirrooddaann bbrroojj nn,, aa zzaattiimm nn rreeaallnniihh bbrroojjeevvaa,, ppaa iissppiissaattii nnjjiihhoovvuu aarriittmmeettiiččkkuu ssrreeddiinnuu ii

pprrooiizzvvoodd..

1133.. NNaappiissaattii pprrooggrraamm kkoojjii zzaa 44 pprriirrooddnnaa bbrroojjaa aa,, bb,, cc,, dd ooddrreeđđuujjee kkoolliikkoo jjee nnjjiihh ddeelljjiivvoo ssaa 22,,

kkoolliikkoo ssaa 66,, aa kkoolliikkoo ssaa ssaa 44 ii 66..

1144.. PPrreekkoo ttaassttaattuurree ssee zzaaddaajjuu bbrroojjeevvii PP,, QQ,, RR,, KK,, NN.. SSaassttaavviittii pprrooggrraamm kkoojjii pprroovveerraavvaa ddaa llii jjee

bbrroojj PP vveeććii oodd aarriittmmeettiiččkkee ssrreeddiinnee oossttaalliihh bbrroojjeevvaa,, aakkoo jjeessttee iizzrraaččuunnaavvaa:: BB==33**QQ22 –– ((RR--PP))33,,

aa uu ssuupprroottnnoomm

BB==44**QQ22 –– ((RR--PP))33//KK**NN

1155.. NNaappiiššii pprrooggrraamm kkoojjii iissppiissuujjee ddvvoocciiffrreennee bbrroojjeevvee ddeelljjiivvee ssaa 33 ii iizzrraaččuunnaavvaa nnjjiihhoovvuu

aarriittmmeettiiččkkuu ssrreeddiinnuu ii pprrooiizzvvoodd..

1166.. UUččiittaattii pprriirrooddaann bbrroojj nn,, aa zzaattiimm nn cceelliihh bbrroojjeevvaa.. IIssppiissaattii aarriittmmeettiiččkkuu ssrreeddiinnuu bbrroojjeevvaa vveeććiihh

oodd zzaaddaattoogg bbrroojjaa NNNNbbrroojj ii ttee bbrroojjeevvee..

msc Velimir Milanovic

Page 10: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 52

Autor: Velja Milanovid msc. prof.

1177.. SSaassttaavviittii pprrooggrraamm kkoojjiimm ssee zzaa zzaaddaattee rreeaallnnee bbrroojjeevvee xx,, yy,, zz iizzrraaččuunnaavvaa QQ ppoo ffoorrmmuullii:: 13 min( , , ), 0

42*max( , , ), 0

x y z y

x y z y

Q

1188.. NNaappiissaattii pprrooggrraamm kkoojjii zzaa 44 pprriirrooddnnaa bbrroojjaa aa,, bb,, cc,, dd ooddrreeđđuujjee kkoolliikkoo jjee nnjjiihh ddeelljjiivvoo ssaa 33,,

kkoolliikkoo ssaa 99,, aa zzaattiimm zzbbiirr nnjjiihhoovviihh zzbbiirroovvaa..

1199.. NNaappiissaattii pprrooggrraamm kkoojjii zzaa uunneettii pprriirrooddaann bbrroojj nn nnaajjpprree iissppiittuujjee ddaa llii jjee ppaarraann iillii nneeppaarraann..

UUkkoolliikkoo jjee nneeppaarraann iizzrraaččuunnaavvaa ssee ssuummaa oobblliikkaa SSnn==2233 ++ 4433 ++......++ ((nn--11))33,, aa uukkoolliikkoo jjee ppaarraann

ssuummaa oobblliikkaa SSpp == 1133 ++3333 ++...... ++(( nn--11 ))33 ii ššttaammppaa ooddggoovvaarraajjuuććii rreezzuullttaatt..

2200.. UUččiittaattii pprriirrooddaann bbrroojj nn,, aa zzaattiimm nn cceelliihh bbrroojjeevvaa.. IIssppiissaattii pprroocceennaatt bbrroojjeevvaa mmaannjjiihh oodd

zzaaddaattoogg bbrroojjaa HHHHHH ii ttee bbrroojjeevvee..

Naredba WHILE

Za korišdenje naredbe FOR moramo znati broj ponavljanja. On se mora naznačiti pre nego što se i jedno ponavljanje izvrši. Ali ponekad želimo ponavljati naredbe sve dotle dok je ispunjen neki uslov. U tom slučaju ne znamo unapred koliko de biti ponavljanja. Dijagram toka pokazuje opisani slučaj:

Ovde demo upotrebiti naredbu WHILE za ponavljanje. Njen opšti oblik je:

WHILE Booleov izraz DO naredba

Booleov izraz procenjuje uslov, pa ako je vrednost Booleovog izraza ISTINA naredba se izvršava. Taj proces se ponavlja tako dugo dok Booleov izraz ima vrednost ISTINA. Kad postane LAŽ ponavljanje prestaje i računar ide na slededu naredbu u programu. Kao i kod FOR naredbe, naredba za ponavljanje može biti jednostavna ili složena naredba. Na primer, razmotrimo sledede:

i:=0; WHILE i < =20 DO WRITELN (i); i:=i + 5; WRITELN ('Ponavljanje završeno')

U ovom slučaju naredba i:=i + 5 de se izvršavati ponavljanjem. Svakim izvršenjem raste vrednost i za 5, pa de imati sledede vrednosti: 0, 5, 10, 15, 20. Pre svakog ponavljanja vrednost i se proverava da li je manja ili jednaka 20. Kad je vrednost i 0, 5, 10, 15 ili 20 ovaj test prođe i ponavljanje se izvršava. Ali kada je vrednost i 25, vrednost i < = 20 je LAŽ, pa je ponavljanje završeno.

msc Velimir Milanovic

Page 11: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 53

Autor: Velja Milanovid msc. prof.

Možemo uzeti postupno vrednosti i koristedi složenu naredbu kao naredbu za ponavljanje:

i:=0; WHILE i < =20 DO BEGIN write (i:4); i := i + 5 END

Rezultat de biti: 0 5 10 15 20

Zadnja vrednost i = 25 nije ispisana. Zašto? Obzirom da naredba WHILE proverava vrednost Booleovim izrazom pre svakog izvršavanja naredbe za ponavljanje, ne izvršava se čim se prvi put dođe do Booleovog izraza LAŽ.

Na primer, u slučaju:

i:=21; WHILE i < =20 DO BEGIN write (i:4); i:=i+5 END

ni jedna vrednost nede biti ispisana, obzirom da je kod prvog ispitivanja uslova i < = 20 vrednost LAŽ.

Zadatak:

Neka je data slededa grupa naredbi:

s :=0; i :=-1; while s<4 do begin s :=s+0.7; i :=i+3 end; s :=s+i;

Kolike de biti vrednosti promenljivih s i i nakon napuštanja navedenog koda.

Rešenje:

1. prolaz s=s+0.7=0+0.7=0.7 i=i+3=-1+3=2 2.prolaz s=s+0.7=0.7+0.7=1.4 i=i+3=2+3=5 3.prolaz s=s+0.7=1.4+0.7=2.1 i=i+3=5+3=8 4.prolaz s=s+0.7=2.1+0.7=2.8

msc Velimir Milanovic

Page 12: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 54

Autor: Velja Milanovid msc. prof.

i=i+3=8+3=11 5.prolaz s=s+0.7=2.8+0.7=3.5 i=i+3=11+3=14 6. prolaz s=s+0.7=3.5+0.7=4.2 i=i+3=14+3=17 7. prolaz bududi da je s = 4.2 > 4 ovog prolaza nema pa se izvršava instrukcija iza while ciklusa s :=s+i = 4.2+17=21.2

Zadatak:

Neka je data slededa grupa naredbi:

s :=1; i :=1; while s<4 do begin s :=s+0.6; i :=i+2 end; s :=s+i;

Kolike de biti vrednosti promenljivih s i i nakon napuštanja navedenog koda.

Rešenje: 1. prolaz s=s+0.6=1+0.6=1.6 i=i+2=1+2=3 2.prolaz s=s+0.6=1.6+0.6=2.2 i=i+2=3+2=5 3.prolaz s=s+0.6=2.2+0.6=2.8 i=i+2=5+2=7 4.prolaz s=s+0.6=2.8+0.6=3.4 i=i+2=7+2=9 5.prolaz s=s+0.6=3.4+0.6=4.0 i=i+2=9+2=11 6. prolaz bududi da je s = 4.0 i nije manje od 4 ovog prolaza nema pa se izvršava instrukcija iza while ciklusa s := s + i = 4.0 + 11 = 15

Zadatak:

Neka je data slededa grupa naredbi:

while a > b do

msc Velimir Milanovic

Page 13: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 55

Autor: Velja Milanovid msc. prof.

begin

c :=a*b;

c :=c+a

end;

Kako de se izvršiti ova grupa naredbi.

Ako je a <= b tada instrukcije u telu ciklusa nede biti izvršene ni jedanput a ako je a > b program de trajno ostati u telu ciklusa takozvanom beskonačnom ciklusu.

Napisati program korišdenjem strukture while koji sabira dva broja a i b, koji se unose sa tastature I to dok je a>b…

Program abc; Var A,b,s:integer; Begin Writeln (’unesi brojeve…’); Readln (a,b); While a>b do Begin Readln (a,b); S:=a+b; end; Writeln(’zbir je=’, s:4); Readln End.

p

A,b

S=0

A>b

Zbir je

A,b

S=a+b

k

ne

msc Velimir Milanovic

Page 14: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 56

Autor: Velja Milanovid msc. prof.

Napisati program koristedi strukturu while koji sabira brojeve koji se unose sa tastature sve dok se ne unese broj 5…

Program abc Var S,x:integer; Begin Writeln(’unesi broj’); Readln(x); S:=0; While x<>5 do Begin writeln('unesi broj'); Readln(x) End; Writeln(’zbir=’,s:4); Readln End.

p

x

S=0

X<>5

s

x

S=s+x

k

ne

Napisati program za izračunavanje n-tog stepena celog broja a.

program NtiStepen; var a, n, i, stepen : integer; begin write('Unesite brojeve a i n: '); readln(a, n); stepen:=1; i:=1; while i<=n do begin stepen:=stepen*a; i:=i+1 end; writeln('Stepen broja ', a, ' je ', stepen); readln END.

msc Velimir Milanovic

Page 15: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 57

Autor: Velja Milanovid msc. prof.

Napiši program kojim se sabiraju svi neparni brojevi od 100 do 1000 upotrebom while naredbe.

program pr; var zbir : real; i : integer; begin zbir :=0; i := 101; while i < 1000 do begin zbir :=zbir+i; i :=i+2; end; WriteLn('Trazeni zbir je ',zbir:8:2); ReadLn End.

Kao prvi neparni broj uzeti broj 101 a svaki slededi neparni je za 2 vedi od prethodnog. Ciklus de se završiti kada i dostigne vrednost od 1001 ali taj broj nede udi u zbir. Inače traženi zbir je 247500.

Zadatak:

Napiši program upotrebom while naredbe kojim se izračunava zbir niza za svaki broj n unešen sa tastature ako je dat niz:

program prog; var zbir, j : real; n,i : integer; begin Write('Unesi broj n : '); ReadLn(n); zbir :=0; i := 1; while i <= n do begin j :=1 /(2*i-1); zbir :=zbir+j; i :=i+1; end; WriteLn('Trazeni zbir niza je :',zbir:8:2); ReadLn End.

Suština rešenja ovog zadatka je da izračuna član niza i doda na prethodnu sumu. Nakon toga

msc Velimir Milanovic

Page 16: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 58

Autor: Velja Milanovid msc. prof.

se i uvedava za 1. Ciklus se obnavlja sve dok i ne dostigne vrednost n+1, ali taj član nede udi u zbir bududi da je uslov zadovoljen.

Napisati program koji za zadati broj n ispituje da li je paran i vedi od 20. Ako jeste računa sumu s1 svih parnih četvorocifrenih brojeva i štampa je, ako nije računa sumu s2 svih neparnih trocifrenih brojeva i štampa je.

Program klk; Var S1, s2, i, n:integer; Begin Writeln('Unesi broj n'); Readln(n); If (n mod 2 = 0) and (n>20) then Begin S1:=0; i:=1000; While (i<9999) do begin if (i mod 2=0) then s1:=s1+i; i:=i+1 end writeln('Zbir parnih je=',s1:4); end else Begin S2:=0; i:=100; While ( i<999 ) do begin if (i mod 2<>0) then s1:=s2+i; i:=i+1 end; writeln('Zbir neparnih je=',s2:4); end end; readln end.

msc Velimir Milanovic

Page 17: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 59

Autor: Velja Milanovid msc. prof.

Naredba REPEAT

Pascal dozvoljava još jednu naredbu za kontrolu ponavljanja, to je REPEAT naredba, koja ima slededi oblik:

REPEAT naredbe UNTIL Booleov izraz

Dijagram toka za ovu naredbu je:

Bilo koji broj naredbi odvojen tačka-zarezom može biti smešten između REPEAT i UNTIL.

Bududi da reči - REPEAT i UNTIL čine oblik poput para zagrada, BEGIN i END nisu potrebni.

Naredbe između REPEAT i UNTIL se izvršavaju nakon što je procenjen Booleov izraz. Ako je vrednost Booleovog izraza ISTINA nema više ponavljanja, pa računar ide na slededu naredbu u programu. Ako je vrednost Booleovog izraza LAŽ naredbe ponavljanja se ponovo izvršavaju itd.

Na primer, naredbe:

i:=0; REPEAT write (i:4); i:=i + 5 UNTIL i >20

izazivaju ispis: 0 5 10 15 20

Posle vrednosti 20 naredba: i := i + 5 menja vrednost i u 25. Sada vrednost: i >20 postaje ISTINA i nema više ponavljanja.

Najvažnija odlika naredbe REPEAT je da se vrednost Booleovog izraza proverava posle izvršenja naredbi ponavljanja, a ne pre.

Ovo znači, da se naredbe ponavljanja uvek izvršavaju najmanje jednom .

Možemo napraviti poređenje s dve grupe sličnih naredbi, jedna upotrebljava WHILE, a druga REPEAT:

msc Velimir Milanovic

Page 18: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 60

Autor: Velja Milanovid msc. prof.

i := 21 i:= 21; WHILE i < =20 DO REPEAT BEGIN write (i:4); write (i:4); i:=i + 5 i:=i + 5 UNTIL i > 20 END

Naredbe levo nede izazvati nikakav ispis. Naredbe desno uslovljavaju ispis 21. Kada se izvrše naredbe na levoj strani, vrednost i postaje 21, a kada se izvrše na desnoj strani i postaje 26. Razlika između ova dva primera je u primeru na levoj strani, gde se naredbe ponavljanja ne izvršavaju, dok u primeru na desnoj strani imamo izvršeno jedno ponavljanje. To je zato što naredba WHILE ispituje (proverava) Booleov izraz pre svakog izvršavanja naredbi ponavljanja, a REPEAT ispituje posle.

Važno!

Za razliku od "for" ciklusa koji se sigurno završava, ove dve vrste petlji ne moraju da se završe! Na primer, slededa dva ciklusa: k := 1; while k > 0 do k := k + 1;

k := 1; repeat k := k + 1 until k = 0;

de se završiti tek kada nestane stuje.

Zato uvek moramo imati nešto što raste (ili opada) i tako se približava uslovu za izlazak iz petlje. To nešto je najčede neka promenljiva čija vrednost raste (ili se smanjuje) u svakom prolazu kroz petlju. Kadgod napišete "while" ili "repeat" ciklus, proverite obavezno da li de se završiti. Na primer, u ciklusu:

k := 0; repeat k := k + 1; writeln(k, 'Hello!') until k = 10;

vrednost promenljive k raste u svakom prolazu kroz ciklus. Kako smo krenuli od nule, ciklus de se sigurno završiti.

Zadatak:

Neka je data slededa grupa naredbi:

s :=1; i :=1; repeat s :=s+0.6; i :=i+2 until s=4; s :=s+i;

Kolike de biti vrednosti promenljivih s i i nakon napuštanja navedenog koda.

msc Velimir Milanovic

Page 19: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 61

Autor: Velja Milanovid msc. prof.

Rešenje:

1. prolaz s=s+0.6=1+0.6=1.6 i=i+2=1+2=3 2.prolaz s=s+0.6=1.6+0.6=2.2 i=i+2=3+2=5 3.prolaz

s=s+0.6=2.2+0.6=2.8

i=i+2=5+2=7

4.prolaz

s=s+0.6=2.8+0.6=3.4

i=i+2=7+2=9

5.prolaz

s=s+0.6=3.4+0.6=4.0

i=i+2=9+2=11

uslov je zadovoljen pa se napušta repeat ciklus pa de s biti:

s=s+i = 4.0+11=15

Zadatak:

Neka je data slededa grupa naredbi:

s :=0; i :=-1; repeat s :=s+0.7; i :=i+3 until s=4.2; s :=s+i;

Kolike de biti vrednosti promenljivih s i i nakon napuštanja navedenog koda.

Rešenje:

1. prolaz

s=s+0.7=0+0.7=0.7

i=i+3=-1+3=2

2.prolaz

s=s+0.7=0.7+0.7=1.4

i=i+3=2+3=5

3.prolaz

s=s+0.7=1.4+0.7=2.1

msc Velimir Milanovic

Page 20: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 62

Autor: Velja Milanovid msc. prof.

i=i+3=5+3=8

4.prolaz

s=s+0.7=2.1+0.7=2.8

i=i+3=8+3=11

5.prolaz

s=s+0.7=2.8+0.7=3.5

i=i+3=11+3=14

6. prolaz

s=s+0.7=3.5+0.7=4.2

i=i+3=14+3=17

bududi da je uslov zadovoljen to je s=s+i=4.2+17=21.2.

Napisati program za izračunavanje recipročnih vrednosti do n.

program Suma; var i,n: integer; s:real; begin s:=0; i:=1; write(‘Unesite broj n ’); readln(n); repeat s:=s+1/i; i:=i+1; until i>n; write(’Trazeni zbir je ’,s); end.

msc Velimir Milanovic

Page 21: Algoritmi i programiranje u PASCAL- V. Milanovid 43 · 2014. 12. 7. · Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 43 Autor: Velja Milanovid msc

Algoritmi i programiranje u PASCAL-u sa zbirkom rešenih zadatka - V. Milanovid 63

Autor: Velja Milanovid msc. prof.

Napiši program upotrebom repeat instrukcije kojim se traži zbir brojeva od 1 do 100 deljivih sa 6 i 4. Brojevi od 50 do 60 ne ulaze u taj zbir.

program prog; var zbir : real; i : integer; begin zbir :=0; i := 1; repeat if (((i mod 4 = 0) and (i mod 6 = 0)) and ((i < 50) or (i > 60))) then zbir := zbir+i; i := i+1; until i = 101; WriteLn('Trazeni zbir je :',zbir:8:2); ReadLn End.

Napisati program kojim se odredjuje broj jedinica u binarnom zapisu prirodnog broja n.

program BrojJedinica; var n,s : integer; begin write('Unesite broj n: '); readln(n); s:=0; repeat s:=s+n mod 2; {n mod 2 izdvaja cifru 0 ili 1} n:=n div 2 until (n=0); writeln('U binarnom zapisu broja ima: ',s,' jedinica'); END.

msc Velimir Milanovic