Vous êtes sur la page 1sur 26

Programiranje

Tema: Algoritam

prof.dr.sc. Dražena Tomi

Datum: 10.03.2009. 1

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.

1
Program i algoritam

Algoritmi se implementiraju putem ra unalnih


programa, iako esto u ograni enom obliku, jer
greške u implementaciji i ograni enja ra unala
mogu sprije iti ra unalni program da korektno
izvrši zadani algoritam.

Kao primjer «starosti» algoritma, esto se navodi


tzv. Euklidov algoritam (iz oko 300-te godine
prije nove ere) ija je svrha bila izra unati
najve i zajedni ki djelitelj dva pozitivna
cjelobrojna broja
Na primjer: najve i zajedni ki djelitelj za 40 i 24 je 8 jer je 8
najve i cjelobrojni broj koji dijeli 40 i 24 bez ostatka.
3

Program i algoritam

1937. - britanski matemati ar Alan Turing je


napisao iznimno zna ajan rad u kojem je
predstavio jednostavni matemati ki ure aj.
Njegova namjera je, izme u ostalog, bila
omogu iti formalnu i rigoroznu definiciju
algoritma. Ovakva matemati ka formalizacija
omogu ila je Turingu da pokaže mogu nosti i
ograni enja algoritama. Pokazalo se, na primjer,
da postoje dobro definirani problemi za koje
nema algoritamskog rješenja.

2
Program i algoritam

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

U matematici i ra unalnoj znanosti, pod pojmom


algoritam podrazumijeva se kona an skup dobro
definiranih instrukcija za izvršavanje nekog zadatka koji
e, 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šlo
do odre enog (zadanog) rezultata)
-Matemati ki rigorozni (slijed koraka koji se izvršavaju mora imati
pet važnih zna ajki: kona nost, definiranost, ulaz, izlaz i efektivnost).
5

Program i algoritam

Pojam algoritma se esto ilustrira primjerom


recepta, iako je ve ina algoritama znatno
kompleksnija.

Algoritmi obi no imaju korake koji se ponavljaju


(iteracije) ili zahtijevaju odlu ivanje (logi ko ili na
bazi usporedbe) sve dok se zadatak ne izvrši.

Me utim, bitno je naglasiti da korektno izvršavanje


algoritma ne e riješiti problem ukoliko je algoritam
loše napisan ili nije odgovaraju i za zadani problem.

3
Program i algoritam

Algoritmi - osnovni na in na koji ra unala obra uju


informacije, zato što je ra unalni program u biti
algoritam koji kaže ra unalu koje specifi ne korake
treba izvršiti (i u kojem redoslijedu) kako bi se
izvršio odre eni zadatak, kao što je npr.
izra unavanje pla a uposlenih i sl.

Algoritam može biti bilo koji slijed operacija koje


može izvršiti Turingov sustav.

PRIMJER

KUHANJE KAVE

4
Program i algoritam

Primjer za algoritam (na bazi recepta) -> kuhanje


kave:
1. Pripremiti sastojke (kavu, še er, vodu)
2. Staviti vodu na štednjak da proklju a
3. U posebnu posudu staviti kavu
4. 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.

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

10

5
Program i algoritam

- Prirodni jezik – narativni opis algoritma

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


algoritma

- Pseudokod – narativni oblik prikaza algoritamskih koraka pri emu


se rabi prirodni, neformalizirani jezik zajedno s formaliziranim
programskim strukturama, odgovara redoslijedu pojavljivanja
programskih izraza pri konkretnoj implementaciji u programskom
jeziku

- Nassi-Scheidermann dijagram - strukturirani dijagrami toka ili


iteracijski dijagrami, svaki dijagram odgovara jednoj kontrolnoj
programskoj strukturi: sekvenciji, selekciji ili iteraciji

- Programski jezik – algoritam se u ra unalu implementira pomo u


konkretnog programskog jezika
11

Simboli dijagrama toka


Po etak
Po etak i Kraj simboli koriste se za
ozna avanje po etka i završetka
algoritma.
Kraj

Ulaz i Izlaz simbol koristi za u itavanje Ulaz / Izlaz


i/ili prikaz podataka.

DA Uvjet NE
Simbol to ke odluke koristi se is pun jen?

za prikaz grananja algoritma


ovisno o rezultatu tj. ispunjenju
ili neispunjenju zadanog uvjeta

Simbol obrade koristi se za prikaz


bilo kakvog izra una ili obrade Obrada
podataka.

Simbol spajanja se koristi za povezivanje


razli itih dijelova blok dijagrama

12

6
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 u
kodiranja, i takvo predstavljanje tj. pojava ima lokaciju u
vremenu i prostoru.
• Varijabla služi za pohranu predstave tj. pojave
vrijednosti.
Varijabla ima lokaciju u vremenu i prostoru. Može se
ažurirati !!!
- predstavljanje vrijednosti je “model” koncept
- Kodiranje predstavljanja je “implementacijski” koncept
13

Primjeri blok dijagrama

Za brojeve A i B izra unati vrijednost danog


brojnog izraza:

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

14

7
Primjeri blok dijagrama

Primjer: Algoritam za izra unavanje


faktorijela broja 5 – 1x2x3x4x5

1. Postaviti broja na 5
2. Postaviti proizvod na 1
3. Sve dok je broja ve i od nule ponavljati
slijede e korake:
3.1. pomnožiti proizvod i broja
3.2. umanjiti broja za 1
4. Kada vrijednost broja a postane nula,
zaustavlja se izvršavanje algoritamskih
koraka. 15

Primjeri blok dijagrama

16

8
Primjeri blok dijagrama

17

Primjeri dijagrama toka

Za djelatnike koji rade na radnom mjestu


službenika pla u pomnožiti koeficijentom
1.1,
za one na radnom mjestu prodava a s 1.2,
za analiti are s 1.25,
a za menadžere s 1.3.

18

9
P O E T AK

E OF? DA N E MA
PO DAT AKA

NE
RADNO
M JE S TO ,
PL A A

DA
S LU ŽB E N IK ? P LA A = P LA A *1.1

NE

PRO DAVA ?
DA P LA A = P LA A *1.2

NE

A N A L ITI A R ?
DA P LA A =P LA A *1 .2 5

NE

P L A A = P L A A *1 .3

R A D N O M JE S TO ,
PL A A

KRAJ

19

Primjeri dijagrama toka

Formirati algoritam za izra unavanje zbroja


brojeva:

a) Nepoznat broj lanova(elemenata) zbroja


b) Za prvih 20 ulaznih brojeva

20

10
Primjeri dijagrama toka
a) Nepoznat broj lanova(elemenata) zbroja

21

Primjeri dijagrama toka


b) Za prvih 20 ulaznih brojeva

22

11
Polje (array)
Podatkovna struktura gdje isto ime dijeli
više podataka.
- ure eni skup podataka iji su
elementi istog tipa.
- naj eš a struktura podataka
- indeks je osnovni elemenat pristupa
polju koji definira ure enost polja.

23

Polje (array)

P [0...4] polje

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

Po etna adresa polja P

24

12
Polje (array)

15P(3,3)
14P(3,2)
0 1 2 3 13P(3,1)
12P(3,0)
0 1 2 3 11P(2,3)
0
10P(2,2)
1 7
4 5 6 9P(2,1)
2
8P(2,0)
8 9 10 11
3 7P(1,3)
6P(1,2)
12 13 14 15
5P(1,1)
4P(1,0)
3P(0,3)
2P(0,2)
1P(0,1)
0P(0,0)

Preslikavanje elemenata po redovima

25

FOR petlja

Cikli na struktura koja podrazumijeva da


je broj iteracija unaprijed poznat:

- odre ena se vrijednost broji od neke


po etne vrijednosti pa sve do neke
krajnje vrijednosti,
- rad s podru jima (jednodimenzijska -
liste, dvo i višedimenzijska podru ja).

26

13
FOR petlja Po etak

...
Postavljanje broja a

Algoritamski korak 1

Algoritamski korak 2

...
Algoritamski korak n

...
kraj

27

FOR petlja – primjer faktorjela

28

14
Formirati algoritam za izra unavanje zbroja brojeva za prvih 20
brojeva

29

Dvostruko ugnjež ene cikli ne strukture (1)

NE
Uvjet

Uvjet

NE Uvjet
Uvjet

30

15
Dvostruko ugnjež ene cikli ne strukture (2)

i1=m1,m2 i1=m1,m2

i2=m1,m2 i2=m1,m2

31

Sortiranje – bubble sort

Algoritam “bubble” sort je jednostavan za


po etnik, ali i veoma spor.
Logika: elementi niza se uspore uju i
zamjenjuju po 2 istovremeno.
Za vrijeme svakog prolaza, “bubble” sortiranje
postavlja najmanju (najve u) vrijednost u
prvi element niza.

32

16
Primjer

Dani niz X(i) sortirati:


a) u rastu em redoslijedu
b) u opadaju em redoslijedu

33

Primjer
Po etak

i = 1, N-1

X(i)

j = i+1, N

X(j)

DA

X(i)<X(j)

NE

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

X(i)

1
Kraj

34

17
Primjer

Izgradnja Algoritma za odre ivanje broja razli itih


elemenata 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 s


ponavljanjima, odnosno 5 razli itih elemenata (bez
ponavljanja).

35

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 provjeriti


da li je prethodno ve u itan, tj. treba provjeriti da li je rije
o prvom pojavljivanju odre ene vrijednosti ili je rije o
ponavljanju. Da bi se vrijednost elementa niza imala s im
porediti treba osigurati istovremeno u itavanje po dva
elementa niza, što zna i da su potrebne dvije cikli ne
strukture, i to jedna unutar druge. Unutarnji, tj. «brži»
ciklus se koristi za pore enje trenuta no u itane vrijednosti
sa svim prethodno u itanim vrijednostima. Ako je rije o
ponovljenoj vrijednosti to treba zabilježiti – u ovu svrhu se
koristi varijabla k u koju se bilježi 1 ukoliko je rije o
ponavljanju, a na po etku ciklusa se uvijek postavlja na 0. 36

18
Primjer

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

Kada se završi unutarnji («brži») ciklus ispituje se vrijednost


varijable k, te ukoliko je k=0 slijedi da nije rije o
ponovljenoj vrijednosti i treba je pribrojiti vrijednosti
varijable Broja koja se koristi za pohranjivanje ukupnog
broja razli itih elemenata niza (prije po etka oba ciklusa
Broja se postavlja na 0). Ukoliko je k=1 zna i da je rije o
ponovljenoj vrijednosti i ne radi se nikakvo pribrajanje, ve
se prelazi na u itavanje slijede eg elementa niza iz vanjskog
(«sporijeg») ciklusa.

37

Primjer

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

U ovom slu aju grani ni uvjet jeste da se odmah i na


prvoj i drugoj poziciji niza pojave identi ne vrijednosti,
što zna i da treba osigurati da se izvrši samo jedno
pribrajanje.

38

19
39

Pseudokod

Narativni oblik prikaza logike


programa

Koristi i hrvatske rije i pored


predefiniranih izraza za opis
programske logike

40

20
Pseudokod – osnovne programske strukture

Sekvencija


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

algoritamski korak (naredba/izraz) n

41

Pseudokod – osnovne programske strukture


Selekcija

IF (uvjet) THEN
algoritamski korak (naredba/izraz) a1
algoritamski korak (naredba/izraz) a2

algoritamski korak (naredba/izraz) an
ELSE
algoritamski korak (naredba/izraz) b1
algoritamski korak (naredba/izraz) b2

algoritamski korak (naredba/izraz) bn
42
END IF

21
Pseudokod

Selekcija
START
postaviti broja na 5
postaviti proizvod na 1
IF broja > 0 THEN
pomnožiti proizvod i broja
umanjiti broja za 1
ponoviti ispitivanje vrijednosti broja a
ELSE
prikazati faktorijel
END IF
END
43

Pseudokod – osnovne programske strukture


Iteracija DO WHILE

WHILE (uvjet) DO
algoritamski korak (naredba/izraz) 1
algoritamski korak (naredba/izraz) 2

algoritamski korak (naredba/izraz) n
ENDWHILE
44

22
Pseudokod
Iteracija DO WHILE
START
postaviti broja na 5
postaviti proizvod na 1
WHILE broja > 0 DO
pomnožiti proizvod i broja
umanjiti broja za 1
END WHILE
prikazati faktorijel
END

45

Pseudokod – osnovne programske strukture


Iteracija DO UNTIL

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

algoritamski korak (naredba/izraz) n
UNTIL izraz
46

23
Pseudokod
Iteracija DO UNTIL

START
postaviti broja na 5
postaviti proizvod na 1
REPEAT
pomnožiti proizvod i broja
umanjiti broja za 1
UNTIL broja >0
prikazati faktorijel
END

47

Pseudokod – osnovne programske strukture


Iteracija FOR

FOR broja OD TO broja DO
algoritamski korak (naredba/izraz) 1
algoritamski korak (naredba/izraz) 2

algoritamski korak (naredba/izraz) n
REPEAT
48

24
Pseudokod
Iteracija FOR

START
postaviti proizvod na 1
FOR i = 1 TO 5
pomnožiti proizvod i broja
umanjiti broja za 1
REPEAT
prikazati faktorijel
END

49

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

START
u itati N
FOR i=1 TO N
u itati elemente niza A(i)
REPEAT
postaviti Broja na 1
FOR i = 2 TO N
Postaviti k na 0
FOR j=1 TO i-1
IF A(i)=A(j) THEN
k=1
END IF
REPEAT
IF k = 0 THEN
Broja = Broja +1
END IF
REPEAT
prikazati Broja
END
50

25
P I T A NJA

51

26

Vous aimerez peut-être aussi