Antonio je skejter, a čak i kada nema skejt uz sebe, skejtanje mu je uvijek na pameti. Kada hodajući ide u školu, zamišlja da vozi skejt te na pješačkom prijelazu, ili kako on voli reći "na zebri", preskače svaku drugu zebrinu prugu. Antonio osim skejta ima i drugu strast, a to je programiranje. Odlučio je da će napraviti program koji će brojiti koliko je pruga preskočio na putu do škole.
Za rješenje zadatka iz primjera koji smo upravo naveli može se upotrebljavati petlja s korakom.
Petlju s korakom najčešće realiziramo petljom s unaprijed zadanim brojem ponavljanja, koja se još naziva for petljom. U Pythonu for petlju možemo zapisati na tri načina. Pogledajmo videozapis koji pobliže objašnjava sva tri načina zapisa for petlje u Pythonu:
Primjer 1.
Primjeri koda u Pythonu, prema prethodnom videozapisu, za sva tri načina zapisa for petlje:
for i in range(n):
print(i)
for i in range(m, n):
print(i)
for i in range(m, n, k):
print(i)
Naredba range() unutar for petlje jezikom programera naziva se funkcija. Svaka naredba u Pythonu koja stoji samostalno, a nakon ključne riječi sadrži oble zagrade jest funkcija. Sljedeća poveznica sadrži objašnjenje funkcija na engleskom jeziku. Prouči što su funkcije u programiranju te što su parametri pri pozivu funkcija.
Prije negoli se uhvatimo u koštac s Antonijevim problemom, napravit ćemo program koji ispisuje sve parne brojeve od dva do deset.
Za usporedbu, napisat ćemo dva programa:
Koji će program računalo izvesti brže?
Rješenje uz korištenje klasične for petlje bez koraka.
Program upotrebljava klasičnu for petlju pri čemu kontrolna varijabla i poprima sve vrijednosti od
do
a svakim izvršavanjem petlje provjerava se je li ostatak pri dijeljenju
kontrolne varijable i
s dva jednak nuli kako bi se utvrdila njezina parnost.
Rješenje uz korištenje for petlje s korakom.
Program upotrebljava petlju s korakom pri čemu kontrolna varijabla i poprima svaku drugu vrijednost od
do
Računalo će mnogo brže izvesti program koji upotrebljava petlju s korakom zbog dvije stvari:
Korisnik unosi n, broj pješačkih prijelaza te broj oznaka (pruge) za svaki pješački prijelaz. Program ispisuje koliko je pruga Antonio preskočio.
Program upotrebljava dvije for petlje, jednu unutar druge. Prva ili vanjska for petlja ponavlja se n puta, odnosno onoliko puta koliko ima pješačkih prijelaza koje je Antonio prešao. Druga ili unutarnja for petlja ponavlja se upola manje puta nego što ima pruga na pješačkom prijelazu na kojem se trenutačno nalazi Antonio. U unutarnjoj for petlji kontrolna varijabla j započinje s vrijednosti jedan, završava s brojem pruga, a preskače svaki drugi broj (korak = 2), odnosno svaku drugu prugu.
Također, program upotrebljava akumulacijsku varijablu broj_preskočenih_pruga u koju pohranjuje koliko je Antonio pruga preskočio.
Budući da for petlje u Pythonu započinju s vrijednosti 0, petlju s korakom moramo postaviti na početnu vrijednost 1, jer Antonio preskače svaku drugu prugu.
Možemo li riješiti ovaj problem bez upotrebe petlje s korakom? Nije li dovoljno broj pruga na svakom pješačkom prijelazu cjelobrojno podijeliti s dva?
Pokušaj na prethodnom primjeru umjesto unutarnje for petlje upisati broj_preskocenih_pruga += pruge // 2.
Cjelobrojnim dijeljenjem broja pruga prebrojit ćemo polovicu pruga.
Ponovi prethodnu jedinicu te napravi program za micro:bit koji će koristiti Antoniju za igranje skrivača. Ispisuje se svaki peti broj od pet do sto.
Pomoć:
Prenesi blok count with u dio prozora za slaganje blokova naredbi te podesi vrijednosti tako da piše from 5 to 100 by 5.
Prenesi blok print u dio prozora za slaganje blokova naredbi te ga ubaci kraj naredbe do.
Prenesi blok i u dio prozora za slaganje blokova naredbi te ga ubaci kraj naredbe print.
Napravi program koji radi suprotno od prethodnog zadatka. Ispisuje se svaki peti broj od
do
Pomoć:
Početna vrijednost mora biti veća od završne!
Korak je negativan!
Uključuje li se donja granica?
Postupak:
for i in range(100, 0, -5):
print(i)
Dovrši program koji unosi godinu u budućnosti te ispisuje sve godine u kojima će se održati svjetsko nogometno prvenstvo, od godine posljednjeg prvenstva do unesene godine.
Pomoć:
Koje je godine bilo posljednje svjetsko nogometno prvenstvo? To je početna vrijednost kontrolne varijable i.
Svakih se koliko godina održava svjetsko nogometno prvenstvo? Toliki je korak.
Do koje se godine izvršava petlja?
Postupak:
godina = int(input('Unesi godinu u budućnosti: '))
for i in range(2018, godina, 4):
print(i)
Petlja s korakom nema široku primjenu, ali programeru uvelike olakšava rješenje pojedinih specifičnih zadataka u kojima se može upotrebljavati. U tim situacijama petlja s korakom optimizira izvođenje programa, a "preskakanjem" suvišnog programskog koda čini ga ljepšim, tj. čitljivijim.