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)