26
1 1 Programiranje Tema: Algoritam prof.dr.sc. Dražena Tomiü Datum: 10.03.2009. 2 Program i algoritam RijeÏ algoritam - od imena perzijskog matematiÏara iz 9-tog stoljeÉa Abdullah Muhammad bin Musa al-Khwarizmi . RijeÏ „algorism“ u izvornom znaÏenju odnosi se samo na pravila za izvršavanje aritmetike uporabom arapskih brojeva, i evolvirao je u naziv algoritam do 18-tog stoljeÉa, s tim da je evolviralo i znaÏenje rijeÏi tako da ukljuÏuje sve konaÏne procedure za rješavanje problema ili izvršenje zadataka.

Algoritam 1

  • Upload
    drizyy

  • View
    206

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Algoritam 1

1

1

Programiranje

Tema: Algoritam

prof.dr.sc. Dražena Tomi

Datum: 10.03.2009.

2

Program i algoritam

Rije algoritam - od imena perzijskog matemati araiz 9-tog stolje a Abdullah Muhammad bin Musaal-Khwarizmi.

Rije „algorism“ u izvornom zna enju odnosi sesamo na pravila za izvršavanje aritmetikeuporabom arapskih brojeva, i evolvirao je unaziv algoritam do 18-tog stolje a, s tim da jeevolviralo i zna enje rije i tako da uklju uje svekona ne procedure za rješavanje problema iliizvršenje zadataka.

Page 2: Algoritam 1

2

3

Program i algoritam

Algoritmi se implementiraju putem ra unalnihprograma, iako esto u ograni enom obliku, jergreške u implementaciji i ograni enja ra unalamogu sprije iti ra unalni program da korektnoizvrši zadani algoritam.

Kao primjer «starosti» algoritma, esto se navoditzv. Euklidov algoritam (iz oko 300-te godineprije nove ere) ija je svrha bila izra unatinajve i zajedni ki djelitelj dva pozitivnacjelobrojna brojaNa primjer: najve i zajedni ki djelitelj za 40 i 24 je 8 jer je 8najve i cjelobrojni broj koji dijeli 40 i 24 bez ostatka.

4

Program i algoritam

1937. - britanski matemati ar Alan Turing jenapisao iznimno zna ajan rad u kojem jepredstavio jednostavni matemati ki ure aj.Njegova namjera je, izme u ostalog, bilaomogu iti formalnu i rigoroznu definicijualgoritma. Ovakva matemati ka formalizacijaomogu ila je Turingu da pokaže mogu nosti iograni enja algoritama. Pokazalo se, na primjer,da postoje dobro definirani problemi za kojenema algoritamskog rješenja.

Page 3: Algoritam 1

3

5

Program i algoritam

DEFINICIJA:Algoritam je kona an niz nedvosmislenih koraka koji suizvodljivi i ako se slijede, dovode do rješenja problema.

U matematici i ra unalnoj znanosti, pod pojmomalgoritam podrazumijeva se kona an skup dobrodefiniranih instrukcija za izvršavanje nekog zadatka kojie, za dano po etno stanje, završiti odgovaraju im

prepoznatljivim kona nim stanjem

Opis algoritma:-Neformalni (osnovni skup koraka koji se moraju izvršiti da bi se došlodo odre enog (zadanog) rezultata)

-Matemati ki rigorozni (slijed koraka koji se izvršavaju mora imatipet važnih zna ajki: kona nost, definiranost, ulaz, izlaz i efektivnost).

6

Program i algoritam

Pojam algoritma se esto ilustrira primjeromrecepta, iako je ve ina algoritama znatnokompleksnija.

Algoritmi obi no imaju korake koji se ponavljaju(iteracije) ili zahtijevaju odlu ivanje (logi ko ili nabazi usporedbe) sve dok se zadatak ne izvrši.

Me utim, bitno je naglasiti da korektno izvršavanjealgoritma ne e riješiti problem ukoliko je algoritamloše napisan ili nije odgovaraju i za zadani problem.

Page 4: Algoritam 1

4

7

Program i algoritam

Algoritmi - osnovni na in na koji ra unala obra ujuinformacije, zato što je ra unalni program u bitialgoritam koji kaže ra unalu koje specifi ne koraketreba izvršiti (i u kojem redoslijedu) kako bi seizvršio odre eni zadatak, kao što je npr.izra unavanje pla a uposlenih i sl.

Algoritam može biti bilo koji slijed operacija kojemože izvršiti Turingov sustav.

8

PRIMJER

KUHANJE KAVE

Page 5: Algoritam 1

5

9

Program i algoritam

Primjer za algoritam (na bazi recepta) -> kuhanjekave:

1. Pripremiti sastojke (kavu, še er, vodu)2. Staviti vodu na štednjak da proklju a3. U posebnu posudu staviti kavu4. Kada voda proklju a, staviti na štednjak posudu

s kavom i preliti klju alom vodom.5. Kada kava s vodom proklju a, skinuti sa

štednjaka.6. Zaliti proklju alom vodom.7. Poslužiti kavu i zasebno še er.

10

Program i algoritam

Algoritmi se mogu predstaviti na razli ite na ine,uporabom tehnika kao što su:

- * prirodni jezik- * dijagram toka (engl. flowchart)- * pseudokod- * Nassi-Scheidermann dijagram- * programski jezik

Page 6: Algoritam 1

6

11

Program i algoritam

- Prirodni jezik – narativni opis algoritma

- Dijagram toka (engl. flowchart) - slikovno, grafi ko predstavljanjealgoritma

- Pseudokod – narativni oblik prikaza algoritamskih koraka pri emuse rabi prirodni, neformalizirani jezik zajedno s formaliziranimprogramskim strukturama, odgovara redoslijedu pojavljivanjaprogramskih izraza pri konkretnoj implementaciji u programskomjeziku

- Nassi-Scheidermann dijagram - strukturirani dijagrami toka iliiteracijski dijagrami, svaki dijagram odgovara jednoj kontrolnojprogramskoj strukturi: sekvenciji, selekciji ili iteraciji

- Programski jezik – algoritam se u ra unalu implementira pomo ukonkretnog programskog jezika

12

Simboli dijagrama toka

Po etak

Kraj

Po etak i Kraj simboli koriste se zaozna avanje po etka i završetkaalgoritma.

Ulaz / IzlazUlaz i Izlaz simbol koristi za u itavanjei/ili prikaz podataka.

Uvjetispunjen?

DA NESimbol to ke odluke koristi seza prikaz grananja algoritmaovisno o rezultatu tj. ispunjenjuili neispunjenju zadanog uvjeta

ObradaSimbol obrade koristi se za prikazbilo kakvog izra una ili obradepodataka.

Simbol spajanja se koristi za povezivanjerazli itih dijelova blok dijagrama

Page 7: Algoritam 1

7

13

Vrijednost naspram varijabla

Logi ka razlika:• Vrijednost je “pojedina na konstanta” (npr. 3), vrijednost

nema lokacije u vremenu ili prostoru. Nema ažuriranja!!Vrijednost se može predstaviti u memoriji pomo ukodiranja, i takvo predstavljanje tj. pojava ima lokaciju uvremenu i prostoru.

• Varijabla služi za pohranu predstave tj. pojavevrijednosti.

Varijabla ima lokaciju u vremenu i prostoru. Može seažurirati !!!

- predstavljanje vrijednosti je “model” koncept- Kodiranje predstavljanja je “implementacijski” koncept

14

Primjeri blok dijagrama

Za brojeve A i B izra unati vrijednost danogbrojnog izraza:

X = -(A(A+B)/B-(A-B))

Page 8: Algoritam 1

8

15

Primjeri blok dijagrama

Primjer: Algoritam za izra unavanjefaktorijela broja 5 – 1x2x3x4x5

1. Postaviti broja na 52. Postaviti proizvod na 13. Sve dok je broja ve i od nule ponavljati

slijede e korake:3.1. pomnožiti proizvod i broja3.2. umanjiti broja za 1

4. Kada vrijednost broja a postane nula,zaustavlja se izvršavanje algoritamskihkoraka.

16

Primjeri blok dijagrama

Page 9: Algoritam 1

9

17

Primjeri blok dijagrama

18

Primjeri dijagrama toka

Za djelatnike koji rade na radnom mjestuslužbenika pla u pomnožiti koeficijentom1.1,za one na radnom mjestu prodava a s 1.2,za analiti are s 1.25,a za menadžere s 1.3.

Page 10: Algoritam 1

10

19

PO ETAK

E OF?

RADNOM JE STO ,

PLA A

S LUŽB ENIK? PLA A =PLA A *1.1

PRO DAVA ?

ANALITI AR?

RA DNO M JES TO ,PLA A

KRAJ

NE MAPO DAT AKA

PLA A =PLA A *1.2

P LA A =P LA A *1 .25

PLA A=PL A A*1 .3

D A

D A

D A

D A

N E

N E

N E

N E

20

Primjeri dijagrama toka

Formirati algoritam za izra unavanje zbrojabrojeva:

a) Nepoznat broj lanova(elemenata) zbrojab) Za prvih 20 ulaznih brojeva

Page 11: Algoritam 1

11

21

Primjeri dijagrama tokaa) Nepoznat broj lanova(elemenata) zbroja

22

Primjeri dijagrama tokab) Za prvih 20 ulaznih brojeva

Page 12: Algoritam 1

12

23

Polje (array)

Podatkovna struktura gdje isto ime dijeliviše podataka.

- ure eni skup podataka iji suelementi istog tipa.

- naj eš a struktura podataka- indeks je osnovni elemenat pristupa

polju koji definira ure enost polja.

24

Polje (array)

Po etna adresa polja P

P[0] P[1] P[2] P[3] P[4]

P [0...4] polje

Page 13: Algoritam 1

13

25

Polje (array)

012

3

0 1 2 3

Preslikavanje elemenata po redovima

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

0P(0,0)

3P(0,3)2P(0,2)1P(0,1)

5P(1,1)

4P(1,0)

6P(1,2)7P(1,3)

9P(2,1)8P(2,0)

10P(2,2)11P(2,3)

13P(3,1)12P(3,0)

14P(3,2)15P(3,3)

26

FOR petlja

Cikli na struktura koja podrazumijeva daje broj iteracija unaprijed poznat:

- odre ena se vrijednost broji od nekepo etne vrijednosti pa sve do nekekrajnje vrijednosti,

- rad s podru jima (jednodimenzijska -liste, dvo i višedimenzijska podru ja).

Page 14: Algoritam 1

14

27

FOR petlja Po etak

kraj

Postavljanje broja a

Algoritamski korak 1

Algoritamski korak 2

Algoritamski korak n

...

...

...

28

FOR petlja – primjer faktorjela

Page 15: Algoritam 1

15

29

Formirati algoritam za izra unavanje zbroja brojeva za prvih 20brojeva

30

Dvostruko ugnjež ene cikli ne strukture (1)

Uvjet

Uvjet

NE

NE

Uvjet

Uvjet

Page 16: Algoritam 1

16

31

Dvostruko ugnjež ene cikli ne strukture (2)

i1=m1,m2

i2=m1,m2

i1=m1,m2

i2=m1,m2

32

Sortiranje – bubble sort

Algoritam “bubble” sort je jednostavan zapo etnik, ali i veoma spor.

Logika: elementi niza se uspore uju izamjenjuju po 2 istovremeno.

Za vrijeme svakog prolaza, “bubble” sortiranjepostavlja najmanju (najve u) vrijednost uprvi element niza.

Page 17: Algoritam 1

17

33

Primjer

Dani niz X(i) sortirati:a) u rastu em redoslijedub) u opadaju em redoslijedu

34

Primjer Po etak

N

i = 1, N-1

j = i+1, N

X(i)<X(j)

pom = X(i)X(i) = X(j)

X(j) = pom

X(i)

1

1

Kraj

DA

NE

X(i)

X(j)

Page 18: Algoritam 1

18

35

Primjer

Izgradnja Algoritma za odre ivanje broja razli itihelemenata niza A(i), i=1,n

A. Prvi korak - razumijevanje problema:

Korak 1. Testni niz brojeva: 2, 2, 7, 5, 3, 7, 5, 6.

Korak 2. Niz ima ukupno 8 elemenata sponavljanjima, odnosno 5 razli itih elemenata (bezponavljanja).

36

Primjer

B. Drugi korak - detaljna razrada svakog pojedina nog koraka.

Korak 2. Kako saznati koliko ima razli itih elemenata niza(bez ponavljanja) ?

Za svaki element niza koji se u itava potrebno je provjeritida li je prethodno ve u itan, tj. treba provjeriti da li je rijeo prvom pojavljivanju odre ene vrijednosti ili je rije oponavljanju. Da bi se vrijednost elementa niza imala s imporediti treba osigurati istovremeno u itavanje po dvaelementa niza, što zna i da su potrebne dvije cikli nestrukture, i to jedna unutar druge. Unutarnji, tj. «brži»ciklus se koristi za pore enje trenuta no u itane vrijednostisa svim prethodno u itanim vrijednostima. Ako je rije oponovljenoj vrijednosti to treba zabilježiti – u ovu svrhu sekoristi varijabla k u koju se bilježi 1 ukoliko je rije oponavljanju, a na po etku ciklusa se uvijek postavlja na 0.

Page 19: Algoritam 1

19

37

Primjer

B. Drugi korak - detaljna razrada svakog pojedina nog koraka.

Kada se završi unutarnji («brži») ciklus ispituje se vrijednostvarijable k, te ukoliko je k=0 slijedi da nije rije oponovljenoj vrijednosti i treba je pribrojiti vrijednostivarijable Broja koja se koristi za pohranjivanje ukupnogbroja razli itih elemenata niza (prije po etka oba ciklusaBroja se postavlja na 0). Ukoliko je k=1 zna i da je rije oponovljenoj vrijednosti i ne radi se nikakvo pribrajanje, vese prelazi na u itavanje slijede eg elementa niza iz vanjskog(«sporijeg») ciklusa.

38

Primjer

C. Tre i korak – provjera algoritma na grani ne uvjete

U ovom slu aju grani ni uvjet jeste da se odmah i naprvoj i drugoj poziciji niza pojave identi ne vrijednosti,što zna i da treba osigurati da se izvrši samo jednopribrajanje.

Page 20: Algoritam 1

20

39

40

Pseudokod

Narativni oblik prikaza logikeprograma

Koristi i hrvatske rije i poredpredefiniranih izraza za opisprogramske logike

Page 21: Algoritam 1

21

41

Pseudokod – osnovne programske strukture

Sekvencija

…algoritamski korak (naredba/izraz) 1algoritamski korak (naredba/izraz) 2

…algoritamski korak (naredba/izraz) n

42

Pseudokod – osnovne programske struktureSelekcija

…IF (uvjet) THEN

algoritamski korak (naredba/izraz) a1algoritamski korak (naredba/izraz) a2

…algoritamski korak (naredba/izraz) an

ELSEalgoritamski korak (naredba/izraz) b1algoritamski korak (naredba/izraz) b2…

algoritamski korak (naredba/izraz) bnEND IF

Page 22: Algoritam 1

22

43

Pseudokod

SelekcijaSTART

postaviti broja na 5postaviti proizvod na 1IF broja > 0 THEN

pomnožiti proizvod i brojaumanjiti broja za 1

ponoviti ispitivanje vrijednosti broja aELSE

prikazati faktorijelEND IF

END

44

Pseudokod – osnovne programske struktureIteracija DO WHILE

…WHILE (uvjet) DO

algoritamski korak (naredba/izraz) 1algoritamski korak (naredba/izraz) 2

…algoritamski korak (naredba/izraz) n

ENDWHILE

Page 23: Algoritam 1

23

45

PseudokodIteracija DO WHILE

STARTpostaviti broja na 5postaviti proizvod na 1WHILE broja > 0 DO

pomnožiti proizvod i brojaumanjiti broja za 1

END WHILEprikazati faktorijel

END

46

Pseudokod – osnovne programske struktureIteracija DO UNTIL

…REPEAT

algoritamski korak (naredba/izraz) 1algoritamski korak (naredba/izraz) 2

…algoritamski korak (naredba/izraz) n

UNTIL izraz

Page 24: Algoritam 1

24

47

PseudokodIteracija DO UNTIL

STARTpostaviti broja na 5postaviti proizvod na 1REPEAT

pomnožiti proizvod i brojaumanjiti broja za 1

UNTIL broja >0prikazati faktorijel

END

48

Pseudokod – osnovne programske struktureIteracija FOR

…FOR broja OD TO broja DO

algoritamski korak (naredba/izraz) 1algoritamski korak (naredba/izraz) 2

…algoritamski korak (naredba/izraz) n

REPEAT

Page 25: Algoritam 1

25

49

PseudokodIteracija FOR

STARTpostaviti proizvod na 1FOR i = 1 TO 5

pomnožiti proizvod i brojaumanjiti broja za 1

REPEATprikazati faktorijel

END

50

Primjer: Izgradnja Algoritma za odre ivanje broja razli itih elemenata nizaA(i), i=1,n

STARTu itati N

FOR i=1 TO Nu itati elemente niza A(i)

REPEATpostaviti Broja na 1FOR i = 2 TO N

Postaviti k na 0FOR j=1 TO i-1

IF A(i)=A(j) THENk = 1

END IFREPEATIF k = 0 THEN

Broja = Broja +1END IF

REPEATprikazati Broja

END

Page 26: Algoritam 1

26

51

P I T A NJA