210 likes | 527 Views
Osnovi računarstva II. Cikli čni algoritmi Rad sa nizovima. Ciklus. Ciklus ili petlja je dio algoritma koji se ponavlja više puta. Postoje: ciklusi koji se ponavljaju tačno određen broj puta; ciklusi koji se ponavljaju dok je zadovoljen logički uslov.
E N D
Osnovi računarstva II Ciklični algoritmi Rad sa nizovima
Ciklus • Ciklus ili petlja je dio algoritma koji se ponavlja više puta. Postoje: • ciklusi koji se ponavljaju tačno određen broj puta; • ciklusi koji se ponavljaju dok je zadovoljen logički uslov. • Pošto je drugi tip nešto opštiji samo će on biti izučavan. NE WHILE USLOV DA NAREDBE
Ciklus - Primjer • Izvršiti sumiranje brojeva od 1 do N. NE WHILE I N START DA S=S+I N, S, I I=I+1 N Inicijalizacija - Mi neznamo koji su podaci stajali na memorijskoj lokaciji koja je dodjeljena promjenljivoj S i moramo postaviti S na 0 da bi sumiranje vršili od 0 S=0 S I=1 END
Ciklus - Primjer • Prethodni primjer je bio primjer ciklusa koji se izvršava tačno određen broj puta. Sljedeći primjer je ciklus koji se izvršava dok je zadovoljen uslov. • Izvršiti sumiranje brojeva koje korisnik zadaje sve do unosa negativnog broja. Negativan broj ne sabirati.
Selekcije i ciklusi- Napomene • Unutar jednog ciklusa (selekcije) može se nalaziti drugi ciklus (selekcija). • Unutrašnja selekcija se mora zatvoriti istovremeno ili prije spoljašnje. Ne smije nikada da se zatvara kasnije (ciklusi, odnosno selekcije, se ne mogu sjeći). • Može se matematički dokazati da se svaki algoritamski rješiv problem može riješiti korišćenjem samo sekvenci, selekcija i ciklusa. • Naravno, unutar svakog od djelova mogu opet postojati ugnježdeni drugi elementi. dokazali Bohm i Jacopini 1966-te godine
Primjer 1 • Štampati veći od dva unesena broja. START A, B A,B NE DA A>B A B END
Primjer 2 • Kreirati algoritam za izračunavanje faktorijela prirodnog broja N, koji predstavlja ulazni podatak algoritma. Prvi prolaz:FAKT = 1*1, I = 2 Drugi prolaz:FAKT = 1*2, I = 3 Treći prolaz:FAKT = 1*2*3, I = 4 ... N-ti prolaz: FAKT = 1*2*...*N, I = N+1
Primjer 3 • Kreirati algoritam koji računa stepen broja: Y=XN. Uočiti da je XN=X*XN-1. Prvi prolaz:Y = X, I = 2 Drugi prolaz:Y = X*X, I = 3 Treći prolaz:Y = X2*X, I = 4 ... N-ti prolaz: Y = XN-1*X, I = N+1
Primjer 4 • Unosise prirodan broj N. Odrediti sumu njegovih cifara. Unosi se N=349 Prvi prolaz:SUMCIF = 9, N = 34 Drugi prolaz:SUMCIF = 9+4, N = 3 Treći prolaz:SUMCIF = 9+4+3, N = 0 FLOOR odbacuje decimalni ostatak
Primjer 5 • Unosise prirodan broj N. Odrediti sumu njegovih parnih cifara. Unosi se N=249 Prvi prolaz:SUMCIF = 0, N = 34 Drugi prolaz:SUMCIF = 4, N = 3 Treći prolaz:SUMCIF = 4+2, N = 0
Nizovi • Niz je složen tip podatka. • Niz je kolekcije elementarnih podataka iste vrste (npr. cijelih brojeva). • Niz se deklariše na sljedeći način: X[50] • Broj 50 u deklaraciji (naravno, može bilo koji pozitivan broj!!!) predstavlja najveći očekivani broj podataka, bez obzira na to koliko se podataka stvarno koristi u nizu. • Obično ćemo raditi sa dodatnim podatkom koji predstavlja pravu dužinu niza. Taj podatak se učitava u algoritmu.
Indeksiranje nizova • Elementi niza su X[1], X[2], ..., X[50]. Brojevi 1, 2, ..., 50 predstavljaju redni broj elementa niza ili indeks niza. • Sa pojedinačnim elementima možemo raditi isto kao sa prostim podacima: X[1] = X[2]-3, X[5] = 2*X[5]. • Postavlja se pitanje na koji način efikasno raditi sa elementima niza (učitavanje, modifikacija, štampanje) kad se dužina može menjati pri svakom izvršenju programa. • Odgovor – Pomoću ciklusa! • Uvešćemo pomoćnu promenljivu, obično I, i elementima niza ćemo pristupati sa X[I], pri čemu se I menja od 1 do N, gde je N prava dužina niza.
Rad sa elementima niza Štampanje elemenata niza Unos elemenata niza
Nizovi - Primjer 1 • Nacrtati algoritam kojim se unosi niz od N elemenata i štampa suma njegovih elemenata.
Suma niza – drugo rješenje • Odmah nakon učitavanja, možemo sabirati elemente niza.
Nizovi - Primjer 2 • Nacrtati algoritam kojim se unosi niz od N elemenata i određuje i štampa maksimalni element niza.
Nizovi - Primjer 3 • Nacrtati algoritam kojim se unosi niz od N elemenata i formira i štampa niz X čiji su elementi dati sljedećom relacijom. Na primjer, za N=5, niz je X = 5, 2, 9, 4, 13
Zadaci za vježbu • Nacrtati algoritam koji učitava dva broja i štampa njihov proizvod ako je prvi veći od drugoga, odnosno zbir ako nije. • Nacrtati algoritam koji učitava prirodan broj N i koji vrši sabiranje prvih parnih brojeva manjih od N. Na primjer, ako je N=7, treba sabrati brojeve 2, 4 i 6. • Nacrtatialgoritam koji učitava niz A, dužine N, i koji određuje sumu svih neparnih elemenata niza A. • Nacrtatialgoritam koji učitava niz A, dužine N, i koji određuje koliko elemenata niza A je veće od prvog elemenata tog niza.