algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf ·...

38
Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo http://kgi.fgg.uni-lj.si/pouk/racinf doc.dr. Matevž Dolenc Algoritmi

Upload: duongtu

Post on 15-May-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo

http://kgi.fgg.uni-lj.si/pouk/racinfdoc.dr. Matevž Dolenc

Algoritmi

Page 2: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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.

‣ Lastnosti- 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Izračun povprečne vrednosti 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 sempv = vsota / n

Konec

Psevdokoda Diagram poteka

Page 4: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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,- matematič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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Zakaj pri razvoju programov uporabljamo algoritme

‣ Lahko se predvsem posvetimo 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 programirati.

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

Page 8: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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 uporabiti že izdelan algoritem, kot pa ga razviti ponovno.

- Večja učinkovitost, popularni algoritmi so praviloma pravilni, koncept ponovne uporabe.

‣ Primeri knjig z algoritmi:- A. Binstock, J. Rex, Practical Algorithms for Programmers,

Addison Wesley, 1995- G.H. Gonnet, Handbook of Algortihms and data structures,

Addison-Wesley, 1984

Page 9: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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činkovitosti

algoritma, teoretič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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Izvajalec algoritma

‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno algoritma.

- Predpostavljamo, da zna izvesti vse v algoritmu uporabljene operacije.

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

‣ 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Osnovni elementi računalniških algoritmov

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

‣ Prirejanje vrednosti spremenljivkam- n = n + 1

‣ Aritmetične, primerjalne in logične operacije- 2*(c/d -p)- a>b in c<d

‣ Ponavljalne in pogojne operacije

‣ Matematične funkcije

‣ Vhodno-izhodne operacije

Page 12: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Lastnosti algoritmov

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

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

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

‣ Končnost izvedbe: izvajanje algoritma se mora končati, 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Estetika v algoritmih

‣ Algoritem je pogosto izvirno avtorsko delo. - Ima nekatere lastnosti 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 estetiko

‣ Pogosto so elegantni algoritmi tudi zelo razumljivi in učinkoviti.

- Rekurzivni algoritmi so praviloma zelo elegantni.

Page 14: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Testiranje algoritmov

‣ Namen testiranja- je odpravljanje napak v algoritmu - in ne dokazovanje pravilnosti algoritma.- Dokazovanje pravilnosti algoritmov je zapletena naloga (tudi za

matematike)

‣ Izvesti je treba več testnih primerov. - Testni primer določa konkretne vhodne podatke.- Testni primeri morajo preskusiti vse dele algoritma. - Posebej moramo pripraviti tesne primere za mejne vrednosti

podatkov.

Page 15: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Kako testiramo algoritme

‣ Algoritem testiramo 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 testiramo 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Abstraktni nivoji algoritmov

‣ Pogosto predstavimo isto nalogo z več algoritmi na različnih nivojih abstrakcije.

- Uporabimo proces abstrakcije, pri katerem odstranimo nepotrebne podrobnosti (abstrahirati = odstraniti)

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

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

‣ Z algoritmi ne smemo pretiravati.- Za trivialne naloge ne pišemo algoritmov.

Page 17: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Časovna učinkovitost algoritmov

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

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

‣ Pogosto študiramo odvisnost števila operacij od velikosti 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Kako ustvarimo algoritem

‣ Splošnega algoritma za izdelavo algoritmov ni.

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

‣ 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 zmogljivosti programskega jezika, ki ga nameravamo uporabiti.

Page 20: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Zapis algoritma ni preprost, tudi če imamo rešitvene ideje

‣ Obstajajo naloge, ki jih znamo rešiti, pa jih je kljub temu težko zapisati v obliki algoritma.

‣ Določiti 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Ali lahko zapišemo algoritem naloge, ki jo ne znamo rešiti

‣ Nemogoče. Tedaj algoritma ne moremo zapisati.- Algoritem je zapis poteka reševanja naloge.

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

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

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

Page 22: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Kako dobimo rešitvene ideje

‣ Kako dobimo rešitvene ideje? Možnosti 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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 problematiko naloge.- Iščemo zakonitosti, 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

dr. Matevž Dolenc, [email protected], 18.4.2008Naslov: Algoritmi

Primer: točka znotraj mnogokotnika

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

Page 25: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

dr. Matevž Dolenc, [email protected], 18.4.2008Naslov: Algoritmi

Primer: točka znotraj mnogokotnika

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)

Page 26: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Klic algoritma - ponovna uporaba algoritmov

‣ Že izdelan algoritem pokličemo.

‣ Algoritem mora imeti 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, rezultati )

- 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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 matematičnih simbolov in izrazov.

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

- 2. korak ...

‣ Vrstni red izvajanja lahko predpišemo s tipičnim stavkom:- Nadaljuj na koraku k.

Page 29: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

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.

‣ Gradniki diagramov poteka

Page 30: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

dr. Matevž Dolenc, [email protected], 18.4.2008Naslov: Algoritmi

Primer: diagram poteka

Page 31: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Prednosti in slabosti diagramov poteka

‣ Prednosti diagramov poteka so: - hitro dojemanje toka izvedbe,- uporaba standarnih simbolov, - hitro učenje.

‣ Slabosti 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 sposobnosti.

Page 32: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Zapis algoritmov v psevdokodi

‣ Psevdokoda je- kombinacija naravnega jezika, matematičnih izrazov in

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

‣ Spremenljivke v pseudokodi so simbolično predstavljani podatki, ki se smejo spremeniti

- n = n + 1

‣ Pogosti kontrolni konstrukti so: - pogojno izvajanje operacij, - izbiranje operacij, - ponavljanje operacij (zanke).

Page 33: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Psevdokoda

‣ Lastnosti- V psevdokodi uporabljamo znane matematične simbole in

operacije. - Obvezno je zamikanje operacij, ki nastopajo znotraj kontrolnih

konstruktov.

- Dovoljeno je gnezdenje kontrolnih kontruktov, kar moramo upoštevati tudi pri zamikanju.

- Dodati smemo tudi komentarje, ki dodatno razlagajo pomen operacij.

Page 34: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Lastnosti psevdokoda

‣ Dobre lastnosti- 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 lastnosti- V zapisu ni grafičnih elementov.- Standardni kontrolni konstrukti ne obstajajo.- Sami jih moramo določiti. - Skrbeti moramo za zamikanje, sicer zapis ni čitljiv.

Page 35: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Primer uporabe psevdokode

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

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

‣ Rezultati:- emax

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

Page 36: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Primer uporabe psevdokode

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

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

‣ Rezultati:- 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/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Primer uporabe psevdokode

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

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

‣ Rezultati:- vsota

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

Page 38: Algoritmi - media.matevzdolenc.commedia.matevzdolenc.com/ul-fgg/ri-2011/algoritmi-0809.pdf · Izvajalec algoritma ‣ Izvajalec algoritma je lahko oseba, ki pozna problemsko domeno

http://kgi.fgg.uni-lj.si/pouk/racinfNaslov: Algoritmi

Primer uporabe psevdokode

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

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

‣ Rezultati:- vsota

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

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