strukture podataka i algoritmi skripta sve

Upload: 4k45h4

Post on 26-Feb-2018

347 views

Category:

Documents


6 download

TRANSCRIPT

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    1/141

    1

    Rjeavanje problema metodom postepenogprofnjavanja

    Predmet Strukture podataka i algoritmi na nekim fakultetima za IT i poslovnuinformatiku moe se smatrati prelaznim, ukoliko su studenti I godine naprethodnim predavanjima i vjebama radili programiranje u !u ili "", isavladali njihovu sintaksu#

    $a vi%im godinama, ako se odlu&ite za smjer ra&unarstvo 'IT(, naglasak )e vi%ebiti na modeliranju problema#

    *vaj predmet u na%em primjeru nije prelaz, ne znamo ili "", a u&imo kako damodeliramo programerske probleme, naj&e%)e pristupe modeliranju i naj&e%)eimplementa+ije#

    adi toga, u svoja predavanja uklju&io sam i osnove sintakse u i "" jeziku ikroz primjere implementa+ije pojedinih tipova i struktura podataka u raznimalgoritmima problema omogu)io studentima ovladavanje strukturnim i objektnoorijentisanim programiranjem, i to ta&no onoliko koliko nam je za ovu priliku bilopotrebno#

    -vod. Pojam tipa, apstraktnog tipa i strukture podataka#

    /lementi od kojih se gradi struktura. polje, zapis, pointer, kursor# Pojamalgoritma, zapisivanje i analiziranje algoritama#

    Pregled raznih apstraktnih tipova. 0ista, stog 'sta+k(, red, ureeno i binarno

    stablo, skup, rje&nik, prioritetni red, preslikavanje#Pregled raznih struktura podataka. 2ezana lista i druge vezane strukture, hashtabli+a, binarno stablo traenja, gomila 'heap(#

    3lgoritmi za obavljanje osnovnih opera+ija nad strukturama. -ba+ivanje iizba+ivanje podataka, traenje, ispis sadraja i sl#

    Primjena opisanih struktura u sloenijim algoritmima. Sortiranje i saimanjenizova podataka, izvrednjavanje aritmeti&kih izraza, razni rekurzivni postup+i#

    *p)enite tehnike 'strategije( za konstruk+iju algoritama. 4Podijeli pa vladaj4,dinami&ko programiranje, 4pohlepni4 pristup, 4ba+ktra+king4, lokalno

    pretraivanje#

    1.1 Vanost modeliranja

    5odeliranje ima veliku vanost u programiranju jer se naizgled ili stvarnote%ki problemi dobrim modeliranjem mogu lak%e ili bre rije%iti#

    je%ivost. u nekoj formula+iji problem se moe &initi nerje%iv

    Sloenost razni modeli, strukture podataka i algortmi mogu pove)ati brzinuizvoenja 'smanjiti vremensku sloenost( ili smanjiti prostor potreban zaizvoenje 'smanjiti prostornu sloenost(

    1.2 Pojmovi

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    2/141

    6

    -vodimo neke pojmove koji se koriste na ovom kolegiju.

    Model predstavlja formula+iju problema 'koji se javlja u praksi, iz ivota( uterminima matemati&kih objekata 'niz, grafovi, stabla i sli&no(

    Apstraktni tip podatakaje apstraktno zadat tip podataka 'obi&no sloeni(

    zajedno sa opera+ijama# Implementa+ija opera+ija nije nuno zadata#Struktura podatakaje ekspli+itna implementa+ija tipa podataka izapstraktnog tipa podataka# To moe biti skupina varijabli u nekomprogramskom jeziku zajedno sa vezama meu varijablama#

    Rjeavanje problema je postupak postepenog profnjavanja u kojem

    ! prvo postavljamo matemati&ki model i algoritam u neformalnom jezikukoji koristi matemati&ke pojmove,

    ! zatim stvaramo apstraktni tip podataka, i! algoritam zapisujemo u pseudo!jeziku koji koristi opera+ije iz 3TP, te

    kona&no! apstraktni tip podataka i algoritam u pseudokodu prevodimo ustrukture podataka u stvarnom programskom jeziku i algoritam zapisanu stvarnom programskom jeziku,

    ! %to nam predstavlja rje%enje problema#

    Pri rje%avanju )emo se koristiti slikovitim prikazima &estih struktura koji su vidljivina narednoj sli+i 'slika 1#1#(#

    Slika 1#1. Slikoviti prikazi &estih struktura

    a) elija, b) polje, c) zapis, d) pokaziva 'pointer), e) kursor

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    3/141

    7

    Metoda postepenog profnjavanja

    Slika 1#6. Ski+a postupka postepenog pro8njavanja

    Savremeni, naj&e%)e objektno orijentisani, jezi+i poput "", 9ave ili : jezikauobi&ajeno dolaze sa standardnim bibliotekama koje implementiraju razne 3TP'uklju&uju)i i sve koji se obrauju na vjebama( koje tada moemo koristiti nanivou 3TP!a, bez ulaenja u implementa+iju#

    !lasifka"ija programski# je$ika

    ;enera+ijska klasi8ka+ija

    ! Prva genera+ija'5a%inski jezi+i(! language( koji izgledakao engleske rije&i kojima su zamijenjene jedini+e i nule prirodnogma%inskog jezika#

    ?ada pi%ete asemblerskim jezikom vi regularno zaobilazite aplikativni softver ikomuni+irate direktno sa %P&' ()*S i MS+,*S.

    ?ori%)enje asemblerskog jezika pomae vam da shvatite %ta se stvarno de%avaunutar ra&unara#

    ?ori%)enje asemblera ima i druge koristi# Poznato je da je bri i do 1@@ puta od

    Aasi+!a# ?oristi memoriju e8kasnije od mnogih vi%ih programskih jezika i najboljije jezik za kontrolu IB* jedini+a, posebno video ekrana#

    http://bs.wikipedia.org/wiki/1.Generacijahttp://bs.wikipedia.org/wiki/2.Generacijahttp://bs.wikipedia.org/wiki/3.Generacijahttp://bs.wikipedia.org/wiki/4.Generacijahttp://bs.wikipedia.org/wiki/1.Generacijahttp://bs.wikipedia.org/wiki/2.Generacijahttp://bs.wikipedia.org/wiki/2.Generacijahttp://bs.wikipedia.org/wiki/3.Generacijahttp://bs.wikipedia.org/wiki/3.Generacijahttp://bs.wikipedia.org/wiki/4.Generacijahttp://bs.wikipedia.org/wiki/4.Generacijahttp://bs.wikipedia.org/wiki/1.Generacija
  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    4/141

    C

    Programski jezi+i su jezi+i kojima se pi%u ra&unarski programi# Svaki programskijezik koristi vlastiti, ograni&eni skup rije&i koje imaju posebna zna&enja# Takve serije&i nazivaju klju-nimrije&ima#

    Da svaki programski jezik propisana su pravila slaganja klju&nih rije&i u naredbe#Takva se pravila nazivaju sintaksa#

    3ko se ne zadovolji propisana sintaksa, program )e biti neispravan i ne)e se mo)iizvr%iti#

    Prvu genera"ijupredstavljaju jezi+i na ma%inskom nivou# Pojavljuju se sa prvimkomer+ijalnim ra-unarima'1EF7(# Programiranjeje izvoeno binarnimkodomtj# skupinama nula i jedini+a ' @ i 1 (#

    ?omande se direktno pi%u u ma%inskom jeziku, to jest kao niz naredbi koje seu&itavaju u komandni registar pro"esorai tamo izvode# ?omande su naravnozavisne od pro+esora i zbog toga je preno%enje sa ra&unara na ra&unar'portovanje( ovakvih programa skoro nemogu)e#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    5/141

    F

    lementi programskog je$ika

    2e)ina komandi svakog programskog jezika moe se podijeliti u F glavnihkategorija.

    ! Obrada ulaznih podatakao Podatke preuzeti sa tastature, iz datoteke ili nekog drugog izvora#

    ! Obrada izlaznih podatakao Podatke predati monitoru, datote+i, bazi podataka ili nekom drugommedijumu#

    ! Matematika obrada podatakao Podatke obraditi pomo)u matemati&ke opera+ije, kao npr# sabiranje,

    oduzimanje ili dijeljenje#! Poreenje i izbor

    o Provjera odreenih uslova i kontrola izvr%avanja komandi#! Ponavljanje

    o Posebnim pravilima regulisano ponavljanje izvr%avanja komandi'obi&no sa varija+ijama podataka ili pravila ponavljanja(#

    Svaki programerpi%e programski kd u nekom programskom jeziku# azli&itiprogramski jezi+i podravaju razli&ite stilove programiranja 'programskaparadigma(#

    azli&iti programski jezi+i zahtijevaju i razli&ite nivoe znanja, umije)a i detaljakoje programer treba posjedovati#

    Programska paradigmaodreuje stil programiranja#

    Programska paradigma odreuje pogled koji programerima nad programominjegovih izvr%avanjem#

    $a primjer, u objektnom programiranjuprogramer razmi%lja o programu kao oskupu interaktivnih objekata, dok u 3unk"ionalnom programiranjuna programgleda kao na redoslijed naredbi#

    $eki programskije$i"isu na&injeni da podravaju samo jednu paradigmu 'kao4avai Smalltalkza objektno programiranje, dok 5askelli S"#emepodravajufunk+ionalno programiranje(# Takoe, imamo jezike koji koji podravaju vi%eparadigmi 'kao %to je 6)SP, P7t#oni *$#

    Primjeri paradigmi

    ! Struktur no programiranje, nasuprot $estrukturno programiranje! Imperativno programiranje, nasuprot

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    6/141

    J

    ! *grani&eno programiranje, nasuprot 0ogi&ko programiranje! ?omponentno programiranje'kao u *0/(! 3spektno programiranje'kao u 3spe+t9(! Pravilno bazirano programiranje'kao u 5athemati+a(! Tabelarno programiranje'kao u 5i+rosoft GoKPro(

    ! jevovodno programiranje'kao kod -$ILkomandnim linijama(! *bjektno o rijentisano p rogramiranje! Paralelno programiranje#

    &vod u ra-unarsko programiranje

    Programiranje

    Ra-unarsko programiranje'en#programming( je vje%tina pomo)u koje

    korisnik stvara i izvr%ava algoritmekoriste)i odreene programskeje$ikedabi napravio ra-unarski program#

    Programiranje sadri elemente umjetnosti, nauke, matematike i konstruisanja#

    Ra-unarski program, so3tverski programili jednostavno program'eng.Computer program; software program, program( je spisak naredbi napisan unekom programskom jezikunamijenjen za odreenu ra&unarsku platformu#

    a&unarski programi napisani u nekom programskom jeziku su razumljivi&ovjeku, ali te naredbe ne razumije ira-unar, zbog toga se kd ra&unarskogprograma pomo)u kompajleramora prevesti u binarni k8dda bi ga ra&unar

    razumio i uop%te izvr%avao#

    http://bs.wikipedia.org/w/index.php?title=Ograni%C4%8Deno_programiranje&action=edithttp://bs.wikipedia.org/wiki/Logi%C4%8Dko_programiranjehttp://bs.wikipedia.org/w/index.php?title=Komponentno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=OLE&action=edithttp://bs.wikipedia.org/w/index.php?title=Aspektno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=AspectJ&action=edithttp://bs.wikipedia.org/w/index.php?title=Pravilno_bazirano_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Mathematica&action=edithttp://bs.wikipedia.org/w/index.php?title=Tabelarno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Microsoft_FoxPro&action=edithttp://bs.wikipedia.org/w/index.php?title=Cjevovodno_programiranje&action=edithttp://bs.wikipedia.org/wiki/UNIXhttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/wiki/Paralelno_programiranjehttp://bs.wikipedia.org/wiki/Engleski_jezikhttp://bs.wikipedia.org/wiki/Engleski_jezikhttp://bs.wikipedia.org/wiki/Algoritamhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Ra%C4%8Dunarski_programhttp://bs.wikipedia.org/wiki/Ra%C4%8Dunarski_programhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Ra%C4%8Dunarhttp://bs.wikipedia.org/wiki/Kompajlerhttp://bs.wikipedia.org/wiki/Binarni_kodhttp://bs.wikipedia.org/wiki/Binarni_kodhttp://bs.wikipedia.org/wiki/Binarni_kodhttp://bs.wikipedia.org/w/index.php?title=Ograni%C4%8Deno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Ograni%C4%8Deno_programiranje&action=edithttp://bs.wikipedia.org/wiki/Logi%C4%8Dko_programiranjehttp://bs.wikipedia.org/wiki/Logi%C4%8Dko_programiranjehttp://bs.wikipedia.org/w/index.php?title=Komponentno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Komponentno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=OLE&action=edithttp://bs.wikipedia.org/w/index.php?title=Aspektno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Aspektno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=AspectJ&action=edithttp://bs.wikipedia.org/w/index.php?title=Pravilno_bazirano_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Pravilno_bazirano_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Pravilno_bazirano_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Mathematica&action=edithttp://bs.wikipedia.org/w/index.php?title=Tabelarno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Tabelarno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Microsoft_FoxPro&action=edithttp://bs.wikipedia.org/w/index.php?title=Cjevovodno_programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Cjevovodno_programiranje&action=edithttp://bs.wikipedia.org/wiki/UNIXhttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/w/index.php?title=Objektno_Orijentirano_Programiranje&action=edithttp://bs.wikipedia.org/wiki/Paralelno_programiranjehttp://bs.wikipedia.org/wiki/Paralelno_programiranjehttp://bs.wikipedia.org/wiki/Engleski_jezikhttp://bs.wikipedia.org/wiki/Engleski_jezikhttp://bs.wikipedia.org/wiki/Algoritamhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Ra%C4%8Dunarski_programhttp://bs.wikipedia.org/wiki/Ra%C4%8Dunarski_programhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Ra%C4%8Dunarhttp://bs.wikipedia.org/wiki/Kompajlerhttp://bs.wikipedia.org/wiki/Binarni_kodhttp://bs.wikipedia.org/wiki/Binarni_kodhttp://bs.wikipedia.org/wiki/Binarni_kod
  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    7/141

    M

    Hello worldje prvi program koji se pravi na evropskimfakultetima# To je naj&e%)ejedan od prvih programa koje naprave programeri po&etni+i u +ilju upoznavanjasa osnovama programerskih vje%tina#

    *vaj program obi&no ispisuje poruku '4Nello Oorld4, tj# 4Pozdrav svijete4( naosnovni izlaz 'output( pri izvr%avanju#

    http://bs.wikipedia.org/wiki/Evropahttp://bs.wikipedia.org/wiki/Fakultethttp://bs.wikipedia.org/wiki/Evropahttp://bs.wikipedia.org/wiki/Fakultet
  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    8/141

    H

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    9/141

    E

    !ompajler'en #compiler( je prevodila+ programskog jezikai njegovih instruk+ijau ma%inski kod'nule i jedini+e(#

    http://bs.wikipedia.org/wiki/Engleski_jezikhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/w/index.php?title=Ma%C5%A1inski_kod&action=edithttp://bs.wikipedia.org/w/index.php?title=Ma%C5%A1inski_kod&action=edithttp://bs.wikipedia.org/wiki/Engleski_jezikhttp://bs.wikipedia.org/wiki/Engleski_jezikhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/wiki/Programski_jezikhttp://bs.wikipedia.org/w/index.php?title=Ma%C5%A1inski_kod&action=edithttp://bs.wikipedia.org/w/index.php?title=Ma%C5%A1inski_kod&action=edit
  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    10/141

    1@

    Ra-unarski so3tverili so3tver'en #software( je u ra-unarski programnapisan tako da je njegov sadraj lagano promjeniti 'mogu)e i pomo)u nekogprograma( i koji je upisan u neku hardversku jedini+u#

    ;lavni zadatak softvera je da upravlja #ardverom, izvr%ava izra&unavanja, te da

    obezbijedi komunika+iju sa ostalim, isto tako, softverom, ta&nije re&eno!programom.

    Termin 4softOare4 prvi put koristi4o#n 9. /uke71:;

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    11/141

    11

    Podjela so3tvera prema namjeni

    a&unarski softver se dijeli na tri glavne grupe. sistemski so3tver' i$vrniso3tver' programski so3tver#

    Sistemski so3tver pokre)e ra&unar# To moe biti operativni

    sistem' drajver' server, razni alati i ostalo# *perativni sistemdobija pravo da upravlja +jelokupnim ra&unarom, poda+ima,pro+esima itd# $ajpoznatiji operativni sistemi su 5i+rosoft indoOs,0inuKi Ma" *S >#

    )$vrni so3tveromogu)ava korisniku da izvr%ava odreene zadatke#To moe biti poslovni softver, eduka+ioni softver, baza podataka,oQ+e paketii ostalo#

    Programski so3tverje obi&no alat koji pomae nekom programeruda izvr%i neki zadatak koriste)i neki programski jezik# To moe bitiureiva& teksta, kompajler, interpreter, linker, debuggeri tako dalje#- ra&unarskoj gra8+i se koristi termin graf-ki so3tver' koji jespe+ijalizovan za rad sa gra8kom#

    Termini za odreene vrste softvera.

    *tvoreni so3tver'en #pen source software( odnosi se na softver&iji je izvornikod dostupan unutar 4open sour+e4 li+en+e svim korisni+ima koji ga mogumijenjati, prepravljati i pobolja%vati njegov sadraj# To zna&i da uz Ropen sour+eRprogramedolazi i &itav izvorni kd u nekom programskom jeziku, %to nije slu&ajsa pla)enim softverom#

    Primjeri otvorenog so3tvera

    er lassi+' @, graf-kiprogramza modeliranje 'Alender 7

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    12/141

    16

    =esto se moe donirati nova+ili oprema osobama koje su napravile freeOare, alije to isklju&ivo na volonterskoj bazi, jer ina&e ne bi se radilo o freeOare!u#

    S#areBare, ili u direktnom prevodu sa engleskog je$ika "dijeljena roba", jepojam pod kojim se podrazumjeva na&in distribu+ije proizvoda 'naj&e%)eso3tvera( na taj na&in da je kup+u omogu)eno prethodno isprobavanje proizvodaprije nego isti bude pla)en#

    *vaj pojam se naj&e%)e koristi u in3ormati"i$a so3tverkoji je distribuisan uzodgodu pla)anja na neki unaprijed de8nisani period#

    ShareOare softver je obi&no potpuno funk+ionalan neki odreeni period nakon&ega ga je potrebno ukloniti sa ra&unara# - ugovoru =&6A koji dolazi uzinstala+iju softvera, opisane su obaveze korisnika prema proizvoa&u# *ne mogubiti pravne ili moralne#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    13/141

    17

    Programiranje+nastanak programa

    Pravljenje nekog programa uklju&uje.

    ! 3nalizu potreba! Tehni&ki opis!

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    14/141

    1C

    Svaka od tih kombina+ija slova obi&no je krati+a engleskog opisa naredbe pa selako pamti# Program napisan u asembleru mora biti preveden u binarni oblik dabi ga +entralna jedini+a za obradu razumjela# Simbole u binarni oblik prevodiprogramprevodila"#

    Programi pisani u asembleru su ne%to &itljiviji i lak%i za razumijevanje odbinarnog zapisa, ali ih je jo% uvijek vrlo te%ko pisati i ispravljati# *ni zavise odvrste i unutra%nje grae ra&unara 'pro+esora( pa se u na&elu mogu izvr%avatisamo na pro+esoru za koji su pisani#

    Simboli-ki je$i"i vieg nivoa

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    15/141

    1F

    ! povezivanje u izvr%ni kod,! provjeravanje programa#

    )$vorni kod

    ?ombina+ijom naredbi programskog jezika nastaje izvorni kod 'engl# sourcecode(#Izvorni kod mogu)e je pisati u bilo kojem programu za ureivanje teksta 'engl#te$t editor(# Sprema se u datoteku nastavka #+pp

    )$vrni oblik

    Programi se mogu izvr%iti na ra&unaru samo ako su u binarnom, izvr%nom obliku'engl# e$ecutable(#Izvr%na datoteka je oblik programa i moe se neposredno izvr%iti na ra&unarlu zakoji je prevedena#

    Prevodila"

    Izvorni kod se prevodi u izvr%ni uz pomo) programa prevodio+a# Pri tome seprovjerava sintaksa napisanog izvornog kda#

    E.obj

    Prevoenjem nastaje datoteka objektnog kda 'engl# obje+t +ode(, nastavka#obj# *bjektni kd je meukorak do izvr%nog koda i uz ostalo omogu)avauklju&ivanje gotovih dijelova programa iz drugih datoteka#

    Pove$iva-+ Linker

    Program koji povezuje objektnu datoteku s bibliotekama i drugim potrebnimdatotekama naziva se poveziva& 'engl# linker(#ezultat uspje%nog povezivanja je izvr%na datoteka '#eKe(#

    Pogreke

    Tokom rada mogu se javiti tri vrste pogre%aka.

    + sintakti-kepogreke'engl# compile%time error(, otkriva ihprogram prevodila+,

    + pogreke pove$ivanja'engl# link%timeerror(, otkriva ih programpoveziva&!linker,

    + logi-ke pogreke'engl# run%time error(, mora ih prona)i korisniksam#

    &V*, & PR*FRAM PRV*,)*%-vod

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    16/141

    1J

    =ovjeku je stran jezik kojega 4razumije4 ra&unar# Dbog toga je bilo potrebnorazviti posredni&ke mehanizme koji obavljaju pretvorbu prirodnog jezika '&ovjekurazumljivog( u ma%inski jezik 'ra&unaru razumljiv(# *ni mogu biti.

    prevodio+i kompajleri, i

    prevodio+i interpreteri#

    !ompajler

    ?ompajler 'engl# compiler( U program koji prevodi izvorni kod 'engl# source code(

    programa zapisanog u jeziku visokog nivoa u ma%inski 'ma%inski( jezik 'engl#mac&ine code, object code( samo jednom i to tokom prevoenja ili kompajliranja#

    Postoje i kompajleri koji prevode iz jednog jezika visokog nivoau drugi jezikvisokog nivoa 'npr# front U -$IL "" kompajler koji prevodi "" u (#

    Istorijat

    Prvi ra&unari nisu koristili kompajlere, jer su imali malo memorije i malo

    operativnih mogu)nosti, a korisni+i su unosili binarni, ma%inski jezik direktno,pomo)u prekida&a na kontrolnoj plo&i#

    - kasnim C@!im, programeri su otkrili da se ma%inski jezik moe prikazati pomo)umnemonika i da ra&unari mogu te mnemonike prevesti u ma%inski jezik#

    5eu prve jednostavne kompajlere ubrajaju se. Short ode '1ECE# g(,

    3!* '1EF1#g(, 3uto+ode '1EF6#g(# Prvi upotrebljivi kompajler napisali su 0aning iDierler tokom 1EF7#i 1EFC# godine#

    9ohn Aa+kus, na &elu tima koji je razvijao G*T3$, zasluan je za uvoenje

    prvog potpunog kompajlera 1EFM# godine#Podjela kompajlera

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    17/141

    1M

    ! 4ednoprola$ni kompajler'engl# one pass compiler(! Vieprola$ni kompajler 'engl# two pass compiler ' t&ree pass

    compiler(! )storodni kompajler'engl# native compiler(! !rini kompajler'engl# cross compiler(

    ! *ptimiraju0i kompajler'engl# optimising compiler(

    4ednoprola$ni kompajlerU o&itava izvorni program samo jednom i to jedovoljno za prevoenje u ma%inski jezik#

    Vieprola$ni kompajlerU najprije prevodi program u vi%em jeziku ', Pas+al( u

    asembler ili u neki meujezik , a tek zatim u binarni oblik ma%inskog jezika#Prevoditi se moe u dva 'engl# two pass compiler( ili tri prolaza 'engl# t&ree passcompiler(#

    )storodni kompajler U koristi se na istoj vrsti ra&unara na kojem je program ipreveden#

    &krteni =krini kompajlerU koristi se na jednoj vrsti ra&unara, a prevedeniprogram na drugoj#

    *ptimiraju0i kompajler U nastoji prevedeni program u&initi %to kra)im i brimpri izvoenju#

    Struktura programa kompajlerskog prevodio"a

    Pro"es kompajliranja moemo podijeliti u nekoliko 3a$a' koje su dio3ront end+a ili ba"k end+a. Rijetko se spominje i middle end. Svi osimnajmanji# kompajlera imaju vie od dvije 3a$e.

    Pretpro"esiranje G faza koju zahtjevaju neki jezi+i 'npr# ( za izvoenjepro+esa kao %to su uslovna kompila+ija i zamjena kori%tenjem makro!algoritama# - slu&aju !a pretpro+esiranje uklju&uje i leksi&ku analizu#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    18/141

    1H

    6eksi-ka anali$a G prvi korak u stvaranju programskog jezika# Izvr%ava senad znakovima programskog jezika od kojih je sastavljen izvorni kod,&itaju)i pri tome jedan po jedan i pretvaraju)i u utvrene jedini+e ililekseme#

    Pretpro"esiranje

    Cpr.' promotrimo sljede0e

    *vo je re-eni"a.

    gdje je

    Veliko * po-etak iska$a Ra$makni"a H I odvaja rije-i

    H.I je simbol $a $avretak iska$a

    6eksi-ka anali$a dijeli tekst programa u rije-i ili HtokensI.

    Cpr.'

    )3 J K 7 t#en $ K 1L else $ K 2

    ta su dijelovi ovog tekstaN

    ,ijelovi G jedini"e ovog teksta su )3' J' 7' t#en' $' 1' else' $' 2.

    Sintakti-ka anali$a G analiziranje sintakse, postupak provjeravanja iodlu&ivanja o tome da li je niz ulaznih znakova programskog jezika ispravan#

    Promotrimo pret#odni primjer' ali sada sa "iljem provo?enja sintakti-keanali$e

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    19/141

    1E

    Semanti-ka anali$a G analiza jezika usmjerena na zna&enje rije&i# *mogu)avautvrivanje semanti&kih pogre%aka u iskazima programskog jezika#

    !ompajlerska anali$a G pro+es prikupljanja informa+ija o programu izmeuprikaza izvornih datoteka# '- fazama front end!a analizira se izvorni kodkako bi se izgradio unutarnji prikaz programa, tj# meuprikaz#( Tipi&ne analize sunpr# de8nisanje!kori%tenje i kori%tenje!de8nisanje varijabli i analiza pokaziva&a#Pre+izne analize su osnova za svaku optimiza+iju#

    *ptimi$a"ija G meuprikaz se transformi%e u funk+ionalno ekvivalentne, ali breili manje oblike# Popularne optimiza+ije su pove)anje ulaznih linija, elimina+ijamrtvih kodova, pro%irenje konstanti, transforma+ija petlji, aloka+ija registara###

    Fenerisanje kodaU transformisani meuprikaz jezika se prevodi u izlazni jezik,obi&no istorodni ma%inski jezik sistema# To uklju&uje odluke o resursima sistema i

    pohranjivanju, npr# odlu&ivanje o tome koju varijablu spremiti u registar iBilimemoriju, te odabir i vremenski raspored ma%inskih instruk+ija zajedno snjihovim sistemom za adresiranje#

    Fraf-ki prika$ strukture programa prevodio"a

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    20/141

    6@

    !ompajler vs. )nterpreter

    5nogi ljudi dijele vi%e programske jezike u kompajlirane i interpretirane jezike#$o, u samom programskom jeziku niti jedan dio ne zahtjeva da bude kompajliranili interpretiran#

    ?ompajleri i interpreteri su samo implementa+ije jezika, a ne jezi+i sami#?ategoriza+ija je obi&no odraz najpopularnijih ili najra%irenijih implementa+ija

    jezika# $pr# Aasi+ se smatra interpretiranim jezikom, a kompajliranim, unato&postojanju Aasi+ kompajlera i interpretera#

    )C/RPR/R)U programi prevodio+i, koji za razliku od kompajlera prevode iodmah izvr%avaju svaku naredbu vi%eg programskog jezika# Pomo)u interpreterane moemo dobiti program u ma%inskom jeziku, nego se program svaki putakada ga elimo izvr%iti mora ponovno prevesti interpreterom#

    Da razliku od interpretera, kod kompajlera su izvorni program i prevedeni

    program potpuno odvojeni i pri izvoenju nezavisni# 3ko se izmjeni izvorniprogram, to se ne)e automatski odraziti na izvedbenom programu, nego ga jepotrebno ponovno kompajlirati#

    Prednosti kompajlera. bri rad od interpretera i za%ti)en izvorni program#

    $edosta+i kompajlera. odvojenost prevedenog i izvornog programa#

    S)M&6A/*R RA,A M)!R*PR*%S*RA

    3rhitektura ra&unara!VP

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    21/141

    61

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    22/141

    66

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    23/141

    67

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    24/141

    6C

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    25/141

    6F

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    26/141

    6J

    B "" program sabire dva unijeta+ijela broja B

    :in+lude Wstdio#hX

    int main'(

    Y

    int a, b, +Z

    printf'4-nesi prvi broj . 4(Z

    s+anf'4[d4, \a(Z

    printf'4-nesi drugi broj . 4(Z

    s+anf'4[d4,

    \b(Z + ] a " bZ

    printf'4[d " [d ] [d^n4, a, b, +(Z

    return @Z

    _

    B sum ! najjednostavnija funk+ija u "" koja sabira dva broja B

    B

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    27/141

    6M

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    28/141

    6H

    Startujmo simulator rada P!a```

    http://var/www/apps/conversion/tmp/scratch_7/..%2FParsons&Oja-CD%2FSTART.EXEhttp://var/www/apps/conversion/tmp/scratch_7/..%2FParsons&Oja-CD%2FSTART.EXE
  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    29/141

    6E

    A6F*R)/M)+(ajka o algoritmima

    Pri&u o algoritmima zapo&e)emo onakokako po&inju sve klasi&ne pri&e#

    $ekada davno ivio je u Aagdadu pisa+,

    matemati&ar, astronom i geograf poimenu Mu#ammed ibn Musa al!#oBari$mi#

    2jerovatno nije ni sanjao tamo dalekeHF6# godine, kada je pisao knjigu Kitabal jabr w'al-muqubalada )e od toganastati &ak dva uzroka glavoboljea+ima i studentima dvanaest vijekovanakon toga#

    $jegov al jabrje postala algebra# Isto tako pravila rje%avanja iz po&etkaprvenstveno matemati&kih problema su iskrivljavanjem imena al !#oBari$minazivana algoritmi# $o, tu gre%kama nije kraj#

    Prema korijenu rije&i bilo bi pravilno umjesto algoritmi koristiti algori$mi# 3likako jezik nije nauka nego skup dogovora, izgleda da je dogovoreno da naj&e%)egre%ke postaju jezi&na pravila#

    oko H6F# godine napisao knjigu

    Hidab al%jabr w(al%muubala *+ravila algebarskog prenosa i potiranja)

    K ! 6 ] 16 K ] 16 " 6

    K " > ] > " M K ] M

    - latinskom prevodu knjige '16# vijek( ispred svakog pravila stoji

    i$it -lgorizmi % rekao je -l owarzimi

    algoritam glasi

    - po&etku algoritmom se nazivaju samo pravila ra&unanja s brojevima, kasnije ipravila obavljanja ostalih zadataka u matemati+i,

    u LL vijeku, pojavom ra&unara, pojam se pro%iruje na ra&unarstvo, a zatim i nadruga podru&ja,

    Tako mi danas imamo algoritme, a oni su niz pre!iznih uputa koje na" korakpo korak vode do rje#enja nekog problema# To su zapravo toliko pre+izneupute da za njihovo izvr%avanje nije potrebna inteligen!ija#

    3lgoritam je u matematiku uveo arapski matemati&ar 5uhamed 3l Norezmi#$apisao je knjigu-l Horezmi , o indijskoj vje/tini raunanjagdje u arapskumatematiku uvodi indijske +ifre i de+imalni brojevni sistem# *va knjiga bivakasnije prevedena na latinski kao-lgoritmi de numero indorum#

    *d lo%eg latinskog prevoda njegovog prezimena i poti&e rije& algoritam, i dugo jeozna&avala postupak za ra&un sa de+imalnim brojevnim sistemom'i indijskimodnosno, kako se kasnije pri&alo, arapskim +iframa(#

    http://sr.wikipedia.org/sr-el/%D0%9C%D1%83%D1%85%D0%B0%D0%BC%D0%B5%D0%B4_%D0%90%D0%BB_%D0%A5%D0%BE%D1%80%D0%B5%D0%B7%D0%BC%D0%B8http://sr.wikipedia.org/sr-el/%D0%94%D0%B5%D0%BA%D0%B0%D0%B4%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BChttp://sr.wikipedia.org/sr-el/%D0%9C%D1%83%D1%85%D0%B0%D0%BC%D0%B5%D0%B4_%D0%90%D0%BB_%D0%A5%D0%BE%D1%80%D0%B5%D0%B7%D0%BC%D0%B8http://sr.wikipedia.org/sr-el/%D0%9C%D1%83%D1%85%D0%B0%D0%BC%D0%B5%D0%B4_%D0%90%D0%BB_%D0%A5%D0%BE%D1%80%D0%B5%D0%B7%D0%BC%D0%B8http://sr.wikipedia.org/sr-el/%D0%9C%D1%83%D1%85%D0%B0%D0%BC%D0%B5%D0%B4_%D0%90%D0%BB_%D0%A5%D0%BE%D1%80%D0%B5%D0%B7%D0%BC%D0%B8http://sr.wikipedia.org/sr-el/%D0%94%D0%B5%D0%BA%D0%B0%D0%B4%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BChttp://sr.wikipedia.org/sr-el/%D0%94%D0%B5%D0%BA%D0%B0%D0%B4%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BChttp://sr.wikipedia.org/sr-el/%D0%94%D0%B5%D0%BA%D0%B0%D0%B4%D0%BD%D0%B8_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC
  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    30/141

    7@

    3lgoritam je kona&na i pre+izno de8nisana pro+edura, niz dobro de8nisanihpravila, kojom se ulazne vrijednosti transformi%u u izlazne, ili se opisujeizvr%avanje nekog postupka#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    31/141

    71

    ;ornji naslov jedno je od naj&e%)ih pitanja koje se upu)uje osnovno%kolskomdjetetu kada ga isku%avate u ra&unanju# Isto tako postoji i uzre&i+a da je ne%to4jasno kao dva i dva4#

    3li, da li je ba% sve tako jasno

    5aloprije smo rekli da upute u algoritmu moraju biti tako jasne da se moguizvr%avati i do rje%enja do)i bez imalo inteligen+ije# ?ad ve) nema nimalointeligen+ije mora)emo se posluiti depnim ra&unarom 'kalkulatorom(#

    $i%ta jednostavnije nego otku+ati 4dva i dva4 i dobiti rje%enje#

    /vo nam prvog problema#

    $a kalkulatoru nema 4i4# 5i podrazumijevamo da je 4dva i dva4 zapravo dva vi%edva, da se radio o matemati&koj opera+iji sabiranja#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    32/141

    76

    pro&itajte rezultat

    isklju&ite depni ra&unar

    5islite da je tu kraj Stvari se mogu jo% zakompli+irati#

    ta ako je to model depnog ra&unara bez tastera / koji poni%tava zadnji unosPoku%ajte doraditi gornje upute za takav model depnog ra&unara#

    9e li sada kona&no kraj 5oemo li isklju&iti depni ra&unar

    $e#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    33/141

    77

    Primjer1

    *vo je jedan od najjednostavnijih primjera algoritma napisanog u govornomjeziku 'ne u programskom kdu(# *dreuje da li je zadati broj nparan ili neparan.

    1 P*=$I

    6 Pro&itaj vrijednost n#

    7 Podijeli nsa 6 i zapamti ostatak u ost#

    C 3ko je ost@ idi na stavku M#

    F Ispi%i cnje neparan broj#

    J Idi na stavku H#

    M Ispi%i cnje paran broj#

    H ?39

    ,ijagram toka

    ;ra8&ki prikaz algoritma naziva se dijagram toka#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    34/141

    7C

    Samo u slu&aju rje%avanja najjednostavnijih zadataka, algoritam je pravolinijski,tj# uvijek se izvr%ava u istom slijedu naredbi pa se stoga jo% naziva i slijednialgoritam#

    Primjer slijednog algoritma

    ?orisnik unosi dva broja, brojevi se sabiraju, pa se ispisuje dobiveni zbir#

    Algoritam.

    po&etak upi%i brojeve 3 i A ]3"A ispi%i zbir kraj

    $apomena.Treba uo&iti da se bez obzira na ulazne brojeve naredbe uvijek izvr%avaju istimredoslijedom#

    ,ijagram toka

    Frananje

    Tok programa &esto zavisi od ulaznih podataka ili od meurezultata obrade#

    Struktura kod koje se zavisno od stanja podataka odvija jedan od mogu)ihdijelova 'grana( programa, ima naziv grananje#

    Dapisivanje algoritama

    3lgoritmi kojima smo se bavili u pro%lim slajdovima mogu se zapisati na vi%ena&ina, a dva naj&e%)a su pseudokodi dijagram tokapodataka#

    Pseudokod je algoritam zapisan rije&ima# P"eudodolazi od gr&kog la, lani,nadri, nazovi, tobonji###

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    35/141

    7F

    Kodje skup dogovorenih znakova kojima moemo oblikovati neku poruku,komuni+irati#

    - programiranju se pod kdom podrazumijeva izvorni program napisan u nekomprogramskom jeziku#

    Prema tome, na% pseudokod bi bio program 4lanjak4# Da%to pseudo 9er uputene pi%emo u nekom od programskih jezika ve) dogovorenim rije&ima i znakovimaiz govornog jezika#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    36/141

    7J

    - matemati+i varijabla je neka promjenjiva veli&ina, a u na%em programu to )ebiti mjesto u radnoj memoriji koje je rezervisano za broj koji sabiremo#

    - na%em primjeru )e nam trebati tri takva mjesta# $eka to budu varijable ai bzabrojeve koje sabiremo i "za rezultat#

    Poku%ajmo sada ponovno da napi%emo pseudokod.

    - tre)em redu na%eg pseudokoda izraz za sabiranje varijabli a i b napisali smomalo naopako od onoga kako bismo dva broja sabrali na papiru#

    Isto tako taj tre)i red ne bismo pro&itali kao u matemati+i + je jednako a " b#

    Sjetimo se da radimo s mjestima rezervisanim u glavnoj memoriji# Tako sadrajmjesta u memoriji za rezultat + postaje jednak zbiru sadraja mjesta u kojima sumemorisani brojevi a i b# Dato to i &itamo +po"taje a " b#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    37/141

    7M

    ;ra8&ki prikaz je jednostavan, pregledan, lako se pronalaze gre%ke#

    $adalje, problem se moe jednostavno analizirati, usporediti s nekim drugimproblemom i skratiti vrijeme pronalaenja rje%enja#

    /vo osnovnih simbola dijagrama toka.

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    38/141

    7H

    Simboli dijagrama toka se povezuju streli+ama koje pokazuju tok podataka#

    Smjer streli+a je odozgo prema dole iBili na desno iBili na lijevo#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    39/141

    7E

    ;rananje

    $a alost, u stvarnom ivotu zbivanja ne teku tako jednostavno kao %to su topravolinijski algoritmi#

    Ponekad treba stati, razmisliti, usporediti neke stvari i donijeti odluku kako dalje#

    Takvo mjesto u algoritmu zove se grananje#

    Simbol za grananje je romb# *bi&no se u gornji vrh upi%e upitnik i u sredini sepostavi logi&ki uslov#

    Petlje

    $ekada su nastavni+i imali obi&aj nesta%ne studente kanjavati tako da bi imzadali da 1@@ puta napi%u u svesku!biljeni+u. 4$e)u nikada vi%e brbljati na &asuStrukture podataka i algoritmi4# Damislite da je nama neko dao takvu kaznu#

    5i )emo se probati izvu)i tako da to ra&unar odradi umjesto nas#

    Treba mu samo zadati da 1@@ puta ispi%e jednu te istu poruku# $i%tajednostavnije# /vo rje%enja.

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    40/141

    C@

    $eki zlobni+i tvrde da napredak moemo zahvaliti samo ljudskoj ljenosti# $aime,ljudi )e sva%ta izmisliti samo da ne moraju raditi# Tako je neko izmislio jo%

    jednostavnije rje%enje za na% primjer s ispisom 1@@ poruka#

    Izrada algoritama zahtijeva puno vjebe# 3lgoritmi se ne mogu na%trebati#Potrebno je rije%iti puno primjera, od jednostavnijih do sve sloenijih#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    41/141

    C1

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    42/141

    C6

    - tabeli nema rije&i za obradu podataka jer za to obi&no koristimo izraze koji nisuni%ta drugo nego prepisane npr# matematske formule#

    Idemo probati da napi%emo pseudokod za na% 4dva i dva4 iz prethodnelek+ije#

    3li, vi%e ne)emo koristiti depni ra&unar nego )emo algoritam napisati kao dapi%emo program, odnosno upute pravom ra&unaru.

    *vdje )emo malo zastati# 3ko bismo napisali upi%i 6 tada bi na% algoritam biosamo za sabiranje 6 i 6 i +ijeli svoj ivot bi radio samo to#

    a&unarski programi se pi%u %to op)enitije, pa )emo i mi poku%ati napisatialgoritam za sabiranje bilo koja dva broja# ?ako ne moemo predvidjeti koja )edva broja neko poeljeti da sabere, mora)emo umjesto brojeva koristitivarijable#

    - matemati+i varijabla je neka promjenjiva veli&ina, a u na%em programu to )e

    biti mjesto u radnoj memoriji koje je rezervisano za broj koji sabiremo#

    - na%em primjeru )e nam trebati tri takva mjesta# $eka to budu varijable ai bzabrojeve koje sabiremo i "za rezultat#

    Poku%ajmo sada ponovno da napi%emo pseudokod.

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    43/141

    C7

    - tre)em redu na%eg pseudokoda izraz za sabiranje varijabli a i b napisali smomalo naopako od onoga kako bismo dva broja sabrali na papiru#

    Isto tako taj tre)i red ne bismo pro&itali kao u matemati+i + je jednako a " b#

    Sjetimo se da radimo s mjestima rezervisanim u glavnoj memoriji# Tako sadraj

    mjesta u memoriji za rezultat + postaje jednak zbiru sadraja mjesta u kojima sumemorisani brojevi a i b# Dato to i &itamo +po"taje a " b#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    44/141

    CC

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    45/141

    CF

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    46/141

    CJ

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    47/141

    CM

    Petlje

    $ekada su nastavni+i imali obi&aj nesta%ne studente kanjavati tako da bi imzadali da 1@@ puta napi%u u svesku!biljeni+u. 4$e)u nikada vi%e brbljati na &asu

    Strukture podataka i algoritmi4# Damislite da je nama neko dao takvu kaznu#

    5i )emo se probati izvu)i tako da to ra&unar odradi umjesto nas#

    Treba mu samo zadati da 1@@ puta ispi%e jednu te istu poruku# $i%tajednostavnije# /vo rje%enja.

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    48/141

    CH

    $eki zlobni+i tvrde da napredak moemo zahvaliti samo ljudskoj ljenosti# $aime,ljudi )e sva%ta izmisliti samo da ne moraju raditi# Tako je neko izmislio jo%

    jednostavnije rje%enje za na% primjer s ispisom 1@@ poruka#

    Izrada algoritama zahtijeva puno vjebe# 3lgoritmi se ne mogu na%trebati#Potrebno je rije%iti puno primjera, od jednostavnijih do sve sloenijih#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    49/141

    CE

    3lgoritmi i programi

    program ! opis algoritma koji u nekom programskom jeziku jednozna&noodreuje %to ra&unalo treba napraviti

    programiranje ! nau&iti sintaksu nekog pro+eduralnog jezika i ste)i osnovna

    intuitivna znanja iz algoritmiza+ije problema opisanog rije&imaalgoritmi " strukture podataka ] programi 'irth(

    kako osmisliti algoritme kako strukturirati podatke kako formulirati algoritme kako veri8+irati korektnost algoritama kako analizirati algoritme kako provjeriti 'testirati( program

    Postup+i izrade algoritama nisu jednozna&ni te zahtijevaju i kreativnost# Ina&e bi

    ve) postojali generatori algoritama# Dna&i da se 'za sada( gradivo ovogpredmeta ne moe u potpunosti algoritmizirati# ?oristi)e se programski jezik #Da saeti opis sloenijih algoritama moe se koristiti pseudokod#

    Da svaki programski jezik propisana su pravila slaganja klju&nih rije&i u naredbe#Takva se pravila nazivaju sintaksa# 3ko se ne zadovolji propisana sintaksa,program )e biti neispravan i ne)e se mo)i izvr%iti#

    $ajprostiji primjer algoritma iz svakodnevnog ivota je kuhanje &aja.

    Staviti lona+ sa vodom na vatru, =ekaj dok voda ne proklju&a,

    Pazi da voda ne pokipi, ?ada proklju&a voda ugasiti vatru, Staviti vre)i+e &aja u vodu, 3ko eli% dodaj %e)er, Poslui se#

    &S6*V) DA A6F*R)/AM

    Ta&nost U daje ta&no rje%enje za sve mogu)e ulaze i problemske situa+ije

    Arzina U mora dati ta&an rezultat u odreenom vremenskom perioduazumljivost U mora biti shvatljiv i primjenjiv i u drugim okolnostima#

    Ca-ini prika$a algoritma

    ;ovorom Tekstom!pisan rije&ima ;ra8&ki Pseudokodom ?odom

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    50/141

    F@

    *S*()C A6F*R)/AMA

    !ona-nost G svaki algoritam treba da se zavr%i nakon razumnog kona&nog brojakoraka,

    ,efnisanost U svaki algoritam mora biti pre+izno de8nisan 'nedvosmislen(,ta&no odreen svaki korak,

    Svaki algoritam ima ula$iz nekog skupa podataka tj#podatke nad kojima radi#-laz mora biti pre+izno de8nisan,

    Svaki algoritam mora da ima i$la$'odgovor(, problem je rje%iv ili nerje%iv# 3ko jerje%iv, onda dobijamo to rje%enje,

    3ektivnost da se algoritam moe efektivno izraziti tj#opera+ije koje se javljaju ualgoritmu moraju biti bazi&ne 'jasne, razumljiv za &ovjeka(, tako da bi se mogleobaviti od strane &ovjeka, putem papira i olovke#

    !6AS))!A%)4A A6F*R)/AMA

    !lasifka"ija prema na-inu implementa"ije Rekur$ivni i interativni

    Serijski i paralelni

    ,eterministi-ki i sto#asti-ki

    Rekur$ivni algoritam poziva samoga sebe sve dok ne postigne odreeni uslov#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    51/141

    F1

    )nterativni algoritmi ne pozivaju sami sebe ve) se oslanjaju na konstruktepoput petlji da bi rije%ili problem#

    5nogo dana%njih ra+unara sadri samo jedan pro+esor pa prema tome obavljanaredbe jednu po jednu, tj.serijiski. 3lgoritmi dizajnirani za rad u takvomokruenju nazivaju se serijski algoritmi#

    Suprotno serijskim algoritmima nalazeseparalelni koji sa sve ve)omupotrebom vi%epro+esorskih ra&unara dobijaju ve)i zna&aj# *ni rje%avajuprobleme ras+jepkano na vi%e manjih dijelova koje na kraju spajaju u rezultat

    ,eterministi-ki algoritamje algoritam koji )e pri svakom izvr%avanju u bilokojim uslovima od istog unosa do)i do istog izlaza slijede)i svaki put identi&an niznaredbi#

    Sto#asti-ki algoritamje algoritam koji u bar jednom dijelu izvr%avanja doneseneku odluku slu&ajnim odabirom#

    S0I9/< 'niz(U skup jednog ili vi%e koraka algoritma koje se jedan za drugimizvr%avaju

    ;3$3$j/ ! odluka koju od dvije ili vi%e sekven+i treba izvr%iti s obzirom napostavljeni uslov

    P*$320j3$j/ U slijed algoritamskih koraka koji se provodi odreeni broj puta, svedok se ne ispuni odreeni uslov#'petlje!for, Ohile, repeat(

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    52/141

    F6

    Implementa+ija algoritma u 2A

    PI59/.

    P*=/T3? 'svaki algoritam ima samo jedan po&etak(

    -PII, -03D, -=IT39, -$/SI 'ovo bi bile prikladne rije&i za unos podataka da lipreko tastature, mi%a ili bar!kod &ita&a ili neke druge ulazne jedini+e(

    ISPII, ID03D 'ispis podataka na monitoru(

    ?39 'broj instruk+ija u algoritmu mora biti kona&an, svaki algoritam mora imatikraj i to samo jedan kraj(

    Poslije ovog prikaza pseudokoda a na osnovu ovih prikladnih rije&i prikaza)emoprimjer pseudokoda za sabiranje dva broja

    I5P0/5/$T3I93 u 2isual Aasi+!u

    Publi+ lass Gorm1 Private Sub TeKtAoK7TeKthanged'A>2al sender 3s S>stem#*bje+t, A>2al e3s S>stem#/vent3rgs( Nandles TeKtAoK7#TeKthanged

    /nd Sub

    Private Sub Autton1li+k'A>2al sender 3s S>stem#*bje+t, A>2al e 3sS>stem#/vent3rgs( Nandles Autton1#li+k

    TeKtAoK7#TeKt ] Int'TeKtAoK1#TeKt( " Int'TeKtAoK6#TeKt(

    /nd Sub

    /nd lass

    Primjer.

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    53/141

    F7

    3lgoritam za unos dva broja i prikazivanje manjeg#

    Po&etak

    -laz 'a, b(

    3ko a Xb onda Izlaz aIna&e izlaz b

    ?raj

    Daklju&ak

    3lgoritmi su oblasti ra&unarske nauke koja pretenduje da postane osnovna ijedina nau&na oblast u razvoju programa#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    54/141

    FC

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    55/141

    FF

    Strukturna teorema

    nestrukturirano programiranje U %pageti kod,

    strukturirano programiranje U sistemati&ne strukture kao i u realnom okruenju,manja apstraktna barijera,

    objektno programiranje U objekti i poruke, jo% blie realnosti, ali osnova ustrukturiranom pristupu,

    4trukturna teorema, 1EJJ# godine, orrado Aoehm i ;iuseppe 9a+opini.

    7je/enje bilo kojeg problema, koji je po svojoj prirodi rje/iv pomou raunara,mo1e se izraziti kao superpozicija sljedei& struktura8

    sekvence, selekcije, i iteracije.

    Sekven"a

    nakon zavr%etka jedne opera+ije, izvr%ava se naredna,

    poklapa se sa radom P-,

    jednostavna implementa+ija,

    malo je vjerovatno da bude jedina struktura u algoritmu, programu,

    naj&e%)e je superponirana unutar drugih struktura,

    poluselek"ija

    G jedna alternativa toku i$vravanja'

    i3 =uslov

    opera"ija1OalterOiliOblokL

    puna selek"ijaU grananje toka u dva podtoka,

    i3 =uslov

    opera"ija1Ota-noOiliOblokL

    else

    opera"ija2Oneta-noOiliOblokL

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    56/141

    FJ

    viestruka selek"ija

    U grananje u vi%e tokova,

    sBit"#=vrijednost "ase v1 op1L

    breakL

    "ase v2 op2L

    breakL

    Q.

    de3ault opCL

    )tera"ija

    sa i$laskom na vr#u' '1' 2' Q

    B#ile=uslov

    opera"ijaOiliOblokL

    3or=initLuslovLfnis

    opera"ijaOiliOblokL

    sa i$laskom na dnu' 1' 2' Q

    do

    opera"ijaOiliOblokL

    B#ile=uslovL

    sa i$laskom u sredini'

    U kombina+ija dva prethodna tipa,

    B#ile=1

    opera"ija1L TT 1' 2' Q

    if'uslov( breakL

    opera"ija2L TT ' 1' 2' Q

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    57/141

    FM

    Podalgoritmi

    posljedi+a modularnosti,

    algoritam koji rje%ava jedan aspekt problema i biva angaovan od straneglavnog algoritma ili drugog podalgoritma,

    superordiniran i subordiniran,

    minimalne kopulativnosti a maksimalne kohezije,

    Cota"ije $a predstavljanje algoritama

    $ije samo osmisliti, treba zapisati da ga i drugi vide#

    $ota+ije za predstavljanje algoritama mogu biti

    $/G*530$/ U ivi jezik, slike, 32 U uputstva, kuvar

    G*530$/ U manje dvosmislene, obu&enost &itao+a,

    U ;3GI=?/, skup gra8&kih simbola, kognitivni, laki, puno prostora,

    blok dijagram algoritma, dijagram strukture programa

    U T/?ST-30$/, skup slubenih rije&i, obu&enost, manje prostora,

    pseudokodovi U o&erupani programski jezik, 3

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    58/141

    FH

    S/R&!/&R P*,A/A!A

    Strukture

    Struktura 'slog( podataka je skup vi%e promenljivih koje su grupisane podzajedni&kim imenom radi lak%e manipula+ije# Strukture pomau u organizovanju

    sloenih podataka tako %to omogu)avaju grupisanje meusobno povezanihpromenljivih na takav na&in da se one posmatraju kao +jelina, a ne kaopojedina&ni entiteti#

    Primer strukture moe biti dosije studenta koji sadri ime, prezime, adresu, brojindeksa itd# /lementi struktura mogu biti takoe strukture#

    $a primjer, dosije studenta moe da sadri i podatke o poloenim ispitima iostvarenim o+jenama#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    59/141

    FE

    Povezana lista

    Povezana lista 'linked list( je ni%ta drugo nego niz elemenata, od kojih svaki ima6 polja# - jednom je vrijednost elementa 'ono %to bi bilo na tom mjestu uobi&nom nizu(, a u drugom pokaziva& na sljede)i element niza# Dadnji elementpokazuje na $-00#

    Prednosti ovakve strukture podataka su uba+ivanje i izba+ivanje elemenata izliste u vremenskoj sloenosti *1)#

    vrijedi za dovoljno veliki n.

    *9) : *log n) : *n) : *nlog n) : *n ) : *n@@n A *n > < > B > ...> n A n*n>9)' A n ' > n' A *n)

    5as# tabele + 5e tabela

    Nash tabele '&as& tables( nastaju heshiranjem elemenata# $aime, svaki elementkoji elimo smjestiti u ovu strukturu podataka he%iramo, tj# sra&unamo vrijednostkoju neka hash funk+ija daje za njega, i smjestimo na to mjesto u tabelu#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    60/141

    J@

    Primjer. Treba zapamtiti imena u&enika nekog razreda i jo% neki podatak osvakom, re+imo broj telefona# Primjer hash funk+ije je, re+imo, zbir 3SIIvrijednosti svih slova u imenu po modulu veli&ine tabele '%to je najpoeljnije nekiprost broj(# 3ko je to mjesto ve) zauzeto, dodajemo jo% jedan unos u isto polje'moemo hash tabelu dakle pamtiti kao matri+u, ili kao niz povezanih listi, %to je

    bolja implementa+ija(# Sada kad trebamo na)i 5arkov broj telefona, sabra)emo3SII vrijednosti slova u rije&i 45arko4, uzeti tu vrijednost po modulu veli&inetabele, i traiti na tom mjestu u hash tabeli#

    Prednost ove strukture podataka je vrijeme pristupa elementu *1)#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    61/141

    J1

    320 drvo je 4izbalansirano4 binarno drvo pretrage# - njemu je razlika visinalijevog i desnog pod!drveta za svaki &vor najvi%e 1# $aime, pri svakom dodavanjuili izba+ivanju elemenata, obra)a se panja da drvo ostane izbalansirano kao %to

    je re&eno, pri &emu se za taj korak ne smije potro%iti vi%e od *log n)vremena#Sloenosti svih opera+ija su kod ovakvog drveta uvijek ta&no *log n)#

    Neap ! Nip

    Neap je jo% jedna vrsta binarnog stabla, kod koga je zadovoljen uslov da su dje+asvakog &vora uvijek ve)a ili jednaka od samog tog &vora 'moe se praviti iobrnuto, da su dje+a uvijek ve)a od o+a(#

    Nip je binarno stablo koje zadovoljava uslov hipa. klju& svakog &vora ve)i je ilijednak od klju&eva njegovih sinova#

    *va struktura podataka ima izuzetno %irok spektar upotrebe# $aime, &esto jepotrebno u svakom trenutku znati koji je najmanji element nekog niza# ?oriste)iheap, ovu informa+iju imamo u *1)'to je ustvari prvi element u heap!u(#-pdate!ovanje heap!a, %to )e re+i izba+ivanje ili uba+ivane elementa, radi se u*log n)#

    Primjene #ip+a

    6ista sa prioritetom dinami&ki skup &iji elementi se uklanjaju po redosleduveli&ina, po&ev od najve)eg#

    $a primjer, objekat sa najve)im prioritetom se nalazi u korenu heap!a i trivijalnose uzima iz strukture# 3li ako se ukloni korijen, tada ostaju dva podstabla imoraju se eEkasno spojiti ujedno stablo koje )e ponovo imati heap "voj"tvo$

    ?orist od upotrebe heap strukture zasniva se na svojstvu da se moe izvaditiobjekat najvi%eg prioriteta i uba+iti za *=logn% vremena$

    5eap Sort od kolek+ije elemenata kreira se heap za '*'n(( vremena i potom seuklanjaju elementi iz heap!a, a svako uklanjanje ima sloenost propor+ionalnuvisini heap!a, tj# '*'log n((, te ukupna sloenost je '*'n log n((#

    2.1 Vrste struktura podataka

    Student )e biti sposoban da prepozna i reprodukuje osnovne vrste strukturapodataka

    Strukture podataka su sloeni tipovi podataka

    $astaju primjenom apstrak+ije agrega+ije, tj# objedinjavanjem vi%e jednostavnijihtipova podataka

    Svaka konkretna vrijednost strukture podataka je jedna in"tan!aodgovaraju)egtipa

    $pr# 'Pero Peri), 1C7B6@@E, C( je jedna instan+a strukture podataka kojom sepredstavljaju studenti

    Vrste struktura podataka

    Svaka konkretna vrijednost strukture podataka se sastoji od jednostavnijihdijelova, koji predstavljaju njene elemente

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    62/141

    J6

    /lementi mogu biti prosti ili sloeni, tj# strukture podataka za sebe

    $a taj na&in se mogu graditi proizvoljno sloene strukture

    $pr# zapis 'Petra Peri), 1C7B6@@E, C( se sastoji od tri polja elementa.

    Ime ! niz znakova 'sloen tip( Aroj indeksa! niz znakova 'sloen tip( ;odina studija U +eo broj 'prost tip(

    /lementi u strukturi podataka mogu biti u nekom meusobnom odnosu 'rela+iji(

    Stoga se struktura podataka moe formalno de8nisati kao ureen par S ]'/, r(

    / je skup elemenata

    r je binarna rela+ija de8nisana nad / kojom je ureen skup /

    Pojedine vrste struktura podataka se izvode na osnovu toga kakav je njihov

    meusobni odnos, tj# kakve su osobine rela+ije r$ajvanija osobina rela+ije r je kardinalno"t, tj# koliko elemenata odgovara

    jednom elementu u datoj strukturi i obrnuto

    $a osnovu kardinalnosti rela+ije r mogu se de8nisati sljede)e vrste struktura.

    @.@ 'ne postoji ureenje( ! kolek+ije i skupovi 1.1 'linearno ureenje( ! linearne strukture 1.5 ! stabla 5.5 ! grafovi i mree

    !olek"ije i skupovi

    /lementi u strukturi nemaju meusobni odnos, tj# kardinalnost rela+ije r je @.@

    Samo se moe znati da li je neki element u strukturi ili ne

    Aliske su pojmu skupa iz matematike, pa se tako i nazivaju

    Skupnema duplikate 'jedan isti element ne moe biti dva puta &lan skupa(

    !olek"ija moe imati duplikate 'jedan isti element moe biti dva puta &lanskupa(

    6inearne strukture

    /lementi u strukturi su linerano ureeni, , tj# kardinalnost rela+ije r je 1.1

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    63/141

    J7

    *sim jednom posebnom elementu koji se naziva prvi, svakom elementu prethodita&no jedan element

    *sim jednom posebnom elementu koji se naziva posljednji, svakom elementusledi ta&no jedan element

    Stabla+#ijerar#ijske strukture

    /lementi u strukturi su hijerarhijski ureeni, tj# kardinalnost rela+ije r je 1.5

    *sim jednom posebnom elementu koji se naziva korijen, svakom elementuprethodi ta&no jedan element

    Svakom elementu moe slijediti vi%e elementa

    Fra3ovi ili mree

    /lementi u strukturi su ureeni bez ograni&enja, tj# kardinalnost rela+ije r je 5.5

    Svakom elementu moe prethoditi vi%e elemenata

    Svakom elementu moe slijediti vi%e elementa

    Daklju&ak

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    64/141

    JC

    $avedene op%te strukture podataka pokrivaju sve mogu)e slu&ajeve

    Svaka konkretna struktura podataka u praksi se svodi na neku od navedenih

    Dbog toga je za rje%avanje problema u programiranju dovoljno poznavati kako sesvaka od navedenih op%tih struktura implementira

    a, to je upravo predmet izu&avanja ovog kursa`

    $avedite koja ja najvanija osobina rela+ije koja de8ni%e ureenjeelemenata u strukturi podataka

    - &emu je razlika izmeu skupa i kolek+ije - &emu je razlika izmeu lineranih struktura, stabala i grafova Po &emu je poseban prvi element u lineranoj strukturi, a po &emu

    posljednji ta je korijen stabla

    !lasifka"ija struktura podataka

    PRMA C)V*& APS/RA!%)4

    1. 6*F)! S/R&!/&RU matemati&ki objekti,

    2. PR*FRAMS! S/R&!/&RU ista logi&ka razli&ito na programskom jeziku,

    @. )D)! S/R&!/&RU organizovane po mjeri hardvera,

    PRMA /)P& R6A%)4

    1. 6)CARCA S/R&!/&RAU 1 prethodi i 1 slijedi,

    2. S/R&!/&RA /)PA S/A(6AU 1 prethodi i @, 1 slijede,

    @. MRUCA S/R&!/&RAU $ prethodi i 5 slijedi,

    PRMA M4S/& MM*R)SAC4A

    1. *PRA/)VC S/R&!/&RU u memoriji koja je u direktnoj sprezi sa P-,2. S/R&!/&R CA MAS*VC*4 MM*R)4)U &uvaju podatke#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    65/141

    JF

    *perativne strukture podataka

    poda+i organizovani tako da njihova obrada bude e8kasnija,

    klasi8kovane u odnosu na osnovne opera+ije izvr%ive nad njima. pristupelementu strukture, dodavanje i brisanje elementa iz strukture

    U S?303I,

    U ST3TI=?/ ST-?T-/,

    I$

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    66/141

    JJ

    pokaziva&ki tip '( je podatak za adresnu aritmetiku,

    nabrojani tip 'enum( de8ni%e 61Jkorisni&kih vrijednosti,

    RA6C) =ra$lomljeni

    osnovne ta&nosti 'oat(, obi&no 8zi&ki zauzimaju dvostruko vi%e bitova odosnovnog +jelobrojnog tipa 'int(,

    dvostruke ta&nosti 'double ili nekada zapisivan kao long oat(, obi&no 8zi&kizauzimaju dvostruko vi%e bitova od osnovnog realnog tipa 'oat(,

    vi%estruke ta&nosti 'long double(, obi&no 8zi&ki zauzimaju najvi%e bitova ,

    U 0*;I=?I tip, true ili false, uobi&ajen u ogromnoj ve)ini jezika

    P*!AD)VA!)

    Tretira se kao skalar u jeziku, nosi indirektan podatak U adresu memorijskeloka+ije gdje je stvarni podatak,

    Primjer.

    $abrojani tip

    4e skalarni u % je$iku jer svaku nabrojanu vrijednost kodira 1 bitnimbrojem'

    $a primjer.

    enum Y$e,

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    67/141

    JM

    t>pedef enum 2ojni+kiin T2ojni+kiinZ

    t>pedef enum mjese+i Y9an]1, Geb, 5art, 3pr, 5aj, 9uni, 9uli, 3vg, Sept, *kt, $ov,

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    68/141

    JH

    rad sa realnim brojevima nije, moe se pojaviti broj s beskona&nomnogo +ifara

    uz razumijevanje problema kojeg rje%ava i sa znanjem programiranja, studentmoe napisati efektivan algoritam

    +ilj ovog predmeta je nau&iti kako se oblikuje i programira efektivanalgoritam#

    razlika izmeu zna&enja rije&i efektivan 'djelotvoran( i e8kasan

    e3ektivan] ono %to smo dobili sadri sve %to smo traili

    efkasan] uspje%an s obzirom na utro%ene resurse ! vrijeme, pro+esor,disk, memoriju(

    mnoenje se moe svesti na ponavljanje sabiranja U efektivno, ali nije e8kasno`

    Pro"edura

    pro+edura je postupak koji ima sva svojstva kao i algoritam, ali koji se ne morazavr%iti u kona&nom broju koraka

    primjer. na)i zbir svih prirodnih brojeva

    primjeri pro+edura.

    operativni sistem ra&unara editor teksta

    vrijeme izvoenja mora biti 4razumno4

    primjer.

    algoritam koji bi izabirao potez igra&a %aha tako %to bi ispitao sve mogu)eposljedi+e tog poteza, zahtijevao bi milijarde godina rada i na najbrem

    zamislivom ra&unaru

    Algoritmi i programi

    $iklaus irth. Program ] 3lgoritam " Strukture podataka

    Program ! opis algoritma koji u nekom programskom jeziku jednozna&noodreuje %to ra&unar treba napraviti

    Programiranje U pro+es prevoenja op%teg rje%enja problema u ra&unarski &itljivoblik

    kako osmisliti algoritam kako strukturirati podatke kako formalno spe+i8+irati algoritam

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    69/141

    JE

    kako veri8kovati algoritam kako analizirati algoritam kako provjeriti napisani program

    Postup+i izrade algoritama nisu jednozna&ni# Trae kreativnost`

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    70/141

    M@

    matemati&ki model, speciEkacija, skupa objekata zajedno sa skupom opera+ijakoje su de8nisane u tom modelu

    Struktura podataka

    implementacijaapstraktne strukture podataka u nekom programskom jeziku

    Implementa+ija obuhvata i pitanja predstavljanja konkretnog podataka umemoriji ra&unara

    /ip podataka

    ozna&ava pripadnost nekog podataka, kao ureenog skupa vrednosti, odreenojapstraktnoj strukturi podataka, ali u praksi i njenoj implementa+iji odnosnoprogramskoj strukturi podataka

    Spe"ifka"ija i implementa"ija

    Da isti apstraktni tip podataka obi&no se moe smisliti vi%e razli&itih

    implementa+ija koje se razlikuju po tome %to koriste razli&ite strukture podatakaza prikaz podataka, odnosno razli&ite algoritme za izvr%avanje opera+ija

    Spe+i8&nosti implementa+ije u pro+eduralno orijentisanim jezi+ima i objektnoorijentisanim jezi+ima

    u pro+eduralno orijentisanom jeziku podatak kao objekat je vidljiv spoljai programer je odgovoran za pravilnu upotrebu odgovaraju)eg kdaopera+ije,

    u objektno orijentisanom jeziku podatak je enkapsuliran 'za&auren( iprogramer samo bira neku od unaprijed dozvoljenih opera+ija 'metoda( zarad sa podatkom

    Primitivni tipovi podataka

    3pstraktne strukture podataka su generaliza+ija primitivnih struktura podataka, aapstraktne pro+edure generaliza+ija primitivnih opera+ija

    Primitivni tipovi podataka

    prirodni brojevi, +ijeli brojevi, realni brojevi

    Primitivne opera+ije

    sabiranje, oduzimanje, mnoenje ####

    /ipovi podataka

    Tip podataka u pro+eduralnom jeziku odreuje domen de8nisanosti kao skupmogu)ih vrijednosti podatka

    *perandi i rezultati mogu)ih opera+ija su poda+i odreenih tipova

    primjer. podatak tipa int moe uzeti vrijednost samo iz skupa +ijelih brojeva#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    71/141

    M1

    - praksi.

    3pstraktna struktura podataka je kon+ept u domenu analize problema, dok jestruktura podataka kon+ept u domenu programiranja

    Program K Algoritam W Strukture podataka

    Struktura podataka

    skup varijabli u nekom programu i veza meu tim varijablama

    3lgoritam

    kona&ni niz naredbi, od kojih svaka ima jasno zna&enje i moebiti izvr%ena u kona&nom vremenu

    iste naredbe mogu se ponavljati bilo ekspli+itnim navoenjem ilikori%)enjem odgovaraju)ih naredbi za ponavljanje

    2aan uslov `

    za bilo koje vrijednosti ulaznih podataka algoritam mora dazavr%i rad nakon kona&nog broja koraka

    lementi od koji# se grade strukture podataka

    Strukture podataka reprezentuju razli&ite tipove podataka u radnoj memorijira&unara

    Strukture podataka mogu biti razli&ite sloenosti

    Strukture podataka se mogu meusobno povezivati, tako %to se manje +jelineudruuju u ve)e

    Strukture podataka se meusobno povezuju vezama

    /lementi od kojih se grade strukture podataka.

    elija, Polje, Slog, Pointer 'pokaziva&(, ?ursor#

    Strukture podataka se gra8&ki prikazuju dijagramima

    This se+tion OeRll provide an overvieO, in the form of a table, of the major datastorage stru+tures OeRll be dis+ussing in this book# This is a birdRs!e>e vieO of alands+ape that OeRll be +overing later at ground level, so donRt be alarmed if itlooks a bit m>sterious#

    Table 1#1 shoOs the advantages and disadvantages of the various datastru+tures

    des+ribed in this book#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    72/141

    M6

    Xelija

    Struktura podataka koji promatramo kao zasebnu +jelinu, varijabla

    Podatak, pa time i pripadaju)a )elija podatka, je odreenog tipa

    Dasebna +jelina je relativan pojam, ne%to se u jednom trenutku moe smatrati)elijom, a kasnije se moe gledati unutra%nja graa te iste +jeline

    Svaka )elija ima svoj tip i adresu

    ;ra8&ki prikaz )elije.

    Polje 'arra> u !u(#

    2id mehanizma za udruivanje manjih dijelova strukture podataka u ve)e

    Polje &ini vi%e )elija podataka istog tipa postavljenih na susjednim memorijskimadresama

    Aroj )elija je unaprijed zadat i nepromjenljiv

    9edna )elija se zove element polja i jednozna&no je odreena pripadnomvrijedno%)u indeksa

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    73/141

    M7

    Po ugledu na programski jezik , uzimamo da su indeksi @, 1, 6, ### , $!1, gdje je$ +jelobrojna konstanta#

    ;ra8&ki prikaz polja.

    Slog ili $apis=stru+ture u !u(

    5ehanizam za objedinjavanje jednostavnijih struktura podataka

    Slog sadri vi%e )elija, istog ili razli&itog tipa, koje su zapisane na susjednimmemorijskim loka+ijama

    Aroj, redosljed i tip )elija je unaprijed zadan i nepromjenljiv

    Pojedina )elija se zove komponenta zapisa

    Polja i zapisi se mogu kombinirati

    $a primjer. polje zapisa, zapis &ije pojedine komponente su polja, polje od polja,

    zapis &ija komponenta je zapis, i sli&no#;ra8&ki prikaz sloga.

    Pointer ili poka$iva-

    Slui za uspostavljanje veze izmeu dijelova strukture

    Pointer je posebna )elija koja pokazuje na neku drugu )eliju

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    74/141

    MC

    Sadraj pointera je adresa )elije koju treba pokazati

    ;ra8&ki prikaz pokaziva&a.

    !ursor

    Takoe slui za uspostavljanje veze izmeu dijelova strukture

    ?ursor je )elija tipa int, +jelobrojna veli&ina, koja pokazuje na element nekogpolja

    Sadraj kursora je indeks elementa kojeg treba pokazati

    ;ra8&ki prikaz kursora.

    Slijedi primjer za apstraktni tip podataka#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    75/141

    MF

    "!alar!bilo koji tip za koji su de8nisane opera+ije sabiranja i mnoenja

    !omple&!poda+i ovog tipa su ureeni parovi podataka tipa "!alar

    opera+ija 31(, z6 oblika 'K6,>6(, dobiva se z7 oblika 'K7,>7(, tako dabude K7]K1"K6, >7]>1">6

    primjer Apstraktni tip podataka %*MP6>

    opera+ija 5-0T'z1,z6,\z7( !za zadate z1,z6 tipa !omple&ra&una njihovumnoak z7, takoer tipa !omple&

    6(, dobiva se z7 oblika 'K7,>7(, takavda je K7]K1K6!>1>6, >7]K1>6">1K6

    primjer Apstraktni tip podataka %*MP6>

    Spe+i8ka+ija. struktura podataka pogodna za prikaz kompleksnog broja bila biformalno u programskom jeziku spe+i8+irana kao tip !omple&.

    t>pedef stru+t Y

    s+alar reZ

    s+alar imZ

    _ *5P0/LZ

    ;ra8&ki prikaz strukture podataka.

    ?ompletna implementa+ija apstraktnog tipa podataka *5P0/L se sastoji odprethodne de8ni+ije tipa podataka *5P0/L

    t>pedef stru+t Y

    s+alar reZ

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    76/141

    MJ

    s+alar imZ

    _ *5P0/LZ

    kao i od implementa+ija opera+ija nad poda+ima tipa *5P0/L u formi funk+ijaoblika.

    void 3

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    77/141

    MM

    Pro"eduralne apstrak"ije

    Predstavljaju pro%irenje skupa opera+ija implementa+ionog sredstva 'jezika ilira&unara(

    ealizuju se preko pro+edura i funk+ija u programskom jeziku

    Primjer

    sin'K(, izra&unajPlatuadnika'r(

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    78/141

    MH

    Apstrak"ije podataka

    Podatak je nosila+ informa+ije# Informa+ija je protuma&eni podatak#

    ?onkretna vrijednost podatka se moe tretirati kao predstava nekog objekta izrealnog sistema#

    $pr.

    F !X predstavlja temperaturu

    'Pera, 1C7BHF, F( !X predstavlja studenta

    Apstrak"ije podataka G Ca-ini apstra#ovanja

    Postoji tri na&ina apstrahovanja.

    ?lasi8ka+ija, 3grega+ija i

    ;eneraliza+ija3pstrak+ije podataka U ?lasi8ka+ija

    Svi objekti istih osobina se klasi8kuju u jedan tip

    npr# io broj 'int(, Student

    Tip podatka se de8ni% e se kao skup objekata 'vr ijednosti( i opera+ija nad njima#

    Int . D, Y", !, , _

    Student. S, YupisiSemstar, poloziIspit, _

    Tipovi se mogu posmatrati . Prema na&inu implementa+ije Prema sloenosti

    Tipovi prema na&inu implementa+ije.

    1# Gizi&ki tipovi

    tipovi podrani od strane ra&unara 'hardvera(Z npr. int, +har

    6# 9ezi&ki 'virtuelni( tipovi

    tipovi podataka koji su podrani od straneimplementa+ionog jezikaZ

    npr. zapis, niz

    7# 3pstraktni tipovi podataka '3TP(

    pro%irenje skupa tipova implementa+ionog sredstvaZ npr. student, radnik

    Tipovi prema sloenosti.

    1# Prosti 'primitivni( tipovi

    2rijednost prostog tipa je nedjeljiva npr. int !X F

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    79/141

    ME

    Sloeni 'strukturni( tipovi

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    80/141

    H@

    $pr# -pisiSemestar's(, s. Student ili S. 2anredniStudent

    Pristup u programiranju koji koristi generaliza+iju naziva se objektnoorijentisano programiranje, a programski jezi+i koji podravaju generaliza+ijuobjektno orijentisani je$i"i

    ;enerazliza+ija se djelimi&no moe implementirati i u klasi&nim jezi+ima

    3pstraktni tipovi podataka '3TP( su korisni&ki tipovi podataka kod kojih je

    sakriven na-inimplementa+ije de8nisani su od strane programera i predstavljaju pro%irenje skupa

    tipova datog programskog jezika

    2idljiva je samo spe"ifka"ija3TP

    azdvajanje spe+i8ka+ije od implementa+ije

    $a&in realiza+ije interne strukture podataka za predstavljanje i pam)enjevrijednosti datog 3TP i algoritama za spe+i8+irane opera+ije 3TP!a je sakriveno

    5ogu)e su razli&ite realiza+ije istog 3TP```

    - modernim ** jezi+ima 'npr# 9ava, :( spe+i8ka+ija 3TP se daje preko kon+eptainterfejsa

    Interfejs de8ni%e skup opera+ija koje se mogu pozivati nadvrijednostima datog tipa

    *pera+ije se mogu odnositi na osobine 'atribute( ili predstavljatineko pona%anje objekata iz realnog svijeta

    Primjer spe+i8ka+ije 3TP preko 9ava interfejsa

    interfa+e Aankovnia+un Y

    double Stanje'(Z

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    81/141

    H1

    void -lozi$ova+'double iznos(Z

    void Podigni$ova+'double iznos(Z

    _

    )nter3ejs

    Interfejs de8ni%e samo sintaksu tj# na&in kori%)enja 'pozivanja( opera+ija

    Semantika 'zna&enje( nije obuhva)ena interfejsom

    Prava potpuna spe+i8ka+ija obuhvata i sintaksu i semantiku

    Spe+i8ka+ija semantike je poseban problem

    !lase

    - modernim ** jezi+ima '9ava, :( 3TP se realizuje preko kon+epta klase !lasa de8ni%e skup metoda kojima se implementiraju opera+ije

    datog tipa

    *buhvata i de8nisanje privatnih &lanova kojima se pamte vrijednostidatog tipa

    9edna klasa moe implementirati vi%e tipova 'tj# interfejsa(

    ProgramirajteQ u %+u+ i Struktura programa u %+u

    Programski jezik razvijen je u 3T\T Aell laboratories, s +iljem da se stvoriprogramski jezik koji )e omogu)iti brzo i e8kasno programiranje#

    S obzirom da se ta 8rma bavila sistemskim programiranjem, novi programskijezik trebao je biti na dovoljno niskom nivou da rije%i probleme koji su se do tadauglavnom rje%avali u 3SS/5A0/!u, ali i na dovoljno visokom nivou da bi seiskoristile sve prednosti vi%ih programskih jezika#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    82/141

    H6

    ditor turbo %+a

    -laskom u direktorij u kojem je smje%ten programski jezik 'naj&e%)e(*R6AC,%(, potrebno je u)i u direktorij ()C, te sa b"pokrenuti program#

    $akon toga se na monitoru pojavljuje tzv# osnovni ekran, koji se sastoji od &etiri

    dijela. !osnovni izbor !prozor za ureivanje teksta i status linija !prozor za poruke prevodio+a !kratki pregled zna&enja vru)ih tipki

    *p+ije osnovnog izbora aktiviraju se istovremenim pritiskom na tipku 30T i tipkupo&etnog slova eljene op+ije, ili tipkom G1@ i streli+ama#

    Izborom op+ije ileotvara se prozor s dodatnim izborom za rad s datotekama idirektorijima 'neO, open, save, save as, save all, +hange dir, print, dos shell,

    uit(#Standardne op+ije za kopiranje, brisanje, undo, te shoO +lipboard nalaze se umeniju dit#

    Traenje i zamjena teksta neke su od op+ija menija Sear"##

    *p+ija prevoenja i izvr%avanje programa nalazi se u meniju Run, a samoprevoenje u meniju %ompile#

    - meniju ,ebugpotavljaju se razne op+ije programa za pronalaenje iispravljanje gre%aka, a menij Proje"tslui za aktiviranje i deaktiviranje programa&iji se kd nalazi u vi%e datoteka# *ptionsslui za postavljanje razli&itih op+ija

    prevodio+a i 0inkera, a 9indoB za ureenje radnog okruenja#

    Struktura programa u %+u

    $ajpogodniji na&in rje%avanja programskih problema je rastavljanje problema uniz manjih, meusobno povezanih +jelina '"trukturno programiranje(# *vajpristup rje%avanja problema podran je i u !u#

    Programi u !u sastoje se od niza meusobno povezanih funk+ija# Aroj funk+ijanije ograni&en#

    - programu je obaveznajedna i samo jedna funk+ija ! funk+ija main=# *naozna&ava mjesto na kojem po&inje izvr%avanje programa# Da poziv funk+ijedovoljno je navesti njezino ime#

    Sve funk+ije koje se koriste u ve)ini programa smje%tene su u biblioteke funk+ija#

    unk"ije

    Gunk+ija je nezavisna sekven+a kda koji izvodi neko izra&unavanje# Sastoji se izC dijela. tipa rezultata, imena funk+ije, liste parametara i tijela funk+ije#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    83/141

    H7

    Fip rezultata funk+ije obi&no predstavlja rezultat dobijen izra&unavanjem# Tiprezultata funk+ije main*)je +ijeli broj# 2rijednost koju kao rezultat daje funk+ijamain*) pokazuje da li je program uspje%an# -obi&ajeno je da funk+ija main*) kaorezultat daje @, %to ukazuje na uspje%nost# 2rijednost razli&ita od nule pokazujeda ne%to nije u redu#

    0mefunk+ije bira programer i idealno je da ono pokazuje 'aso+ira( %ta funk+ijaradi# $a primjer, imena funk+ije main '( i sort '( su prili&no dobra imena# 0o%aimena su f '( i g '(, jer ne informi%u o tome %ta funk+ija radi#

    main nije klju&na rije& jezika# 5eutim sistem za prevoenje 'kompajler( kojiizvr%ava program o&ekuje da funk+ija main *) bude de8nisana# 3ko se onaizostavi, program ne)e raditit#

    Gista parametara funk+ije se stavlja u zagrade i dolazi iza imena funk+ije# 3ko ulisti parametara nema ni&ega, kao main *), to pokazuje da funk+ija ne prihvataparametre#

    0ista parametara je obi&no lista tipova, odvojenih zarezom, koje korisnik predajefunk+iji kada se ona izvr%ava 'obi&no se kae da je korisnik pozvao ili pokrenuofunk+iju(#

    $a primjer, ako pi%emo funk+iju ma$ *) koja u rezultatu treba da vrati ve)i oddvije vrijednosti , njena lista parametara treba da identi8kuje tipove dvijevrijednosti koje elimo da uporedimo# Gunk+ija maK '( za poreenje dvije+jelobrojne vrijednosti mogla bi da se de8ni%e ovako.

    int maK ' int val1, int val6 (

    Y

    B ovdje dolazi kod programa #B

    _

    Fijelofunk+ije se stavlja u viti&aste zagrade 'Y_(# *no sadri kod koji obezbjeujeizra&unavanje funk+ije#

    $akon svake naredbe u !u mora stajati znak Lta&ka!zarez, koji ozna&ava krajjedne i po&etak druge naredbe#

    $iz naredbi grupisanih u jednu logi&ku +jelinu predstavlja blok naredbi#

    +oetak bloka ozna&ava se sa {, azavr/etaksa }#Sve varijable koje se koriste u programu moraju se deklarisati, obi&no na po&etkuprograma ili funk+ije,prije prve izvr/ne naredbe#

    Tekst napisan izmeu B B je komentari ne uti&e na tok izvr%avanja programa#?omentar moe da bude duga&ak nekoliko linija pri &emu svaku od njih nemoramo posebno da uokvirimo sa B B #

    ?omentar je namijenjen &itao+u programa i tokom kompajliranja

    Programski jezik nije pozi+ioni 'kao npr# G*T3$(, %to zna&i da kd moepo&eti u bilo kojoj koloni, te da se naredbe, izrazii komentarimogu protezati uvi%e programskih linija#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    84/141

    HC

    $a% prvi zadatak je da napi%emo poruku na korisnikovom terminalu# -laz i izlaznisu unaprijed de8nisani dijelovi jezika 'i ""(# *ni su podrani objektnoorijentisanom hijerarhijom klasa, implementiranom na jeziku '""( kao dionjegove standardne biblioteke#

    lasaje korisni&ki de8nisan tip podatka# 5ehanizam klasa je metod dodavanjatipova podataka koje na% program prepoznaje# *bjektno orijentisana hijerarhijaklasa de8ni%e familiju srodnih tipova klasa, kao %to su ulaz sa terminala ili izdatoteke, izlaz na terminal ili u datoteku itd#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    85/141

    HF

    Y

    int a,bZ

    +lrs+r'(Z

    printf'4^n -pisi dva broja. 4(Zs+anf'4[d,[d4,\a,\b(Z

    'aWb( printf '4^n 2e+i je [d4,b( . printf '4^n 2e+i je [d4,a(Z

    get+h'(Z

    _

    ?lju&na rije& void koristi se da navede ili da funk+ija ne uzima argumente ili dane vra)a vrijednost#

    Gunk+ija za u&itavanje jednog znaka sa tastature. get"#='njen prototip nalazi seu datote+i "onio.#(#

    *vakvom upotrebom funk+ije get+h'( postie se to da nakon izvr%avanjaposljednje naredbe ispred funk+ije get+h program &eka u&itavanje znaka satastature, odnosno ekran sa rezultatima izvoenja programa ostaje vidljiv dopritiska bilo kojeg tastera#

    Svi na%i programi )e se sastojati od jednog fajla izvornog!kda#

    9edan izvorni!kd 8le je &esto sve %to trebate, naro&ito za male programe, ali vi

    takoe moete podijeliti izvorni kd, za jedan program, na dva ili vi%e 8le!ova,praksa nazvana kao modularno programiranje.

    Povratni tip funk+ije spe+i8+ira tip podatka koji funk+ija vra)a pozivaju)emprogramu# Povratni tip moe biti bilo koji od !ovih podatkovnih tipova. +har, int,long, oat, ili double#

    Takoe koriste)i povratni tip void moete de8nisati funk+iju koja ne vra)avrijednost#

    /vo par primjera.

    int func9*...) ' Iraa tip int. ' oat func*...) ' Iraa tip Joat. ' voidfunc

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    86/141

    HJ

    Dnak Zn obezbjeuje prelazak u novi red

    Sljede)i kodnije i"pravan.

    printf'4hello, Oorld

    4(Z Isto to samo malo druga&ijejeste.

    :in+lude Wstdio#hX

    main'(

    Y

    printf'4hello, 4(Z

    printf'4Oorld4(Z

    printf'4^n4(Z_

    print3 =H[d [3 [\.@3ZnString podatak Q.

    Gunk+ijaprintf nalae ra&unaru ispisivanje na ekran# *no f nagla%ava da jeispisivanje 3ormatirano#

    Prvi argument funk+ijeprintf je format koji opisuje na&in na koji )e vrijednostiostalih varijabli biti ispisane# Slijedi lista varijabli razdvojenih zarezima# Svakavarijabla iz ovog spiska mora da bude opisana ta&no jednom stavkom formata#Svaka stavka zapo&inje znakom za pro+enat#

    )ormatiza uitavanjei i"pi"podataka.

    Spe+ijalne sekven+e

    Zn novi red

    Zt tabulator

    Zb povratnik 'ba+kspa+e(

    ZY navodnik

    ZZ za obrnutu +rtu 'ba+kslash(

    2arijable, konstante i aritmeti&ki izrazi u !u

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    87/141

    HM

    SP/IGI?3I9/ ?*$2/DI9/

    [d prikazati kao dekadni +io broj

    [d prikazati kao dekadni +io broj u polju od bar J znakova

    [3 prikazati kao broj sa pokretnim zarezom

    [3 prikazati kao broj sa pokretnim zarezom u polju od barJ znakova

    [.23 prikazati kao broj sa pokretnim zarezom sa dvijede+imalne +ifre

    [.23 prikazati kao broj sa pokretnim zarezom u polju od barJ znakova sa dvije de+imalne +ifre

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    88/141

    HH

    )dentifkatori' klju-ne rije-i i tipovi podataka

    )dentifkatori su imena koja se dodjeljuju varijablama, funk+ijama, i sl# Sastojese od niza alfanumeri&kih znakova 'brojke i slova(#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    89/141

    HE

    /ipovi podataka

    podrava pet o"novnih tipova podataka# To su. $nakovni' "jelobrojni'realni' realni dvostruke pre"i$nosti i tip podataka koji ne vra0a =nesadri vrijednost.?lju&ne rije&i koje ih odreuju su. "#ar, int, ]oat, doublei

    void# Tip podataka koji ne sadri vrijednost svrstan je u osnovne tipove podatakajer se &esto koristi kod provjere tipova podataka, za de8nisanje funk+ije bezargumenata i funk+ija koje ne vra)aju nikakvu vrijednost#

    Pravilnim izborom tipa podataka moe se pove)ati e8kasnost programa# Stogatipove podataka treba zadavati zavisno od opsega koji )e odreena varijablapoprimiti tokom izvoena programa#

    *snovni tipovi podataka mogu sepreciznije deEnisati pomo)u modiEkatora,koje )emo spominjati kada se za to pojavi potreba#

    3ko je podatak znak, njegova oznaka tipa je !har# Podatak tipa +har jepredstavljen jednim znakom unutar jednostrukih navodnika ili 3SII vrijedno%)utog znaka#

    o +har slovo3 ] R3RZo +har S0*2*3 ] JFZ

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    90/141

    E@

    Flobalne varijable deklari%u se izvan svih funk+ija i mogu se koristiti u +ijelomprogramu, dok se lokalnevarijable deklari%u na po&etku funk+ije ili se deklari%ukao argumenti funk+ije i dostupne su samo u toj funk+iji 'ili bloku naredbi(#

    Izvan funk+ije ili bloka lokalne varijable na postoje#

    Imena lokalnih varijabli u razli&itim funk+ijama 'blokovima( mogu biti ista#

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    91/141

    E1

    3ko se u programu poku%a promijeniti vrijednost konstante, prilikom prevoenja)e program prevodila+ 'engl# compiler( javiti pogre%ku#

    +ritmetiki operatori

    sabiranjje "

    oduzimanje !

    mnoenje

    dijeljenje B

    modulo [ 'ostatak +jelobrojnog dijeljenja(

    Prioritet. modulo, mnoenje i dijeljenje, pa sabiranje i oduzimanje# ?od operatoras istim prioritetom tok izvr%avanja ide s lijeva na desno# Prioritet izvr%avanjaopera+ija moe se mijenjati upotrebom zagrada#

    Izraz K[> daje ostatak pri dijeljenju K sa >, a jednak je nuli ako je K djeljivo sa >#*perator [ ne moe biti pridruen tipovima oat i double#

    &-itavanje i ispis podataka

    Programski jezik nema ugraene ulaznoBizlazne funk+ije, nego se ulaz i izlazpodataka obavljaju preko funk+ija koje se nalaze u standardnoj ulaznoBizlaznojbiblioteci#

    Programi koji koriste standardne ulaznoBizlazne funk+ije moraju sadravati liniju

    _in"lude`stdio.#

    koja se obi&no nalazi na po&etku programa#

    Sve -BI funk+ije nalaze se u datote+i stdio#h

    Standardna funk+ija zaispis podataka je print3=

    ?omanda za ispis niza znakova je. print3 =Yni$ $nakovaYL

    Primjer 1

    :in+ludeWstdio#hX

    main'(

    Y

    printf '4*d danas programiramo u !u4(Z

    _

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    92/141

    E6

    Program se pokre)e kombina+ijom tipki %/R6+:ili preko menija biraju)i op+ijuRunRun#

    3ko elimo li samo da provjerimo ima li na% program 'formalnih( gre%aka'naravno, ne logi&kih(, biramo %ompile%ompile'A6/+:(

    $akon izvoenja programa vra)a se u prozor u kojem je kd programa, aprozor sa rezultatima ostaje nevidljiv#

    3ko elimo da vidimo rezultate izvoenja programa treba da pritisnemokombina+iju tipki

    30T!GF#

    Dadatak Ispisati na ekran svoje ime, prezime i adresu, svaki podatak u novired#

    )spis vrijednosti varijabli

    print3=Ylista 3ormataY'lista varijabliL

    npr. ispisati vrijednosti varijabli a i b koje su +jelobrojnog tipa#

    printf'4[d [d4,a,b(Z

    ako elimo elimo da u ispisu varijable budu odvojene zarezom pisa)emo.

    printf'4[d, [d4,a,b(Z

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    93/141

    E7

    main'(

    Y

    printf '4*d danas programiramo u !u4(Z

    get"#=L_

    *vakvom upotrebom funk+ije get+h'( postie se to da nakon izvr%avanjaposljednje naredbe ispred funk+ije get+h program &eka u&itavanje znaka stastature, odnosno ekran sa rezultatima izvoenja programa ostaje vidljiv do

    pritiska bilo koje tipke#unk"ija $a 3ormatirani unos podataka

    Gunk+ija za formatirani unos podataka je s"an3=#

    s"an3=Ylista 3ormataY'lista varijabliL

    ?ao i kod funk+ije printf'( u listi formata upisuju se formati za tip varijabli, a ulisti varijabli popis imena varijabli istim redosljedom kao u popisu formata#

    S obzirom da se u !u varijable koje se nalaze u popisu varijabli prenose putemadrese, osim imena varijable treba dodati i adresni operator ispred imena,

    npr.

    s"an3=Y[d'[dY' a'bL

    Kapomena8 3ko su oznake formata odvojene zarezom, prilikom u&itavanjavrijednosti varijabli potrebno ih je takoe odvojiti zarezom#

    3ko nema zareza vrijednosti se odvajaju razmakom#

    B Prikazuje zaukruzivanje realnog broja prilikom ispisa =[.23( B

    :in+lude Wstdio#hX

    main'(Y

    oat KZ

    printf'4-nesi realan broj . 4(Z

    s+anf'4[f4,\K(Z

    printf'4Aroj zaokruzen na dvije de+imale je .[.23n4, K(Z

    _

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    94/141

    EC

    +rimjer8Da zadate duine strani+a pravokutnika ispisati opseg i povr%inu datogpravokutnika#

    :in+lude Wstdio#hX

    :in+lude W+onio#hX

    main'(

    Y

    oat a,b,p,oZ

    +lrs+r'(Z

    printf'4^n upisi duine strani+a a i b ^n4(Z

    s+anf'4[f[f4, \a, \b(Z

    o]6'a"b(Z

    p]abZ

    printf'4^n Povrsina pravokutnika iznosi [.234,p(Z

    printf'4^n *pseg pravokutnika iznosi [.234,o(Z

    get+h'(Z

    _

    ;rananje4ednostruko uslovno grananje

    *p%ti oblik za jednostruko uslovno grananje programa je.

    i3 =uslov

    {

    blok naredbiL

    }

  • 7/25/2019 Strukture Podataka i Algoritmi Skripta SVE

    95/141

    EF

    3ko je uslov ispunjen izvr%ava se blok naredbi, koji se moe sastojati od jedne ilivi%e naredbi#

    3ko se blok naredbi sastoji od jedne naredbe, oznake za po&etak i kraj bloka nisuneophodne

    +rimjer8

    Bu+itava broj i ispisuje da li je ve+i, manji ili jednaknuliB

    :in+lude Wstdio#hX

    :in+lude W+onio#hX

    int aZ

    main'(

    Y

    +lrs+r'(Zprintf'4u+itaj jedan broj. 4(Z

    s+anf'4[d4,\a(Z

    if '