You are on page 1of 36

ALGORITMI

TEORIJSKA OSNOVA RAČUNARA

Sve poslove koje računar obavlja izvode se postupno, korak


po korak, u konačnom vremenu.

Svaki korak je jasno preciziran, kao i prelazak na svaki


naredni korak.

Na kraju postupka, kad računar završi rad (ukoliko se to


uopšte desi, jer moguće je i da se rad nikada ne završi), dobije se
nešto kao rezultat.
TEORIJSKA OSNOVA RAČUNARA

Algoritam predstavlja skup akcija sa definisanim redosledom


njihovog obavljanja, koji primenjen na polazni skup podataka,
dovodi do traženih rezultata.

U procesu programiranja, skup akcija definisan je


mogućnostima računara, odnosno naredbama programskog jezika
koji se koristi, dok se redosled izvršavanja akcija zadaje pomoću
algoritamskih (programskih) struktura.
TEORIJSKA OSNOVA RAČUNARA

Efektivni postupci su svuda prisutni u realnosti, od onih


svakodnevnih:
buđenja,
ustajanja,
umivanja,
doručka,
koji se obično izvode rutinski, po ustaljenim navikama i redu.
OSNOVNI POJMOVI ALGORITAMA

Pomenimo da postoji veliki broj različitih matematičkih


formalizacija pojma algoritma.

Mi ćemo pomenuti najvažnije:

1. Tjuringove mašine
2. Postovi sistemi
3. Karkovljevi algoritmi
4. Rekurzivne funkcije
5. Čerčov -račun
6. Kombinatorski račun
7. URK (beskonačne registarske mašine)
OSNOVNI POJMOVI ALGORITAMA

Matematički se
dokazuje da su sve ove
formalizacije algoritama
međusobno ekvivalentne,
odnosno svaki algoritam koji
se može predstaviti pomoću
jedne od ovih formalizacija,
može se predstaviti i pomoću
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 doći do rešenja


problema.
OSNOVNI POJMOVI ALGORITAMA

Svaki programski jezik


predstavlja neku formalizaciju
algoritama, pa zato možemo
koristiti definiciju pojma
program:

Program je algoritam zapisan na


nekom programskom jeziku.
OPISIVANJE ALGORITMA

Na osnovu prethodno rečenom o algoritmu, jasno je da se


algoritam može opisati kako pomoću bilo koje od navedenih
matematičkih formalizacija, tako i pomoću nekog programskog
jezika.

Upoznaćemo neke od načina za opisivanje algoritama:

 prirodni jezik
 pseudo jezik
 blok šeme (dijagrami toka)
OPIS ALGORITMA PRIRODNIM JEZIKOM

Da bi algoritam koji saopštavamo prirodnim jezikom bio


precizan i dovoljno detaljan potrebno je voditi računa da izlaganje
bude jasno i nedvosmisleno, što je posebno značajno pri izlaganju
redosleda operacija koje se moraju izvršiti.
OPIS ALGORITMA PSEUDO JEZIKOM

Pseudo jezik je neformalna kombinacija prirodnog jezika i


nekog zamišljenog 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 VELIČINE U ALGORITMU

Promenljiva je prostor u memoriji računara koji je imenovan


i služi za čuvanje odgovarajućih 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 obično ograničavaju na


slova latinice i još neke dopunske simbole.
PROMENLJIVE VELIČINE U ALGORITMU

primeri

Napraviti algoritam za povećavanje promenljive X za 2.


rešenje:
X = X+2.

Napraviti algoritam za međusobnu zamenu vrednosti promenljivih


X i Y.
rešenje:

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
obezbeđuju preglednost programa.
ELEMENTARNE STRUKTURE ALGORITMA

Kao rezultat upotrebe novog stila rada povećana je čitljivost


programa, smanjena verovatnoća pojavljivanja grešaka i olakšano
njihovo pronalaženje, olakšano je dokazivanje korektnosti
programa, pojednostavljen je postupak naknadnog prilagođavanja
i prepravljanja programa.
ELEMENTARNE STRUKTURE ALGORITMA

Dokaz da se svaki algoritam može predstaviti i bez upotrebe


skokova, samo uz upotrebu programskih struktura:

if...then...else...(ako...onda...inače..struktura koja
obezbeđuje odlučivanje i grananje) i

while...repeat... (dok važi...ponavljaj... struktura koja


obezbeđuje ponavljanje) praktično je omogućeno zasnivanje i
upotrebu novog stila. Radi čitljivosti i efikasnosti proceduralni
programski jezici najčešće obuhvataju i još neke programske
strukture.
ELEMENTARNE STRUKTURE ALGORITMA

Pod algoritamskom (programskom) strukturom


podrazumevamo više koraka (komandi programskog jezika)
koji čine jednu celinu. Postoje tri elementarne algoritamske
strukture:

 Linijska
 Razgranata
 Ciklična
LINIJSKA STRUKTURA

Niz algoritamskih koraka koji se bezuslovno izvode jedan za


drugim naziva se linijskom (sekvencijalnom) algoritamskom
strukturom.
LINIJSKA STRUKTURA

Linijska algoritamska struktura ima tačno jednu ulaznu


tačku, tačno jednu izlaznu tačku i takav tok da se svaki njen korak
bezuslovno izvršava tačno jednom. Predstavićemo 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 frižider:
RAZGRANATA STRUKTURA

Algoritamska struktura koja obezbeđuje izvođenje dva


različita postupka pri čemu izbor zavisi od nekog uslova naziva se
uslovnim grananjem ili razgranatom algoritamskom strukturom.
RAZGRANATA STRUKTURA

Uslovno grananje ima tačno jednu ulaznu tačku, tačno jednu


izlaznu tačku i takav tok da se svaki njen korak izvršava najviše
jednom, pri čemu će svaki korak biti izvršen pod nekim
odgovarajućim uslovom (ne postoji korak koji se ni pod kojim
uslovima neće izvršiti).

Da uslov Ne

proces 1 proces 2
RAZGRANATA STRUKTURA

Poseban slučaj uslovnog grananja je višestruko grananje.


Višestruko grananje možemo predstaviti kao više dvostrukih
uslovnih grananja, a u slučaju kada se odlučuje na osnovu
vrednosti samo jednog izraza tada možemo koristiti i poseban
zapis:

Uslov

vrednost 1 vrednost 2 ... ... vrednost n ostalo

Proces 1 Proces 2 ... Proces n Proces n+1


RAZGRANATA STRUKTURA
Početak

Uneti X
1) Uneti X;

dan =
X=1 Da 2) Ako je X=1 onda:
'ponedeljak'
dan je ponedeljak
Ne

X=2 Da dan = 'utorak' 3) ...inače, ako je X=2 onda:


dan je utorak
Ne

X=3 Da dan = 'sreda' 4) ...inače, ako je X=3 onda:


dan je sreda
Ne

X=4 Da dan = 'četvrtak' 5) ...inače, ako je X=4 onda:


dan je četvrtak
Ne

X=5 Da dan = 'petak' 6) ...inače, ako je X=5 onda:


dan je petak
Ne
7) ...inače, ako je X=6 onda:
X=6 Da dan = 's ubota' dan je subota
Ne

dan = 'nedelja' 8) ...inače, dan je nedelja;

Ispisati
dan 9) Ispis ati dan.

Kraj
CIKLIČNA STRUKTURA

Ponavljanjem, ili
cikličnom algoritamskom
strukturom nazivamo strukturu
koja obezbeđuje ponavljanje
nekih koraka algoritma.
CIKLIČNA STRUKTURA

Ciklična algoritamska struktura ima tačno jednu ulaznu


tačku, tačno jednu izlaznu tačku i obezbeđuje da se u zavisnosti od
nekog uslova izvršavaju koraci koji se ponavljaju ili izlazi iz
strukture.

U upotrebi je više cikličnih struktura:

(dok) struktura (while)


(do) struktura (until)
brojačka struktura (for)
CIKLIČNA STRUKTURA

Predstavićemo “dok” strukturu pseudo jezikom i na dva


načina dijagramom toka:

1.dok je ispunjen uslov ponavljati: 2


2.proces;

uslov Ne
proces
Da

Da uslov proces

Ne
CIKLIČNA STRUKTURA

Početak

Zbir = 0 1) Postaviti Zbir=0;

Uneti Broj 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
6) Ispisati Zbir;
Ispisati
Zbir

Kraj

Ovo je primer upotrebe "dok" strukture.


CIKLIČNA STRUKTURA

Formirati algoritam za izračunavanje proizvoda dva prirodna broja:


Početak

Uneti M,N 1) Uneti M i N;

Proizvod = 0 2) Postaviti Proizvod=0;

3) Ponavljati:4-5 do: N=0

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

Ne N=0

Da

Ispisati
6) Ispisati Proizvod;
Proizvod

Kraj

Ovo je primer upotrebe "do" strukture.


CIKLIČNA STRUKTURA

Brojačka struktura
obezbeđuje ponavljanje brojac:=p
nekog procesa zadati broj
puta. Ulazna tačka je početak za brojac:=p..k (s)
brojac:=brojac+s
brojanja, izlazna tačka je kraj
brojanja. Brojačka struktura proces
proces

predstavlja skraćivanje zapisa


"dok" strukture: Da brojac<=k

Ne
CIKLIČNA STRUKTURA

1. neka je brojač := početak;


2. dok je brojač <= kraj ponavljati: 3-4
3. proces;
4. brojač := brojač + 1;

brojac:=p

za brojac:=p..k (s)
brojac:=brojac+s

proces
proces

Da brojac<=k

Ne
CIKLIČNA STRUKTURA

u obliku:
za brojač := početak do kraj (sa korakom 1) ponavljati: 2
proces;
Brojačku strukturu u dijagramu toka možemo predstavljati kao

brojac:=p

za brojac:=p..k (s)
brojac:=brojac+s

proces
proces

Da brojac<=k

Ne

gde je i brojač, p početna vrednost brojača, k krajnja vrednost brojača i s


korak kojim se brojač menja.
CIKLIČNA STRUKTURA

primer
Formirati algoritam za izračunavanje sume brojeva 1 do N, gde se N
učitava:
Početak

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 4) Suma:=Suma+A;

Ispisati 6) Ispisati Suma;


Suma

Kraj
FORMIRANJE ALGORITMA

Postoji više metoda formiranja algoritma, ali mi ćemo se


zadržati na metodu od vrha naniže (top-down).

Metod formiranja algoritama od vrha prema dnu podrazumeva


postepeno rešavanje detalja u polaznom vrlo uopštenom algoritmu.

Rešavanje po nivoima omogućava izgradnju složenog algoritma


iz više jednostavnijih, čime se postupak čini jednostavnijim i bržim i
smanjuje se verovatnoća pojavljivanja grešaka.
FORMIRANJE ALGORITMA

Konstrukcija algoritma se završava kada svi procesi budu do


kraja razvijeni, odnosno opisani dovoljno detaljno da se algoritam
može implementirati.

Ovaj metod se dobro uklapa u strukturno programiranje i kao svoj


završni rezultat daje program na nekom programskom jeziku.

You might also like