Osnovne algoritamske strukture - petlje
Sjedište: | CARNET - Arhiva 2021 Loomen |
E-kolegij: | Informatika 3 PMG - Gimnazija Đakovo |
Knjiga: | Osnovne algoritamske strukture - petlje |
Otisnuo/la: | Gost (anonimni korisnik) |
Datum: | petak, 1. studenoga 2024., 02:28 |
Opis
Č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
1. Uvod
Č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 s poznatim brojem ponavljanja
Ta se naredba primjenjuje u zadatcima u kojima je broj ponavljanja unaprijed poznat.
U pseudojeziku možemo je zapisati kao:
za b = p do k činiti
naredba (blok_naredbi)
Varijabla b je kontrolna varijabla ili brojač. Ona nadzire broj prolazaka petljom, a njezina se vrijednost automatski povećava za jedan svakim prolaskom kroz petlju – od početne vrijednosti (p) do krajnje vrijednosti (k).
Tijek izvršavanja naredbe s poznatim brojem ponavljanja je sljedeći:
- Vrijednost kontrolne varijable b postavlja se na početnu vrijednost p.
- Provjerava se je li vrijednost kontrolne varijable manja ili jednaka završnoj vrijednosti k Ako je rezultat istina, izvodi se blok naredaba, a vrijednost kontrolne varijable b uveća se za 1. Program se zatim vraća na početak petlje, te se ona ponavlja od početka 2. koraka.
- Ako je vrijednost kontrolne varijable b veća od završne vrijednosti k, blok naredaba se preskače i program se nastavlja prvom naredbom iza bloka.
2.1. Petlja s poznatim brojem ponavljanja u Pythonu
Petlju s poznatim brojem ponavljanja u Pythonu zapisujemo na sljedeći način:
for i in range ( n ):
naredba (blok_naredbi)
Tako zapisana naredba for ponovit će se n puta, s time da je početna vrijednost kontrolne varijable i jednaka 0. To znači da se vrijednost kontrolne varijable mijenja od 0 do n – 1.
Primjer 1:
Dio programa
for i in range (10):
print(i)
na zaslon će ispisati brojeve 0, 1, 2… 9.
Naredba for može se zapisati i u obliku:
for i in range (početna, završna, korak):
naredba (blok_naredbi)
U tom slučaju vrijednost kontrolne varijable mijenjat će se od vrijednosti početna do vrijednosti završna – 1, i to za vrijednost korak.
Primjer 2:
Dio programa
for i in range (1, 10, 2):
print(i)
na zaslon će ispisati brojeve 1, 3, 5, 7 i 9.
2.2. Primjeri jednostavnih algoritama
Primjer 1.
Algoritam
zbroj = 0
za i = 1 do 5 činiti
zbroj = zbroj + i
izlaz (zbroj)
ispisuje zbroj brojeva od 1 do n.
Zadatak 1. Algoritam iz prethodnog primjera zapiši u Pythonu i provjeri ga.
Primjer 2.
Algoritam
br = 0
ulaz ( n)
za i = 1 do n činiti
ako je i mod 3 == 0 onda
br = br + 1
izlaz (br)
ispisuje koliko ima brojeva djeljivih s brojem 3 u intervalu od 1 do n.
Zadatak 2. Algoritam iz prethodnog primjera zapiši u Pythonu i provjeri ga.
Zadatak 3. Poboljšaj ovaj algoritam tako da zadaš gornju i donju granicu intervala te broj s kojime treba provjeriti djeljivost.
Primjer 3.
Algoritam
zbroj = 0
ulaz (broj_ucenika)
za i = 1 do broj_ucenika činiti
{
ulaz (ocjena)
zbroj = zbroj + ocjena
}
srednja_ocjena = zbroj/broj_ucenika
izlaz (srednja_ocjena)
ispisat će srednju ocjenu iz nekog predmeta ili testa za zadani broj učenika.
Primjer 4.
Algoritam
najveći = 0
ulaz ( n)
za i = 1 do n činiti
{
ulaz (bodovi)
ako je bodovi > najveći onda
najveći = bodovi
}
izlaz (najveći)
ispisat će najveći ostvareni broj bodova na nekom testu ili natjecanju.
Zadatak 4. Algoritme iz primjera 3 i 4 zapiši u Pythonu i provjeri ih.
2.3. Pitanja, vježbe i zadatci
- Kad se koristimo naredbama ponavljanja?
- U kojim se primjerima koristimo naredbama ponavljanja s poznatim brojem ponavljanja?
- Na jednom primjeru objasni način izvršavanja naredbe ponavljanja spoznatim brojem ponavljanja.
- Kolika treba biti vrijednost varijable n da bi se sljedeća petlja izvela točno 25 puta?
za b = 10 do n činiti... - Koja će vrijednost biti spremljena u varijabli m nakon izvođenja sljedećeg algoritma?
m = 2 a
za b = 0 do 5 činiti
ako je b mod 2 == 1 onda m = m + 2 - Osmisli i napiši algoritam koji će za uneseni broj n ispisati sve brojeves kojima je djeljiv. Ispravnost algoritma provjeri u Pythonu.
- Osmisli i napiši algoritam koji će tražiti unošenje broja učenika, a zatim broj bodova na testu iz informatike za svakog učenika. Algoritam treba izračunati i ispisati srednju vrijednost unesenih bodova, najveći i najmanji ostvaren broj bodova.
3. Petlje u kojima 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:
dok je (uvjet) činiti
naredba (blok_naredbi).
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:
- Izračunava se uvjet izvođenja (to je relacijski ili logički izraz i njegov rezultat može biti istina ili neistina).
- 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.
- Ako je rezultat neistinit, preskače se blok naredbi i program nastavlja s izvođenjem prvom naredbom iza bloka naredbi dok je.
Nakon izvođenja algoritma
k = 3
dok je (k <= 6) činiti
k = k + 3
izlaz (k)
Algoritam
ulaz (broj)
br = 0
dok je broj <> 0 činiti
br = br + 1
broj = broj div 10
izlaz (br)
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.
3.1. Petlja u kojoj ponavljanje ovisi o uvjetu u Pythonu
Petlja u kojoj ponavljanje ovisi o uvjetu (while) u Pythonu zapisuje se na sljedeći način:
while uvjet:
naredba (blok_naredbi)
i izvršava se sve dok je zadani uvjet istinit.
Primjer:
Program
n = 1
while (n < 10):
print ( n)
n = n + 2
ispisat će brojeve 1, 3, 5, 7 i 9.
Zadatak:
Razmisli i odgovori što će ispisati sljedeći program.
n = 1
while (n < 10):
print ( n)
n = n + 2
3.2. Primjeri jednostavnih algoritama
Primjer 1.
Algoritam za ispisivanje zbroja znamenaka unesenog broja
ulaz (broj)
zbroj = 0
dok je broj <>0 činiti
{
zadnja = broj mod 10
zbroj = zbroj + zadnja
broj = broj div 10
}
izlaz (zbroj)
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).
ulaz (n, m)
dok je n <> m činiti
ako je n > m onda
n = n - m
inače
m = m - n
izlaz (m)
Primjer 3.
Algoritam rastavlja uneseni broj na proste faktore.
ulaz ( n)
f = 2
dok je n >= f činiti
ako je n mod f == 0 onda
{
izlaz(f)
n = n div f
}
inače
f = f + 1
Zadatak: Provjeri algoritme u programskom jeziku Python.
3.3. Pitanja, vježbe i zadatci
- Kad se koriste petlje u kojima ponavljanje ovisi o uvjetu? Objasni na primjeru.
- Što će ispisati sljedeći algoritam ako je vrijednost varijable broj = 5?
ulaz (broj)
f = 1
b = 1
dok je b <= broj činiti
{
f = f*b
b = b + 1
}
izlaz (f)
Dobiveno rješenje provjeri u Pythonu. - Što će ispisivati sljedeći algoritam?
broj = 5
b = 1
dok je b <= broj činiti
izlaz (b*2)
b = b + 1
Zbog čega? Dobiveno rješenje provjeri u Pythonu.
4. Što će se ispisati ako prethodni algoritam zapišemo ovako:
broj = 5
b = 1
dok je b <= broj činiti
{
izlaz (b*2)
b = b + 1
}
Što se promijenilo?