Algoritamska struktura - petlje 2

2. Petlja u kojoj broj ponavljanja ovisi o uvjetu

Postoje problemi u kojima ne možemo znati točan broj ponavljanja. Na primjer, želimo li izračunati zbroj znamenaka nekog broja, a ne znamo koliko ih taj broj ima, moramo pronaći drugi način rješavanja tog problema. Takvih primjera ima još mnogo. Oni se rješavaju naredbama ponavljanja u kojima broj ponavljanja ovisi o uvjetu.
Petlju s provjerom uvjeta na početku u pseudojeziku možemo zapisati kako slijedi:
Naredba se u ovoj petlji ponavlja sve dok je uvjet istinit. Ako je potrebno ponavljati više od jedne naredbe, one se moraju staviti u blok.
Ova se naredba uglavnom koristi kad:
  • se ne zna točan broj ponavljanja naredaba u petlji
  • ne postoji kontrolna varijabla koja se mijenja ponavljanjem
  • na izvršavanje petlje utječu neki vanjski parametri (npr. unošenje s tipkovnice).

Tijek izvršavanja bloka dok je je sljedeći:
  1. Izračunava se uvjet izvođenja (to je relacijski ili logički izraz i njegov rezultat može biti istina ili neistina).
  2. Ako je rezultat istinit, izvodi se blok_naredbi, a nakon toga se program vraća na naredbu dok je i izvodi od točke 1.
  3. Ako je rezultat neistinit, preskače se blok naredbi i program nastavlja s izvođenjem prvom naredbom iza bloka naredbi dok je.

Primjer 1.
Nakon izvođenja algoritma

vrijednost ispisana na zaslonu bit će 9.
Kako to?
Na početku se varijabli k pridruži vrijednost 3 (k = 3). Naredba dok je sada provjerava je li vrijednost varijable k jednaka broju šest ili je manja od njega (dok je (k <= 6) činiti). Budući da je ta vrijednost jednaka 3, uvjet je ispunjen i vrijednost varijable k uvećava se za 3 (k = k + 3 = 3 + 3 = 6). Sad se izvođenje programa vraća na ispitivanje uvjeta. Šest je jednako šest. Uvjet je i dalje ispunjen. To znači da će se vrijednost varijable k ponovno uvećati za 3 => k = 6 + 3 = 9. Devet je veći od šest, uvjet nije ispunjen i program nastavlja s izvođenjem prve naredbe iza naredbe  ponavljanja. To je naredba izlaz(k). Sad se ispisuje broj 9.
Prikažimo postupak u tablici:

Primjer 2.
Ako prethodni algoritam zapišemo ovako:

ispisat će se vrijednosti 6 i 9.
Zbog čega?
Budući da su sad naredbe k = k + 3 i izlaz (k) u vitičastim zagradama, obje su u naredbi za ponavljanje. To znači da će se nakon svakog uvećavanja vrijednosti varijable k ta vrijednost i ispisati.

Primjer 3.
Algoritam



klasičan je primjer beskonačne petlje. U naredbi dok je... nalazi se samo naredba br = br + 1. To znači da će se vrijednost varijable br povećavati, no vrijednost varijable broj ostat će nepromijenjena (nikad neće postati nula) i uvjet nikad neće postati neistinit.
Provjeri pomoću tablice!

NAPOMENA: Pri primjeni uvjetnih petlji potrebno je voditi brigu o tome da se izbjegne beskonačna petlja. Potrebno je pronaći uvjet koji će sigurno u nekom trenutku postati neistinit.