You are on page 1of 12

POJAM ALGORITAM

ALGORITAM postupak ili pravilo za rjeavanje odreene vrste problema


svodi se na izvoenje pojedinih osnovnih operacija zadanim
redoslijedom
sastoji se od opisa skupa koraka
PRIMJERI algoritama:
prelaenje ulice: redoslijed
1. pogledaj lijevo
2. pogledaj desno
3. ako ide vozilo stani
4. ako nema vozila - prijei
kuharski recepti
zbrajanje decimalnih brojeva
Ime dolazi od arapskog matematiara Mohamed ibn Musa al Horezmi (Muhamed sin
Muse iz Horezma) koji je ivio u 9. st. On je razradio i u knjizi opisao pravila za
provoenje aritmetikih operacija s brojevima u dekadskom obliku.
Original je izgubljen, ali postoji prijevod na latinski gdje kod svakog pravila pie: Dixit
Algorizmi (Algorizmi je govorio).
Kasnije Algorithmus, Algoritam.
U poetku, algoritam se koristio samo kod pravila raunanja u dekadskom sustavu., a
kasnije za razliita pravila za obavljanje razliitih zadataka.
Do sredine XX. stoljea - naziv algoritam koriste samo matematiari
- pojavom raunala taj pojam se iri i u druga podruja

Osnovni algoritamski konstrukti:


1. SLIJED (SEKVENCA): skup jednog ili vie koraka algoritma koji se jedan za drugim
broj koraka je proizvoljan
PRIMJER:
1) unesi n vrijednosti i zbroji ih
2) izraunaj prosjenu vrijednost
3) ispii zbroj i prosjenu vrijednost
2. GRANANJE (SELEKCIJA): odluka koju od dvije ili vie sekvenci treba izvriti s
obzirom na postavljeni uvjet
UVJET istina S1
neistina S2
IF uvjet THEN S1
ELSE S2
IF .. THEN.. ELSE konstrukt veine programskih jezika visoke razine
3. PONAVLJANJE (ITERACIJA): slijed algoritamskih koraka koji se provodi
odreeni broj puta, sve dok se ne ispuni (ili dok je odreeni uvjet neispunjen)
Petlje FOR, WHILE, REPEAT

Uvjeti koje mora zadovoljavati algoritam:


1. tonost (daje toan ishod za sve mogue ulaze i problemske situacije)
2. brzina (algoritam mora dati toan ishod u zadovoljavajuem vremenskom periodu)
3. razumljivost (mora biti razumljiv i primjenjiv i u drugim okolnostima

Nain prikaza algoritma:


1. grafiki (koritenjem posebnih simbola postaje univerzalan)
2. pisan u obliku koraka
3. pseudokod

Elementi dijagrama toka:


Poetak ili
kraj algoritma
Unos
podataka,
prikaz
rezultata
Jednostavna
radnja
(naredba)
Odluka ili
grananje

Tok programa

Nastavak
dijagrama

1. zadatak:
Nacrtati algoritam za prelazak ceste na zebri bez semafora.

poetak

pogledaj lijevo,
pa desno

ne

dola
zi
auto

da

dodaj tekst

kraj

2. zadatak:
Algoritam za izraunavanje hipotenuze pravokutnog trokuta.

3. zadatak:
Algoritam od dva broja uvijek ispisuje vei broj.

4. zadatak:
Algoritam preraunava kune u eure iili US dolare.

5. zadatak:
Algoritam zbraja brojeve koje korisnik upisuje. Kada upie 0 program ispisuje ukupni
zbroj.

Elementi pseudokoda:
Poetak
Poetak
ili Kraj.
kraj algoritma
Unos
podataka,
prikaz
rezultata
Jednostavna
radnja
(naredba)
Odluka ili
grananje

Ulaz(x);
Ulaz(x,y);
Izlaz(x);
Izlaz('Ispisani tekst');
Izlaz('Vrijednost je', x);
C:=x+y;
Abs apsolutna
Ili
vrijednost
C:=abs(x-y);
Ako uvjet onda naredba 1
Inae naredba 2;

Tok programa

Nastavak
dijagrama

Prikaz algoritma pseudokodom


1. zadatak:
Algoritam za izraunavanje hipotenuze pravokutnog trokuta.
poetak
ulaz(a,b);
c:=sqrt(a2+b2);
izlaz(c);
kraj

2. zadatak:
Algoritam od dva broja uvijek ispisuje vei broj.
poetak
ulaz(x);

ulaz(y);
ako x>y onda izlaz(x)
inae izlaz(y);
kraj

3. zadatak:
Algoritam preraunava kune u eure i US dolare.
poetak
ulaz(kune);
izlaz('eli eure?');
ulaz(odgovor);
ako odgovor='Da' onda izlaz(kune/7,1)
inae izlaz(kune/5,3);
kraj

4. zadatak:
Algoritam izraunava trajanje utrke na temelju polaznog vremena (sat, minuta, sekunda) i
zavrnog vremena.
a) rezultat je prikazan u sekundama
b) rezultat je prikazan u minutama i sekundama
npr. poetak je u 13:40:20, a kraj u 14:30:10 utrka je trajala 49 minuta i 50 sekundi
Oito je da i jedno i drugo vrijeme moramo prikazati u sekundama, a zatim izraunati
razliku.
poetak
ulaz(satp,minp,sekp);
ulaz(satz,minz,sekz);
sekundep:=satp*3600+minp*60+sekp;
sekundez:=satz*3600+minz*60+sekz;
trajanje:=sekundez-sekundep;
izlaz ('Utrka je trajala ',trajanje,'sekundi);
a)
mintrajanje:=trajanje div 60;
sektrajanje:=trajanje mod 60;
izlaz ('Utrka je trajala ',mintrajanje,'minuta i ',sektrajanje,' sekundi);
kraj

b)

div je operator cjelobrojnog dijeljenja daje rezultat


mod je operator cjelobrojnog dijeljenjadaje ostatak

5. zadatak:
Algoritam izraunava s koliko novanica od 100, 10, 5 i 1 kune treba isplatiti gotovinu na
bankomatu.
poetak

ulaz(kune);
sto:=kune div 100;
ostatak1:=kune mod 100;
deset:= ostatak1 div 10;
ostatak2:=ostatak1 mod 10;
pet:=ostatak2 div 5;
jedan:= ostatak2 mod 5;
izlaz('100 * ', sto);
izlaz('10 * ', deset);
izlaz('5 * ', pet);
izlaz('1 * ', jedan);
kraj.

Programske petlje prikazane pseudokodom


Programskom petljom smatramo isjeak programa u kojem se odreeni niz instrukcija
ponavlja odreeni broj puta. Broj ponavljanja moe biti unaprijed zadan ili moe ovisiti o
nekom uvjetu.
Razlikujemo 3 vrste programskih petlji:
petlja sa zadanim brojem ponavljanja
petlja s uvjetom na vrhu (na poetku)
petlja s uvjetom na dnu (na kraju)
1. petlja sa zadanim brojem ponavljanja
za kv:=poetna vrijednost do zavrna vrijednost initi
poetak
instrukcije;
kraj
kv je kontrolna varijabla ija vrijednost se mijenja od poetne do zavrne
vrijednosti
instrukcije se izvode za svaku vrijednost kontrolne varijable
2. petlja s uvjetom na vrhu
dok uvjet initi
poetak
instrukcije;
kraj
instrukcije se izvode ako je uvjet istinit
petlja se ponavlja sve dok je uvjet istinit
moe se desiti situacija da u prvom provjeravanju uvjet ne bude istinit tako
da se instrukcije nee izvesti niti jednom
3. petlja s uvjetom na dnu

ponavljati
instrukcije;
dok uvjet;

instrukcije se izvode ako je uvjet neistinit


petlja se ponavlja sve dok je uvjet neistinit
u trenutku kad uvjet postane istinit petlja se prekida
instrukcije se izvode barem jednom

Primjeri:
1. Uitati 10 brojeva i izraunati njihovu sumu i njihov prosjek.
2. Uitati 20 brojeva i prebrojati koliko ima negativnih.
3. Ispisati tablicu prvih 100 prirodnih brojeva, njihovih kvadrata i njihovih korijena
4. Uitavati brojeve sve dok je njihova suma manja od 1000
5. Uitavati cijele pozitivne brojeve sve dok je njihov umnoak manji od 200 000
6. Treba generirati sljedei niz: 1, 2, 4, 8, 16, 32, Treba ispisati sve lanove koji su
manji od 4000.
7. Treba uitati reenicu (reenica zavrava tokom). Algoritam ispisuje koliko rijei
ima reenica.
broj:=1;
ponavljaj
ulaz(znak);
ako znak=' ' onda broj:=broj+1;
dok znak='.';
izlaz('U reenici ima ', broj,' rijei');
8. Zadan je niz 1, 3, 9, 27, Treba ispisati prvi lan niza vei od 10000.
clanniza:=1;
ponavljaj
clanniza:=clanniza*3;
dok clanniza>10000;
9. Uitavanje podataka o ueniku sve dok korisnik eli.
ponavljaj
ulaz(ime, prezime);
ulaz(ocjena);
ulaz(vladanje);
izlaz('eli podatke za jo jednog uenika?);
ulaz(odgovor);
dok odgovor='Ne';

Primjeri algoritama:
1. Algoritam ispisuje poruku: Hou 5!
poetak
izlaz('Hou 5!');
kraj
2. Algoritam omoguava upis poruke, a zatim poruku prikazuje na ekranu.

poetak
ulaz(poruka);
izlaz(poruka);
kraj
Objanjenje: U memoriji varijablu poruka punimo sadrajem koji upie korisnik.
Nakon toga ispisujemo sadraj varijable poruka.
3. Algoritam omoguava unos dva broja, a zatim prikazuje njihov zbroj.
poetak
ulaz(broj1,broj2);
zbroj:=broj1+broj2;
izlaz(zbroj);
kraj
4. Algoritam omoguava unos tri broja, a zatim prikazuje njihovu srednju vrijednost.
poetak
ulaz(broj1,broj2,broj3);
srednja:=(broj1+broj2+broj3)/3;
izlaz(srednja);
kraj
5. Algoritam omoguava unos dva broja, a zatim prikazuje zbroj njihovih kvadrata.
poetak
ulaz(a,b);
zbroj:=a*a+b*b;
izlaz(zbroj);
kraj
6. Algoritam izraunava opseg i povrinu kruga (unosi R).
poetak
ulaz(r);
opseg:=2*3,14*r;
povrina:=r*r*3,14;
izlaz(opseg, povrina);
kraj
7. Algoritam izraunava opseg i povrinu kvadrata (unosi stranicu a).
poetak
ulaz(a);
opseg:=4*a;
povrina:=a*a;
izlaz(opseg, povrina);
kraj
8. Algoritam izraunava opseg i povrinu pravokutnika (unosi stranice a i b).
poetak
ulaz(a,b);
opseg:=2*a+2*b;
povrina:=a*b;
izlaz(opseg, povrina);
kraj

9. Algoritam izraunava opseg i povrinu pravokutnog trokuta (unosi stranice a i b).


poetak
ulaz(a,b);
c:=sqrt(a*a+b*b);
sqrt je funkcija koja vraa drugi korijen broja
opseg:=a+b+c;
povrina:=a*b/2;
izlaz(opseg, povrina);
kraj
10. Algoritam izraunava oploje kocke (unosi stranicu a).
poetak
ulaz(a);
oploje:=6*a*a;
izlaz(oploje);
kraj
11. Algoritam unosi dva broja i ispisuje njihov zbroj, razliku, umnoak, kvocijent,
rezultat cjelobrojnog dijeljenja i ostatak kod cjelobrojnog dijeljenja.
poetak
ulaz(a,b);
zbroj:= a+b;
razlika:=a-b;
umnoak:=a*b;
kvocijent:=a/b;
cjrez:=a div b;
cjost:=a mod b;
izlaz(zbroj,razlika,umnoak,kvocijent,cjrez,cjost);
kraj
12. Algoritam pretvara sekunde u oblik sati, minute, sekunde.
poetak
ulaz(sekunde);
sat:=sekunde div 3600;
ostatak:=sekunde mod 3600;
minute:=ostatak div 60;
nove_sekunde:=ostatak mod 60;
izlaz(sat,minute,nove_sekunde);
kraj
13. Algoritam unosi troznamenkasti broj, a zatim ispisuje tog znamenke broja.
poetak
ulaz(broj);
stotica:=broj div 100;
ostatak:=broj mod 100;
desetica:=ostatak div 10;
jedinice:=ostatak mod 10;
izlaz(stotica,desetica,jedinica);
kraj
14. Algoritam omoguava unos dva broja, a zatim prikazuje manji broj.
poetak

ulaz(a,b);
ako a<b onda izlaz(a)
inae izlaz(b);
kraj
15. Algoritam ispisuje apsolutnu vrijednost broja.
poetak
ulaz(a);
ako a<0 onda poetak
r:=-1*a,
izlaz(r);
kraj
inae izlaz(a);
kraj
16. Algoritam unosi broj i provjerava je li djeljiv sa 3.
poetak
ulaz(a);
ako a mod 3=0 onda izlaz('Broj',a, 'je djeljiv s 3')
inae izlaz('Broj',a, 'nije djeljiv s 3');
kraj
17. Algoritam unosi broj i ispisuje je li broj paran ili neparan.
poetak
ulaz(a);
ako a mod 2=0 onda izlaz('Broj',a, 'je paran')
inae izlaz('Broj',a, 'nije paran');
kraj
18. Algoritam unosi tri broja i provjerava zadovoljavaju li Pitagorin uvjet. Ispisuje
odgovarajuu poruku.
poetak
ulaz(a,b,c);
ako a*a +b*b=c*c onda izlaz('Brojevi',a, b,c,'su Pitagorini brojevi')
inae izlaz('Brojevi',a, b,c,'nisu Pitagorini brojevi');
kraj

19. Algoritam unosi prirodni broj n, a zatim n puta ispisuje poruku: Dobar dan.
poetak
ulaz(n);
za kv:=1 do n initi
izlaz('Dobar dan');
kraj
20. Algoritam unosi broj n i ispisuje sve brojeve od 1 do n.
poetak
ulaz(n);
za kv:=1 do n initi
izlaz(n);
kraj
21. Algoritam unosi prirodni broj n i ime korisnika, a zatim n puta ispisuje to ime.
poetak
ulaz(n);
ulaz(ime);
za kv:=1 do n initi
izlaz(ime);
kraj
22. Algoritam ispisuje sve prirodne brojeve od 1 do 100 i njihove kvadrate.
poetak
za broj:=1 do 100 initi
poetak
kvadrat:=broj*broj;
izlaz(broj,kvadrat);
kraj
kraj
23. Algoritam unosi prirodni broj n, a zatim ispisuje sve parne brojeve od 1 do tog
broja.
poetak
ulaz(n);
za broj:=1 do n initi
poetak
ako broj mod 2 =0 onda izlaz(broj);
kraj
kraj
24. Algoritam unosi prirodni broj n, a zatim ispisuje sve brojeve djeljive sa 7 od 1 do
tog broja.
poetak
ulaz(n);
za broj:=1 do n initi
poetak
ako broj mod 7 =0 onda izlaz(broj);
kraj
kraj

25. Algoritam unosi 10 brojeva i ispisuje njihovu sumu.


poetak
suma:=0;
za kv:=1 do 10 initi
poetak
ulaz(broj);
suma:=suma+broj;
kraj
izlaz(suma);
kraj
26. Algoritam zbraja sve brojeve od 1 do n (n unosi na poetku) i ispisuje njihovu
sumu.
poetak
suma:=0;
ulaz(n);
za broj:=1 do n initi
poetak
suma:=suma+broj;
kraj
izlaz(suma);
kraj
27. Algoritam unosi 10 brojeva i ispisuje njihov umnoak.
poetak
umnoak:=1;
za kv:=1 do 10 initi
poetak
ulaz(broj);
umnoak:=umnoak*broj;
kraj
izlaz(umnoak);
kraj
28. Algoritam zbraja sve neparne brojeve od 1 do n (n unosi na poetku) i ispisuje
njihovu sumu.
poetak
ulaz(n);
za broj:=1 do n initi
ako broj mod 2 =1 onda suma:=suma+broj;
izlaz(suma);
kraj

You might also like