Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 36

ALGORITMI

TEORIJSKA OSNOVA RAUNARA

Sve poslove koje raunar obavlja izvode se postupno,


korak po korak, u konanom vremenu.
Svaki korak je jasno preciziran, kao i prelazak na svaki
naredni korak.
Na kraju postupka, kad raunar zavri rad (ukoliko se to
uopte desi, jer mogue je i da se rad nikada ne zavri), dobije
se neto kao rezultat.

TEORIJSKA OSNOVA RAUNARA


Algoritam predstavlja skup akcija sa definisanim
redosledom njihovog obavljanja, koji primenjen na polazni skup
podataka, dovodi do traenih rezultata.
U procesu programiranja, skup akcija definisan je
mogunostima raunara, odnosno naredbama programskog
jezika koji se koristi, dok se redosled izvravanja akcija zadaje
pomou algoritamskih (programskih) struktura.

TEORIJSKA OSNOVA RAUNARA

Efektivni postupci su svuda prisutni u realnosti, od onih


svakodnevnih:
buenja,
ustajanja,
umivanja,
doruka,
koji se obino izvode rutinski, po ustaljenim navikama i redu.

OSNOVNI POJMOVI ALGORITAMA


Pomenimo da postoji veliki broj razliitih matematikih
formalizacija pojma algoritma.
Mi emo pomenuti najvanije:
1.
2.
3.
4.
5.
6.
7.

Tjuringove maine
Postovi sistemi
Karkovljevi algoritmi
Rekurzivne funkcije
erov -raun
Kombinatorski raun
URK (beskonane registarske maine)

OSNOVNI POJMOVI ALGORITAMA

Matematiki
se
dokazuje da su sve ove
formalizacije
algoritama
meusobno
ekvivalentne,
odnosno svaki algoritam koji
se moe predstaviti pomou
jedne od ovih formalizacija,
moe
se
predstaviti
i
pomou bilo koje druge.

OSNOVNI POJMOVI ALGORITAMA

Za nas je dovoljno da koristimo neku od intuitivnih definicija


algoritma:
Algoritam je precizan opis postupaka koji vode eljenom cilju.

Algoritam je uputstvo za obavljanje posla.


Algoritam je skup uputstava koja opisuju kako doi do reenja
problema.

OSNOVNI POJMOVI ALGORITAMA

Svaki
predstavlja
algoritama,
koristiti
program:

programski jezik
neku formalizaciju
pa zato moemo
definiciju
pojma

Program je algoritam zapisan


na nekom programskom jeziku.

OPISIVANJE ALGORITMA

Na osnovu prethodno reenom o algoritmu, jasno je da se


algoritam moe opisati kako pomou bilo koje od navedenih
matematikih formalizacija, tako i pomou nekog programskog
jezika.

Upoznaemo neke od naina za opisivanje algoritama:


prirodni jezik
pseudo jezik
blok eme (dijagrami toka)

OPIS ALGORITMA PRIRODNIM JEZIKOM

Da bi algoritam koji saoptavamo prirodnim jezikom bio


precizan i dovoljno detaljan potrebno je voditi rauna da
izlaganje bude jasno i nedvosmisleno, to je posebno znaajno
pri izlaganju redosleda operacija koje se moraju izvriti.

OPIS ALGORITMA PSEUDO JEZIKOM


Pseudo jezik je neformalna kombinacija prirodnog jezika i
nekog zamiljenog programskog jezika, pa njegova upotreba
podrazumeva zapisivanje algoritama u obliku koji je nalik na neki
programski jezik.

*Zdravo svete!
#include <iostream.h>
int main ()
{
cout << "Zdravo svete!\n";
return 0;
}

OPIS ALGORITMA DIJAGRAMOM TOKA

PROMENLJIVE VELIINE U ALGORITMU

Promenljiva je prostor u memoriji raunara koji je imenovan


i slui za uvanje odgovarajuih vrednosti.
Pri izradi algoritama promenljivim se daju imena (oznake)
po elji, bitno je samo da se ta imena mogu zapisati u okviru
zapisa algoritma.
U programimskim jezicima imena se obino ograniavaju
na slova latinice i jo neke dopunske simbole.

PROMENLJIVE VELIINE U ALGORITMU


primeri
Napraviti algoritam za poveavanje promenljive X za 2.
reenje:
X = X+2.

Napraviti algoritam za meusobnu zamenu vrednosti


promenljivih X i Y.
reenje:
Z = X;
X = Y;
Y = Z.

ELEMENTARNE STRUKTURE ALGORITMA

Strukturno programiranje je stil programiranja (pisanja


programa i formiranja algoritama) koji podrazumeva upotrebu
izvesnih pravila koja su poznata kao (lepo pisanje) koja
obezbeuju preglednost programa.

ELEMENTARNE STRUKTURE ALGORITMA

Kao rezultat upotrebe novog stila rada poveana je itljivost


programa, smanjena verovatnoa pojavljivanja greaka i
olakano njihovo pronalaenje, olakano je dokazivanje
korektnosti programa, pojednostavljen je postupak naknadnog
prilagoavanja i prepravljanja programa.

ELEMENTARNE STRUKTURE ALGORITMA

Dokaz da se svaki algoritam moe predstaviti i bez


upotrebe skokova, samo uz upotrebu programskih struktura:
if...then...else...(ako...onda...inae..struktura koja
obezbeuje odluivanje i grananje) i
while...repeat... (dok vai...ponavljaj... struktura koja
obezbeuje ponavljanje) praktino je omogueno zasnivanje i
upotrebu novog stila. Radi itljivosti i efikasnosti proceduralni
programski jezici najee obuhvataju i jo neke programske
strukture.

ELEMENTARNE STRUKTURE ALGORITMA

Pod
algoritamskom
(programskom)
strukturom
podrazumevamo vie koraka (komandi programskog jezika)
koji ine jednu celinu. Postoje tri elementarne algoritamske
strukture:

Linijska
Razgranata
Ciklina

LINIJSKA STRUKTURA

Niz algoritamskih koraka koji se bezuslovno izvode jedan


za drugim naziva se linijskom (sekvencijalnom) algoritamskom
strukturom.

LINIJSKA STRUKTURA
Linijska algoritamska struktura ima tano jednu ulaznu
taku, tano jednu izlaznu taku i takav tok da se svaki njen
korak bezuslovno izvrava tano jednom. Predstaviemo pseudo
jezikom i dijagramom toka elementarnu linijsku strukturu koju ini
niz od dva koraka:
proces 1;
proces 2;

LINIJSKA STRUKTURA
primer:

Svima nama poznat je algoritam koji opisuje kako staviti


mleko u friider:

Pocetak
Otvoriti
friider
Staviti mleko
u friider
Zatvoriti
friider
Kraj

(1) Otvoriti friider;


(2) Staviti mleko u friider;
(3) Zatvoriti friider.

RAZGRANATA STRUKTURA
Algoritamska struktura koja obezbeuje izvoenje dva
razliita postupka pri emu izbor zavisi od nekog uslova naziva
se uslovnim grananjem ili razgranatom algoritamskom
strukturom.

RAZGRANATA STRUKTURA
Uslovno grananje ima tano jednu ulaznu taku, tano
jednu izlaznu taku i takav tok da se svaki njen korak izvrava
najvie jednom, pri emu e svaki korak biti izvren pod nekim
odgovarajuim uslovom (ne postoji korak koji se ni pod kojim
uslovima nee izvriti).

Da

proces 1

uslov

Ne

proces 2

RAZGRANATA STRUKTURA
Poseban sluaj uslovnog grananja je viestruko grananje.
Viestruko grananje moemo predstaviti kao vie dvostrukih
uslovnih grananja, a u sluaju kada se odluuje na osnovu
vrednosti samo jednog izraza tada moemo koristiti i poseban
zapis:

Uslov
vrednost 1
Proces 1

vrednost 2
Proces 2

...

...
...

vrednost n
Proces n

ostalo
Proces n+1

RAZGRANATA STRUKTURA
Poetak

Uneti X

X=1

1) Uneti X;
Da

dan =
'ponedeljak'

Da

dan = 'utorak'

3) ...inae, ako je X=2 onda:


dan je utorak

Da

dan = 'sreda'

4) ...inae, ako je X=3 onda:


dan je sreda

Da

dan = 'etvrtak'

5) ...inae, ako je X=4 onda:


dan je etvrtak

Da

dan = 'petak'

6) ...inae, ako je X=5 onda:


dan je petak

Da

dan = 'subota'

2) Ako je X=1 onda:


dan je ponedeljak

Ne

X=2
Ne

X=3
Ne

X=4
Ne

X=5
Ne

X=6

7) ...inae, ako je X=6 onda:


dan je subota

Ne

8) ...inae, dan je nedelja;

dan = 'nedelja'

Ispisati
dan
Kraj

9) Ispisati dan.

CIKLINA STRUKTURA

Ponavljanjem,
ili
ciklinom
algoritamskom
strukturom nazivamo strukturu
koja obezbeuje ponavljanje
nekih koraka algoritma.

CIKLINA STRUKTURA

Ciklina algoritamska struktura ima tano jednu ulaznu


taku, tano jednu izlaznu taku i obezbeuje da se u zavisnosti
od nekog uslova izvravaju koraci koji se ponavljaju ili izlazi iz
strukture.
U upotrebi je vie ciklinih struktura:
(dok) struktura (while)
(do) struktura (until)
brojaka struktura (for)

CIKLINA STRUKTURA
Predstaviemo dok strukturu pseudo jezikom i na dva
naina dijagramom toka:
1.dok je ispunjen uslov ponavljati: 2
2.proces;

uslov
proces
Da
Da

uslov
Ne

proces

Ne

CIKLINA STRUKTURA

Poetak

Zbir = 0

Uneti Broj

1) Postaviti Zbir=0;
2) Uneti Broj;
3) Dok je Broj>=0 ponavljati 4-5
5) Uneti Broj;

Uneti Broj
4) Zbir=Zbir+Broj;
Zbir=Zbir+Broj

Da

Broj >= 0
Ne

Ispisati
Zbir

6) Ispisati Zbir;

Kraj

Ovo je primer upotrebe "dok" strukture.

CIKLINA STRUKTURA
Formirati algoritam za izraunavanje proizvoda dva prirodna broja:
Poetak

Uneti M,N

Proizvod = 0

1) Uneti M i N;
2) Postaviti Proizvod=0;
3) Ponavljati:4-5 do: N=0

Proizvod = Proizvod + M
N= N- 1

Ne

4) Proizvod = Proizvod + M;
5) N = N-1;

N=0

Da

Ispisati
Proizvod

6) Ispisati Proizvod;

Kraj

Ovo je primer upotrebe "do" strukture.

CIKLINA STRUKTURA

Brojaka
struktura
obezbeuje
ponavljanje
nekog procesa zadati broj
puta. Ulazna taka je
poetak brojanja, izlazna
taka je kraj brojanja.
Brojaka
struktura
predstavlja
skraivanje
zapisa "dok" strukture:

brojac:=p

za brojac:=p..k (s)

brojac:=brojac+s

proces

proces
Da

brojac<=k
Ne

CIKLINA STRUKTURA
1.
2.
3.
4.

neka je broja := poetak;


dok je broja <=
ponavljati: 3-4
proces;
broja := broja + 1;

kraj

brojac:=p

za brojac:=p..k (s)

brojac:=brojac+s

proces

proces
Da

brojac<=k
Ne

CIKLINA STRUKTURA
u obliku:

za broja := poetak do kraj (sa korakom 1) ponavljati: 2


proces;
Brojaku strukturu u dijagramu toka moemo predstavljati kao
brojac:=p

za brojac:=p..k (s)

brojac:=brojac+s

proces

proces
Da

brojac<=k
Ne

gde je i broja, p poetna vrednost brojaa, k krajnja vrednost


brojaa i s korak kojim se broja menja.

CIKLINA STRUKTURA
primer

Formirati algoritam za izraunavanje sume brojeva 1 do N, gde


se N uitava:
Poetak

Uneti N

1) Uneti N;

Suma = 0

2) Postaviti Suma=0;

za A:=1..N

3) Za A:=1 do N ponavljati:4

Suma := Suma + A

Ispisati
Suma
Kraj

4) Suma:=Suma+A;

6) Ispisati Suma;

FORMIRANJE ALGORITMA

Postoji vie metoda formiranja algoritma, ali mi emo se


zadrati na metodu od vrha nanie (top-down).
Metod formiranja algoritama od vrha prema dnu
podrazumeva postepeno reavanje detalja u polaznom vrlo
uoptenom algoritmu.
Reavanje po nivoima omoguava izgradnju sloenog
algoritma iz vie jednostavnijih, ime se postupak ini
jednostavnijim i brim i smanjuje se verovatnoa pojavljivanja
greaka.

FORMIRANJE ALGORITMA

Konstrukcija algoritma se zavrava kada svi procesi budu


do kraja razvijeni, odnosno opisani dovoljno detaljno da se
algoritam moe implementirati.
Ovaj metod se dobro uklapa u strukturno programiranje i
kao svoj zavrni rezultat daje program na nekom programskom
jeziku.

You might also like