seminar ski rad algoritmi

22
OTVORENI UNIVERZITET “APEIRON” U TRAVNIKU TRAVNIK FAKULTET POSLOVNE INFORMATIKE ALGORITMI SEMINARSKI RAD

Upload: asmir76

Post on 07-Apr-2015

1.264 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Seminar Ski Rad Algoritmi

OTVORENI UNIVERZITETldquoAPEIRONrdquo U TRAVNIKU

TRAVNIK

FAKULTET POSLOVNE INFORMATIKE

ALGORITMI

SEMINARSKI RAD

TRAVNIK februar 2010

Principi Programiranja Profdr

OTVORENI UNIVERZITET ldquoAPEIRONrdquo U TRAVNIKU

TRAVNIK

FAKULTET POSLOVNE INFORMATIKE

ALGORITMI

SEMINARSKI RAD

Premet Principi ProgramiranjaProfesor Mentor Student Broj Indeksa Smijer Poslovna Informatika

TRAVNIK februar 2010

Seminarski rad Dedić Asmir___ 1

Principi Programiranja Profdr

S A D R Ž A J

U V O D3

1 ŠTA JE ALGORITAM 4

2 PREDSTAVLJANJE ALGORITAMA511 Dijagram toka 5 12 Pseudokod7

3 ALGORITAMSKE STRUKTURE931 Linijska struktura (sekvencija)932 Razgranata struktura (selekcija)1033 Ciklična struktura (iteracija)11

4 EFIKASNOST I TAČNOST14

5 ZAKLJUČAK15

6 L I T E R A T U R A16

Seminarski rad Dedić Asmir___ 2

Principi Programiranja Profdr

U V O D

Al-Khowarizmi (780-850) je uzbekistanski matematičar Al-Kvarizmi je rodjen u mestu Khwarizm (danas Khiva) u Uzbekistanu Puno ime mu je Abu Jafar Mohammed Ibn Musa al Khowarizmi Radio je u Bagdadu i prvi je uveo arapske brojeve u matematiku Spada u red najzaslužnijih matematičara geografa i astronoma arapskog svijeta Njegova knjiga Kitab al jabr wal-muqubala je postala algebra Isto tako pravila rješavanja iz početka prvenstveno matematički problema su iskrivljavanjem imena al Khowarizmi nazivana algoritmiAl-Kvarizmijev rad Računanje sa kompleksnim brojevima i ostacima predstavlja zapravo uvod u korišćenje aritmetike što je kasnije nazvano algebrom Otuda se Al-Kvarizmi smatra ocem algebre i od njegovog imena izveden je naziv algorismi (algoritmi) Prema korijenu riječi bilo bi pravilno umjesto algoritmi koristiti algorizmi Ali kako jezik nije znanost nego skup dogovora izgleda da je dogovoreno da najčešće greške postaju jezična pravilaTako mi danas imamo algoritme a oni su niz preciznih uputa koje nas korak po korak vode do rješenja nekog problemaOn je prikazao rešenja nekih aritmetičkih problema u obliku uputstava koja su se sastojala od tačno odredjenih osnovnih koraka koja su kasnije nazvana algoritmima Razvojem računara algoritmi su postali samostalno i važno područje računarskih nauka

Seminarski rad Dedić Asmir___ 3

Principi Programiranja Profdr

1 ŠTA JE ALGORITAM

Algoritam je u opštem slučaju konačni redoslijed operatora elementarnih obrada i pravila o njihovoj primeni u cilju dobijanja rješenja nekog problema Izvodjenje svakog operatora predstavlja jedan algoritamski korak Sa računarskog stanovišta ova definicija nije dovoljna pa se mora dopuniti sa sa još nekim uslovima koje algoritam mora da zadovolji

To suo DEFINISANOSTo KONAČNOST o REZULTAT

Definisanost Svaka operacija ili pravilo mora imati definisano i samo jedno značenje tj rezultat svake operacije mora biti jasno definisan

Konačnost Svaki korak mora biti takav da bi ga bar u prinicipu mogao izvesti čovjek koristeći olovku i papir za konačno vrijeme Postoje jednostavni i jednoznačni postupci koji nisu algoritmi jer su beskonačni sa stanovišta broja koraka potrebnog za dobijanje rezultata Algoritmi se moraju zaustaviti posle izvršenog konačnog broja koraka i u konačnom vremenu U vezi sa primjenom računara treba napomenuti da vrijeme rada računara potrebno za završetak algoritma treba biti razumno kratko

Rezultat Po završetku algoritma mora da postoji mogućnost da se ustanovi rezultat njegovog rada odnosno da li je algoritam postigao svoj cilj ili nije

Pojam algoritma ne mora biti vezan za primjenu računara Algoritmi se koriste u svakodnevnom životu za izvršavanje različitih aktivnosti kao npr Kuharski recepti

Algoritam je dakle konačna i precizno definisana procedura niz dobro definisanih pravila kojom se ulazne vrednosti transformišu u izlazne ili se opisuje izvršavanje nekog postupka

Danas se reč algoritam najvise vezuje za pojam računarstva mada uopšteno algoritam možemo smatrati kao uputstvo kako rešiti neki zadatak ili problem Tako se i uputstvo za slanje čoveka na mjesec i uputstvo za pravljenje ruske salate sastoji od niza koraka postupaka koje treba uraditi i koji vode ispunjenju cilja ili rešavanju problema Uputstvo može sadržati korake koji se ponavljaju više puta ili korake kada treba doneti neku odluku na osnovu nekog kriterijuma

Algoritam zapisan formalnim jezikom koji računar raquorazumijelaquo naziva se PROGRAM a jezik zapisivanja programa naziva se PROGRAMSKI JEZIK

Seminarski rad Dedić Asmir___ 4

Principi Programiranja Profdr

2 PREDSTAVLJANJE ALGORITAMA

Kad je algoritam smišljen potrebno ga je i zapisati To se može učiniti na više načina Najčešći načini zapisivanja su

DIJAGRAM TOKA i PSEUDOKOD

21 DIJAGRAM TOKA

Jedan od načina prezentiranja algoritma je dijagram toka To je zapravo grafički jezik jer za prikaz koristi grafičke simbole Takav način zapisivanja ima nekoliko prednosti pred pseudokodom Zapisivanje se vrši međunarodno dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam Grafički prikaz je jednostavan pregledan lako se pronalaze greškeU ovom dijagramu pojedine akcije predstavljene su tačno odredjenim grafičkim simbolima čime se osigurava jednostavnost preglednost i jednoznačnost zapisa algoritma

Međunarodno korišteni simboli su

Seminarski rad Dedić Asmir___ 5

Principi Programiranja Profdr

PRIMJER DIJAGRAMA TOKA

Primjer najjednostavnijeg algoritma koji odlučuje o tome hoćete li obući majicu kratkih ili dugih rukavapretstavljen dijagramom toka

Slika 1 Algoritam oblačenja majice sa dugim ili kratkim rukavima

Vizuelizacija programskog toka i toka podataka su izuzetno korisni za razvoj i razradu algoritma Objektno orijentisano programiranje je uvelo nove pojmove i forme i u analizu i u projektovanje a više vrsta dijagrama se koristi u procesu koji se naziva unifikovano modelovanje za koje je razvijen i standardizovan UML (Objedinjeni jezik za modelovanje)

Prednosti dijagrama toka su

- Komunikacija Dijagram toka olakšava komunikaciju svih koji su zainteresirani za rješavanje problema- Efektivna analiza Uz pomoc dijagrama toka se može efektivnije analizirati problem- Odgovarajuca dokumentacija Dijagram toka je dio obavezne programske dokumentacije koja može služiti u različite svrhe- Efikasno kodiranje Korektan dijagram toka olakšava pisanje programa (bez obzira u kojem programskom jeziku)- Otklanjanje grešaka Dijagram toka olakšava pronalaženje grešaka- Efikasno održavanje programa Olakšava održavanje programa

Seminarski rad Dedić Asmir___ 6

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 2: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

OTVORENI UNIVERZITET ldquoAPEIRONrdquo U TRAVNIKU

TRAVNIK

FAKULTET POSLOVNE INFORMATIKE

ALGORITMI

SEMINARSKI RAD

Premet Principi ProgramiranjaProfesor Mentor Student Broj Indeksa Smijer Poslovna Informatika

TRAVNIK februar 2010

Seminarski rad Dedić Asmir___ 1

Principi Programiranja Profdr

S A D R Ž A J

U V O D3

1 ŠTA JE ALGORITAM 4

2 PREDSTAVLJANJE ALGORITAMA511 Dijagram toka 5 12 Pseudokod7

3 ALGORITAMSKE STRUKTURE931 Linijska struktura (sekvencija)932 Razgranata struktura (selekcija)1033 Ciklična struktura (iteracija)11

4 EFIKASNOST I TAČNOST14

5 ZAKLJUČAK15

6 L I T E R A T U R A16

Seminarski rad Dedić Asmir___ 2

Principi Programiranja Profdr

U V O D

Al-Khowarizmi (780-850) je uzbekistanski matematičar Al-Kvarizmi je rodjen u mestu Khwarizm (danas Khiva) u Uzbekistanu Puno ime mu je Abu Jafar Mohammed Ibn Musa al Khowarizmi Radio je u Bagdadu i prvi je uveo arapske brojeve u matematiku Spada u red najzaslužnijih matematičara geografa i astronoma arapskog svijeta Njegova knjiga Kitab al jabr wal-muqubala je postala algebra Isto tako pravila rješavanja iz početka prvenstveno matematički problema su iskrivljavanjem imena al Khowarizmi nazivana algoritmiAl-Kvarizmijev rad Računanje sa kompleksnim brojevima i ostacima predstavlja zapravo uvod u korišćenje aritmetike što je kasnije nazvano algebrom Otuda se Al-Kvarizmi smatra ocem algebre i od njegovog imena izveden je naziv algorismi (algoritmi) Prema korijenu riječi bilo bi pravilno umjesto algoritmi koristiti algorizmi Ali kako jezik nije znanost nego skup dogovora izgleda da je dogovoreno da najčešće greške postaju jezična pravilaTako mi danas imamo algoritme a oni su niz preciznih uputa koje nas korak po korak vode do rješenja nekog problemaOn je prikazao rešenja nekih aritmetičkih problema u obliku uputstava koja su se sastojala od tačno odredjenih osnovnih koraka koja su kasnije nazvana algoritmima Razvojem računara algoritmi su postali samostalno i važno područje računarskih nauka

Seminarski rad Dedić Asmir___ 3

Principi Programiranja Profdr

1 ŠTA JE ALGORITAM

Algoritam je u opštem slučaju konačni redoslijed operatora elementarnih obrada i pravila o njihovoj primeni u cilju dobijanja rješenja nekog problema Izvodjenje svakog operatora predstavlja jedan algoritamski korak Sa računarskog stanovišta ova definicija nije dovoljna pa se mora dopuniti sa sa još nekim uslovima koje algoritam mora da zadovolji

To suo DEFINISANOSTo KONAČNOST o REZULTAT

Definisanost Svaka operacija ili pravilo mora imati definisano i samo jedno značenje tj rezultat svake operacije mora biti jasno definisan

Konačnost Svaki korak mora biti takav da bi ga bar u prinicipu mogao izvesti čovjek koristeći olovku i papir za konačno vrijeme Postoje jednostavni i jednoznačni postupci koji nisu algoritmi jer su beskonačni sa stanovišta broja koraka potrebnog za dobijanje rezultata Algoritmi se moraju zaustaviti posle izvršenog konačnog broja koraka i u konačnom vremenu U vezi sa primjenom računara treba napomenuti da vrijeme rada računara potrebno za završetak algoritma treba biti razumno kratko

Rezultat Po završetku algoritma mora da postoji mogućnost da se ustanovi rezultat njegovog rada odnosno da li je algoritam postigao svoj cilj ili nije

Pojam algoritma ne mora biti vezan za primjenu računara Algoritmi se koriste u svakodnevnom životu za izvršavanje različitih aktivnosti kao npr Kuharski recepti

Algoritam je dakle konačna i precizno definisana procedura niz dobro definisanih pravila kojom se ulazne vrednosti transformišu u izlazne ili se opisuje izvršavanje nekog postupka

Danas se reč algoritam najvise vezuje za pojam računarstva mada uopšteno algoritam možemo smatrati kao uputstvo kako rešiti neki zadatak ili problem Tako se i uputstvo za slanje čoveka na mjesec i uputstvo za pravljenje ruske salate sastoji od niza koraka postupaka koje treba uraditi i koji vode ispunjenju cilja ili rešavanju problema Uputstvo može sadržati korake koji se ponavljaju više puta ili korake kada treba doneti neku odluku na osnovu nekog kriterijuma

Algoritam zapisan formalnim jezikom koji računar raquorazumijelaquo naziva se PROGRAM a jezik zapisivanja programa naziva se PROGRAMSKI JEZIK

Seminarski rad Dedić Asmir___ 4

Principi Programiranja Profdr

2 PREDSTAVLJANJE ALGORITAMA

Kad je algoritam smišljen potrebno ga je i zapisati To se može učiniti na više načina Najčešći načini zapisivanja su

DIJAGRAM TOKA i PSEUDOKOD

21 DIJAGRAM TOKA

Jedan od načina prezentiranja algoritma je dijagram toka To je zapravo grafički jezik jer za prikaz koristi grafičke simbole Takav način zapisivanja ima nekoliko prednosti pred pseudokodom Zapisivanje se vrši međunarodno dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam Grafički prikaz je jednostavan pregledan lako se pronalaze greškeU ovom dijagramu pojedine akcije predstavljene su tačno odredjenim grafičkim simbolima čime se osigurava jednostavnost preglednost i jednoznačnost zapisa algoritma

Međunarodno korišteni simboli su

Seminarski rad Dedić Asmir___ 5

Principi Programiranja Profdr

PRIMJER DIJAGRAMA TOKA

Primjer najjednostavnijeg algoritma koji odlučuje o tome hoćete li obući majicu kratkih ili dugih rukavapretstavljen dijagramom toka

Slika 1 Algoritam oblačenja majice sa dugim ili kratkim rukavima

Vizuelizacija programskog toka i toka podataka su izuzetno korisni za razvoj i razradu algoritma Objektno orijentisano programiranje je uvelo nove pojmove i forme i u analizu i u projektovanje a više vrsta dijagrama se koristi u procesu koji se naziva unifikovano modelovanje za koje je razvijen i standardizovan UML (Objedinjeni jezik za modelovanje)

Prednosti dijagrama toka su

- Komunikacija Dijagram toka olakšava komunikaciju svih koji su zainteresirani za rješavanje problema- Efektivna analiza Uz pomoc dijagrama toka se može efektivnije analizirati problem- Odgovarajuca dokumentacija Dijagram toka je dio obavezne programske dokumentacije koja može služiti u različite svrhe- Efikasno kodiranje Korektan dijagram toka olakšava pisanje programa (bez obzira u kojem programskom jeziku)- Otklanjanje grešaka Dijagram toka olakšava pronalaženje grešaka- Efikasno održavanje programa Olakšava održavanje programa

Seminarski rad Dedić Asmir___ 6

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 3: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

S A D R Ž A J

U V O D3

1 ŠTA JE ALGORITAM 4

2 PREDSTAVLJANJE ALGORITAMA511 Dijagram toka 5 12 Pseudokod7

3 ALGORITAMSKE STRUKTURE931 Linijska struktura (sekvencija)932 Razgranata struktura (selekcija)1033 Ciklična struktura (iteracija)11

4 EFIKASNOST I TAČNOST14

5 ZAKLJUČAK15

6 L I T E R A T U R A16

Seminarski rad Dedić Asmir___ 2

Principi Programiranja Profdr

U V O D

Al-Khowarizmi (780-850) je uzbekistanski matematičar Al-Kvarizmi je rodjen u mestu Khwarizm (danas Khiva) u Uzbekistanu Puno ime mu je Abu Jafar Mohammed Ibn Musa al Khowarizmi Radio je u Bagdadu i prvi je uveo arapske brojeve u matematiku Spada u red najzaslužnijih matematičara geografa i astronoma arapskog svijeta Njegova knjiga Kitab al jabr wal-muqubala je postala algebra Isto tako pravila rješavanja iz početka prvenstveno matematički problema su iskrivljavanjem imena al Khowarizmi nazivana algoritmiAl-Kvarizmijev rad Računanje sa kompleksnim brojevima i ostacima predstavlja zapravo uvod u korišćenje aritmetike što je kasnije nazvano algebrom Otuda se Al-Kvarizmi smatra ocem algebre i od njegovog imena izveden je naziv algorismi (algoritmi) Prema korijenu riječi bilo bi pravilno umjesto algoritmi koristiti algorizmi Ali kako jezik nije znanost nego skup dogovora izgleda da je dogovoreno da najčešće greške postaju jezična pravilaTako mi danas imamo algoritme a oni su niz preciznih uputa koje nas korak po korak vode do rješenja nekog problemaOn je prikazao rešenja nekih aritmetičkih problema u obliku uputstava koja su se sastojala od tačno odredjenih osnovnih koraka koja su kasnije nazvana algoritmima Razvojem računara algoritmi su postali samostalno i važno područje računarskih nauka

Seminarski rad Dedić Asmir___ 3

Principi Programiranja Profdr

1 ŠTA JE ALGORITAM

Algoritam je u opštem slučaju konačni redoslijed operatora elementarnih obrada i pravila o njihovoj primeni u cilju dobijanja rješenja nekog problema Izvodjenje svakog operatora predstavlja jedan algoritamski korak Sa računarskog stanovišta ova definicija nije dovoljna pa se mora dopuniti sa sa još nekim uslovima koje algoritam mora da zadovolji

To suo DEFINISANOSTo KONAČNOST o REZULTAT

Definisanost Svaka operacija ili pravilo mora imati definisano i samo jedno značenje tj rezultat svake operacije mora biti jasno definisan

Konačnost Svaki korak mora biti takav da bi ga bar u prinicipu mogao izvesti čovjek koristeći olovku i papir za konačno vrijeme Postoje jednostavni i jednoznačni postupci koji nisu algoritmi jer su beskonačni sa stanovišta broja koraka potrebnog za dobijanje rezultata Algoritmi se moraju zaustaviti posle izvršenog konačnog broja koraka i u konačnom vremenu U vezi sa primjenom računara treba napomenuti da vrijeme rada računara potrebno za završetak algoritma treba biti razumno kratko

Rezultat Po završetku algoritma mora da postoji mogućnost da se ustanovi rezultat njegovog rada odnosno da li je algoritam postigao svoj cilj ili nije

Pojam algoritma ne mora biti vezan za primjenu računara Algoritmi se koriste u svakodnevnom životu za izvršavanje različitih aktivnosti kao npr Kuharski recepti

Algoritam je dakle konačna i precizno definisana procedura niz dobro definisanih pravila kojom se ulazne vrednosti transformišu u izlazne ili se opisuje izvršavanje nekog postupka

Danas se reč algoritam najvise vezuje za pojam računarstva mada uopšteno algoritam možemo smatrati kao uputstvo kako rešiti neki zadatak ili problem Tako se i uputstvo za slanje čoveka na mjesec i uputstvo za pravljenje ruske salate sastoji od niza koraka postupaka koje treba uraditi i koji vode ispunjenju cilja ili rešavanju problema Uputstvo može sadržati korake koji se ponavljaju više puta ili korake kada treba doneti neku odluku na osnovu nekog kriterijuma

Algoritam zapisan formalnim jezikom koji računar raquorazumijelaquo naziva se PROGRAM a jezik zapisivanja programa naziva se PROGRAMSKI JEZIK

Seminarski rad Dedić Asmir___ 4

Principi Programiranja Profdr

2 PREDSTAVLJANJE ALGORITAMA

Kad je algoritam smišljen potrebno ga je i zapisati To se može učiniti na više načina Najčešći načini zapisivanja su

DIJAGRAM TOKA i PSEUDOKOD

21 DIJAGRAM TOKA

Jedan od načina prezentiranja algoritma je dijagram toka To je zapravo grafički jezik jer za prikaz koristi grafičke simbole Takav način zapisivanja ima nekoliko prednosti pred pseudokodom Zapisivanje se vrši međunarodno dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam Grafički prikaz je jednostavan pregledan lako se pronalaze greškeU ovom dijagramu pojedine akcije predstavljene su tačno odredjenim grafičkim simbolima čime se osigurava jednostavnost preglednost i jednoznačnost zapisa algoritma

Međunarodno korišteni simboli su

Seminarski rad Dedić Asmir___ 5

Principi Programiranja Profdr

PRIMJER DIJAGRAMA TOKA

Primjer najjednostavnijeg algoritma koji odlučuje o tome hoćete li obući majicu kratkih ili dugih rukavapretstavljen dijagramom toka

Slika 1 Algoritam oblačenja majice sa dugim ili kratkim rukavima

Vizuelizacija programskog toka i toka podataka su izuzetno korisni za razvoj i razradu algoritma Objektno orijentisano programiranje je uvelo nove pojmove i forme i u analizu i u projektovanje a više vrsta dijagrama se koristi u procesu koji se naziva unifikovano modelovanje za koje je razvijen i standardizovan UML (Objedinjeni jezik za modelovanje)

Prednosti dijagrama toka su

- Komunikacija Dijagram toka olakšava komunikaciju svih koji su zainteresirani za rješavanje problema- Efektivna analiza Uz pomoc dijagrama toka se može efektivnije analizirati problem- Odgovarajuca dokumentacija Dijagram toka je dio obavezne programske dokumentacije koja može služiti u različite svrhe- Efikasno kodiranje Korektan dijagram toka olakšava pisanje programa (bez obzira u kojem programskom jeziku)- Otklanjanje grešaka Dijagram toka olakšava pronalaženje grešaka- Efikasno održavanje programa Olakšava održavanje programa

Seminarski rad Dedić Asmir___ 6

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 4: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

U V O D

Al-Khowarizmi (780-850) je uzbekistanski matematičar Al-Kvarizmi je rodjen u mestu Khwarizm (danas Khiva) u Uzbekistanu Puno ime mu je Abu Jafar Mohammed Ibn Musa al Khowarizmi Radio je u Bagdadu i prvi je uveo arapske brojeve u matematiku Spada u red najzaslužnijih matematičara geografa i astronoma arapskog svijeta Njegova knjiga Kitab al jabr wal-muqubala je postala algebra Isto tako pravila rješavanja iz početka prvenstveno matematički problema su iskrivljavanjem imena al Khowarizmi nazivana algoritmiAl-Kvarizmijev rad Računanje sa kompleksnim brojevima i ostacima predstavlja zapravo uvod u korišćenje aritmetike što je kasnije nazvano algebrom Otuda se Al-Kvarizmi smatra ocem algebre i od njegovog imena izveden je naziv algorismi (algoritmi) Prema korijenu riječi bilo bi pravilno umjesto algoritmi koristiti algorizmi Ali kako jezik nije znanost nego skup dogovora izgleda da je dogovoreno da najčešće greške postaju jezična pravilaTako mi danas imamo algoritme a oni su niz preciznih uputa koje nas korak po korak vode do rješenja nekog problemaOn je prikazao rešenja nekih aritmetičkih problema u obliku uputstava koja su se sastojala od tačno odredjenih osnovnih koraka koja su kasnije nazvana algoritmima Razvojem računara algoritmi su postali samostalno i važno područje računarskih nauka

Seminarski rad Dedić Asmir___ 3

Principi Programiranja Profdr

1 ŠTA JE ALGORITAM

Algoritam je u opštem slučaju konačni redoslijed operatora elementarnih obrada i pravila o njihovoj primeni u cilju dobijanja rješenja nekog problema Izvodjenje svakog operatora predstavlja jedan algoritamski korak Sa računarskog stanovišta ova definicija nije dovoljna pa se mora dopuniti sa sa još nekim uslovima koje algoritam mora da zadovolji

To suo DEFINISANOSTo KONAČNOST o REZULTAT

Definisanost Svaka operacija ili pravilo mora imati definisano i samo jedno značenje tj rezultat svake operacije mora biti jasno definisan

Konačnost Svaki korak mora biti takav da bi ga bar u prinicipu mogao izvesti čovjek koristeći olovku i papir za konačno vrijeme Postoje jednostavni i jednoznačni postupci koji nisu algoritmi jer su beskonačni sa stanovišta broja koraka potrebnog za dobijanje rezultata Algoritmi se moraju zaustaviti posle izvršenog konačnog broja koraka i u konačnom vremenu U vezi sa primjenom računara treba napomenuti da vrijeme rada računara potrebno za završetak algoritma treba biti razumno kratko

Rezultat Po završetku algoritma mora da postoji mogućnost da se ustanovi rezultat njegovog rada odnosno da li je algoritam postigao svoj cilj ili nije

Pojam algoritma ne mora biti vezan za primjenu računara Algoritmi se koriste u svakodnevnom životu za izvršavanje različitih aktivnosti kao npr Kuharski recepti

Algoritam je dakle konačna i precizno definisana procedura niz dobro definisanih pravila kojom se ulazne vrednosti transformišu u izlazne ili se opisuje izvršavanje nekog postupka

Danas se reč algoritam najvise vezuje za pojam računarstva mada uopšteno algoritam možemo smatrati kao uputstvo kako rešiti neki zadatak ili problem Tako se i uputstvo za slanje čoveka na mjesec i uputstvo za pravljenje ruske salate sastoji od niza koraka postupaka koje treba uraditi i koji vode ispunjenju cilja ili rešavanju problema Uputstvo može sadržati korake koji se ponavljaju više puta ili korake kada treba doneti neku odluku na osnovu nekog kriterijuma

Algoritam zapisan formalnim jezikom koji računar raquorazumijelaquo naziva se PROGRAM a jezik zapisivanja programa naziva se PROGRAMSKI JEZIK

Seminarski rad Dedić Asmir___ 4

Principi Programiranja Profdr

2 PREDSTAVLJANJE ALGORITAMA

Kad je algoritam smišljen potrebno ga je i zapisati To se može učiniti na više načina Najčešći načini zapisivanja su

DIJAGRAM TOKA i PSEUDOKOD

21 DIJAGRAM TOKA

Jedan od načina prezentiranja algoritma je dijagram toka To je zapravo grafički jezik jer za prikaz koristi grafičke simbole Takav način zapisivanja ima nekoliko prednosti pred pseudokodom Zapisivanje se vrši međunarodno dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam Grafički prikaz je jednostavan pregledan lako se pronalaze greškeU ovom dijagramu pojedine akcije predstavljene su tačno odredjenim grafičkim simbolima čime se osigurava jednostavnost preglednost i jednoznačnost zapisa algoritma

Međunarodno korišteni simboli su

Seminarski rad Dedić Asmir___ 5

Principi Programiranja Profdr

PRIMJER DIJAGRAMA TOKA

Primjer najjednostavnijeg algoritma koji odlučuje o tome hoćete li obući majicu kratkih ili dugih rukavapretstavljen dijagramom toka

Slika 1 Algoritam oblačenja majice sa dugim ili kratkim rukavima

Vizuelizacija programskog toka i toka podataka su izuzetno korisni za razvoj i razradu algoritma Objektno orijentisano programiranje je uvelo nove pojmove i forme i u analizu i u projektovanje a više vrsta dijagrama se koristi u procesu koji se naziva unifikovano modelovanje za koje je razvijen i standardizovan UML (Objedinjeni jezik za modelovanje)

Prednosti dijagrama toka su

- Komunikacija Dijagram toka olakšava komunikaciju svih koji su zainteresirani za rješavanje problema- Efektivna analiza Uz pomoc dijagrama toka se može efektivnije analizirati problem- Odgovarajuca dokumentacija Dijagram toka je dio obavezne programske dokumentacije koja može služiti u različite svrhe- Efikasno kodiranje Korektan dijagram toka olakšava pisanje programa (bez obzira u kojem programskom jeziku)- Otklanjanje grešaka Dijagram toka olakšava pronalaženje grešaka- Efikasno održavanje programa Olakšava održavanje programa

Seminarski rad Dedić Asmir___ 6

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 5: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

1 ŠTA JE ALGORITAM

Algoritam je u opštem slučaju konačni redoslijed operatora elementarnih obrada i pravila o njihovoj primeni u cilju dobijanja rješenja nekog problema Izvodjenje svakog operatora predstavlja jedan algoritamski korak Sa računarskog stanovišta ova definicija nije dovoljna pa se mora dopuniti sa sa još nekim uslovima koje algoritam mora da zadovolji

To suo DEFINISANOSTo KONAČNOST o REZULTAT

Definisanost Svaka operacija ili pravilo mora imati definisano i samo jedno značenje tj rezultat svake operacije mora biti jasno definisan

Konačnost Svaki korak mora biti takav da bi ga bar u prinicipu mogao izvesti čovjek koristeći olovku i papir za konačno vrijeme Postoje jednostavni i jednoznačni postupci koji nisu algoritmi jer su beskonačni sa stanovišta broja koraka potrebnog za dobijanje rezultata Algoritmi se moraju zaustaviti posle izvršenog konačnog broja koraka i u konačnom vremenu U vezi sa primjenom računara treba napomenuti da vrijeme rada računara potrebno za završetak algoritma treba biti razumno kratko

Rezultat Po završetku algoritma mora da postoji mogućnost da se ustanovi rezultat njegovog rada odnosno da li je algoritam postigao svoj cilj ili nije

Pojam algoritma ne mora biti vezan za primjenu računara Algoritmi se koriste u svakodnevnom životu za izvršavanje različitih aktivnosti kao npr Kuharski recepti

Algoritam je dakle konačna i precizno definisana procedura niz dobro definisanih pravila kojom se ulazne vrednosti transformišu u izlazne ili se opisuje izvršavanje nekog postupka

Danas se reč algoritam najvise vezuje za pojam računarstva mada uopšteno algoritam možemo smatrati kao uputstvo kako rešiti neki zadatak ili problem Tako se i uputstvo za slanje čoveka na mjesec i uputstvo za pravljenje ruske salate sastoji od niza koraka postupaka koje treba uraditi i koji vode ispunjenju cilja ili rešavanju problema Uputstvo može sadržati korake koji se ponavljaju više puta ili korake kada treba doneti neku odluku na osnovu nekog kriterijuma

Algoritam zapisan formalnim jezikom koji računar raquorazumijelaquo naziva se PROGRAM a jezik zapisivanja programa naziva se PROGRAMSKI JEZIK

Seminarski rad Dedić Asmir___ 4

Principi Programiranja Profdr

2 PREDSTAVLJANJE ALGORITAMA

Kad je algoritam smišljen potrebno ga je i zapisati To se može učiniti na više načina Najčešći načini zapisivanja su

DIJAGRAM TOKA i PSEUDOKOD

21 DIJAGRAM TOKA

Jedan od načina prezentiranja algoritma je dijagram toka To je zapravo grafički jezik jer za prikaz koristi grafičke simbole Takav način zapisivanja ima nekoliko prednosti pred pseudokodom Zapisivanje se vrši međunarodno dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam Grafički prikaz je jednostavan pregledan lako se pronalaze greškeU ovom dijagramu pojedine akcije predstavljene su tačno odredjenim grafičkim simbolima čime se osigurava jednostavnost preglednost i jednoznačnost zapisa algoritma

Međunarodno korišteni simboli su

Seminarski rad Dedić Asmir___ 5

Principi Programiranja Profdr

PRIMJER DIJAGRAMA TOKA

Primjer najjednostavnijeg algoritma koji odlučuje o tome hoćete li obući majicu kratkih ili dugih rukavapretstavljen dijagramom toka

Slika 1 Algoritam oblačenja majice sa dugim ili kratkim rukavima

Vizuelizacija programskog toka i toka podataka su izuzetno korisni za razvoj i razradu algoritma Objektno orijentisano programiranje je uvelo nove pojmove i forme i u analizu i u projektovanje a više vrsta dijagrama se koristi u procesu koji se naziva unifikovano modelovanje za koje je razvijen i standardizovan UML (Objedinjeni jezik za modelovanje)

Prednosti dijagrama toka su

- Komunikacija Dijagram toka olakšava komunikaciju svih koji su zainteresirani za rješavanje problema- Efektivna analiza Uz pomoc dijagrama toka se može efektivnije analizirati problem- Odgovarajuca dokumentacija Dijagram toka je dio obavezne programske dokumentacije koja može služiti u različite svrhe- Efikasno kodiranje Korektan dijagram toka olakšava pisanje programa (bez obzira u kojem programskom jeziku)- Otklanjanje grešaka Dijagram toka olakšava pronalaženje grešaka- Efikasno održavanje programa Olakšava održavanje programa

Seminarski rad Dedić Asmir___ 6

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 6: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

2 PREDSTAVLJANJE ALGORITAMA

Kad je algoritam smišljen potrebno ga je i zapisati To se može učiniti na više načina Najčešći načini zapisivanja su

DIJAGRAM TOKA i PSEUDOKOD

21 DIJAGRAM TOKA

Jedan od načina prezentiranja algoritma je dijagram toka To je zapravo grafički jezik jer za prikaz koristi grafičke simbole Takav način zapisivanja ima nekoliko prednosti pred pseudokodom Zapisivanje se vrši međunarodno dogovorenim simbolima i ne ovisi o govornom jeziku onoga koji sastavlja algoritam Grafički prikaz je jednostavan pregledan lako se pronalaze greškeU ovom dijagramu pojedine akcije predstavljene su tačno odredjenim grafičkim simbolima čime se osigurava jednostavnost preglednost i jednoznačnost zapisa algoritma

Međunarodno korišteni simboli su

Seminarski rad Dedić Asmir___ 5

Principi Programiranja Profdr

PRIMJER DIJAGRAMA TOKA

Primjer najjednostavnijeg algoritma koji odlučuje o tome hoćete li obući majicu kratkih ili dugih rukavapretstavljen dijagramom toka

Slika 1 Algoritam oblačenja majice sa dugim ili kratkim rukavima

Vizuelizacija programskog toka i toka podataka su izuzetno korisni za razvoj i razradu algoritma Objektno orijentisano programiranje je uvelo nove pojmove i forme i u analizu i u projektovanje a više vrsta dijagrama se koristi u procesu koji se naziva unifikovano modelovanje za koje je razvijen i standardizovan UML (Objedinjeni jezik za modelovanje)

Prednosti dijagrama toka su

- Komunikacija Dijagram toka olakšava komunikaciju svih koji su zainteresirani za rješavanje problema- Efektivna analiza Uz pomoc dijagrama toka se može efektivnije analizirati problem- Odgovarajuca dokumentacija Dijagram toka je dio obavezne programske dokumentacije koja može služiti u različite svrhe- Efikasno kodiranje Korektan dijagram toka olakšava pisanje programa (bez obzira u kojem programskom jeziku)- Otklanjanje grešaka Dijagram toka olakšava pronalaženje grešaka- Efikasno održavanje programa Olakšava održavanje programa

Seminarski rad Dedić Asmir___ 6

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 7: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

PRIMJER DIJAGRAMA TOKA

Primjer najjednostavnijeg algoritma koji odlučuje o tome hoćete li obući majicu kratkih ili dugih rukavapretstavljen dijagramom toka

Slika 1 Algoritam oblačenja majice sa dugim ili kratkim rukavima

Vizuelizacija programskog toka i toka podataka su izuzetno korisni za razvoj i razradu algoritma Objektno orijentisano programiranje je uvelo nove pojmove i forme i u analizu i u projektovanje a više vrsta dijagrama se koristi u procesu koji se naziva unifikovano modelovanje za koje je razvijen i standardizovan UML (Objedinjeni jezik za modelovanje)

Prednosti dijagrama toka su

- Komunikacija Dijagram toka olakšava komunikaciju svih koji su zainteresirani za rješavanje problema- Efektivna analiza Uz pomoc dijagrama toka se može efektivnije analizirati problem- Odgovarajuca dokumentacija Dijagram toka je dio obavezne programske dokumentacije koja može služiti u različite svrhe- Efikasno kodiranje Korektan dijagram toka olakšava pisanje programa (bez obzira u kojem programskom jeziku)- Otklanjanje grešaka Dijagram toka olakšava pronalaženje grešaka- Efikasno održavanje programa Olakšava održavanje programa

Seminarski rad Dedić Asmir___ 6

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 8: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

22 PSEUDOKOD

Za algoritam koji je sam po sebi dovoljno složen predstavljanje uz pomoć dijagrama toka može biti teško za čitanje modificiranje ili revidiranje Zbog toga je razvijen tzv pseudokod uz pomoć kojeg možemo predstaviti algoritamPseudokod je sastavljen od liste naredbi Neke od tih naredbi su slične onima koje koristimo kod dijagrama toka npr čitaj ispiši ili uvjetni izrazi Kod linijske algoritamske strukture naredbe u pseudoprogramu izvršavaju se redom počevši od vrha pa sve do dnaPseudokod je tekstualno zapisana uputa za određeni algoritam Takva uputa na specifičan način opisuje korake koje je potrebno provesti da bi se ostvario algoritamUputa ne sadrži naredbe pojedinog programskog jezika već samo riječima opisane korake za rješavanje određenog problema

Elementi pseudokoda u odnosu na simbole dijagrama toka

Početak ili kraj algoritma

PočetakKraj

Unos podataka

prikaz rezultata

Ulaz(x)Ulaz(xy)Izlaz(x)Izlaz(Ispisani tekst)Izlaz(Vrijednost je x)

Jednostavna radnja (naredba)

C=x+yIli C=abs(x-y)

Abs ndash apsolutna vrijednost

Odluka ili grananje

Ako uvjet onda naredba 1 Inače naredba 2

Tok programa

Nastavak dijagrama

Cilj pseudokoda je izraziti algoritam na čitljiv i neformalan način Zato je način kojim ga predstavljamo samo pomoć za predstavljanje ideja a ne način da ideju ugušimo Da bi sve skupa bilo čitljivije pseudokod pišemo sa komentarima koji naznačavaju i opisuju pojedine strukture

Seminarski rad Dedić Asmir___ 7

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 9: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

PRIMJER 1

Spomenuti algoritam i Slika 1(vezan uz oblačenje majice s kratkim ili dugim rukavima) može se iskazati I pseudokodom Takav način zapisivanja algoritma vrlo je blizak svakodnevnom govoru i često se od njega skoro uopće ne razlikuje Pogledajte spomenuti algoritam (Slika 1) napisan u pseudokodu

Pocetak Pogledaj kolika je vanjska temperatura Ako je temperatura manja od 25 stupnjeva obuci majicu kratkih rukava inače obuci majicu dugih rukava Kraj

Rezultat gornjeg algoritma je jasan ako je temperatura niža od 25 stupnjeva obući ćete majicu dugih rukava inače ćete obući majicu kratkih rukava

PRIMJER 2Pseudokod i njemu ekvivalentan dijagram toka

Slika 2 Pseudokod I Ekvivalent Dijagram toka IF-THEN-ELSE

Seminarski rad Dedić Asmir___ 8

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 10: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

Prema tome naš pseudokod bi bio program lažnjak Zašto pseudo Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima iz govornog jezika Dakle ako hoćemo pisati algoritme riječima moramo se prije dogovoriti koje ćemo riječi koristiti Logičan slijed radnji u nekom programu je ulaz podataka obrada i izlaz podataka

3 ALGORITAMSKE STRUKTURE

Pod strukturom algoritma podrazumijeva se redoslijed izvršavanja pojedinih vrsta algoritamskih koraka u algoritmu

Algoritamske strukture se dijele u tri osnovne grupe

1048766 Linijska (sekvencija)1048766 Razgranata (selekcija) i1048766 Ciklična (iteracija)

31 Linijska struktura (Sekvencija)

Karakteristika linijske strukture je da se svi elementi izvršavaju samo jednom i koraci se odvijaju u nizu jedan za drugim bez ponavljanja ili skretanja

PRIMJER Zbir brojeva a i b

Slika 3 Linijska struktura

Isti primjer u BASIC-u

INPUT a bzbir = a + b

Seminarski rad Dedić Asmir___ 9

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 11: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

PRINT zbirEND

32 Razgranata struktura (Selekcija)

Razgranata struktura algoritma je struktura u kojoj tok operacija zavisi od ispunjenosti nekih uslovaRazgranata struktura će se pojaviti kod algoritma koji ima blok odlučivanja kao što su IF i CASE pri čemu se vrši testiranje određenog uslova a prema rezultatu (obično TRUE ili FALSE) algoritam se grana i nastavlja tok jednom od grana- opcija

Primjer na slici je tipičan gdje se otklanja blokiranje programa provjerom da li je djelilac jednak nuli Ako je djelilac različit od nule dati će rezultat dijeljenja u suprotnom će dati samo poruku da dijeljenje nulom nema smisla i nastaviti dalje prema sledećoj proceduri ili kraju programa

Primjer

Slika 4 Razgranata struktura (primjer)

Isti primjer u BASIC-u

INPUT abIF b ltgt 0 THENPRINT abELSEPRINT Ne mogu dijeliti nulomEND

Seminarski rad Dedić Asmir___ 10

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 12: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

33 Ciklična Struktura (Iteracija)

Ciklični algoritam će se pojaviti kada treba isti posao uraditi više puta Postoji više varijanti ove srtukture a dvije osnovne podjele su

Broj iteracija (ponavljanja) je unaprijed poznat Primjer ove petlje je na slici 5 i tu se obično koristi petlja FOR i

Iteracija se vrši dok se ne zadovolji određen uslov Koriste se petlje tipa WHILEDO

Kod Iteracije sa provjerom istinitosti uslova (da li je uslov zadovoljen) postoje varijante s provjerom uslova na ulazu u petlju odnosno na izlazu tj kraju petlje Razlika između ove dvije varijante je što kod provjere istinitosti uslova na kraju petlje program mora proći bar jednom kroz petlju

Primjer 1 Dijagram toka (Petlja FOR)

Slika 5 Broj iteracija unaprijed poznat (petlja FOR)

Primjer u BASIC-u

zbir = 0INPUT b

Seminarski rad Dedić Asmir___ 11

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 13: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

FOR a = 1 TO bzbir = zbir + aNEXT aPRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na početku petlje

Kod provjere istinitosti na ulazu u petlju postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan ako uslov nije ispunjen odmah se preskače na sljedeću liniju izvan petlje Za ovu vrstu petlje u većini programa se koristi ključna riječ WHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0WHILE zbir lt 200INPUT azbir = zbir + aWEND

PRINT zbirEND

Primjer algoritma kada nije poznat konačan broj iteracija sa provjerom na kraju petlje

Kod provjere istinitosti na kraju petlje ne postoji mogućnost da se ne izvrši ni jedno ponavljanje Razlog je jednostavan provjera se vrši u posljednjem redu bloka koda te se mora proći barem jedanput kroz čitav blok Za ovu vrstu petlje u većini programa se koristi ključna riječ DOWHILE prilagođena sintaksi programskog jezika

Primjer u BASIC-u

zbir = 0DOINPUT azbir = zbir + aWHILE (zbir lt 200)PRINT zbirEND

Seminarski rad Dedić Asmir___ 12

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 14: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

Primjer 2 Dijagram toka Unesi jedan broj i 30 puta ga ispiši

Seminarski rad Dedić Asmir___

POČETAK

UNOS a

ISPIS a

KRAJ PPROGRAMA

Ispis = 30

ISTINA

LAŽ

13

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 15: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

Znači potrebno je određeni niz naredbi izvršiti zadani broj puta Za to se koriste naredbe ponavljanja ndash programske petlje (ponavljanje ili iteracija znači obavljanje iste stvari ponovo i ponovo a osnovno sredstvo za ponavljanje (iteraciju) je petlja)

4 EFIKASNOST I TAČNOST

Obično nije problem dobiti tačno rješenje pomoću algoritma predstavljenim programskim jezikom ali o efikasnosti algoritma ovisi da li će pronađeno rješenje saživjeti u praksi

Ukoliko pretražujemo listu sa 30000 imena tada algoritam sekvencijalnog pretraživanja u prosjeku pretraži 15000 imena dok ne dođe do cilja Ako pretpostavimo da svako pretraživanje traje 10 ms onda će nam za pronalazak imena u listi trebati (u prosjeku) 150 000 ms = 25 minuta Kod binarnog pretraživanja broj koraka koji nas dovodi do ciljne vrijednosti iznosi ln (30000)=8 što znači da je ukupno vrijeme pretraživanja cca 80ms s tim da treba voditi računa o tome da slogovi moraju biti složeni po nekom redu kako bismo algoritam uopće mogli primijeniti Koliko se poveća vrijeme pretraživanja kod jednog a koliko kod drugog algoritma ako se broj imena na listi udvostručiUpravo to osjetljivost na porast broja elemenata u listi u ovom je slučaju mjera za efikasnost algoritma)

Nadalje prema dobivenom rješenju treba biti kritičan Čak i kada smo sigurni da je ono točno treba provjeriti je li riječ i o najboljem mogućem rješenju (Priča o trgovačkom putniku koji hotel plaća karikama lanca-cilj je platiti sedam noćenja sa lančićem od sedam karika tako da svaki dan platimo noćenje a da lančić puknemo najmanji broj puta)

Bez obzira na to kako dolazimo do nekog algoritma prvi i najvažniji uslov koji dobijeni algoritam mora da zadovolji je da on ispravno rešava dati problem Na putu dokazivanja ispravnosti algoritma postoje mnoge preprekekako praktične tako i teorijske Što se tiče praktičnih teškoća one su u vezi sa činjenicom da se većina programa piše tako da zadovoljavaju neke neformalne specifikacije koje su i same nepotpune ili protivrečne Na teorijskoj strani uprkos brojnim pokušajima da se formalno definiše značenje programa nije se iskristalisao opšteprihvaćeni formalizam kojim se pokazuje ispravnost netrivijalnih algoritama

Ipak korisno je navesti i dokazati odlike algoritama Odlike o kojima je reč su najčešće kratka objašnjenja koje odslikavaju način na koji konkretan algoritam radi Onaj ko piše algoritam bi bar trebalo da ima u vidu te odlike iako je možda nepraktično da se one dokazuju u svim detaljima Te odlike treba da služe i kao određen vodič u kreativnom procesu konstruisanja nekog algoritma

Seminarski rad Dedić Asmir___ 14

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 16: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

4 Z A K L J U Č A K

Izrada algoritama zahtjeva puno vježbe Algoritmi se ne mogu naštrebati Potrebno je riješiti puno primjera od jednostavnijih do sve složenijihDijagram toka crtamo običnom olovkom s brisalom pri ruci Stvari se rješavaju u hodu mijenjaju popravljaju i prepravljaju Uočavaju se stvari koje se mogu pojednostavniti Prednost dijagrama toka je što je pregledan lako se test primjerima može pješice provjeriti Zanimljivo je i to da više ljudi može napraviti na isti zadatak više različitih algoritama i da su svi dobri Složeni algoritmi mogu se rastaviti na manje tako rastavljeni riješiti do detalja i onda prikazati kao rješenje u blokovima Problemi se mogu lako analizirati lako se uočavaju sličnosti i razlike između više rješenja i odabire najbolje I na kraju što je bio cilj naše izrade algoritama - pisanje programa Kada je jednom algoritam gotov pisanje programa u nekom programskom jeziku je prepisivanje simbola iz dijagrama toka u naredbe programskog jezika Obično svaki simbol u dijagramu toka predstavlja jednu naredbu u programu Dijagram toka bi trebao biti dio svake dobre programske dokumentacije Svaki zadatak koji se zadaje računaru u vidu poruke ndash programa sadrži neki algoritam Prema tome priprema poruka za računar ndash što zovemo raquoprogramiranjelaquo sastoji se od kreiranja odgovarajućeg algoritma i njegovog zapisivanja u programskom jeziku

Seminarski rad Dedić Asmir___ 15

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A
Page 17: Seminar Ski Rad Algoritmi

Principi Programiranja Profdr

5 L I T E R A T U R A

1 Profdr Zoran Avramović - PRINCIPI PROGRAMIRANJA ndash Skripta Otvoreni Univerzitet APEIRON

2 httppubliccarnethr~zorkovacinformatikaalgoritmiAlgoritmihtml

3 httpsrwikipediaorgsr-elD090lgoritam

Seminarski rad Dedić Asmir___ 16

  • U V O D
  • 1 ŠTA JE ALGORITAM
    • Elementi pseudokoda u odnosu na simbole dijagrama toka
      • 4 Z A K L J U Č A K
      • 5 L I T E R A T U R A