You are on page 1of 42

Algoritmi i programiranje

Osnovni pojmovi i naini


predstavljanja algoritama
Etape u reavanju problema uz pomo
raunara
1. Precizan opis problema
2. Definisanje matematikog modela i
izbor metoda za njegovo reavanje
3. Projektovanje algoritama
4. Pisanje i testiranje programa
5. Izrada pratee dokumentacije
1. Opis problema
definisati koje su informacije poznate i
dostupne kao ulazni podaci
koja informacija i u kom obliku treba
da se dobije kao rezultat
u ovu etapu mogu biti ukljuena i lica
koja se ne bave programiranjem
(lekari, tehnolozi, ekonomisti,...)
2. Definisanje modela i izbor metoda
Nakon definisanja problema, prelazi se na opis
problema formalnim, matematikim aparatom
korienjem matematikih formula i relacija
Primer:

Sistem linearnih j-na je Ax b mat. model

treba odabrati metod za nalaenje nepoznatog vektora


x det A i
xi (Kramerov metod)
det A
1

x A b Ovaj nain se skoro nikad ne
1 adjA koristi, ve LU, Gausov
po definiciji A metod, Keli-Hamiltonova
det A teorema,...
Definisanje modela i izbor metoda (nast.)
Pored tvz. tanih metoda za reavanje,
postoje i pribline metode
U raunarstvu se veoma esto koristi aparat
numerike analize (jer se zahteva dobijanje
nekog numerikog reazultata)
Postoji itav niz problema koji se ne mogu reiti
klasinim metodama ili je njihovo reavanje
isuvie glomazno
npr. za reavanje sistema j-na velikog reda iskljuivo
se koriste numeriki metodi
numeriki metodi koriste samo osnovne aritmetike
opercije
PRIMER:
Nai pozitivan koren j-ne x2-a=0, a>0
Traeno egzaktno reenje je x a
ako nam je potrebna brojna vrednost, ovo reenje
nije od koristi
Jedan numeriki metod za reavanje j-ne x2-a=0,
svodi se na izraunavanje niza {Xk}:

1 a
x0 a, xk 1 xk , k 0,1,2,...
2 xk

Moe se pokazati da niz {Xk} konvergira ka a , kada k


3. Projektovanje algoritma
U Websterovom reniku se re algoritam
definie kao specijalni metod za reavanje
neke klase problema.
u raunarskoj tehnici, re algoritam se odnosi na
precizan metod koji se moe iskoristiti za
reavanje problema na raunaru
geneza rei algoritam: predstavlja latiniziranu
transkripciju imena poznatog naunika iz IX veka iz
Srednje Azije, Muhameda Al-Horezma, tj. Muhameda iz
Horezma
Horezmo je stara drava koja se nalazila na teritoriji
dananjeg Uzbekistana
Muhamed Al-Horezmi je, izmedju ostalog, definisao niz
postupaka (pravila) za razna izraunavanja
Osobine valjanog algoritma
Diskretnost
Determinisanost
Efektivnost (konanost)
Rezultativnost
Masovnost
(Optimalnost)
Diskretnost
algoritam se sastoji od konanog broja
posebnih koraka (algoritamski koraci)
svaki korak moe zahtevati obavljanje
jedne ili vie operacija
u zavisnosti od toga koje operacije raunar
moe da obavi, uvode se ogranienja za
tip operacija koje se u algoritmu mogu
koristiti (najee +, -, *, /)
Determinisanost
svaki algoritamski korak mora biti strogo
definisan i potpuno jasan
npr. izraz izraunaj 5/0 ili dodaj 6 ili 7 x
nisu dozvoljeni
posle izvrenja tekueg alg. koraka mora biti
jednoznano definisano koji je sledei korak
Efektivnost (konanost)
sve operacije koje se javljaju u jednom
algoritamskom koraku moraju se izvriti za
konano (razumno kratko) vreme
vreme izvrenja celog algoritma mora biti
konano, tj. razumno dugo
Rezultativnost
svaki algoritam mora posle konanog broja
koraka generisati traeni rezultat
algoritam moe imati 0 ili vie ulaznih podataka
i moe generisti jedan ili vie izlaznih rezultata
Masovnost
svaki algoritam definie postupak za
reavanje klase problema, a ne
pojedinanog sluaja
npr. reavanje sistema j-na bilo kog
reda, mnoenje matrica proizvoljnog
reda,...
4. Pisanje i testiranje programa
Nakon razrade algoritma prelazi se na pisanje
programa
program mora biti napisan u formi koju raunar razume
svaki algoritamski korak se zamenjuje nizom instrukcija
(instrukcije ine raunarski program)
svaka instrukcija mora biti napisana po odredjenim
pravilima. Ta pravila ine jezik kojim se izdaju naredbe
raunaru (programski jezik)
svaki programski jezik ima skup pravila kojima se definiu
vaee jezike konstrukcije sintaksa jezika
znaenje (dejstvo) instrukcija ini semantiku jezika
Jedini jezik direktno razumljiv raunaru je mainski
jezik
za raunar ovaj jezik predstavlja niz elektronskih impulsa
programer ovaj jezik simboliki izraava pomou
binarnih brojeva (niz nula i jedinica)
svaki raunar ima svoj mainski jezik koji je direktno
zavisan od hardvera raunara (zovu se jo i nii
programski jezici)
Vii programski jezici su nezavisni od hardvera raunara.
Program napisan na viem programskom jeziku za jedan
raunar, moe se izvravati i na drugom raunaru
Program napisan na viem programskom jeziku raunar ne
moe direktno razumeti.
Potreban mu je prevodilac sa vieg na nii jezik.
Prevodjenje obavljaju posebni programi kompilatori
(kompajleri, prevodioci)
U fazi prevodjenja programa vri se sintaksna analiza i
otkrivaju se formalne (pravopisne ) greke.
greke logikog tipa raunar ne moe otkriti
Nakon faze kompajliranja, prelazi se na izvrenje sa
test primerima
testiranje se obavlja za poznate rezultate
testiranjem se mogu otkriti logike greke
test primere treba odabrati tako da se kroz svaku
granu algoritma, tj. liniju programa prodje bar jednom
Testiranjem se ne dokazuje korektnost, ve
neispravnost algoritma ili programa
Za dokaz korektnosti programa koristi se aparat
matematike logike
Izrada pratee dokumentacije
Dokumentacija sadri
opis problema
korieni metod
program
uputstvo za instaliranje i korienje
programa
Naini predstavljanja algoritama
Tekstualni
Grafiki (pomou blok ema)
Pseudo kodom
Strukturogramom
Tekstualni nain
Koriste se precizne reenice govornog
jezika
Koristi se za lica koja se prvi put sreu sa
pojmom algoritma
Dobra osobina: razumljivost za iri krug ljudi

Loe: nepreciznost koja proistie iz


nepreciznosti samog jezika
Primer1
Zameniti sadraje dve memorijske
lokacije, A i B
Reenje potrebna je trea, pomona,
lokacija
1. sadraj lokacije A zapamtiti u pomonu lokaciju, P
2. sadraj lokacije B zapamtiti u lokaciju A
3. sadraj lokacije P zapamtiti u lokaciju B
4. kraj 2
A B

1 3
P
Primer2
Cikliki pomeriti u levo sadraje lokacija
A, B i C
1 2 3

P A B C

1. iz A u P
4
2. iz B u A
3. iz C u B
4. iz P u C
5. kraj
Primer3
Cikliki pomeriti u levo sadraje lokacija
a1, a2, ..., an
1 2 3 n

P a1 a2 a3 an-1 an

iz a1 u P kako izvriti
n+1
iz ai u ai-1, za i=2,...,n pomeranje za
iz P u an k mesta?
kraj
Euklidov algoritam za nalaenje NZD dva
prirodna broja, m i n

1. Podeliti m sa n i ostatak zapamtiti u r;


2. Ako je r jednako 0, NZD je n i kraj, inae
prei na korak 3;
3. Zameniti m sa n, n sa r, i prei na korak 1;
Grafiko predstavljanje algoritma
Koriste se odredjeni grafiki simboli za
predstavljanje pojedinih aktivnosti u
algoritmu
Ideja je pozajmljena iz teorije grafova
Algoritam se predstavlja usmerenim grafom
vorovi grafa predstavljaju aktivnosti koje se obavljaju
u algoritmu
potezi ukazuju na sledeu aktivnost koja treba da se
obavi
Grafiko predstavljanje algoritma
Polazni vor u usmerenom grafu koji
predstavlja algoritam nema dolaznih potega,
a ima samo jedan izlazni poteg (granu)
poetak

Krajnji vor u grafu koji predstavlja algoritam


nema izlaznih potega, a ima samo jedan
dolazni poteg
kraj
Grafiko predstavljanje algoritma
Blok oblika romboida koristi se za oznaavanje
ulaznih i izlaznih aktivnosti

ulaz: izlaz:

Blok obrade je pravougaonog oblika obrada

Blok odluke
da uslov ne
Grafiko predstavljanje algoritma
Blok spajanja potega
Osnovne algoritamske strukture
Kombinovanjem gradivnih blokova dobijaju
se osnovne algoritamske strukture
sekvenca
alternacija (selekcija)
petlja (ciklus)
Pomou osnovnih algoritamskih struktura
moe se predstaviti svaki algoritam
Sekvenca
linijska struktura koja se dobija kaskadnim
povezivanjem blokova obrade
Algoritamski koraci se izvravaju
A1 redom, jedan za drugim
Algoritamski korak Ai, i=2,...,n ne
A2 moe da otpone sa izvrenjem
dok se korak Ai-1 ne zavri
A3 sekvenca predstavlja niz naredbi
dodeljivanja (:=)
oblik naredbe:
An promenljiva:=vrednost
a:=b
n:=n+1
Alternacija (selekcija)
Omoguava uslovno izvrenje niza
algoritamskih koraka

da ne da
uslov uslov

S1 S2 S1

Blokovi oznaeni sa S1 i S2 mogu sadrati bilo koju


kombinaciju osnovnih algoritamskih struktura.
Primer1
Nacrtati dijagram toka algoritama kojim se
odredjuje vei od dva zadata broja korienjem
formule a, a b

max{ a, b}
b, a b poc
poc a,b
ideja za
a,b
nalaenje
max:=a
da ne max u nizu
a>b
da
max<b
max:=a max:=b
max:=b

max
max
kraj
kraj
Nai maksimum od tri zadata broja a, b i c
max{ a, b, c} max{max{ a, b}, c}
poc
a,b,c
da ne
a>b
da ne ne
a>c b>c

max:=a max:=c max:=b max:=c

max
kraj
Petlja (ciklus)
Omoguava da se algoritamski koraci ponavljaju vie
puta.

definisanje uslova

for i:=k1 to k2 step k3


telo petlje
ne
uslov
telo petlje
da ne uslov
telo petlje
da

repeat-until brojaka petlja


while-do k k
broj prolaza n 2 1 1
k3
Pravila
Ako petlja pone unutar then bloka ili
else bloka, u tom bloku se mora i
zavriti!
Dozvoljene su paralelne (ugnjedene)
petlje.
Nisu dozvoljene petlje koje se seku!
Pravila

Paralelne
petlje

petlje koje
se seku
Primer - Euklidov algoritam
poc poc

m,n m,n
r:=ostatak od m/n r:=ostatak od m/n
ne do-while m:=n
r 0 n:=r repeat-
da until
m:=n
n:=r ne
r=0
r:=ostatak od m/n
da
nzd:=m
nzd:=n nzd
nzd kraj
kraj
Predstavljanje algoritma pomou pseudo
koda

Koristi se tekstualni nain dopunjen


formalizmom
svaka od osnovnih algoritamskih struktura se predstavlja
na tano definisani nain:
sekvenca se predstavlja kao niz naredbi dodeljivanja
odvojenih simbolom ;
a:=5;
b:=a*b;
c:=b-a;
Predstavljanje algoritma pomou pseudo koda (nast.)

Alternacija
if (uslov) then ili if (uslov) then
niz_naredbi niz_naredbi
else endif;
niz_naredbi
endif;

if (a>b) then ili max:=a;


max:=a if (max<a) then
else max:=b
max:=b endif;
endif;
Alternacija, primer2
max(a,b,c)
if (a>b) then
if (a>c) then
max:=a
else
max:=c
endif;
else
if (b>c) then
max:=b
else
max:=c
endif;
endif;
Petlje pseudo kod

while (uslov) do repeat


niz_ naredbi niz_naredbi
enddo; until (uslov);
Primer: Primer:
r:=ostatak od m/n
while (r0) do repeat
m:=n; r:=ostatak od m/n;
n:=r; m=n;
r:=ostatak od m/n; n:=r;
enddo; until (r=0);
nzd:=n; nzd:=m;
Strukturogrami

Kombinacija grafikog i pseudo koda;


Koriste se kao prikladna dokumentacija za ve
zavrene programe.
Program se pie tako da se popunjavaju
odredjene geometrijske slike

if uslov while uslov for i:=n1,n2,n3


then else
telo
sekvenca telo petlje telo
S1 S2 petlje petlje
until uslov
Strukturogrami - primer

if a>b if a>b
then else then else
if a>c if b>c
max:=a; max:=b; then else then else

max:=a; max:=c; max:=b; max:=c;

You might also like