Algoritamska struktura - petlje 2

Sjedište: CARNET - Arhiva 2021 Loomen
E-kolegij: III. Gimnazija Osijek - Informatika 1
Knjiga: Algoritamska struktura - petlje 2
Otisnuo/la: Gost (anonimni korisnik)
Datum: petak, 31. siječnja 2025., 17:41

1. Petlje (iteracija, ponavljanje)

Često se u procesu programiranja pojavljuje potreba za ponavljanjem dijelova programa. Na primjer, postoji li potreba za unošenjem 10 brojeva, naredbu za unošenje treba pisati deset puta. Praktičnije je potrebne naredbe napisati jedanput, a pri izvođenju programa pozvati ih željeni broj puta.

Za ponavljanje dijelova programa koristimo se naredbama ponavljanja koje još nazivamo i programskim petljama. Naredbe ponavljanja sastavni su dio svakoga programskog jezika. Možemo ih podijeliti prema različitim kriterijima. S obzirom na broj ponavljanja, dijelimo ih na:
petlje u kojima je poznat broj ponavljanja i
• petlje u kojima broj ponavljanja ovisi o uvjetu.

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.

2.1. Primjeri algoritama

Primjer 1. Algoritam za ispisivanje zbroja znamenaka unesenog broja

Pogledajmo na konkretnom primjeru. Neka je početna vrijednost varijable broj = 137.


Primjer 2.  Algoritam traži unošenje dvaju brojeva i ispisuje najveći broj s kojim su djeljiva oba broja (Euklidov algoritam za traženje najveće zajedničke mjere dvaju brojeva).

Provjerimo algoritam na konkretnom primjeru. Neka su početne vrijednosti varijabli n = 30, m = 18.

Primjer 3. Algoritam rastavlja uneseni broj na proste faktore.

Pomoću tablice provjeri algoritam za n = 4.