strukture podataka i algoritmi skripta sve
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 '