SlideShare a Scribd company logo
1 of 33
Download to read offline
Leonardo Miljko
www.ckm.ba - Leonardo Miljko
Prezentacija nastala na osnovu knjige:
Brano Markić i Dražena Tomić,
Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008.
Algoritmi i
strukture podataka
Algoritam
DEFINICIJA POJMOVA
• Datafile (datoteka podataka) - skup podataka pomoću kojih se
modelira neki realan objekt
• Slog (record) - je dio datoteke podataka, dio koji tvori datoteku
podataka
• Entitet - podrazumijeva se sve što se može jednoznačno odrediti,
identificirati i razlikovati. Tako široko postavljena definicija
pokazuje da entitet može biti svaki „realan“ ili „apstraktan“ objekt
o kojem u određenom trenutku razmišljamo.
• Polje (field) je dio sloga. Više polja tvori slog. Općenito, svako polje
sadrži jedan tip podataka.
• Ključ (key) omogućuje pretraživanje i pronalaženje slogova.
www.ckm.ba - Leonardo Miljko
DEFINICIJA POJMOVA
Struktura podataka Prednosti Nedostaci
Nesortirano polje
(array)
Brzo umetanje
podataka, brzo
pronalaženje podataka
pomoću
Indeksa.
Unaprijed poznat broj
elemenata (veličina).
Sporo brisanje
podataka
Sortirano polje (array) Brzo pretraživanje. Sporo umetanje.
Red (queu) Ponaša se po načelu prvi
ušao, prvi izišao.
Spor pristup članovima
reda.
Stog (stack) Ponaša se po načelu
posljednji ušao, prvi
izišao.
Spor pristup članovima
stoga.
Povezane liste Brzo umetanje i
brisanje.
Sporo pretraživanje.
www.ckm.ba - Leonardo Miljko
DEFINICIJA POJMOVA
Struktura podataka Prednosti Nedostaci
Binarna stabla Brzo pretraživanje,
umetanje i brisanje.
Algoritam brisanja je
složen.
Crveno-crna stabla Brzo pretraživanje,
umetanje i brisanje.
Složenost
2-3-4 stabla Brzo pretraživanje,
umetanje i brisanje.
Složenost
Hash tablica Brzi pristup, ako je
poznat ključ. Brzo
umetanje podataka .
Sporo brisanje i
neučinkovita
uporaba memorije.
Gomila (heap) Brzo brisanje, umetanje. Spor pristup podacima.
www.ckm.ba - Leonardo Miljko
Algoritam
• U procesu programiranja načela na temelju kojih se
ulazni podaci (veličine) transformiraju u izlazne podatke
(veličine) zovu se algoritam.
• Algoritam se ne odnosi samo na programiranje, on je
pojmovno šira procedura koja se odnosi i na druge vrste
problema.
• Algoritam se definira kao konačan niz nedvosmislenih
koraka koji su izvodljivi, i ako se slijede, dovode do
rješenja problema.
www.ckm.ba - Leonardo Miljko
Algoritam
Uvjetno sve faze razvoja programa mogu se podijeliti,
sažeti u dvije:
• faza rješavanja problema
– definiranje zadatka obrade,
– konstrukcija algoritma (dizajn programa) i
– testiranje ispravnosti algoritma,
• faza implementacije
– kodiranje,
– testiranje (izvršavanje programa na računalu),
– dokumentiranje i
– održavanje
www.ckm.ba - Leonardo Miljko
Algoritam
Svaki algoritam ima sljedećih pet bitnih osnovnih svojstava:
• ulaz,
• izlaz,
• konačnost,
• definiranost i nedvosmislenost (određenost),
• efikasnost (efektivnost).
www.ckm.ba - Leonardo Miljko
Algoritam
Svaki algoritam ima određena svojstva:
• koraci moraju biti slijedni i nedvosmisleni. Nedvosmisleni znači da
nakon izvođenja jednog koraka uvijek je poznat sljedeći korak.
• daju točno rješenje u svim slučajevima. Za svaku kombinaciju
ulaznih vrijednosti izlaz mora biti točan.
• broj koraka je konačan. Algoritam ne smije tijekom izvođenja ući u
beskonačnu petlju. On mora imati kraj. Svaki korak algoritma
može trajati samo jedan konačan vremenski interval
• koraci algoritma moraju biti izvedivi za određeni procesor. Korake
može izvoditi osoba, računalo, mehanički uređaj i sl. Takva
instanca za izvođenje algoritma se naziva procesor
• efikasnost.
www.ckm.ba - Leonardo Miljko
Algoritam
Najčešći pristup razvoju algoritma je odozgo prema dolje ili
metodološki pristup koji se zove profinjenje u koracima.
Prema tom pristupu algoritam se dijeli u određen broj
podproblema, podprocesa koji opisuju pojedine dijelove
problema.
Zatim se razvijaju algoritmi za pojedine podprocese koji su
jednostavniji od cijelog procesa.
Proces završava kada se unutar algoritama slože koraci
koje razumije procesor (onaj koji izvodi algoritam –
računalo, čovjek i sl.).
www.ckm.ba - Leonardo Miljko
Algoritam
Struktura algoritma
Svaki algoritam bi trebao imati sekcije (dijelove) u
sljedećem redoslijedu:
• Zaglavlje: Naziv algoritma ili naslov.
• Deklaracija : Kratak opis algoritma i
varijabli.
• Tijelo: Niz koraka.
• Kraj algoritma: Naredba kraj.
www.ckm.ba - Leonardo Miljko
Algoritam
Algoritam se može zapisati kao pseudokod uporabom šest osnovnih
operacija:
1. Naredbe unosa i čitanja podataka
• Tipične naredbe pseudokoda za prihvaćanje naredbi su:
• Read ime (čitaj ime)
• Get ime (pribavi ime)
• Read broj 1, broj 2
2. Naredbe izlaza i ispisa podataka
• Print ime
• Write „Prosjek je“, Prosjek
www.ckm.ba - Leonardo Miljko
Algoritam
3. Naredbe za aritmetičke operacije
• Add Broj To Zbroj ili
• Zbroj = Zbroj + Broj
• Prosjek = Zbroj/Brojač
• Plaća= Broj sati rada * satnica
• Neto plaća= bruto plaća – porezi i doprinosi
4. Naredbe pridruživanja vrijednosti varijablama (inicijalizacija)
• Postavi Brojač na 0 ili pridruži Brojaču 0
• Pridruži varijabli Vrijednost rezultat operacije množenja :
• Vrijednost = Cijena * Količina
www.ckm.ba - Leonardo Miljko
Algoritam
5. Računalo može usporediti dvije vrijednosti i odabrati jednu od
dvije moguće akcije
• If B < 0 Then
• Dodaj 1 negativnom broju B
• Else
• Dodaj 2 nenegativnom broju B
• End If
6. Računalo može ponavljati niz akcija dok se ne ispuni određeni
uvjet ili dok je određeni uvjet ispunjen
• Ponavljaj dok je A < = 50
• Read A
• Write A
• A dodati 1 (A=A+1)
• Kraj
www.ckm.ba - Leonardo Miljko
Algoritam
Program zapis nekoga algoritma u nekom programskom jeziku, pri
čemu procesor mora poznavati rječnik i gramatiku jezika kojim je
opisan algoritam.
Sintaksa jezika je skup gramatičkih pravila koja određuju kako se
simboli mogu u jeziku rabiti.
Narativni opis koraka algoritma je pseudokod.
Algoritam se može prikazati različitim tehnikama:
• Prirodni jezik
• Pseudokod
• Dijagrami toka (flowcharts)
• Nassi-Sneiderman dijagrami
• Jackson strukturni dijagrami
www.ckm.ba - Leonardo Miljko
Algoritam
Prirodni jezik
• Prirodnim jezikom se algoritam zapisuje navođenjem rednog broja
koraka i kratkim opisom koraka na hrvatskom (prirodnom) jeziku.
Primjer zapisa izračunavanja aritmetičke sredine niza brojeva:
Korak 1. Zapiši niz brojeva: 7, 5, 23, 3, 7.
Korak 2. Prebroj dužinu niza. (Za koliko brojeva izračunavamo
prosjek? Odgovor: 5).
Korak 3. Zbroji elemente niza (brojeve): 7+ 5+ 23+ 3+ 7 = 45.
Korak 4. Podijeli zbroj s brojem elemenata u nizu: 45:5 = 9.
Glavna prednost uporabe prirodnog jezika je jednostavnost učenja i
potpuno prirodni prikaz algoritma. Nedostaci su vezani za
prevođenje iz prirodnog u računalni (programski) jezik jer su
rečenice često duge i treba ih zamijeniti odgovarajućim
naredbama jezika čija je sintaksa strogo definirana.
www.ckm.ba - Leonardo Miljko
Algoritam
Pseudokod
• Pseudokod je narativni oblik prikaza logike programa koji dizajniramo.
Rabi prirodni, neformalizirani programski jezik izmiješan s
formaliziranim strukturama iz programskog jezika na kojem se temelji
pseudokod. Primjer: Program izračunava bruto i neto plaću
P: BEGIN
unijeti broj redovnih sati u tijeku mjeseca za radnika n
unijeti satnicu za redovni rad
unijeti prekovremeni rad
unijeti cijenu prekovremenog rada
izračunati bruto plaću
unijeti postotak poreza
izračunati poreze i neto plaću radnika n
ispisati izračunati iznos poreza i neto plaće radnika n
GOTO P ;
KRAJ www.ckm.ba - Leonardo Miljko
Algoritam
Pseudokod
• Navedeni primjer prikazuje pseudokod kojim se opisuje algoritam
za obračuna bruto plaće, poreza i neto plaće svakog radnika.
Pseudokod u obliku jednostavnih izjavnih rečenica izražava korake
algoritma, a njih program treba slijediti u rješavanju postavljenog
problema.
• Pseudokod je kompromis između prirodnog jezika i programa jer
zadržava u opisu koraka algoritma rečenice prirodnog jezika (što je
prihvatljivo čovjeku) i nastoji ih oblikovati što bliže naredbama
programskog jezika (što je prihvatljivo računalu).
www.ckm.ba - Leonardo Miljko
Algoritam
Dijagrami toka (flowcharts)
• U fazi izgradnje algoritma često se koraci prikazuju pomoću
odgovarajućih simbola. To su dobro poznati dijagrami toka. Oni su
grafički prikaz koraka potrebnih za rješenje postavljenog zadatka.
• Dijagram toka se služi grafičkim simbolima koji su međusobno
povezani. Unutar simbola upisuje se riječima i simbolima
prirodnog jezika odgovarajuća operacija.
www.ckm.ba - Leonardo Miljko
Algoritam
Dijagrami toka (flowcharts)
www.ckm.ba - Leonardo Miljko
Algoritam
Nassi-Sneidermanovi dijagrami
Nassi-Sneidermanovi dijagrami se služe grafičkim simbolima kao i
dijagrami toka. Algoritam se smješta u samo jedan pravokutnik.
Koraci algoritma se izvršavaju slijedno. Počinju prvim simbolom na
vrhu pravokutnika a potom slijede ostali simboli do posljednjeg na
dnu pravokutnika.
Simbol se služi ili pseudokodom ili prirodnim jezikom za opis naredbi.
Tri su vrste simbola: sekvencija, selekcija i petlja.
www.ckm.ba - Leonardo Miljko
Algoritam
Jackson strukturni dijagrami
Jacksonovi strukturni dijagrami se temelje na ideji podjele zadatka na
jednostavnije dijelove.
Imaju posebne grafičke simbole za osnovne algoritamske strukture:
sekvenciju, selekciju i petlju (iteraciju).
www.ckm.ba - Leonardo Miljko
Algoritam
Logičke strukture
Svaki algoritam je moguće napisati uporabom triju osnovnih
kontrolnih struktura - triju logičkih struktura:
• sekvencija
• selekcija
• petlja (iteracija).
Uporabom tih triju kontrolnih struktura mogu se pisati tzv.
strukturirani programi, odnosno takvo programiranje je
strukturirano programiranje.
• Strukturirano programiranje temeljeno je na ideji da svaki
program rabi jednostavne upravljačke strukture koje imaju jedan
ulaz i jedan izlaz.
www.ckm.ba - Leonardo Miljko
Algoritam
Logičke strukture
• Sekvencija
U strukturi sekvencije (ponekad se zove i slijed naredbi) naredbe se
izvršavaju jedna iza druge. Programski koraci su povezani serijski.
Jedan programski korak slijedi za drugim
www.ckm.ba - Leonardo Miljko
Korak 1
Korak 2
Algoritam
Logičke strukture
• Selekcija
Struktura selekcije vezana je za donošenje odluka u programu,
odnosno za ispitivanje uvjeta. Uvjet koji se testira, unaprijed je
poznat. Ovisno od rezultatu testiranja program se nastavlja
izvoditi po jednoj ili drugoj grani uvjeta.
www.ckm.ba - Leonardo Miljko
Uvjet
(IF)
THEN
(Obrada 1)
ELSE (Obrada 2)
Algoritam
Logičke strukture
• Iteracija (petlja)
• Iteracija se ponekad zove i struktura petlje (loop). Ona je jedan od
najsloženijih problema u proceduralnim jezicima koji utječe na
kvalitetu softvera. To je upravljačka struktura koja uzroči
izvršavanje skupine naredbi više puta.
• Struktura petlje opisuje aktivnost u kojoj se proces ponavlja dok
se postavljeni uvjet ne zadovolji.
• Struktura petlje ima više varijanti:
– For-Next u Visual Basicu,
– Do u Fortranu,
– While i For u Pascalu itd.
www.ckm.ba - Leonardo Miljko
Algoritam
Logičke strukture
• Iteracija (petlja)
dva oblika logičke strukture petlje:
Do While Do Until
www.ckm.ba - Leonardo Miljko
Ne
Da
Do Until
Tijelo naredbi
Tijelo naredbi
Ne
Da
Do While
Struktura
Do While
Algoritam
Složenost algoritma
• Algoritam je detaljan opis rješenja problema, niz slijednih i
nedvosmislenih koraka koje u konačnom vremenu može izvršiti
neki procesor.
• Algoritam je uporabljiv ako se rezultat dobije u konačnom
vremenu.
• Početni objekti su unaprijed definirani i nad njima se obavljaju
operacije.
• Rezultat algoritma su završni objekti ili rezultati .
• Algoritmi nisu iste složenosti i svrha analize složenosti algoritama
je predvidjeti vrijeme u kojem se algoritam može izvršiti.
• Krajnji cilj je izgraditi algoritam koji će biti efikasan.
www.ckm.ba - Leonardo Miljko
Algoritam
Složenost algoritma
Analiza algoritma
• Cilj analize algoritma je procijeniti vrijeme izvršavanja algoritma.
Vrijeme je drugi naziv za broj operacija koje program mora
obaviti. Matematički se prikazuje funkcijom oblika T(n) pri čemu n
reprezentira broj (skup) ulaznih objekata algoritma.
• Analiza može biti:
• A priori analiza nastoji unaprijed procijeniti vrijeme izvršavanja
algoritma kao funkciju određenih argumenata. A priori analiza je
neovisna o računalu, programskom jeziku i prevoditelju.
• A posteriori analiza je iskustveni pristup. To je točno vrijeme
izvršavanja algoritma koje mjeri i prikazuje računalo.
www.ckm.ba - Leonardo Miljko
Algoritam
Složenost algoritma
O-notacija
Na temelju danog primjera pretpostavit će se da je za algoritam n2
potrebno 10 sekundi za obraditi 1000 brojeva (ulaza). Koliko će
biti potrebno vremena tom algoritmu obraditi 10000 brojeva? U
obliku jednadžbe, vrijeme potrebno za obradu n brojeva T(n) je
umnožak neke konstante K (ta konstanta ovisi o snazi računala) i
složenosti algoritma . Složenost algoritma opisuje funkcija f(n):
T(n) = K * O ( f(n) )
gdje je T(n) vrijeme za n brojeva
K je konstanta proporcionalnosti
O ( f(n) ) je red veličine određen funkcijom f(n).
www.ckm.ba - Leonardo Miljko
Algoritam
• Rekurzija
Procedura se zove rekurzivna ako poziva samu sebe. Ona je prirodan
način opisa algoritma. Upravo zato mnogi se programi služe
rekurzijom. U LISP-u, Prologu, LOGO-u i drugim jezicima umjetne
inteligencije rekurzivne procedure ili funkcije pišu se relativno
jednostavno.
U jezicima treće generacije pisanje rekurzivnih procedura povezano
je s uporabom parametara pa se moraju primjenjivati razni
programerski trikovi! Najčešće se za primjer rekurzije navodi
izračunavanje faktorijela.
• Da bi se izračunao faktorijel od broja N, potrebno je slijediti korake:
• Ako je N =1, faktorijel je 1. Inače, da bi se izračunao faktorijel od N, treba
pomnožiti faktorijel(N-1) s N.
Znači, da bi se izračunao faktorijel od 3, mora se prvo izračunati faktorijel od 2, a
da bi se izračunao faktorijel od 2, mora se izračunati faktorijel od 1.
www.ckm.ba - Leonardo Miljko
Algoritam
• Rekurzija Zanimljiva uporaba rekurzije su tornjevi Hanoi (Towers Hanoi). U Aziji su
monasi analizirali pomjeranje zlatnih diskova s prvog na treći stup. Ti su diskovi različitih
veličina, a tijekom premještanja se moraju ispuniti sljedeći uvjeti:
• 1. pomjeraju se jedan po jedan,
• 2. veći disk nikada ne smije biti postavljen na manji.
www.ckm.ba - Leonardo Miljko
Algoritam
• Rekurzija
Liste i rekurzija
Lista je struktura podataka koja sadrži konačan broj elemenata.
Predstavlja jednu od moćnijih struktura kojima raspolaže i koje rabi Prolog. Rabe je
i drugi programski jezici, npr. LISP (što potječe od engl. riječi LISt Processing).
Stabla i rekurzija
Stablo je rekurzivna struktura podataka u Prologu. Rekurzivnost
stabla kao strukture podataka proizlazi iz činjenice da je svaka
grana stabla i sama stablo.
www.ckm.ba - Leonardo Miljko
Hvala !
Leonardo Miljko
diplomirani inženjer
elektrotehnike,
računarstva i
informatike
Pitanja?
www.ckm.ba - Leonardo Miljko

More Related Content

What's hot

Prezentacija o internetu
Prezentacija o internetuPrezentacija o internetu
Prezentacija o internetuOS Cegar Nis
 
Skolski Kurikulum za 10/11 godinu
Skolski Kurikulum za 10/11 godinuSkolski Kurikulum za 10/11 godinu
Skolski Kurikulum za 10/11 godinuDarko Rakić
 
Internet pretrazivaci
Internet pretrazivaciInternet pretrazivaci
Internet pretrazivaciJekaBieber
 
Istorijski razvoj interneta
Istorijski razvoj internetaIstorijski razvoj interneta
Istorijski razvoj internetaDarioNaharis
 
Organizacija podataka
Organizacija podatakaOrganizacija podataka
Organizacija podatakamajapts
 
Istiskivanje.pdf
Istiskivanje.pdfIstiskivanje.pdf
Istiskivanje.pdf12345678959
 
Дигитално насиље
Дигитално насиљеДигитално насиље
Дигитално насиљеMarija Predic
 
Internet
InternetInternet
Internetbbilja
 
Sistemski softver i aplikativni programi
Sistemski softver i aplikativni programiSistemski softver i aplikativni programi
Sistemski softver i aplikativni programiJasmina Profil
 
Zavisnost od interneta
Zavisnost od internetaZavisnost od interneta
Zavisnost od internetadr Šarac
 
Elektroinstalacioni elementi
Elektroinstalacioni elementiElektroinstalacioni elementi
Elektroinstalacioni elementibbilja
 
hardware_racunara1.ppt
hardware_racunara1.ppthardware_racunara1.ppt
hardware_racunara1.pptssuserd5033c
 
Osnove programiranja u Pythonu
Osnove programiranja u PythonuOsnove programiranja u Pythonu
Osnove programiranja u PythonuVlatka Pavić
 
Sigurnost na Internetu 3
Sigurnost na Internetu 3Sigurnost na Internetu 3
Sigurnost na Internetu 3Darko Rakić
 
Dan sigurnijeg interneta (prezentacija)
Dan sigurnijeg interneta (prezentacija)Dan sigurnijeg interneta (prezentacija)
Dan sigurnijeg interneta (prezentacija)Pogled kroz prozor
 

What's hot (20)

Prezentacija o internetu
Prezentacija o internetuPrezentacija o internetu
Prezentacija o internetu
 
Skolski Kurikulum za 10/11 godinu
Skolski Kurikulum za 10/11 godinuSkolski Kurikulum za 10/11 godinu
Skolski Kurikulum za 10/11 godinu
 
Internet pretrazivaci
Internet pretrazivaciInternet pretrazivaci
Internet pretrazivaci
 
Istorijski razvoj interneta
Istorijski razvoj internetaIstorijski razvoj interneta
Istorijski razvoj interneta
 
Organizacija podataka
Organizacija podatakaOrganizacija podataka
Organizacija podataka
 
Tlo uvjet života
Tlo uvjet životaTlo uvjet života
Tlo uvjet života
 
Istiskivanje.pdf
Istiskivanje.pdfIstiskivanje.pdf
Istiskivanje.pdf
 
Дигитално насиље
Дигитално насиљеДигитално насиље
Дигитално насиље
 
Internet
InternetInternet
Internet
 
Sistemski softver i aplikativni programi
Sistemski softver i aplikativni programiSistemski softver i aplikativni programi
Sistemski softver i aplikativni programi
 
Zavisnost od interneta
Zavisnost od internetaZavisnost od interneta
Zavisnost od interneta
 
Internet
InternetInternet
Internet
 
Elektroinstalacioni elementi
Elektroinstalacioni elementiElektroinstalacioni elementi
Elektroinstalacioni elementi
 
hardware_racunara1.ppt
hardware_racunara1.ppthardware_racunara1.ppt
hardware_racunara1.ppt
 
Sumnjivo Lice
Sumnjivo LiceSumnjivo Lice
Sumnjivo Lice
 
Osnove programiranja u Pythonu
Osnove programiranja u PythonuOsnove programiranja u Pythonu
Osnove programiranja u Pythonu
 
Sigurnost na Internetu 3
Sigurnost na Internetu 3Sigurnost na Internetu 3
Sigurnost na Internetu 3
 
Dan sigurnijeg interneta (prezentacija)
Dan sigurnijeg interneta (prezentacija)Dan sigurnijeg interneta (prezentacija)
Dan sigurnijeg interneta (prezentacija)
 
Seoba srba
Seoba srbaSeoba srba
Seoba srba
 
Сумњиво лице
Сумњиво лицеСумњиво лице
Сумњиво лице
 

Viewers also liked

Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Leonardo Miljko
 
Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15Leonardo Miljko
 
Aksonometrija
AksonometrijaAksonometrija
Aksonometrijapsh-skola
 
Crtanje radionickog crteza
Crtanje radionickog crtezaCrtanje radionickog crteza
Crtanje radionickog crtezatehkul
 
Innovasion isabel 3 d
Innovasion isabel 3 dInnovasion isabel 3 d
Innovasion isabel 3 damigachabe
 
Local projects update,
Local projects update,Local projects update,
Local projects update,City of Corona
 
Modelados agiles de proceso
Modelados agiles de procesoModelados agiles de proceso
Modelados agiles de procesoGary Marin
 
Local projects update, 03 16-2016
Local projects update, 03 16-2016Local projects update, 03 16-2016
Local projects update, 03 16-2016City of Corona
 
Interbarometro diciembre2016
Interbarometro diciembre2016Interbarometro diciembre2016
Interbarometro diciembre2016Christian Monzón
 
Rodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1keRodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1kedominator1979
 
Backend, MVC, languages and frameworks for Backend
Backend, MVC, languages and frameworks for BackendBackend, MVC, languages and frameworks for Backend
Backend, MVC, languages and frameworks for BackendDragos Strugar
 
Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Leonardo Miljko
 
Lepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrataLepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrataAmbijent Dizajn
 
Algoritmi i strukture_podataka_2016-03_v01
Algoritmi i strukture_podataka_2016-03_v01Algoritmi i strukture_podataka_2016-03_v01
Algoritmi i strukture_podataka_2016-03_v01Leonardo Miljko
 

Viewers also liked (20)

Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01Algoritmi i strukture_podataka_2016-05_v01
Algoritmi i strukture_podataka_2016-05_v01
 
Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15Kompjutorski kriminalitet v13_2014-15
Kompjutorski kriminalitet v13_2014-15
 
Aksonometrija
AksonometrijaAksonometrija
Aksonometrija
 
Crtanje radionickog crteza
Crtanje radionickog crtezaCrtanje radionickog crteza
Crtanje radionickog crteza
 
Logaritmos
LogaritmosLogaritmos
Logaritmos
 
Innovasion isabel 3 d
Innovasion isabel 3 dInnovasion isabel 3 d
Innovasion isabel 3 d
 
La ciencia en la cocina
La ciencia en la cocinaLa ciencia en la cocina
La ciencia en la cocina
 
Local projects update,
Local projects update,Local projects update,
Local projects update,
 
Modelados agiles de proceso
Modelados agiles de procesoModelados agiles de proceso
Modelados agiles de proceso
 
Local projects update, 03 16-2016
Local projects update, 03 16-2016Local projects update, 03 16-2016
Local projects update, 03 16-2016
 
Interbarometro diciembre2016
Interbarometro diciembre2016Interbarometro diciembre2016
Interbarometro diciembre2016
 
17
1717
17
 
La ofimatica
La ofimatica La ofimatica
La ofimatica
 
Rodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1keRodne i-nerodne-grane-jabuke-i-kruc5a1ke
Rodne i-nerodne-grane-jabuke-i-kruc5a1ke
 
Backend, MVC, languages and frameworks for Backend
Backend, MVC, languages and frameworks for BackendBackend, MVC, languages and frameworks for Backend
Backend, MVC, languages and frameworks for Backend
 
Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01Algoritmi i strukture_podataka_2016-02_v01
Algoritmi i strukture_podataka_2016-02_v01
 
Lepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrataLepe pregrade u stanu i klizna vrata
Lepe pregrade u stanu i klizna vrata
 
Ecluse ecossaise
Ecluse ecossaiseEcluse ecossaise
Ecluse ecossaise
 
Algoritmi i strukture_podataka_2016-03_v01
Algoritmi i strukture_podataka_2016-03_v01Algoritmi i strukture_podataka_2016-03_v01
Algoritmi i strukture_podataka_2016-03_v01
 
Teks Kejohanan Sukan SK Bukit Rahmat
Teks Kejohanan Sukan SK Bukit RahmatTeks Kejohanan Sukan SK Bukit Rahmat
Teks Kejohanan Sukan SK Bukit Rahmat
 

Similar to Algoritmi i strukture_podataka_2016-01_v01

Rjesavanje problema uz pomoc racunara
Rjesavanje problema uz pomoc racunaraRjesavanje problema uz pomoc racunara
Rjesavanje problema uz pomoc racunarasabinacustovic
 
Algoritmi i strukture podataka
Algoritmi i strukture podatakaAlgoritmi i strukture podataka
Algoritmi i strukture podatakaTibor Weigand
 
Cnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_korakaCnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_korakaNenad Pejic
 
Asc photomath-2016 169
Asc photomath-2016 169Asc photomath-2016 169
Asc photomath-2016 169Jurica Cerovec
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
 
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016 [ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016 Stipe Predanic
 
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonUvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonAmar Kalabić
 
Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Adnan Goretić
 
Upravljanje računalnom mrežom i uslugama
Upravljanje računalnom mrežom i uslugamaUpravljanje računalnom mrežom i uslugama
Upravljanje računalnom mrežom i uslugamaandrea132961
 
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaGoran Igaly
 

Similar to Algoritmi i strukture_podataka_2016-01_v01 (19)

Rjesavanje problema uz pomoc racunara
Rjesavanje problema uz pomoc racunaraRjesavanje problema uz pomoc racunara
Rjesavanje problema uz pomoc racunara
 
Algoritmi i strukture podataka
Algoritmi i strukture podatakaAlgoritmi i strukture podataka
Algoritmi i strukture podataka
 
Strukture podataka i algoritmi
Strukture podataka i algoritmiStrukture podataka i algoritmi
Strukture podataka i algoritmi
 
C# predavanja
C# predavanjaC# predavanja
C# predavanja
 
3. for petlja
3. for petlja3. for petlja
3. for petlja
 
Cnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_korakaCnc proces ima_pet_osnovnih_koraka
Cnc proces ima_pet_osnovnih_koraka
 
Asc photomath-2016 169
Asc photomath-2016 169Asc photomath-2016 169
Asc photomath-2016 169
 
Maturski rad.pptx
Maturski rad.pptxMaturski rad.pptx
Maturski rad.pptx
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
 
Natjecanje za srednjoskolce - Osnove informatike
Natjecanje za srednjoskolce - Osnove informatikeNatjecanje za srednjoskolce - Osnove informatike
Natjecanje za srednjoskolce - Osnove informatike
 
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016 [ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
[ERRO] Predavanje: 8 i 32 bitni mikroupravljači/mikroprocesori 15.12.2016
 
Uvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik PythonUvod u programiranje i programski jezik Python
Uvod u programiranje i programski jezik Python
 
Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Algoritmi sortiranja u C++
Algoritmi sortiranja u C++
 
Programski jezik java
Programski jezik javaProgramski jezik java
Programski jezik java
 
Programski jezik java
Programski jezik javaProgramski jezik java
Programski jezik java
 
Cyfer
CyferCyfer
Cyfer
 
Upravljanje računalnom mrežom i uslugama
Upravljanje računalnom mrežom i uslugamaUpravljanje računalnom mrežom i uslugama
Upravljanje računalnom mrežom i uslugama
 
Prirucnik za polaganje strucnog ispita informatika, osijek
Prirucnik za polaganje strucnog ispita   informatika, osijekPrirucnik za polaganje strucnog ispita   informatika, osijek
Prirucnik za polaganje strucnog ispita informatika, osijek
 
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
 

Algoritmi i strukture_podataka_2016-01_v01

  • 1. Leonardo Miljko www.ckm.ba - Leonardo Miljko Prezentacija nastala na osnovu knjige: Brano Markić i Dražena Tomić, Uvod u algoritme i strukture, Ekonomski fakultet , Mostar,2008. Algoritmi i strukture podataka Algoritam
  • 2. DEFINICIJA POJMOVA • Datafile (datoteka podataka) - skup podataka pomoću kojih se modelira neki realan objekt • Slog (record) - je dio datoteke podataka, dio koji tvori datoteku podataka • Entitet - podrazumijeva se sve što se može jednoznačno odrediti, identificirati i razlikovati. Tako široko postavljena definicija pokazuje da entitet može biti svaki „realan“ ili „apstraktan“ objekt o kojem u određenom trenutku razmišljamo. • Polje (field) je dio sloga. Više polja tvori slog. Općenito, svako polje sadrži jedan tip podataka. • Ključ (key) omogućuje pretraživanje i pronalaženje slogova. www.ckm.ba - Leonardo Miljko
  • 3. DEFINICIJA POJMOVA Struktura podataka Prednosti Nedostaci Nesortirano polje (array) Brzo umetanje podataka, brzo pronalaženje podataka pomoću Indeksa. Unaprijed poznat broj elemenata (veličina). Sporo brisanje podataka Sortirano polje (array) Brzo pretraživanje. Sporo umetanje. Red (queu) Ponaša se po načelu prvi ušao, prvi izišao. Spor pristup članovima reda. Stog (stack) Ponaša se po načelu posljednji ušao, prvi izišao. Spor pristup članovima stoga. Povezane liste Brzo umetanje i brisanje. Sporo pretraživanje. www.ckm.ba - Leonardo Miljko
  • 4. DEFINICIJA POJMOVA Struktura podataka Prednosti Nedostaci Binarna stabla Brzo pretraživanje, umetanje i brisanje. Algoritam brisanja je složen. Crveno-crna stabla Brzo pretraživanje, umetanje i brisanje. Složenost 2-3-4 stabla Brzo pretraživanje, umetanje i brisanje. Složenost Hash tablica Brzi pristup, ako je poznat ključ. Brzo umetanje podataka . Sporo brisanje i neučinkovita uporaba memorije. Gomila (heap) Brzo brisanje, umetanje. Spor pristup podacima. www.ckm.ba - Leonardo Miljko
  • 5. Algoritam • U procesu programiranja načela na temelju kojih se ulazni podaci (veličine) transformiraju u izlazne podatke (veličine) zovu se algoritam. • Algoritam se ne odnosi samo na programiranje, on je pojmovno šira procedura koja se odnosi i na druge vrste problema. • Algoritam se definira kao konačan niz nedvosmislenih koraka koji su izvodljivi, i ako se slijede, dovode do rješenja problema. www.ckm.ba - Leonardo Miljko
  • 6. Algoritam Uvjetno sve faze razvoja programa mogu se podijeliti, sažeti u dvije: • faza rješavanja problema – definiranje zadatka obrade, – konstrukcija algoritma (dizajn programa) i – testiranje ispravnosti algoritma, • faza implementacije – kodiranje, – testiranje (izvršavanje programa na računalu), – dokumentiranje i – održavanje www.ckm.ba - Leonardo Miljko
  • 7. Algoritam Svaki algoritam ima sljedećih pet bitnih osnovnih svojstava: • ulaz, • izlaz, • konačnost, • definiranost i nedvosmislenost (određenost), • efikasnost (efektivnost). www.ckm.ba - Leonardo Miljko
  • 8. Algoritam Svaki algoritam ima određena svojstva: • koraci moraju biti slijedni i nedvosmisleni. Nedvosmisleni znači da nakon izvođenja jednog koraka uvijek je poznat sljedeći korak. • daju točno rješenje u svim slučajevima. Za svaku kombinaciju ulaznih vrijednosti izlaz mora biti točan. • broj koraka je konačan. Algoritam ne smije tijekom izvođenja ući u beskonačnu petlju. On mora imati kraj. Svaki korak algoritma može trajati samo jedan konačan vremenski interval • koraci algoritma moraju biti izvedivi za određeni procesor. Korake može izvoditi osoba, računalo, mehanički uređaj i sl. Takva instanca za izvođenje algoritma se naziva procesor • efikasnost. www.ckm.ba - Leonardo Miljko
  • 9. Algoritam Najčešći pristup razvoju algoritma je odozgo prema dolje ili metodološki pristup koji se zove profinjenje u koracima. Prema tom pristupu algoritam se dijeli u određen broj podproblema, podprocesa koji opisuju pojedine dijelove problema. Zatim se razvijaju algoritmi za pojedine podprocese koji su jednostavniji od cijelog procesa. Proces završava kada se unutar algoritama slože koraci koje razumije procesor (onaj koji izvodi algoritam – računalo, čovjek i sl.). www.ckm.ba - Leonardo Miljko
  • 10. Algoritam Struktura algoritma Svaki algoritam bi trebao imati sekcije (dijelove) u sljedećem redoslijedu: • Zaglavlje: Naziv algoritma ili naslov. • Deklaracija : Kratak opis algoritma i varijabli. • Tijelo: Niz koraka. • Kraj algoritma: Naredba kraj. www.ckm.ba - Leonardo Miljko
  • 11. Algoritam Algoritam se može zapisati kao pseudokod uporabom šest osnovnih operacija: 1. Naredbe unosa i čitanja podataka • Tipične naredbe pseudokoda za prihvaćanje naredbi su: • Read ime (čitaj ime) • Get ime (pribavi ime) • Read broj 1, broj 2 2. Naredbe izlaza i ispisa podataka • Print ime • Write „Prosjek je“, Prosjek www.ckm.ba - Leonardo Miljko
  • 12. Algoritam 3. Naredbe za aritmetičke operacije • Add Broj To Zbroj ili • Zbroj = Zbroj + Broj • Prosjek = Zbroj/Brojač • Plaća= Broj sati rada * satnica • Neto plaća= bruto plaća – porezi i doprinosi 4. Naredbe pridruživanja vrijednosti varijablama (inicijalizacija) • Postavi Brojač na 0 ili pridruži Brojaču 0 • Pridruži varijabli Vrijednost rezultat operacije množenja : • Vrijednost = Cijena * Količina www.ckm.ba - Leonardo Miljko
  • 13. Algoritam 5. Računalo može usporediti dvije vrijednosti i odabrati jednu od dvije moguće akcije • If B < 0 Then • Dodaj 1 negativnom broju B • Else • Dodaj 2 nenegativnom broju B • End If 6. Računalo može ponavljati niz akcija dok se ne ispuni određeni uvjet ili dok je određeni uvjet ispunjen • Ponavljaj dok je A < = 50 • Read A • Write A • A dodati 1 (A=A+1) • Kraj www.ckm.ba - Leonardo Miljko
  • 14. Algoritam Program zapis nekoga algoritma u nekom programskom jeziku, pri čemu procesor mora poznavati rječnik i gramatiku jezika kojim je opisan algoritam. Sintaksa jezika je skup gramatičkih pravila koja određuju kako se simboli mogu u jeziku rabiti. Narativni opis koraka algoritma je pseudokod. Algoritam se može prikazati različitim tehnikama: • Prirodni jezik • Pseudokod • Dijagrami toka (flowcharts) • Nassi-Sneiderman dijagrami • Jackson strukturni dijagrami www.ckm.ba - Leonardo Miljko
  • 15. Algoritam Prirodni jezik • Prirodnim jezikom se algoritam zapisuje navođenjem rednog broja koraka i kratkim opisom koraka na hrvatskom (prirodnom) jeziku. Primjer zapisa izračunavanja aritmetičke sredine niza brojeva: Korak 1. Zapiši niz brojeva: 7, 5, 23, 3, 7. Korak 2. Prebroj dužinu niza. (Za koliko brojeva izračunavamo prosjek? Odgovor: 5). Korak 3. Zbroji elemente niza (brojeve): 7+ 5+ 23+ 3+ 7 = 45. Korak 4. Podijeli zbroj s brojem elemenata u nizu: 45:5 = 9. Glavna prednost uporabe prirodnog jezika je jednostavnost učenja i potpuno prirodni prikaz algoritma. Nedostaci su vezani za prevođenje iz prirodnog u računalni (programski) jezik jer su rečenice često duge i treba ih zamijeniti odgovarajućim naredbama jezika čija je sintaksa strogo definirana. www.ckm.ba - Leonardo Miljko
  • 16. Algoritam Pseudokod • Pseudokod je narativni oblik prikaza logike programa koji dizajniramo. Rabi prirodni, neformalizirani programski jezik izmiješan s formaliziranim strukturama iz programskog jezika na kojem se temelji pseudokod. Primjer: Program izračunava bruto i neto plaću P: BEGIN unijeti broj redovnih sati u tijeku mjeseca za radnika n unijeti satnicu za redovni rad unijeti prekovremeni rad unijeti cijenu prekovremenog rada izračunati bruto plaću unijeti postotak poreza izračunati poreze i neto plaću radnika n ispisati izračunati iznos poreza i neto plaće radnika n GOTO P ; KRAJ www.ckm.ba - Leonardo Miljko
  • 17. Algoritam Pseudokod • Navedeni primjer prikazuje pseudokod kojim se opisuje algoritam za obračuna bruto plaće, poreza i neto plaće svakog radnika. Pseudokod u obliku jednostavnih izjavnih rečenica izražava korake algoritma, a njih program treba slijediti u rješavanju postavljenog problema. • Pseudokod je kompromis između prirodnog jezika i programa jer zadržava u opisu koraka algoritma rečenice prirodnog jezika (što je prihvatljivo čovjeku) i nastoji ih oblikovati što bliže naredbama programskog jezika (što je prihvatljivo računalu). www.ckm.ba - Leonardo Miljko
  • 18. Algoritam Dijagrami toka (flowcharts) • U fazi izgradnje algoritma često se koraci prikazuju pomoću odgovarajućih simbola. To su dobro poznati dijagrami toka. Oni su grafički prikaz koraka potrebnih za rješenje postavljenog zadatka. • Dijagram toka se služi grafičkim simbolima koji su međusobno povezani. Unutar simbola upisuje se riječima i simbolima prirodnog jezika odgovarajuća operacija. www.ckm.ba - Leonardo Miljko
  • 20. Algoritam Nassi-Sneidermanovi dijagrami Nassi-Sneidermanovi dijagrami se služe grafičkim simbolima kao i dijagrami toka. Algoritam se smješta u samo jedan pravokutnik. Koraci algoritma se izvršavaju slijedno. Počinju prvim simbolom na vrhu pravokutnika a potom slijede ostali simboli do posljednjeg na dnu pravokutnika. Simbol se služi ili pseudokodom ili prirodnim jezikom za opis naredbi. Tri su vrste simbola: sekvencija, selekcija i petlja. www.ckm.ba - Leonardo Miljko
  • 21. Algoritam Jackson strukturni dijagrami Jacksonovi strukturni dijagrami se temelje na ideji podjele zadatka na jednostavnije dijelove. Imaju posebne grafičke simbole za osnovne algoritamske strukture: sekvenciju, selekciju i petlju (iteraciju). www.ckm.ba - Leonardo Miljko
  • 22. Algoritam Logičke strukture Svaki algoritam je moguće napisati uporabom triju osnovnih kontrolnih struktura - triju logičkih struktura: • sekvencija • selekcija • petlja (iteracija). Uporabom tih triju kontrolnih struktura mogu se pisati tzv. strukturirani programi, odnosno takvo programiranje je strukturirano programiranje. • Strukturirano programiranje temeljeno je na ideji da svaki program rabi jednostavne upravljačke strukture koje imaju jedan ulaz i jedan izlaz. www.ckm.ba - Leonardo Miljko
  • 23. Algoritam Logičke strukture • Sekvencija U strukturi sekvencije (ponekad se zove i slijed naredbi) naredbe se izvršavaju jedna iza druge. Programski koraci su povezani serijski. Jedan programski korak slijedi za drugim www.ckm.ba - Leonardo Miljko Korak 1 Korak 2
  • 24. Algoritam Logičke strukture • Selekcija Struktura selekcije vezana je za donošenje odluka u programu, odnosno za ispitivanje uvjeta. Uvjet koji se testira, unaprijed je poznat. Ovisno od rezultatu testiranja program se nastavlja izvoditi po jednoj ili drugoj grani uvjeta. www.ckm.ba - Leonardo Miljko Uvjet (IF) THEN (Obrada 1) ELSE (Obrada 2)
  • 25. Algoritam Logičke strukture • Iteracija (petlja) • Iteracija se ponekad zove i struktura petlje (loop). Ona je jedan od najsloženijih problema u proceduralnim jezicima koji utječe na kvalitetu softvera. To je upravljačka struktura koja uzroči izvršavanje skupine naredbi više puta. • Struktura petlje opisuje aktivnost u kojoj se proces ponavlja dok se postavljeni uvjet ne zadovolji. • Struktura petlje ima više varijanti: – For-Next u Visual Basicu, – Do u Fortranu, – While i For u Pascalu itd. www.ckm.ba - Leonardo Miljko
  • 26. Algoritam Logičke strukture • Iteracija (petlja) dva oblika logičke strukture petlje: Do While Do Until www.ckm.ba - Leonardo Miljko Ne Da Do Until Tijelo naredbi Tijelo naredbi Ne Da Do While Struktura Do While
  • 27. Algoritam Složenost algoritma • Algoritam je detaljan opis rješenja problema, niz slijednih i nedvosmislenih koraka koje u konačnom vremenu može izvršiti neki procesor. • Algoritam je uporabljiv ako se rezultat dobije u konačnom vremenu. • Početni objekti su unaprijed definirani i nad njima se obavljaju operacije. • Rezultat algoritma su završni objekti ili rezultati . • Algoritmi nisu iste složenosti i svrha analize složenosti algoritama je predvidjeti vrijeme u kojem se algoritam može izvršiti. • Krajnji cilj je izgraditi algoritam koji će biti efikasan. www.ckm.ba - Leonardo Miljko
  • 28. Algoritam Složenost algoritma Analiza algoritma • Cilj analize algoritma je procijeniti vrijeme izvršavanja algoritma. Vrijeme je drugi naziv za broj operacija koje program mora obaviti. Matematički se prikazuje funkcijom oblika T(n) pri čemu n reprezentira broj (skup) ulaznih objekata algoritma. • Analiza može biti: • A priori analiza nastoji unaprijed procijeniti vrijeme izvršavanja algoritma kao funkciju određenih argumenata. A priori analiza je neovisna o računalu, programskom jeziku i prevoditelju. • A posteriori analiza je iskustveni pristup. To je točno vrijeme izvršavanja algoritma koje mjeri i prikazuje računalo. www.ckm.ba - Leonardo Miljko
  • 29. Algoritam Složenost algoritma O-notacija Na temelju danog primjera pretpostavit će se da je za algoritam n2 potrebno 10 sekundi za obraditi 1000 brojeva (ulaza). Koliko će biti potrebno vremena tom algoritmu obraditi 10000 brojeva? U obliku jednadžbe, vrijeme potrebno za obradu n brojeva T(n) je umnožak neke konstante K (ta konstanta ovisi o snazi računala) i složenosti algoritma . Složenost algoritma opisuje funkcija f(n): T(n) = K * O ( f(n) ) gdje je T(n) vrijeme za n brojeva K je konstanta proporcionalnosti O ( f(n) ) je red veličine određen funkcijom f(n). www.ckm.ba - Leonardo Miljko
  • 30. Algoritam • Rekurzija Procedura se zove rekurzivna ako poziva samu sebe. Ona je prirodan način opisa algoritma. Upravo zato mnogi se programi služe rekurzijom. U LISP-u, Prologu, LOGO-u i drugim jezicima umjetne inteligencije rekurzivne procedure ili funkcije pišu se relativno jednostavno. U jezicima treće generacije pisanje rekurzivnih procedura povezano je s uporabom parametara pa se moraju primjenjivati razni programerski trikovi! Najčešće se za primjer rekurzije navodi izračunavanje faktorijela. • Da bi se izračunao faktorijel od broja N, potrebno je slijediti korake: • Ako je N =1, faktorijel je 1. Inače, da bi se izračunao faktorijel od N, treba pomnožiti faktorijel(N-1) s N. Znači, da bi se izračunao faktorijel od 3, mora se prvo izračunati faktorijel od 2, a da bi se izračunao faktorijel od 2, mora se izračunati faktorijel od 1. www.ckm.ba - Leonardo Miljko
  • 31. Algoritam • Rekurzija Zanimljiva uporaba rekurzije su tornjevi Hanoi (Towers Hanoi). U Aziji su monasi analizirali pomjeranje zlatnih diskova s prvog na treći stup. Ti su diskovi različitih veličina, a tijekom premještanja se moraju ispuniti sljedeći uvjeti: • 1. pomjeraju se jedan po jedan, • 2. veći disk nikada ne smije biti postavljen na manji. www.ckm.ba - Leonardo Miljko
  • 32. Algoritam • Rekurzija Liste i rekurzija Lista je struktura podataka koja sadrži konačan broj elemenata. Predstavlja jednu od moćnijih struktura kojima raspolaže i koje rabi Prolog. Rabe je i drugi programski jezici, npr. LISP (što potječe od engl. riječi LISt Processing). Stabla i rekurzija Stablo je rekurzivna struktura podataka u Prologu. Rekurzivnost stabla kao strukture podataka proizlazi iz činjenice da je svaka grana stabla i sama stablo. www.ckm.ba - Leonardo Miljko
  • 33. Hvala ! Leonardo Miljko diplomirani inženjer elektrotehnike, računarstva i informatike Pitanja? www.ckm.ba - Leonardo Miljko