1. Algoritmi
Definicija
Elementi algoritma
Predstavljanje algoritama
2. Definicija algoritma
Algoritam predstavlja konačan 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
matematičar Muhamed Al Horezmi.
Napisao je knjigu Al Horezmi o indijskoj
veštini računanja, 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 potiče reč algoritam,
Reč algoritam dugo je označavala postupak
za račun sa decimalnim brojnim sistemom (i
indijskim odnosno, kako se kasnije pričalo,
arapskim ciframa).
4. Gde sve srećemo algoritme?
Danas se reč algoritam često vezuje za pojam računarstva
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 srećemo algoritme?
Neko je rekao da je računar idiot velike brzine. To je ustvari
suština priče o algoritmima:
put do rešenja moramo toliko rascepkati i detaljno
napisati da bi ga mogao razumeti i taj "idiot velike
brzine".
Drugim rečima, uputstva moraju biti jednostavna i precizna tako
da ih može izvršavati i mašina.
6. Gde sve srećemo algoritme?
Evo najpre jednog jednostavnog algoritma za spremanje čaja:
1. Ako u čajniku nema vode napunite čajnik vodom
2. Stavite čajnik na šporet i uključite odgovarajuću ringlu.
3. Uzmite šolju za čaj.
4. Stavite kesicu čaja u šolju za čaj.
5. Ako želimo dodamo šećer, 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. Isključite 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 vraćamo 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 sledećih struktura:
1. Sekvenca – niz (proces)
2. Odlučivanje (selekcija)
3. Ponavljanje (repeticija, iteracija, ciklus, petlja)
8. Elementi algoritma
Sekvenca (niz operacija)
Sekvenca znači da se svaki korak sekvence izvršava u unapred datom
redosledu – onako kako se pojavljuju u sekvenci, jedan za drugim.
Odluka (Selekcija)
Selekcija omogućava izbor puta kojim će se nastaviti izvršavanje
instrukcija.
Odluka se bazira na uslovu koji može da ima vrednost tačno ili netačno,
na primer:
AKO danas je sreda ONDA imam laboratorijski dan
9. Elementi algoritma
Tvrdnja (uslov) može biti ILI tačna ILI netačna, tj. “danas JE sreda ili
danas NIJE sreda”. (Ne može istovremeno i jedno i drugo, niti nešto treće)
Odluka može da ima i nešto složeniji oblik:
AKO uradio sam više od 5 pitanja
ONDA dobiću pozitivnu ocenu
U SUPROTNOM dobiću keca.
Ovo znači da ako je tvrdnja tačna tada se izvršava proces1 a ako je
netačna proces2.
10. Elementi algoritma
Ponavljanje (Iteracija)
Iteracija omogućava ponavljanje određenih 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, učim 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 započet?
Doći će do neželjenog procesa koji će izazvati prelivanje vode
iz čajnika.
11. Elementi algoritma
Za takve slučajeve pogodnije je koristiti while…do 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,
mogućnost prelivanja je eliminisana.
12. Metode prikazivanja algoritama
Neke od metoda za prikaz algoritama:
Prirodni jezik (koračna forma)
Pseudo kod (Pseudo cod)
Dijagrami toka (Flowcharts)
13. Prirodni jezik
Ovom tehnikom se algoritam prikazuje kao niz brojem označenih
koraka opisanih jednom ili sa više rečenica prirodnog jezika.
Primer: Prikazati (na monitoru računara, na primer) dvostruku vrednost
broja koji je predhodno unet u računar (pomoću tastature)
Algoritam u priprodnom jeziku:
1. Tražiti od korisnika da uz pomoć tastature unese broj.
2. Učitati broj koji korisnik ukuca na tastaturi.
3. Pomnožiti učitani broj sa brojem 2.
4. Prikazati rezultat operacije iz koraka 3 na monitoru računara.
Prednosti prirodnog jezika:
Jednostavan za učenje, jer se ionako služimo prirodnim jezikom.
Nedostaci:
Koraci su predugački jer se mora koristitu puno reči za njihov opis.
Prevođenje iz prirodnog jezika u kompjuterski jezik može biti teško.
14. Pseudo kod
Tehnika slična prirodnom jeziku ali se umesto prirodnog jezika koristi
neki drugi jezik koji koristi manji broj unapred zadatih reči.
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 učenje skoro kao i kod prirodnog jezika.
Lakši za prevođenje u programski jezik.
Nedostaci:
Može biti malo zbunjujuće – meša se prirodni i simbolički jezik.
15. Dijagrami toka (Flowcharts)
Dijagram toka podataka je grafički prikaz algoritma.
Prednosti dijagrama toka nad pseudokodom:
Zapisivanje ne zavisi od govornog jezika onoga koji sastavlja
algoritam.
Grafički 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)
Grafički simboli koji se najčešće koriste za prikaza algoritama
dijagramom toka su sledeći:
Granično mesto
(početak, 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:
početak
poruka display
poruka
broj
read broj
broj=broj*2
rezultat =
broj*2
broj
display
kraj rezultat
18. Primeri linijskih algoritama
Uneti poluprečnik osnove r i visinu H valjka. Izračunati i štampati
poršinu i zapreminu valjka.
Napisati algoritam kojim se izračunava i štampa koliko sati, minuta i
sekundi ima u datom broju dana.
Za učenike zaposlene preko omladinske zadruge izračunati bruto i
neto dohodak, ako je poznat broj radnih sati, cena po satu i procenat
odbijanja na osnovu određenih 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 količina tečnosti iz galona u litre
(1galon = 4.54L)
Napisati program kojim se američki 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. Naći i prikazati njihov zbir i razliku.
Ako je vrednost nekog artikla u dinarima data promenljivom cena,
odrediti najmanju količinu novčanica od 1000din, 200din, 100din, 10din
i 1din kojim se može platiti dati artikal.
21. Napisati algoritam kojim se izračunava i štampa koliko sati, minuta i
sekundi ima u datom broju dana.
22. Za učenike zaposlene preko omladinske zadruge izračunati bruto i neto
dohodak, ako je poznat broj radnih sati, cena po satu i procenat odbijanja
na osnovu određenih 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 američki dolari pretvaraju u evre ako se unosi
dinarski kurs ovih valuta.
26. Ako je vrednost nekog artikla u dinarima data promenljivom cena,
odrediti najmanju količinu novčanica od 1000din, 200din, 100din, 10din i
1din kojim se može platiti dati artikal.
Ako su operandi dva cela
broja:
Operator / daje celobrojni
količnik 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. Naći i prikazati njihov zbir i razliku.
Ako su operandi dva cela
broja:
Operator / daje celobrojni
količnik dva cela broja
Operator % daje ostatak
pri deljenju dva cela broja