Iteracija
![](http://178.128.105.246/host-http-upload.wikimedia.org/wikipedia/commons/thumb/4/40/Pentagon_iteration.svg/200px-Pentagon_iteration.svg.png)
Iteracija je čin procesa ponavljanja sa ciljem da se približimo željenom cilju, meti ili rezultatu. Svako ponavljanje postupka se takođe naziva „iteracija“, i rezultati jedne iteracije se koristi kao polazna tačka za sledeću iteraciju. Petougao sa desne strane je takođe dobar primer kako se iteracija odnosi na rekurziju. Iako se koristi iteracija, na primer, da raščlani povezane liste, rekurzija je potrebna kada prelazimo na binarna stabala. Petougao pokazuje oba.[2]
Iteracija u matematici se može odnositi na proces iteracije funkcije, odnosno primenom funkcije u više navrata, koristeći izlaz iz jedne iteracije kao ulaz u drugu. Iteracija naizgled jednostavnih funkcija može da proizvede kompleksna ponašanja i teške probleme - na primer, pogledajte Kolacovu pretpostavku i žonglerove sekvence.
Druga upotreba iteracije u matematici je u iterativnim metodama koje se koriste za proizvodnju približnih numeričkih rešenja za određene matematičke probleme. Njutnov metod je primer iterativnog metoda. Ručno izračunavanje kvadratnog korena nekog broja se često koristi i poznat je primer.
Iteracija u računarstvu je ponavljanje bloka naredbi unutar računarskog programa. Može se koristiti i kao opšti pojam, kao sinonim za ponavljanje, i da opiše specifičan oblik ponavljanja sa promenljivim stanjem. Zbunjujuće je to što se može odnositi na bilo koje ponavljanje koje počinje korišćenjem eksplicitne strukture ponavljanja, bez obzira na promenljivosti.
Kada se koristi u prvom smislu, rekurzija je primer iteracije, ali obično se koristi rekurzivni zapis, koji nije predmet iteracije.
Međutim, kada se koristi u drugom (više ograničenom) smislu, iteracija opisuje stil programiranja koji se koristi u imperativnim programskim jezicima. Ovo je u suprotnosti sa rekurzijom, koja ima više deklarativni pristup.
Korišćena u trećem smislu, ponavljanje koristi while ili for petlje isto kao što one koriste map ili fold funkcije i ovo se može smatrati iteracijom.
Evo jednog primera iteracije koji se oslanja na razoran zadatak, u imperativnom pseudokodu:
a = 0 for i from 1 to 3 // prolazi kroz petlju 3 puta { a = a + i // povećava trenutnu vrednost a za i } print a // štampa broj 6 (0 + 1; 1 + 2; 3 + 3)
U ovom delu programa, vrednost promenljive i se menja kroz vreme uzimajući vrednosti 1,2 i 3. Ova promena vrednosti—ili promenljivo stanje—je karakteristika iteracije.
Iteracija se može približavati pomoću rekurzivne tehnike u funkcionalnim programskim jezicima. Sledeći primer je u Scheme programskom jeziku. Imajte na umu da je ono što sledi rekurzivna iteracija (poseban slučaj iteracije)zbog definicije „kako ponoviti“, i njena funkcija, poziva sama sebe kako bi rešila problem instance. Konkretno koristi rep rekurziju pa tako ne koristi velike količine stek prostora.
(let iterate ((i 1) (a 0))
(if (<= i 3)
(iterate (+ i 1) (+ a i))
(display a)))
Iterator je objekat koji pruža iteraciju kao generički servis, omogućavajući da se iteracija uradi na isti način za niz različitih struktura podataka. Suprotno tome, iteratee je apstrakcija koja prihvata ili odbija podatke tokom procesa iteracije (kontrolisan spolja od strane popisivača - pa za razliku od koda koji koristi iteratore, iteratee kod nije „zadužen“ za proces iteracije).
Iteracija se vrši pomoću radnog lista, ili pomoću solver ili goal seek funkcija koje su dostupne u Ekselu. Mnoge implicitne jednačine kao što je Colebrook jednačina mogu se rešiti u udobnosti radnog lista projektovanjem odgovarajućih algoritama izračunavanja.[3]
Mnogi od inženjerskih problema, kao što su rešavanje Colebrook jednačine dostiže 8 cifarnu preciznost u malih 12 iteracija i maksimalno 100 iteracija je dovoljno da se postigne 15 cifarna preciznost.[4]
![](http://178.128.105.246/host-http-upload.wikimedia.org/wikipedia/commons/thumb/5/50/Agile_Project_Management_by_Planbox.png/220px-Agile_Project_Management_by_Planbox.png)
Iteracije u kontekstu projekta mogu da se odnose na tehniku izrade i dostavljanja postepenih komponenata poslovne funkcionalnosti, razvoj proizvoda ili proces dizajna. Ovo se najčešće povezuje sa žustrim razvojem softvera, ali bi potencijalno mogao biti svaki materijal. Jedna iteracija rezultira u jednoj ili više bitnoj veličini, ali kompletira pakete rada na projektu koji mogu da obavljaju neke opipljive poslovne funkcije. Više iteracija se ponavlja da bi se stvorio potpuno integrisani proizvod. To je često u suprotnosti sa pristupom modela vodopada.
U nekim školama pedagogije, iteracija se koristi za opisivanje procesa nastave ili vođenje učenika kako bi ponovili eksperimente, procene, ili projekte, sve dok se ne dođe do preciznijih rezultata, ili dok učenik nije savladao tehničku veštinu. Ova ideja je došla iz stare izreke, „Vežbom do savršenstva“. Posebno, „iteracija“ se definiše kao „proces učenja i razvoja koji uključuje ciklična pitanja, davajući ljudima višestruke mogućnosti, npr: mogu da ponove ideje i da se kritički osvrnu na njihove implikacije.“[5]
- ↑ B. Green (2012). Programming Problems. San Bernardino: CreateSpace. str. 25. ISBN 978-1475071962.
- ↑ Roberts, Eric (2006). Thinking Recursively with Java. New York: Wiley. str. 171. ISBN 978-0471701460.
- ↑ „Solve Implicit Equations Inside Your Worksheet”. Arhivirano iz originala na datum 17. 08. 2009. Pristupljeno 11. 11. 2015.
- ↑ „Colebrook Equation”. Arhivirano iz originala na datum 2020-10-17. Pristupljeno 2019-01-17.
- ↑ Helen Timperley; Aaron Wilson; Heather Barrar; Irene Fung. „Teacher Professional Learning and Development: Best Evidence Synthesis Iteration [BES”]. OECD. str. 238. Pristupljeno 4. 04. 2013.