Vous êtes sur la page 1sur 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 div je operator cjelobrojnog dijeljenja daje rezultat mod je operator cjelobrojnog dijeljenja daje ostatak

b)

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

Vous aimerez peut-être aussi