38
[email protected] št. leto 2012/13 doc.dr. Matevž Dolenc Algoritmi

Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 [email protected] Primer6računalniškegaprograma

Embed Size (px)

Citation preview

Page 1: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.sišt.  leto  2012/13 doc.dr.  Matevž  Dolenc

Algoritmi

Page 2: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Kaj  je  algoritem

‣ Algoritem  je  opis  reševanja  dane  naloge,  po  katerem  jo  lahko  izvajalec  algoritma  reši.  

‣ Algoritem  določa  zaporedje  izvedljivih  korakov  za  rešitev  dane  naloge.

‣ LastnosH-­‐ Algoritem  izvede  izvajalec  algoritma.  

-­‐ Če  izvajalec  upošteva  algoritem,  reši  dano  nalogo.

-­‐ Algoritem  lahko  uporabimo  večkrat.

-­‐ Za    enako  nalogo  da  algoritem  vedno  enak  rezultat.

Page 3: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Izračun  povprečne  vrednosH  podanih  realnih  števil

‣ Izračunaj  povprečno  vrednost  pv  danega  niza  n  realnih  števil  s1,  s2,  ...  ,  sn

vsota = 0

Za i=1,2 ... n ponavljaj vsota = vsota + siDo sem

pv = vsota / n

Konec

Psevdokoda Diagram poteka

Page 4: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Algoritem  za  računalniški  program

‣ Programiranje  je  praviloma  zahtevno  delo.

‣ Zapletenost  programov  obvladamo  z  razdelitvijo  naloge  P  na  podnaloge  P1,  P2,  ...  .  

‣ Rešitev  naloge  in  podnalog  najprej  zapišemo  v  obliki  algoritmov,  nato  pa  jih  zapišemo  v  programskem  jeziku.

Page 5: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Primer  računalniškega  programa

Sub main() Dim i As Integer, n As Integer Dim s(50) As Integer Dim vsota As Single, pv As Single

n = InputBox("Podaj n")

For i=1 To n s[i] = InputBox("Podaj s(" & i & ")") Next i

For i=1 To n vsota = vsota + s(i) pv = vsota / n Next i MsgBox "Povprečna vrednost : " & pvEnd Sub

main() { int i, n, s[50], vsota, pv;

cout << "\nPodaj n"; cin >> n;

for( i=1; i<=n; i++ ) { cout << "\nPodaj s(" << i << "): "; cin >> s[i]; }

vsota = 0; for( i=1; i<=n; i++ ) vsota = vsota + s[i]; pv = vsota / n; cout << "\nPovprečna vrednost : " << pv;}

VisualBasic.NET C++

Page 6: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Zakaj  pri  razvoju  programov  uporabljamo  algoritme‣ Algoritem  lažje  in  hitreje  zapišemo  kot  programsko  

kodo.

‣ Za  zapis  algoritmov  ni  strogih  pravil.

‣ Algoritem  je  pogosto-­‐ mešnica  naravnega  jezika,

-­‐ matema>čnih  izrazov  in

-­‐ kontrolnih  ukazov.  

‣ Za  zapis  potrebujemo  samo-­‐ svinčnik  in  papir,  oziroma  preprost  urejevalnik  besedil  

(Notepad).  

Page 7: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Zakaj  pri  razvoju  programov  uporabljamo  algoritme  ‣ Lahko  se  predvsem  posveHmo  reševanju  problema.

‣ Algoritem  lahko  napišemo  na  različnih  nivojih.-­‐ Najprej  grobi,  nato  podrobnejši  algoritem

‣ Izdelamo  lahko  več  različic  (variant)  rešitev.

‣ Rešitev  lažje  razložimo  sodelavcem,  ki  ne  znajo  programiraH.

‣ Računalniški  algoritem  lahko  hitro  preslikamo  v  računalniški  program.

Page 8: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Objavljeni  algoritmi  -­‐  ponovna  uporaba

‣ Mnogo  algoritmov  je  objavljenih  v  strokovni  literaturi.-­‐ Članki  v  strokovnih  revijah  vsebujejo  tudi  algoritme.  

Obstajajo  zbirke  algoritmov  na  določenem  področju.

‣ Praviloma  je  bolje  uporabiH  že  izdelan  algoritem,  kot  pa  ga  razviH  ponovno.-­‐ Večja  učinkovitost,  popularni  algoritmi  so  praviloma  

pravilni,  koncept  ponovne  uporabe.

‣ Primeri  knjig  z  algoritmi:-­‐ A.  Binstock,  J.  Rex,  Prac>cal  Algorithms  for  Programmers,  

Addison  Wesley,  1995

-­‐ G.H.  Gonnet,  Handbook  of  Algor>hms  and  data  structures,  Addison-­‐Wesley,  1984

Page 9: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Sestavni  deli  algoritma

‣ Osnovni  deli-­‐ Opis  naloge.

-­‐ Ime  algoritma.

-­‐ Seznam  podatkov  in  seznam  rezultatov.

-­‐ Zapis  korakov  reševanja  naloge  -­‐  postopek.  

-­‐ Izvajalec  algoritma.

‣ Dodatni  deli  (neobvezni)-­‐ Klic  algoritma,  opis  rešitvenih  idej,  analiza  učinkovitos>  

algoritma,  teore>čne  osnove  reševanja,  sklicevanja  (reference)  na  druge  dokumente,  ki  se  ukvarjajo  s  podobno  nalogo,  testni  primeri,  ...

Page 10: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Izvajalec  algoritma

‣ Izvajalec  algoritma  je  lahko  oseba,  ki  pozna  problemsko  domeno  algoritma.-­‐ Predpostavljamo,  da  zna  izves>  vse  v  algoritmu  

uporabljene  operacije.

‣ Izvajalca  algoritma  običajno  ni  potrebno  posebej  označiH.

‣ Izvajalec  algoritma  je  lahko  tudi  računalnik.  -­‐ Algoritem  je  tedaj  računalniški  program.  

-­‐ Algoritem  zapišemo  v  izbranem  programskem  jeziku.

Page 11: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Osnovni  elemenH  računalniških  algoritmov

‣ Spremenljivka.  Ima  ime.  Simbolično  predstavlja  vrednost.  VrednosH  se  lahko  spreminjajo.

‣ Prirejanje  vrednosH  spremenljivkam-­‐ n  =  n  +  1

‣ AritmeHčne,  primerjalne  in  logične  operacije-­‐ 2*(c/d  -­‐p)

-­‐ a>b  in  c<d

‣ Ponavljalne  in  pogojne  operacije

‣ MatemaHčne  funkcije

Page 12: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

LastnosH  algoritmov

‣ Izvedljivost:  algoritem  mora  biH  izvedljiv.  VsebovaH  sme  samo  operacije,  ki  jih  pozna  izvajalec  algoritma.

‣ Pravilnost:  algoritem  mora  rešiH  dano  nalogo  in  ne  kake  druge.

‣ Ponovljivost:  pri  enakih  nalogah  moramo  z  enakimi  podatki  dobiH  enake  rezultate.

‣ Končnost  izvedbe:  izvajanje  algoritma  se  mora  končaH,  sicer  naloga  ni  nikoli  rešena.

‣ Popolnost:  izvajalec  algoritma  ne  potrebuje  nobenih  dodatnih  informacij  za  razumevanje  algoritma,  po  katerem  reši  nalogo.

Page 13: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

EsteHka  v  algoritmih

‣ Algoritem  je  pogosto  izvirno  avtorsko  delo.  -­‐ Ima  nekatere  lastnos>  umetniškega  dela.  

‣ Uspešna  izdelava  algoritmov  zahteva-­‐ izkušnje,  širok  pogled,  poznavanje  domene  problema,  

dobre  miselne  tehnike,  izvirne  ideje

‣ Avtorji  algoritmov  se  zato  pogosto  potrudijo,  -­‐ da  v  originalnih  algoritmih  ni  motečih  elementov,  ki  jih  

včasih  lahko  zaznamo  le  z  este>ko

‣ Pogosto  so  elegantni  algoritmi  tudi  zelo  razumljivi  in  učinkoviH.-­‐ Rekurzivni  algoritmi  so  praviloma  zelo  elegantni.

Page 14: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

TesHranje  algoritmov

‣ Namen  tesHranja-­‐ je  odpravljanje  napak  v  algoritmu  

-­‐ in  ne  dokazovanje  pravilnos>  algoritma.

-­‐ Dokazovanje  pravilnos>  algoritmov  je  zapletena  naloga  (tudi  za  matema>ke)

‣ IzvesH  je  treba  več  testnih  primerov.  -­‐ Testni  primer  določa  konkretne  vhodne  podatke.

-­‐ Testni  primeri  morajo  preskusi>  vse  dele  algoritma.  

-­‐ Posebej  moramo  pripravi>  tesne  primere  za  mejne  vrednos>  podatkov.

Page 15: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Kako  tesHramo  algoritme

‣ Algoritem  tesHramo  peš  -­‐ Korak  za  korakom  izvajamo  algoritem  (izračunamo  vsak  

korak)  in  si  beležimo  stanje  tekočih  podatkov  in  rezultatov  algoritma,  ki  jih  uredimo  v  ustrezne  tabele.

‣ Pogosto  tesHramo  po  algoritmu  izdelan  računalniški  program.  -­‐ Pri  preslikavi  algoritma  v  program  pogosto  pride  do  

dodatnih  napak.  

Page 16: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Abstraktni  nivoji  algoritmov

‣ Pogosto  predstavimo  isto  nalogo  z  več  algoritmi  na  različnih  nivojih  abstrakcije.  -­‐ Uporabimo  proces  abstrakcije,  pri  katerem  odstranimo  

nepotrebne  podrobnos>  (abstrahira>  =  odstrani>)

-­‐ Grobi  algoritem  je  vedno  krajši  in  razumljivejši  od  bolj  podrobnega.  

‣ Če  je  namen  algoritma  izdelava  programa,  mora  biH  končni  algoritem  tako  podroben,  da  lahko  po  njem  zanesljivo  napišemo  računalniški  program.

‣ Z  algoritmi  ne  smemo  preHravaH.-­‐ Za  trivialne  naloge  ne  pišemo  algoritmov.

Page 17: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Učinkovitost  algoritmov

‣ Učinkovitost-­‐ Učinkovitost  algoritmov  določajo  viri,  ki  so  potrebni  za  

rešitev  naloge.  

‣ Med  pomembne  vire  štejemo  -­‐ čas  reševanja  in  

-­‐ prostor  v  pomnilniku  za  shranjevanje  podatkov  in  vmesnih  rezultatov.

‣ Obravnavamo  -­‐ časovno  zahtevnost  in

-­‐ prostorsko  zahtevnost  algoritmov.

Page 18: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Časovna  učinkovitost  algoritmov

‣ Merimo  s  številom  osnovnih  operacij  potrebnih  za  rešitev  naloge.  

‣ Zelo  pogosto  so  osnovne  operacije  aritmeHčne  in  logične  operacije,  ki  jih  izvaja  procesor  računalnika.  

‣ Pogosto  študiramo  odvisnost  števila  operacij  od  velikosH  problema.-­‐ Izračun  korenov  kvadratne  enačbe  ax2 + bx + c =

0,  zahteva  konstantno  število  operacij.  

-­‐ Pri  določanju  največjega  števila  izmed  n  podanih  števil  je  število  primerjanj  n-1.

-­‐ Število  operacij  pri  reševanju  sistema  linearnih  enačb  reda  n  po  Gaussovem  postopku  je  sorazmerno  z  n3.

Page 19: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Kako  ustvarimo  algoritem

‣ Splošnega  algoritma  za  izdelavo  algoritmov  ni.

‣ Če  imamo  idejo,  kako  rešiH  nalogo,  pogosto  algoritma  ni  zelo  težko  zapisaH.  

‣ Najprej  določimo  ustrezne  simbole  za  podatke  in  rezultate,  ki  nastopajo  v  nalogi.  

‣ Nato  predstavimo  rešitev  kot  zaporedje  dobro  definiranih  korakov.  

‣ V  zapisu  upoštevamo  zmogljivosH  programskega  jezika,  ki  ga  nameravamo  uporabiH.

Page 20: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Zapis  algoritma  ni  preprost,  tudi  če  imamo  rešitvene  ideje‣ Obstajajo  naloge,  ki  jih  znamo  rešiH,  pa  jih  je  kljub  

temu  težko  zapisaH  v  obliki  algoritma.

‣ DoločiH  moramo  model  ali  predstavitev  (reprezentacijo)  naloge-­‐ V  modelu  izločimo  vse  nepotrebne  detajle,  ki  za  rešitev  

naloge  niso  pomembni  (abstrakcija).  

-­‐ Pogosto  lahko  izbiramo  med  različnimi  modeli,  ki  ne  dajo  enako  dobrih  algoritmov.

‣ Pri  računalniških  algoritmih  upoštevamo  ciljni  programski  jezik.

‣ Postopoma  razvijamo  algoritem  (z  vrha  navzdol).

Page 21: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Ali  lahko  zapišemo  algoritem  naloge,  ki  jo  ne  znamo  rešiH‣ Nemogoče.  Tedaj  algoritma  ne  moremo  zapisaH.-­‐ Algoritem  je  zapis  poteka  reševanja  naloge.  

‣ Najprej  moramo  poznaH  osnutek,  zamisel,  koncept,  zasnovo,  idejo  rešitve  naloge,  potem  se  lahko  šele  loHmo  zapisa  algoritma.

‣ Brez  rešitvenih  idej  algoritma  ni  mogoče  zapisaH.

‣ Bolj  podroben  algoritem  želimo  zapisaH,  več  moramo  vedeH  o  reševanju  anloge.

Page 22: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Kako  dobimo  rešitvene  ideje

‣ Kako  dobimo  rešitvene  ideje?  MožnosH  je  več.-­‐ Do  njih  pridemo  s  premišljevanjem.

-­‐ Najdemo  jih  v  literaturi.

-­‐ Zvemo  jih  od  sodelavcev.

‣ Rešitvena  ideja  se  lahko  pojavi  v  naših  možganih,  če  dovolj  premišljujejo  o  nalogi.-­‐ O  nalogi  premišljujejo  na  različne  načine.

Page 23: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Kako  povečamo  verjetnost,  da  se  pojavijo  prave  rešitvene  ideje‣ Nalogo  podrobno  analiziramo  ali  razčlenimo.-­‐ Izdelamo  tabelo  podatkov  in  rezultatov.

-­‐ Nalogo  grafično  predstavimo  (narišemo).

-­‐ Ukvarjamo  se  s  širšo  problema>ko  naloge.

-­‐ Iščemo  zakonitos>,  ki  so  povezane  z  nalogo.  

‣ Uporabimo  znane  rešitvene  strategije,  na  primer:-­‐ deli  in  vladaj.  

‣ Uporabimo  znano  rešitev  podobne  naloge.  

‣ Rešujemo  splošnejšo  nalogo.  

Page 24: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Naloga: ugotovi, ali je podana točka znotraj mnogokotnika!

Primer:  točka  znotraj  mnogokotnika

Page 25: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Naloga: ugotovi, ali je podana točka znotraj mnogokotnika!

Študiramo presečišča poltraka iz dane točke z mnogokotnikom.

Liho število presešišč (3)

Sodo število presešišč (6)

Primer:  točka  znotraj  mnogokotnika

Page 26: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Klic  algoritma  -­‐  ponovna  uporaba  algoritmov‣ Že  izdelan  algoritem  pokličemo.

‣ Algoritem  mora  imeH  ime  in  in  dobro  definirane  podatke  in  rezultate.

‣ Pogosto  ga  pokličemo  podobno  kot  funkcijo  ali  proceduro  (podprogram)  v  programskem  jeziku.-­‐ Klic  izvedemo  v  obliki  procedure  z:  

• Ime(  podatki,  rezulta>  )

-­‐ ali  v  obliki  funkcije  z• rezultat  =  Ime(  podatki  )

‣ Klic  algoritma  določimo  v  samem  zapisu  algoritma.

Page 27: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Način  zapisa  algoritma

‣ Za  zapis  operacij  lahko  uporabimo  različne  notacije:  -­‐ naravni  jezik,  

-­‐ psevdokodo,  

-­‐ diagram  poteka,  

-­‐ programski  jezik  (C,  C++,  Visual  Basic,  Java,  fortran...  ).

‣ Pogosto  zapišemo  algoritem  z  računalniškimi  orodji  za  pisanje  dokumentov-­‐ Tak  zapis  lažje  popravljamo  in  spreminjamo.

-­‐ Word,  Notepad,  ...  

Page 28: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Zapis  algoritma  v  naravnem  jeziku

‣ Naravni  jezik  lahko  uporabimo  za  zapis  algoritma.-­‐ Izkaže  se,  da  tak  zapis  ni  dovolj  jedrnat  in  razumljiv.  

‣ Zapis  skrajšamo  z:  -­‐ z  uporabo  simbolov,  ki  predstavljajo  elemente  v  nalogi,

-­‐ z  uporabo  matema>čnih  simbolov  in  izrazov.

‣ Algoritem  pogosto  razdelimo  na  oštevilčene  korake.  -­‐ 1.  korak

-­‐ 2.  korak  ...

Page 29: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Zapis  algoritma  z  diagramom  poteka

‣ Pri  diagramu  poteka  -­‐ posamezne  dele  algoritma  narišemo  grafično  in  jih  

povežemo  s  puščicami.

-­‐ Diagram  poteka  je  običajno  zelo  razumljiv.  

-­‐ Pogosto  ga  uporabimo  pri  grobih  algoritmih.  

-­‐ Vendar  je  risanje  algoritma  bolj  zahtevna  operacija  od  pisanja  običajnega  besedila.

Page 30: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Primer:  diagram  poteka  

Page 31: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

PrednosH  in  slabosH  diagramov  poteka

‣ PrednosH  diagramov  poteka  so:  -­‐ hitro  dojemanje  toka  izvedbe,

-­‐ uporaba  standarnih  simbolov,  

-­‐ hitro  učenje.

‣ SlabosH  diagramov  poteka  so:-­‐ težja  uporaba  računalnikov  (potrebujemo  posebne  

programe  za  risanje  algoritmov),

-­‐ slaba  izkoriščenost  prostora,

-­‐ nepreglednost  pri  podrobnejših  algoritmih,  

-­‐ potrebne  so  risarske  sposobnos>.  

Page 32: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Zapis  algoritmov  v  psevdokodi

‣ Psevdokoda  je-­‐ kombinacija  naravnega  jezika,  matema>čnih  izrazov  in  

posebnih  kontrolnih  konstruktov,  ki  so  podobni  kontrolnim  strukturam  programskih  jezikov.

‣ Spremenljivke  v  pseudokodi  so  simbolično  predstavljani  podatki,  ki  se  smejo  spremeniH-­‐ n  =  n  +  1

‣ PogosH  kontrolni  konstrukH  so:  -­‐ pogojno  izvajanje  operacij,  

-­‐ izbiranje  operacij,  

-­‐ ponavljanje  operacij  (zanke).

Page 33: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Psevdokoda

‣ LastnosH-­‐ V  psevdokodi  uporabljamo  znane  matema>čne  simbole  in  

operacije.  

-­‐ Obvezno  je  zamikanje  operacij,  ki  nastopajo  znotraj  kontrolnih  konstruktov.

-­‐ Dovoljeno  je  gnezdenje  kontrolnih  kontruktov,  kar  moramo  upošteva>  tudi  pri  zamikanju.

-­‐ Doda>  smemo  tudi  komentarje,  ki  dodatno  razlagajo  pomen  operacij.

Page 34: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

LastnosH  psevdokoda

‣ Dobre  lastnosH-­‐ Lahko  jo  zapišemo  z  računalnikom  (z  urejevalnikom  

besedil).  

-­‐ Psevdokoda  je  uporabna  tudi  pri  podrobnih  algoritmih.

-­‐ Predelava  v  programski  jezik  je  enostavna.

-­‐ Določa  jo  tekstovni  zapis.  

‣ Slabe  lastnosH-­‐ V  zapisu  ni  grafičnih  elementov.

-­‐ Standardni  kontrolni  konstruk>  ne  obstajajo.

-­‐ Sami  jih  moramo  določi>.  

Page 35: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Primer  uporabe  psevdokode

‣ Naloga:  -­‐ Določi  največji  element  izmed  podanih  n  števil  e1,  e2,  ...,  

en

‣ Podatki:-­‐  n,  e1,  e2,  ...,  en

‣ RezultaH:-­‐ emax

‣ Klic:- emax = Največji_element(n, e)

Page 36: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Primer  uporabe  psevdokode

‣ Naloga:  -­‐ Določi  največji  element  izmed  podanih  n  števil  e1,  e2,  ...,  

en

‣ Podatki:-­‐  n,  e1,  e2,  ...,  en

‣ RezultaH:-­‐ emax

‣ Klic:- emax = Največji_element(n, e)

eMax = e1Za i=2,3 ... n ponavljaj Če je ei > eMax potem eMax = ei Do semDo semKonec

Page 37: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Primer  uporabe  psevdokode

‣ Naloga:  -­‐ Določi  vsoto  n  števil  e1,  e2,  ...,  en

‣ Podatki:-­‐  n,  e1,  e2,  ...,  en

‣ RezultaH:-­‐ vsota

‣ Klic:- vsota = Določi_vsoto(n, e)

Page 38: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/gr-uni-ri-2013/algoritmi-1213.pdf · Algoritmi6|6št.6leto62012/13 matevz.dolenc@fgg.uni2lj.si Primer6računalniškegaprograma

[email protected]­‐lj.siAlgoritmi  |  št.  leto  2012/13

Primer  uporabe  psevdokode

‣ Naloga:  -­‐ Določi  vsoto  n  števil  e1,  e2,  ...,  en

‣ Podatki:-­‐  n,  e1,  e2,  ...,  en

‣ RezultaH:-­‐ vsota

‣ Klic:- vsota = Določi_vsoto(n, e)

vsota = 0Za i=1,2,... n ponavljaj vsota = vsota + eiDo semKonec