Osnovi računarstva II

Download Report

Transcript Osnovi računarstva II

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.
WHILE I  N
START
DA
S=S+I
N, S, I
I=I+1
N
S=0
I=1
Inicijalizacija - Mi ne znamo 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
END
NE
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
A>B
DA
A
B
END
Primjer 2
• Kreirati algoritam za izračunavanje faktorijela prirodnog
broja N, koji predstavlja ulazni podatak algoritma.
Prvi prolaz:
Drugi prolaz:
Treći prolaz:
...
N-ti prolaz:
FAKT = 1*1,
FAKT = 1*2,
FAKT = 1*2*3,
I=2
I=3
I=4
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:
Drugi prolaz:
Treći prolaz:
...
N-ti prolaz:
Y = X,
Y = X*X,
Y = X2*X,
I=2
I=3
I=4
Y = XN-1*X,
I = N+1
Primjer 4
• Unosi se 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
• Unosi se 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
Unos elemenata niza
Štampanje 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.
za parno I
I,
X[I]= 
2I+3, za neparno I.
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.
• Nacrtati algoritam koji učitava niz A, dužine N, i koji određuje
sumu svih neparnih elemenata niza A.
• Nacrtati algoritam koji učitava niz A, dužine N, i koji određuje
koliko elemenata niza A je veće od prvog elemenata tog niza.