Python iteracije i osnovni algoritmi
U ovoj lekciji naučićeš kako da koristiš iteracije (ponavljanja) za rešavanje jednostavnih algoritamskih problema. Iteracije su jedan od najvažnijih koncepata u programiranju i omogućavaju da ponavljaš deo koda više puta, najčešće pomoću petlji for i while.
1. Šta je iteracija?
Iteracija znači ponavljanje. Računari su veoma efikasni u ponavljanju istih operacija velikom brzinom, pa se iteracije koriste za:
- sabiranje niza brojeva
- računanje minimuma/maksimuma
- brojanje elemenata
- pretraživanje liste
- prolazak kroz tekst ili niz karaktera
2. Iteracije kroz opseg brojeva
Najčešći način iteriranja u Pythonu je korišćenjem funkcije range():
for i in range(1, 6):
print(i)
Ovaj program ispisuje brojeve od 1 do 5.
U funkciji range(a, b) početna vrednost je a, a poslednja je b - 1.
3. Sabiranje brojeva — osnovni algoritam
Jedan od prvih algoritama koje programeri uče jeste sabiranje n prvih brojeva:
n = 5
suma = 0
for i in range(1, n + 1):
suma += i
print("Suma je:", suma)
Ovaj algoritam radi tako što počinje od nule i dodaje sve brojeve od 1 do n.
4. Pronalaženje maksimuma
Algoritam za pronalaženje najvećeg broja u listi:
brojevi = [3, 8, 2, 11, 5]
maksimum = brojevi[0]
for broj in brojevi:
if broj > maksimum:
maksimum = broj
print("Najveći broj je:", maksimum)
5. Prebrojavanje elemenata
Primer algoritma koji broji koliko parnih brojeva ima u listi:
brojevi = [1, 2, 4, 7, 10, 13]
brojac = 0
for x in brojevi:
if x % 2 == 0:
brojac += 1
print("Broj parnih:", brojac)
6. Mini zadaci — iteracije i algoritmi
- Napisati program koji sabira sve parne brojeve od 1 do 100
- Izračunaj proizvod svih brojeva od 1 do n
- Pronađi najmanji broj u listi unetoj sa tastature
- Prebroj koliko se puta pojavljuje slovo „a“ u unetom tekstu
- Proveri da li se određeni broj nalazi u listi
Ova lekcija je priprema za složenije algoritamske zadatke koji se koriste u programiranju, robotici i veštačkoj inteligenciji.
Ugnježdene petlje (Nested loops)
Ugnježdene petlje su petlje koje se nalaze unutar drugih petlji. To znači da se jedna petlja (unutrašnja) izvršava više puta tokom jednog prolaza druge petlje (spoljašnje).
Ovakav način rada je veoma čest u programiranju i koristi se kada:
- radimo sa tabelama i matricama
- upoređujemo svaki element sa svakim
- crtamo obrasce (pravougaonike, trouglove)
- razvijamo osnovne algoritme
Kako se izvršavaju ugnježdene petlje?
Prvo se izvršava spoljašnja petlja. Za svaki njen prolaz, unutrašnja petlja se izvršava u potpunosti.
Redosled možemo zamisliti ovako:
Spoljašnja petlja → 1. prolaz
Unutrašnja petlja → svi prolazi
Spoljašnja petlja → 2. prolaz
Unutrašnja petlja → svi prolazi
...
Zato se unutrašnji kod često izvršava mnogo puta, što je važno za razumevanje algoritama.
Mali vizuelni primer toka
for i in range(3):
for j in range(2):
print("i =", i, "j =", j)
Ovde:
- spoljašnja petlja (
i) ide od 0 do 2 - za svaki
i, unutrašnja petlja (j) ide od 0 do 1
Ukupno se print izvršava 3 × 2 = 6 puta.
Kratki praktični primeri
Primer 1: Ispis koordinata
for x in range(1, 4):
for y in range(1, 3):
print("(", x, ",", y, ")")
Ovaj primer pokazuje sve moguće parove vrednosti
x i y.
Koristi se u igrama, matematici i radu sa mrežama.
Primer 2: Pravougaonik od zvezdica
for i in range(3):
for j in range(5):
print("*", end="")
print()
Spoljašnja petlja određuje broj redova, a unutrašnja broj kolona. Rezultat je pravougaonik širine 5 i visine 3.
Primeri ugnježdenih petlji (osnovni algoritmi)
Sledeći primeri prikazuju tipične situacije u kojima se koriste ugnježdene petlje. Primeri su kratki i fokusirani na razumevanje načina izvršavanja.
Primer 1: Manja tabela množenja
Zadatak:
Napisati program koji ispisuje tabelu množenja za brojeve od 1 do 3.
Ulaz:
Nema korisničkog unosa.
Izlaz:
1 2 3 2 4 6 3 6 9
Objašnjenje algoritma
Spoljašnja petlja prolazi kroz redove tabele (brojevi 1–3), dok unutrašnja petlja prolazi kroz kolone. Za svaki par brojeva računa se njihov proizvod.
Rešenje
for i in range(1, 4):
for j in range(1, 4):
print(i * j, end=" ")
print()
Objašnjenje rešenja
ipredstavlja redjpredstavlja kolonuend=" "sprečava prelazak u novi redprint()na kraju reda pravi novi red
Vizuelizacija toka (primer)
i = 1 → j = 1, 2, 3 → 1 2 3 i = 2 → j = 1, 2, 3 → 2 4 6 i = 3 → j = 1, 2, 3 → 3 6 9
Primer 2: Ispis koordinata (i, j)
Zadatak:
Ispisati sve parove koordinata (i, j) gde je i od 1 do 3,
a j od 1 do 2.
Ulaz:
Nema korisničkog unosa.
Izlaz:
(1, 1) (1, 2) (2, 1) (2, 2) (3, 1) (3, 2)
Objašnjenje algoritma
Za svaku vrednost promenljive i,
unutrašnja petlja prolazi kroz sve vrednosti j
i ispisuje par.
Rešenje
for i in range(1, 4):
for j in range(1, 3):
print(f"({i}, {j})")
Objašnjenje rešenja
Spoljašnja petlja kontroliše prvu koordinatu, a unutrašnja drugu. Na taj način dobijamo sve moguće parove.
Primer 3: Jednostavan kvadrat od zvezdica
Zadatak:
Napisati program koji ispisuje kvadrat dimenzije 4×4 od znaka *.
Ulaz:
Nema korisničkog unosa.
Izlaz:
**** **** **** ****
Objašnjenje algoritma
Spoljašnja petlja određuje broj redova, dok unutrašnja petlja određuje broj zvezdica u svakom redu.
Rešenje
for i in range(4):
for j in range(4):
print("*", end="")
print()
Objašnjenje rešenja
Unutrašnja petlja ispisuje četiri zvezdice u istom redu,
a prazni print() prelazi u novi red.
Obrasci iteracije – osnovni algoritamski alati
U programiranju se određeni načini korišćenja petlji stalno ponavljaju. Te ponavljajuće tehnike nazivamo obrasci iteracije. Njihovo razumevanje je ključno za rešavanje algoritamskih problema.
1. Brojanje unapred i unazad
Zadatak:
Ispisati brojeve od 1 do 5 unapred, a zatim od 5 do 1 unazad.
Ulaz:
Nema korisničkog unosa.
Izlaz:
1 2 3 4 5 5 4 3 2 1
Objašnjenje algoritma
Kod brojanja unapred koristimo rastući opseg, dok kod brojanja unazad koristimo opseg sa negativnim korakom.
Rešenje
for i in range(1, 6):
print(i, end=" ")
print()
for i in range(5, 0, -1):
print(i, end=" ")
Objašnjenje rešenja
Funkcija range() omogućava kontrolu početka,
kraja i smera kretanja brojeva.
2. Akumulator – sabiranje i brojanje
Zadatak:
Izračunati zbir brojeva od 1 do 5 i prebrojati koliko ih ima.
Izlaz:
Zbir: 15 Broj elemenata: 5
Objašnjenje algoritma
Akumulator je promenljiva koja čuva rezultat koji se postepeno menja tokom prolaska kroz petlju.
Rešenje
zbir = 0
brojac = 0
for i in range(1, 6):
zbir += i
brojac += 1
print("Zbir:", zbir)
print("Broj elemenata:", brojac)
Objašnjenje rešenja
zbirakumulira sumu brojevabrojacbroji koliko puta se petlja izvršila
3. Traženje maksimuma i minimuma
Zadatak:
U listi brojeva pronaći najveću i najmanju vrednost.
Ulaz:
brojevi = [3, 7, 2, 9, 4]
Izlaz:
Maksimum: 9 Minimum: 2
Objašnjenje algoritma
Na početku pretpostavljamo da je prvi element i maksimum i minimum, a zatim ih ažuriramo po potrebi.
Rešenje
brojevi = [3, 7, 2, 9, 4]
maks = brojevi[0]
min = brojevi[0]
for broj in brojevi:
if broj > maks:
maks = broj
if broj < min:
min = broj
print("Maksimum:", maks)
print("Minimum:", min)
Objašnjenje rešenja
Svaki element se poredi sa trenutnim maksimumom i minimumom, čime se problem rešava jednim prolazom kroz listu.
4. Prekid pri pronalasku (break kao algoritamski alat)
Zadatak:
U listi brojeva pronaći prvi broj veći od 10 i prekinuti petlju.
Ulaz:
brojevi = [4, 7, 12, 5, 20]
Izlaz:
Pronađen broj: 12
Objašnjenje algoritma
Čim se pronađe tražena vrednost,
nema potrebe nastavljati petlju.
U tom trenutku koristimo break.
Rešenje
brojevi = [4, 7, 12, 5, 20]
for broj in brojevi:
if broj > 10:
print("Pronađen broj:", broj)
break
Objašnjenje rešenja
Komanda break prekida petlju odmah nakon pronalaska
traženog elementa, što čini algoritam efikasnijim.
Veza petlji sa algoritmima
Kada govorimo o algoritmima, važno je da razumemo koliko puta se određeni deo koda izvršava. Kod obične petlje, neki kod se ponavlja onoliko puta koliko ima elemenata ili koraka. Međutim, kod ugnježdenih petlji, unutrašnji kod se izvršava za svaki prolaz spoljašnje petlje, što znači da se ukupan broj izvršavanja brzo povećava. Zbog toga algoritmi sa ugnježdenim petljama postaju „sporiji“ kako raste količina podataka.
Pogledaj sledeći primer:
for i in range(3):
for j in range(3):
print("Radim")
U ovom slučaju, poruka "Radim" se ispisuje
9 puta, jer se unutrašnja petlja izvršava
tri puta za svaki od tri prolaza spoljašnje petlje.
Kod jedne petlje, izvršavanje raste postepeno,
dok kod ugnježdenih petlji raste znatno brže.
Skriveni mini kviz — Iteracije i osnovni algoritmi
Klikni da proveriš da li razumeš kako rade
ugnježdene petlje, obrasci iteracije i
kako break utiče na tok algoritma.
Otvori kviz
Mini kviz: Razumevanje iteracija
1. Koliko puta će se ispisati poruka?
for i in range(3):
for j in range(2):
print("Python")
2. Koja je uloga spoljašnje petlje u ugnježdenim petljama?
3. Šta predstavlja akumulator u algoritmu?
4. Šta će se ispisati?
for i in range(1, 6):
if i == 3:
break
print(i)
5. Zašto algoritmi sa ugnježdenim petljama mogu biti sporiji?
Preporučeni zadaci za vežbu
Da bi se gradivo o iteracijama i osnovnim algoritmima bolje utvrdilo, preporučuje se dodatno vežbanje kroz zadatke koji razvijaju algoritamsko razmišljanje. U nastavku su predloženi tipovi zadataka i dodatni resursi.
Zadaci za samostalni rad (Python)
- Izračunati zbir brojeva od 1 do n pomoću petlje
- Odrediti najveći i najmanji broj u listi
- Prebrojati koliko ima pozitivnih, negativnih i nula u nizu brojeva
- Izračunati proizvod elemenata liste
- Prebrojati koliko je brojeva parno, a koliko neparno
Ovi zadaci koriste iste iterativne obrasce koji su objašnjeni u ovoj lekciji i ne zahtevaju dodatno gradivo.
Algoritamski zadaci u drugim jezicima (C / C++)
Iako su sledeći primeri napisani u C/C++ jezicima, njihova vrednost je u algoritamskoj logici, koja je potpuno primenljiva i u Python-u. Preporučuje se da učenici:
- pročitaju zadatak
- razumeju algoritam
- pokušaju da ga samostalno prevedu u Python
□ Primeri petlji u C/C++:
Petlje u C/C++ – primeri
□ Primeri ugneždenih petlji (naprednije):
Ugneždene petlje – primeri u C++
Napomena:
Ugneždene petlje su naprednija tema i preporučuju se tek nakon
potpunog razumevanja osnovnih iteracija.
Povratak na Python tutorijal
Ako želiš da sagledaš celokupnu strukturu Python tutorijala i vidiš gde se ova lekcija nalazi u odnosu na ostale teme, poseti početnu stranicu: