Strukture ponavljanja

Uvod u strukture ponavljanja

Uvod u strukture ponavljanja

  • Često potrebno pisati kod koji izvršava isti zadatak više puta
    • Ponovno pisanje istog koda nedostatak
      • Čini program dugačkim
      • Zahtijeva dosta vremena
      • Može zahtijevati izmjene na mnogo mjesta
  • Strukture ponavljanja: kompjuter ponavlja izdvojeni kod po potrebi
    • Uključuje petlje kontrolisane uslovom i petlje kontrolisane brojačem

while petlja

while petlja - eksperiment

import threading

a = 0

# svake sekunde ispisuje vrijednost
# varijable a
def work ():
  threading.Timer(1, work).start()
  print(a)
work ()

while True:
    a += 1
>>> 0
>>> 24590458
>>> 46859024

while petlja

  • while petlja: dok je uslov tačan, izvršavaj
    • Dva dijela: 
      • Provjeravanje uslova: tačan ili netačan
      • Naredbe se ponavljaju sve dok je uslov tačan
  • U dijagramu toka linija se vraća na prethodni dio
while uslov:
  naredba
  naredba

while petlja

while petlja

  • Da bi petlja završila sa izvršavanjem, nešto se mora desiti unutar same petlje što će rezultirati netačnim uslovom
  • Iteracija/ponavljanje: jedno izvršavanje tijela petlje
  • while petlja je poznata kao pre-test petlja
    • Testira uslov prije izvršavanja ponavljanja
      • Neće se nikada izvršiti ukoliko je na samom startu uslov netačan
      • Zahtijeva izvršavanje određenih koraka prije same petlje koji će izvršavati barem jedno izvršavanje tijela petlje

Beskonačne petlje

  • Petlje moraju unutar sebe sadržavati komande koje će prouzrokovati prekid
    • Nešto unutar while petlje mora na kraju prouzrokovati netačan uslov
  • Beskonačna petlja: petlja koja nema način zaustavljanja
    • Ponavlja se do prekida programa
    • Javlja se kada programer zaboravi uključiti kod za zaustavljanje petlje

for petlja

for petlja

  • Petlja kontrolisana brojačem: ponavlja se predodređeni broj puta
    • Naredba for se koristi za pisanje petlje kontrolisane brojačem
    • Dizajnirana za rad sa sekvencom podataka
    • Ponavlja se jednom za svaki element u sekvenci
  • Ciljna varijabla: varijabla koj je meta dodjele na početku svakog ponavljanja
for varijabla in [vri1, vri2, itd]:
  naredba
  naredba

for petlja

Upotreba range funkcije sa for petljom

  • range funkcija pojednostavljuje proces pisanja for petlje
    • range vraća ponavljajući objekat
      • Ponavljajući objekat: sadrži sekvencu vrijednosti preko kojih se može ponavljati
    • Primjer:
      • for broj in range(1, 5):
  • Karakteristike range funkcije:
    • Jedan argument: krajnje ograničenje
    • Dva argumenta: početno i krajnje ograničenje
    • Tri argumenta: treći argument vrijednost koraka

Upotreba ciljne varijable unutar petlje

  • Svrha ciljne varijable je referenciranje svakog elementa u sekvenci prilikom ponavljanja petlje
  • Ciljna varijabla može biti upotrebljena u računanju ili zadacima u tijelu petlje
    • Primjer: računanje kvadratnog korijena za svaki broj u rasponu

Dopuštanje korisniku da kontroliše broj ponavljanja petlje

  • Nekada programer ne zna tačno koliko će se puta petlja izvršiti
  • Moguće dobiti ulazne podatke raspona od korisnika, pohraniti ih u varijable, i pozvati range funkcije u for odredbi koristeći ove varijable
    • range ne uključuje krajnje ograničenje

 

Generisanje ponavljajuće sekvence od većih ka manjim vrijednostima

  • Moguće upotrijebiti funkciju range za generisanje sekvence sa opadajućim redoslijedom
    • Osigurati da je početna vrijednost veća od krajnjeg ograničenja, te da je vrijednost koraka negativna

 

Računanje kumulativnog zbira

Računanje kumulativnog zbira

Računanje kumulativnog zbira

  • Programi često trebaju izračunati sumu serije brojeva
    • Tipično uključuje dva elementa:
      • Petlja koja čita svaki broj u seriji
      • Varijablu koja akumulira vrijednost
    • Na kraju petlje varijabla akumulator će sadržavati ukupni zbir vrijednosti

Računanje kumulativnog zbira

Prošireni operator dodjele

  • Prilikom naredbi dodjele, često se desi da se varijabla koja se nalazi na lijevoj strani operatora = također pojavljuje i na desnoj strani ovog operatora
  • Prošireni operatori dodjele: poseban skup operatora dizajniranih za ovaj zadatak
    • Operatori skraćenice

Indikatori

Indikatori

  • Indikator: specijalna vrijednost koja označava kraj niza elemenata
    • Kada program naiđe na indikator, zna da je došao do kraja sekvence i prekida petlju
    • Mora biti dovoljno karakteristična da se ne bi protumačila kao regularna vrijednost u sekvenci
    • Primjer: prilikom čitanja ulaznog dokumenta, prazan red se može koristiti kao indikator

Umetnute petlje

for hours in range(24):
  for minutes in range(60):
    for seconds in range(60):
      print(hours, ':', minutes, ':', seconds)

Umetnute petlje

Umetnute petlje

Umetnute petlje

Umetnute petlje

Umetnute petlje

  • Ključne osobine umetnutih petlji:
    • Unutrašnja petlja prolazi kroz sva svoja ponavljanja za svako ponavljanje vanjske petlje
    • Unutrašnje petlje završe svoja ponavljanja brže od vanjskih petlji

Umetnute petlje

  • Umetnute petlja: petlja koja se nalazi u drugoj petlji
    • Primjer: analogni sat radi poput uvučene petlje
      • Kazaljka sati se pomjera jednom za svaki od 12 krugova kazaljke minuta: za svaki naredni „sat“, izvrši se 60 ponavljanja „minute“
      • Kazaljka sekundi se pomjera jednom za svaki od 60 krugova kazaljke sekundi: za svaku narednu „minutu“, izvrši se 60 ponavljanja „sekundi“