1. Algoritmi
Definicija
Elementi algoritma
Predstavljanje algoritama
2. Definicija algoritma
Algoritam predstavlja konaan skup jasno definisanih pravila
za re邸avanje nekog zadatka.
Algoritam je opis za re邸avanje nekog problema
Poznati programerski istra転iva i profesor Niklaus Wirth je dao
ovakvu definiciju:
Programs = Algorithms + Data
Iz prethodnog stava sledi da je algoritam je plan za izradu
programa
3. O nastanku
Algoritam je u matematiku uveo arapski
matematiar Muhamed Al Horezmi.
Napisao je knjigu Al Horezmi o indijskoj
ve邸tini raunanja, gde u arapsku matematiku
uvodi indijske cifre i decimalni brojni sistem.
Ova knjiga je kasnije prevedena na latinski
kao Algoritmi de numero indorum.
Od lo邸eg latinskog prevoda njegovog
prezimena i potie re algoritam,
Re algoritam dugo je oznaavala postupak
za raun sa decimalnim brojnim sistemom (i
indijskim odnosno, kako se kasnije prialo,
arapskim ciframa).
4. Gde sve sreemo algoritme?
Danas se re algoritam esto vezuje za pojam raunarstva
mada uop邸teno algoritam mo転emo smatrati kao uputstvo kako
re邸iti neki zadatak ili problem.
U svakodnevnom 転ivotu smo zapravo stalno u kontaktu sa
algoritmima, a esto i postupamo po algoritmima a da toga
nismo svesni.
Znati "algoritamski" razmi邸ljati dobro je bez obzira da li se
bavimo programiranjem ili ne.
5. Gde sve sreemo algoritme?
Neko je rekao da je raunar idiot velike brzine. To je ustvari
su邸tina prie o algoritmima:
put do re邸enja moramo toliko rascepkati i detaljno
napisati da bi ga mogao razumeti i taj "idiot velike
brzine".
Drugim reima, uputstva moraju biti jednostavna i precizna tako
da ih mo転e izvr邸avati i ma邸ina.
6. Gde sve sreemo algoritme?
Evo najpre jednog jednostavnog algoritma za spremanje aja:
1. Ako u ajniku nema vode napunite ajnik vodom
2. Stavite ajnik na 邸poret i ukljuite odgovarajuu ringlu.
3. Uzmite 邸olju za aj.
4. Stavite kesicu aja u 邸olju za aj.
5. Ako 転elimo dodamo 邸eer, mleko ili limun.
6. Ako kuvamo dve 邸oljice aja vratimo se na korak 3.
7. Ako voda u ajniku nije provrela idite na korak 7, ako jeste idite na korak 8.
8. Iskljuite ringlu.
9. Sipajte vodu iz ajnika u 邸olju (pazite da ne prelijete).
KoraciDa li 6 i 7 sadr転e dono邸enje (i u kom) treba da donese neka
1,5, se u nekom od koraka odluka,
Koraciodluka?
6 i 7 sadr転e ponavljanje:
kod koraka 6 vraamo se unazad i ponavljamo korake 3,4 i 5
Da li se neki koraci ponavljaju i koliko puta?
ukupno dva puta
kod koraka 7 izvr邸ava proces ekanja na vodu sve dok ne provri.
7. Elementi algoritma
Uputstvo mo転e sadr転ati korake
koji se izv邸avaju samo jednom,
one koji se ponavljaju vi邸e puta ili
korake kada treba doneti neku odluku, na osnovu nekog
kriterijuma.
Algoritam se dobija kao sklop sledeih struktura:
1. Sekvenca niz (proces)
2. Odluivanje (selekcija)
3. Ponavljanje (repeticija, iteracija, ciklus, petlja)
8. Elementi algoritma
Sekvenca (niz operacija)
Sekvenca znai da se svaki korak sekvence izvr邸ava u unapred datom
redosledu onako kako se pojavljuju u sekvenci, jedan za drugim.
Odluka (Selekcija)
Selekcija omoguava izbor puta kojim e se nastaviti izvr邸avanje
instrukcija.
Odluka se bazira na uslovu koji mo転e da ima vrednost tano ili netano,
na primer:
AKO danas je sreda ONDA imam laboratorijski dan
9. Elementi algoritma
Tvrdnja (uslov) mo転e biti ILI tana ILI netana, tj. danas JE sreda ili
danas NIJE sreda. (Ne mo転e istovremeno i jedno i drugo, niti ne邸to tree)
Odluka mo転e da ima i ne邸to slo転eniji oblik:
AKO uradio sam vi邸e od 5 pitanja
ONDA dobiu pozitivnu ocenu
U SUPROTNOM dobiu keca.
Ovo znai da ako je tvrdnja tana tada se izvr邸ava proces1 a ako je
netana proces2.
10. Elementi algoritma
Ponavljanje (Iteracija)
Iteracija omoguava ponavljanje odreenih koraka potreban broj puta.
Broj ponavljanja mo転e biti unapred poznat (npr. kuvam 2 aja ili kuvam 10
ajeva...) ili se ne邸to ponavlja dok se ne ispuni zadati uslov (ekam dok
ne provri, uim dok ne shvatim...)
Evo jednog primera
do
Dodaj 邸olju vode u ajnik TELO PETLJE
while ajnik nije pun USLOV na dnu
U predhodnom primeru prvo sipamo, pa proveravamo da li je ajnik pun.
ta ako je ajnik ve bio pun kada je ciklus zapoet?
Doi e do ne転eljenog procesa koji e izazvati prelivanje vode
iz ajnika.
11. Elementi algoritma
Za takve sluajeve pogodnije je koristiti whiledo ciklus:
while ajnik nije pun USLOV na vrhu
Dodaj 邸olju vode u ajnik TELO PETLJE
Po邸to se odluka da li je ajnik pun ili ne donosi pre sipanja vode,
mogunost prelivanja je eliminisana.
12. Metode prikazivanja algoritama
Neke od metoda za prikaz algoritama:
Prirodni jezik (korana forma)
Pseudo kod (Pseudo cod)
Dijagrami toka (Flowcharts)
13. Prirodni jezik
Ovom tehnikom se algoritam prikazuje kao niz brojem oznaenih
koraka opisanih jednom ili sa vi邸e reenica prirodnog jezika.
Primer: Prikazati (na monitoru raunara, na primer) dvostruku vrednost
broja koji je predhodno unet u raunar (pomou tastature)
Algoritam u priprodnom jeziku:
1. Tra転iti od korisnika da uz pomo tastature unese broj.
2. Uitati broj koji korisnik ukuca na tastaturi.
3. Pomno転iti uitani broj sa brojem 2.
4. Prikazati rezultat operacije iz koraka 3 na monitoru raunara.
Prednosti prirodnog jezika:
Jednostavan za uenje, jer se ionako slu転imo prirodnim jezikom.
Nedostaci:
Koraci su predugaki jer se mora koristitu puno rei za njihov opis.
Prevoenje iz prirodnog jezika u kompjuterski jezik mo転e biti te邸ko.
14. Pseudo kod
Tehnika slina prirodnom jeziku ali se umesto prirodnog jezika koristi
neki drugi jezik koji koristi manji broj unapred zadatih rei.
Dovoljno je razumljiv za oveka, a istovremeno pogodan za dalje
transformisanje algoritma u program.
Predhodni primer algoritma prikazan pseudo kodom :
1. display poruka
2. read broj
3. rezultat = broj*2
4. display rezultat
Prednosti:
Jednsotavan za uenje skoro kao i kod prirodnog jezika.
Lak邸i za prevoenje u programski jezik.
Nedostaci:
Mo転e biti malo zbunjujue me邸a se prirodni i simboliki jezik.
15. Dijagrami toka (Flowcharts)
Dijagram toka podataka je grafiki prikaz algoritma.
Prednosti dijagrama toka nad pseudokodom:
Zapisivanje ne zavisi od govornog jezika onoga koji sastavlja
algoritam.
Grafiki prikaz je jednostavan, pregledan, lako se pronalaze gre邸ke.
Problem se mo転e jednostavno analizirati i skratiti vreme pronala転enja
re邸enja.
16. Dijagrami toka (Flowcharts)
Grafiki simboli koji se naje邸e koriste za prikaza algoritama
dijagramom toka su sledei:
Granino mesto
(poetak, kraj,
prekid) Odluka
(uslovno
Ulaz (uno邸enje grananje)
podataka za
obradu)
Potprogram
Izlaz (izdavanje
(ranije opisan
rezultata obrade)
proces)
Sekvenca Spajanje
(operacija ili (mesto spajanja
grupa operacija) dve linije toka)
Linija toka
(vezna linija)
17. Dijagrami toka (Flowcharts)
Prethodni primer prikazan dijagramom toka:
poetak
poruka display
poruka
broj
read broj
broj=broj*2
rezultat =
broj*2
broj
display
kraj rezultat
18. Primeri linijskih algoritama
Uneti poluprenik osnove r i visinu H valjka. Izraunati i 邸tampati
por邸inu i zapreminu valjka.
Napisati algoritam kojim se izraunava i 邸tampa koliko sati, minuta i
sekundi ima u datom broju dana.
Za uenike zaposlene preko omladinske zadruge izraunati bruto i
neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat
odbijanja na osnovu odreenih doprinosa.
Napisati program kojim se prevodi temperatura iz skale Celzijusa u
skalu Farenhajta po formuli: Temeratura po Farenhajtu=(Temperatura
po Celzijusu)*1.80+32
19. Primeri linijskih algoritama
Napisati program kojim se prevodi koliina tenosti iz galona u litre
(1galon = 4.54L)
Napisati program kojim se ameriki dolari pretvaraju u evre ako se
unosi dinarski kurs ovih valuta.
Data su dva ugla ALFA i BETA izra転ena u stepenima, minutama i
sekundama. Nai i prikazati njihov zbir i razliku.
Ako je vrednost nekog artikla u dinarima data promenljivom cena,
odrediti najmanju koliinu novanica od 1000din, 200din, 100din, 10din
i 1din kojim se mo転e platiti dati artikal.
20. Uneti poluprenik osnove r i visinu H valjka. Izraunati i 邸tampati
por邸inu i zapreminu valjka.
21. Napisati algoritam kojim se izraunava i 邸tampa koliko sati, minuta i
sekundi ima u datom broju dana.
22. Za uenike zaposlene preko omladinske zadruge izraunati bruto i neto
dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja
na osnovu odreenih doprinosa.
23. Napisati program kojim se prevodi temperatura iz skale Celzijusa u skalu
Farenhajta po formuli: Temeratura po Farenhajtu=(Temperatura po
Celzijusu)*1.80+32
25. Napisati program kojim se ameriki dolari pretvaraju u evre ako se unosi
dinarski kurs ovih valuta.
26. Ako je vrednost nekog artikla u dinarima data promenljivom cena,
odrediti najmanju koliinu novanica od 1000din, 200din, 100din, 10din i
1din kojim se mo転e platiti dati artikal.
Ako su operandi dva cela
broja:
Operator / daje celobrojni
kolinik dva cela broja
Operator % daje ostatak
pri deljenju dva cela broja
27. Data su dva ugla ALFA i BETA izra転ena u stepenima, minutama i
sekundama. Nai i prikazati njihov zbir i razliku.
Ako su operandi dva cela
broja:
Operator / daje celobrojni
kolinik dva cela broja
Operator % daje ostatak
pri deljenju dva cela broja