Naredbe ponavljanja
3. Ponavljanje koje ovisi o uvjetu
3.1. Petlja s provjerom uvjeta na početku
Ovu naredbu koristimo kada nam nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na početku.
Njezin je opći oblik:
dok je uvjet činiti
naredba;
Naredba (blok naredbi) unutar ove petlje ponavlja se sve dok je uvjet istinit. Ukoliko se treba ponavljati više od jedne naredbe, one se moraju staviti u blok (između znakova { i }).
Primjer 1:
Što će ispisati sljedeći dio programa ako je k cjelobrojna varijable?
k := 3;
dok je k <= 20
činiti
k := k+3;
izlaz (k);
Na zaslon će
se ispisati broj 21.
Kako to?
Na početku se varijabli k pridruži vrijednost 3.
Naredba
dok je... sada
provjerava je li
vrijednost
varijable k
manja ili
jednaka od 20.
Pošto je ta
vrijednost
jednaka 3, uvjet
je ispunjen i
vrijednost
varijable k se
uvećava za 3
(k=3+3=6).
Sada se
izvršavanje
programa vraća
na ispitivanje
uvjeta.
Šest je
manje od 20 i
uvjet je još
uvijek ispunjen.
To znači da će
se vrijednost
varijable k
ponovo uvećati
za 3 =>
k=6+3=9.
Devet je manji
od 20 => k se
uvećava za 3 =>
k=9+3=12
12<20 =>
k=12+3=15
15<20 =>
k=15+3=18
18<20 =>
k=18+3=21
21 nije manji
ili jednak 20.
Uvjet nije
ispunjen i
program
nastavlja sa
izvođenjem s
prvom naredbom
iza naredbe
ponavljanja. To
je naredba izlaz
(k). Sada se na
zaslon ispisuje
21.
Primjer 2:
Što ako prethodni program zapišemo ovako:
k := 3;
dok je k <= 20
činiti
{
k := k+3;
izlaz (k);
}
Kako su sada naredbe k := k+3; i izlaz (k); unutar vitičastih zagrada, obje su unutar naredbe za ponavljanje. To znači da će se sada nakon svakog uvećavanja vrijednosti varijable k, ta vrijednost i ispisati na zaslon.
Tako će se nakon
ovog dijela
programa na
zaslon ispisati
vrijednosti
6, 9, 12, 15,
18 i 21.
Početna
vrijednost
varijable k
(k=3) se neće
ispisati jer se
naredba za izlaz
nalazi iza
naredbe za
promjenu
vrijednosti
varijable.
Kada bi se naredba izlaz (k) nalazila prije naredbe za promjenu vrijednosti (k:=k+3), na zaslon bi se ispisivale vrijednosti: 3, 6, 9, 12, 15, 18.
Primjer 3:
Što će ispisati sljedeći dio programa?
ulaz (broj);
br:=0;
dok je broj>0 činiti
{
br:=br+1;
broj:=broj div 10;
}
izlaz (br);
Ovo je dio programa koji broji koliko uneseni broj ima znamenaka.
Provjerite je li to istina na nekom primjeru.
Npr. neka je vrijednost varijable broj jednaka 3271.
Koja će se vrijednost ispisati na zaslon?
Prilikom primjene uvjetnih petlji potrebno je voditi računa o tome da se izbjegne beskonačna petlja. Potrebno je pronaći uvjet koji će sigurno postati lažan u nekom trenutku.
Primjer 4:
Što će ispisati sljedeći dio programa?
ulaz (broj);
br:=0;
dok je broj<>0 činiti
br:=br+1;
broj:=broj div 10;
izlaz (br);
Ovo je klasičan primjer beskonačne petlje.
Izostavljene su vitičaste zagrade i unutar
naredbe dok je...
nalazi se samo naredba
br:=br+1.
To znači da će se vrijednost varijable br
povećavati, no vrijednost varijable broj
će ostajati nepromijenjena (nikada neće postati
nula) i uvjet nikada neće postati lažan!
Zadatak:
Napravite algoritam za program koji će za uneseni broj provjeriti je li potpuno paran. (Pomoć: Broj je potpuno paran ako mu je svaka znamenka paran broj)