x
Učitavanje

3.4 Naredba ponavljanja

Što ću naučiti?
Europska unija - Zajedno do fondova EU
Prethodna jedinica
Sadržaj jedinice icon sadržaj jedinice

Na početku...

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!

Josip i Šime otkrivaju petlje
Josip i Šime gledaju u zaslon prijenosnog računala na kojem je simbol petlje - strelica koja se kreće u smjeru suprotnom od kazaljki na satu i radi krug.

"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:

ime = input('Unesi ime: ')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')
print(ime, 'pozdrav!')

"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!

null
null

Petlje

Prethodnim primjerom pokrenuli smo petlju.  

Petlja

Petlja (eng. loop) algoritamski je konstrukt koji omogućuje da se dio algoritma ponavlja više puta.

Postoje dvije vrste petlje:

  1. petlja s unaprijed zadanim brojem ponavljanja (for petlja)
  2. petlja s provjerom uvjeta (while petlja).

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.

Prazan dijagram toka
početak
kraj
ime, n
ponoviti n puta
ime, ", pozdrav!"
null
null

Primjer 2.

Sljedeći primjer prikazuje petlju koja se ponavlja n puta:

Prethodni zadatak napisan u Pythonu:

Pomoć:

Varijabla ime niz je znakova pa je unosimo s naredbom input, dok je varijabla n cijeli broj pa nju unosimo naredbom input unutar naredbe int.
Petlja se ponavlja onoliko puta koliko korisnik unese u varijablu n, a unutar petlje ispisuje se uneseno ime i poruka ', pozdrav!'.
null

Josip je primijetio da nakon ključne riječi for slijedi varijabla i , 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š i , 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.

range

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 i :

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.

null

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.

null

Zadatak 1.

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)

...i na kraju

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.

Semafor
Semafor na pješačkom prijelazu. Na semaforu je postavljena kutija sa zvučnom i svjetlosnom signalizacijom. Semafor neprestano izvršava petlju s unaprijed zadanim brojem ponavljanja.

Josip je sada siguran u svoje znanje. No ovo je samo početak. Pravi programi kriju se iza ugla.

Povratak na vrh