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 JEZIK OM

Pseu d o jezik je n efo rm aln a ko m b in acija p riro d n o g


jezika i n ekog zam išljen og p ro g ram sko g jezika, p a n jeg o va
u p o treb a p od razu m eva zap isivan je alg o ritam a u o b liku ko ji
je n alik n a n eki p ro g ram ski 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:

Pocetak

Otvoriti
frižider (1) Otvoriti frižider;

Staviti mleko
(2) Staviti mleko u frižider;
u frižider

Zatvoriti (3) Zatvoriti frižider.


frižider

Kraj
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 = 'subota' dan je subota
Ne

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

Ispisati
dan 9) Ispisati 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 za brojac:=p..k (s)
brojac:=brojac+s
početak brojanja, izlazna
tačka je kraj brojanja. proces
proces

Brojačka struktura
predstavlja skraćivanje Da brojac<=k

zapisa "dok" strukture: 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