Josip je izludio Šimu stalnim prohtjevima vezanim uz njihovo zajedničko programiranje. Uporni Josip uvijek nađe rješenje problema. Čuo je od starijih prijatelja, ozbiljnih programera, da petlja itekako olakšava rješavanje problema programiranjem. "Ne bi li petlja trebala zapetljati program i još više otežati, ionako zahtjevan, posao programera?" pitao je Patrika. "Ma kakvi, petlja se tako zove jer se dio programa izvršava mnogo puta!" odgovorio je Patrik.
Josipu nije preostalo ništa drugo nego zabaviti se petljama. Krenimo!
"Zašto uopće koristimo te petlje?" pobunio se Šime. "U situacijama kada neki dio programa trebamo ponoviti određen broj puta!" odgovorio je Josip.
Josip je Šimi zadao zadatak da njihov program, koji pozdravlja korisnika, modificira tako da program ponovi pozdrav deset puta. Isprobajmo!
Napiši program u koji se unosi ime te se, potom, to ime ispisuje deset puta uz poruku ", pozdrav!".
Pomoć:
Napraviti unos imena kao u prethodnoj jedinici te deset puta ispisati ime funkcijom print, uz poruku pozdrav.
Postupak:
"Uf, ovo je naporno. Da ne znam kratice za kopiranje i lijepljenje koda, trajalo bi cijelu vječnost!" rekao je Šime. "Tako je. Pogledaj moje, mnogo bolje i lakše rješenje!" odgovorio mu je Josip.
Primjer 1.
Sljedeći primjer prikazuje bolje i lakše rješenje:
Pokreni program koji deset puta ispisuje ime korisnika te ga pozdravlja!
Prethodnim primjerom pokrenuli smo petlju.
Petlja (eng. loop) algoritamski je konstrukt koji omogućuje da se dio algoritma ponavlja više puta.
Postoje dvije vrste petlje:
Petlja, koju smo netom koristili, naziva se for (hrv. za) petlja.
For petlja
For petlja jest petlja s unaprijed zadanim brojem ponavljanja.
Pogledajmo kako zapisati petlju s unaprijed zadanim brojem ponavljanja iz prethodnog primjera dijagramom toka:
Dio algoritma s ispisom imena i porukom pozdrava izvršit će se deset puta.
"Dobro!" rekao je neumorni Josip. "Dosadilo mi je da ispisuje deset puta! Napravimo da ispisuje onoliko puta koliko ja želim!"
"Ništa lakše!" odgovorio je Šime.
Algoritam od korisnika traži da unese ime te broj ponavljanja n, a ispisuje ime s porukom ", pozdrav!" n puta.
Povuci odgovarajuće naredbe na, za njih, predviđena mjesta tako da središte pločice s naredbom bude otprilike na mjestu upitnika.
Primjer 2.
Sljedeći primjer prikazuje petlju koja se ponavlja n puta:
Prethodni zadatak napisan u Pythonu:
Pomoć:
Josip je primijetio da nakon ključne riječi for slijedi varijabla
a Šime mu je pojasnio da je to kontrolna varijabla koja se svakim ponavljanjem petlje (ako se drugačije ne naredi) povećava za jedan. "Ne mora se zvati baš
rekao mu je, ali je često tako nazivamo." kazao je Šime.
"Nakon toga, slijede ključne riječi in range, a unutar zagrade pišemo broj ponavljanja petlje. Ok, sada mi je sve jasno!" ponosno mu je odgovorio Josip.
Naredba range (hrv. raspon) generira niz cijelih brojeva u zadanom rasponu, a najčešće se koristi unutar for petlje.
Primjer 3.
Kao što smo prethodno naglasili, naredba range generirat će onoliko brojeva koliko piše unutar zagrade. Svi ti brojevi spremaju se, jedan po jedan, u varijablu i. Pogledajmo što se događa kada ispisujemo sadržaj varijable
Program ispisuje brojeve od nule do deset.
Pomoć:
Kao što smo prethodno naglasili, naredba range generirat će onoliko brojeva koliko piše unutar zagrade. Svi ti brojevi spremaju se, jedan po jedan, u varijablu i.
Primijetit ćete da Python ne kreće od jedan, već od nule te ne završava brojem koji je u zagradi, već brojem koji je za jedan manji od njega.
Primijetite da for petlja kreće od nule (0), povećava se za jedan, a završava s jednim brojem manje od upisanog (n - 1).
Primjer 4.
Probajmo ispisati sve parne brojeve do sto:
Kako bismo ispisali sve parne brojeve, moramo za svaki broj provjeriti je li djeljiv s dva. Djeljivost broja s nekim brojem provjeravamo tako da izračunamo je li mu ostatak dijeljenja s tim brojem jednak nuli.
Pomoć:
Petlja se ponavlja sto puta, a varijabla i poprima vrijednosti od 0 do 99.
Unutar petlje naredbom if provjeravamo je li broj koji je trenutačno pohranjen u varijabli i paran, odnosno je li mu ostatak pri dijeljenju s dva jednak nuli. Ako jest, taj broj ispisujemo.
Pokušaj samostalno riješiti sljedeći zadatak:
Dovrši program koji pita korisnika za unos broja kuća u njegovoj ulici. Program treba ispisati kućne brojeve svih kuća s južne strane ulice. Kuće sa sjeverne strane ulice imaju parne brojeve.
Pomoć:
Ako kuće sa sjeverne strane imaju parne brojeve, tada kuće s južne strane imaju neparne brojeve. Kada se unese broj kuća, treba napraviti petlju koja ide do tog broja i ispisuje sve neparne brojeve.
Neparni brojevi, kad ih podijelimo s dva, daju ostatak jedan, odnosno, ostatak je različit od nule.
Postupak:
br_kuca = int(input('Unesi broj kuca: '))
for i in range(br_kuca):
if i % 2 != 0:
print(i)
Mnogo više riječi o petljama pročitaj u Edutoriju, drugom modulu šestog razreda te u Edutoriju, trećem modulu prvog razreda srednje škole.
Nakon svladavanja petlji, Josip svuda oko sebe vidi ponavljanje. Već na prvom semaforu, po putu do škole, sjetio se petlje.
Josip je sada siguran u svoje znanje. No ovo je samo početak. Pravi programi kriju se iza ugla.