49
Pojam algoritma predstavlja temelj za razumijevanje računarstva!

Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Pojam algoritma predstavlja temelj za razumijevanje računarstva!

Page 2: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Osnovni pojmovi algoritma

Page 3: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Priča o algoritmima

Priču o algoritmima možemo započeti kao i sve priče:

Nekada davno u Bagdadu živio je pisac, matematičar, astronom i geograf

imenom Muhammed ibn Musa al Khowarizmi. I te daleke 852. godine

kada je pisao knjigu Kitab al jabr w'al-muqubala nije ni sanjao da će se

spominjati stoljećima kasnije.

Tako i riječ algoritam potječe od tog perzijskog matematičara, astronoma i geografa iz

9. stoljeća. U svojoj knjizi opisao je postupke za računanje u indijskom brojevnom sustavu.

Original na arapskom nije sačuvan, a latinski prijevod proširio se Europom pod naslovom

Algoritmi de numero Indorum (Al-Khwarizmi o indijskim brojevima).

Prema tom naslovu postupke za sustavno rješavanje problema danas nazivamo

algoritmima.

Page 4: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

U svakodnevnom životu smo zapravo stalno u doticaju s algoritmima, a često i postupamo po

algoritmima da toga nismo niti svjesni. Znati "algoritamski" razmišljati dobro je bez obzira

bavili se vi poslije programiranjem ili ne.

U klasičnom razdoblju indijske matematike (400. - 1200.) zabilježena su značajna

postignuća. Dekadski brojevni sustav koji se danas koristi prvi put koristio se u

indijskoj matematici. Indijski matematičari su dali rani doprinos proučavanju

koncepta nule kao broja, negativnih brojeva, aritmetike i algebre. Uz to se u Indiji

razvila i trigonometrija, uključujući suvremene definicije sinusa i kosinusa. Ti

matematički koncepti su se kasnije prenijeli na Bliski Istok, Kinu i Europu te bitno

pridonijeli razvoju koncepata koji danas tvore temelj mnogih područja matematike.

%

Page 5: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Svojstva algoritma

Page 6: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Pojam algoritma i njegova svojstva Algoritam mora udovoljiti nekoliko kriterija (svojstava), a između ostalih i:

Kriterij Opis

OpćenitostAlgoritam mora biti pogodan za rješavanje određenog tipa problema, a ne samo

jednog konkretnog problema.

KonkretnostAlgoritam mora prihvatiti konačan broj ulaznih veličina koje u potpunosti određuju

konkretni problem koji treba riješiti.

Svrhovitost Algoritam mora dati barem jedan rezultat rješenja problema.

Konačnost Algoritam mora dati rješenje problema u konačnom broju koraka odnosno postupaka.

Efikasnost Postupak mora završiti u prihvatljivom vremenu i utrošku drugih resursa.

Ponovljivost Ponovljeni postupak uz iste ulazne veličine mora dati isti rezultat.

Razumljivost Postupci određeni algoritmom moraju biti poznati izvršitelju.

Formaliziranost Svaki postupak mora biti jednoznačno i nedvosmisleno definiran.

Instruktivnost Postupci trebaju biti iskazani u formi naredbi izvršitelju.

Algoritam je uređeni skup jednoznačnih (nedvosmislenih) izvedivih koraka, odnosno niz

preciznih uputa koje nas korak po korak vode do rješenja nekog problema.

Page 7: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Algoritam izvodi neke operacije nad nekim podacima, u obliku niza koraka, i daje neko

rješenje.

o Cilj algoritma je cjelokupni zadatak svesti na niz jednostavnih, manjih radnji.

o Izvršavanjem osnovnih radnji moguće je na temelju ulaznih podataka dobiti rezultat.

Ulazni podaci

Algoritam

Rezultat

Pojednostavljeno

Ulaz

Obrada

Izlaz

Page 8: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Izrada algoritma u programiranju prethodi samom pisanju programa. Pri pisanju programa

prvo mora biti jasno što se od programa očekuje. Kao i kod rješavanja zadataka u bilo

kojem području morate ići nekim redom, što znači da najprije morate:

o Postaviti problem

o Izraditi grubu skica rješenja

o Izraditi algoritam.

Ako je algoritam dobro napravljen, pisanje programa nije ništa drugo nego prepisivanje

algoritma u neki programski jezik.

Kada to učinite, dobit ćete program, a program “govori" računalu da radi ono što mi želimo.

%

%

Page 9: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Koliko je 2 i 2? Pitanje u naslovu jedno je od najčešće postavljanih pitanja upućenih djetetu kojeg

iskušavamo u znanju računanja. Postoji i uzrečica da je sve "jasno kao dva i dva".

No, je li baš sve jasno?

Nema ničeg jednostavnijeg od utipkavanja "dva i dva" na džepnom računalu ili nekom od

programa na mobitelu, tabletu, ... i dobivanja rješenja, ali, već i pri tom jednostavnom

zadatku nailazimo na prvi problem.

A gdje je i?. Mi podrazumijevamo da je "dva i dva" zapravo dva više dva, da se radi o

matematičkoj operaciji zbrajanja.

Džepno računalo to ne zna. Znači - moramo biti precizniji i reći 2+2.

Tipkate 2 + 2 i ništa se ne događa.

Mogli smo to očekivati - džepno računalo je isključeno. Nitko nije rekao da prvo provjerimo

je li džepno računalo uključeno!

Ili ste u žurbi prstom zakačili i tipku iznad 2 i utipkali 52... Što sad? Jednostavno je - treba

pritisnuti tipku CE i zadnji će unos biti poništen. Sada ponovno upišite 2.

Pokušajmo sve ovo što smo u objašnjavanju zapetljali prepisati u obliku natuknica:

Tek smo riješili prvi problem kad se javlja drugi.

Page 10: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Provjerite da li je džepno računalo uključeno!

ako nije uključite ga

upišite 2

ako ste pogriješili pritisnite tipku CE i ponovite radnju iz prethodne natuknice

upišite +

ako ste pogriješili pritisnite tipku CE i ponovite radnju iz prethodne natuknice

upišite 2

ako ste pogriješili pritisnite tipku CE i ponovite radnju iz prethodne natuknice

pritisnite tipku =

ako ste pogriješili ponovite sve radnje počevši od trećeg reda

pročitajte rezultat

isključite džepno računalo

Mislite da je tu kraj? Stvari se mogu još zakomplicirati. Što ako je to model džepnog računala

bez tipke CE koja poništava zadnji unos?

A što ako džepno računalo ima solarnu ćeliju i ne gasi se na tipku već se samo isključi ako se

neko vrijeme ne rabi?

Razmislite o ovome prije nego što za nešto kažete da je jednostavno kao "dva i dva".

Page 11: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Dva najčešća zapisa algotitma su pseudokod i dijagram toka.

Da nam se ne bi događale situacije kao u prethodnom primjeru koristit ćemo algoritam.

Algoritam o kojem smo do sada govorili može se zapisati na više načina, i to:

Tekstualno

Dijagramom toka

Pseudokodom

Strukturogramom

Zapisuje se preciznim rečenicama govornog jezika a najčešće se rabi kod početnog korištenja algoritma.

Koriste se određeni grafički simboli za predstavljanje pojedinih aktivnosti u algoritmu.

Piše se u govornom jeziku ali u obliku “naredbi” tako da su “slične” naredbama programskog jezika.

Kombinacija grafičkog i pseudo koda. Koristi se kao prikladna dokumentacija za već završene programe.

Program se piše uz popunjavanje određene geometrijske slike.

Page 12: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

P s e u d o k o d je algoritam zapisan riječima.

o Pseudo dolazi od grčkog laž, lažni, nadri, nazovi, tobožnji ...

o Kod je skup dogovorenih znakova kojima se prenosi neka poruka.

U programiranju se pod kodom podrazumijeva izvorni program napisan u nekom

programskom jeziku.

Jer upute ne pišemo u nekom od programskih jezika već dogovorenim riječima i znakovima

iz govornog jezika.

Prema tome, za pseudokod bismo mogli reći da je program "lažnjak".

Zašto pseudo? Zašto lažnjak?

%

%

Page 13: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Pseudokod:

Primjer

Potrebno je upisati prirodan broj x pa odrediti da li je paran ili neparan.

Unijeti broj.

Provjeriti da li je broj paran.

Ako je paran ispisati „Paran broj”.

Ako nije paran ispisati „Neparan broj”.

Tekstualni zapis: Strukturogram:

Page 14: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

#include "stdafx.h"#include<iostream>using namespace std;

int main(){int x;cout<<"Upišite prirodni broj: ";cin>> x;

if (x % 2 == 0){cout << "Parni broj";

}elsecout<< "Neparni broj";

cout<<endl;system("pause");

return 0;}

Dijagram toka:

Program:

Page 15: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Etape izrade računalnog programa?

Analiza problema

Definicija i opis ulaznih i izlaznih podataka

Određivanje algoritma

Crtanje dijagrama toka

Pisanje programa u nekom programskom jeziku

Prevođenje programa i ispravak formalnih pogrešaka

Izvršavanje i testiranje programa te ispravak logičkih pogrešaka

Korištenje programa Održavanje programa Pis

an

je p

ro

gr

am

sk

e d

ok

um

en

tac

ije

Page 16: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Logičan slijed radnji u nekom programu je: ulaz, obrada i izlaz podataka.

Prema tome prikladne riječi koje ćemo rabiti su:

Početak Svaki algoritam ima samo jedan početak.

Upiši/Ulaz/Unesi/UčitajUnos podataka preko tipkovnice, miša, bar-kod čitača ili nekedruge ulazne jedinice.

Ispiši ili Izlaz Ispis podataka na zaslonu monitora, pisaču...

KrajBroj instrukcija u algoritmu mora biti konačan, svakialgoritam mora imati kraj i to samo jedan.

U tablici nema riječi za obradu podataka jer za to obično koristimo izraze koji nisu ništa

drugo nego prepisane, primjerice, matematičke formule.

Logičan slijed radnji u programu

Page 17: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Pseudokod za 2 i 2

Početak

Upiši 2

Upiši 2 - napisani program, prema ovakvom algoritmu, cijelo će vrijeme zbrajati samo 2 + 2

i neće moći zbrojiti druge vrijednosti. To svakako nije dobro.

Algoritam moramo napisati tako da prema njemu napisani računalni program bude što

općenitiji.

U našem slučaju bilo bi dobro napisati algoritam za općenito zbrajanje dva broja a ne samo

za zbrajanje određenih vrijednosti.

Kako se ne može unaprijed predvidjeti koja će dva broja korisnik htjeti zbrojiti, umjesto

brojeva potrebno je koristiti varijable.

U matematici varijabla je neka promjenjiva veličina, a u programu to je rezervirano mjesto u

radnoj memoriji.

Razmislimo malo. Što će se dogoditi ako napišemo Upiši 2?

Page 18: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

U našem primjeru trebat će nam tri takva mjesta u memoriji računala. Neka to budu varijable

Br1 i Br2 za brojeve koje zbrajamo i Rez za rezultat.

Početak

Upiši Br1, Br2

Rez = Br1 + Br2

Ispiši Rez

Kraj

U trećem redu pseudokoda izraz za zbrajanje varijabli Br1 i Br2 napisan je različito od

načina na koji bismo dva broja zbrojili na papiru i nećemo ga pročitali kao u matematici:

Rez je jednako Br1 + Br2.

Sada rabimo mjesta rezervirana u radnoj memoriji i zato sadržaj mjesta u radnoj memoriji

rezerviran za rezultat Rez postaje jednak zbroju sadržaja mjesta u kojima su spremljeni

brojevi Br1 i Br2 i čitamo:

Rez poprima vrijednost (postaje) Br1 + Br2.

Page 19: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

c = 5 + 6 c = 11

c = 11 + (6 - 5) c = 11+ (1) = 12

c = 12 * 2 c = 24

Varijable - primjer

a b c

24

#include "stdafx.h"#include<iostream>using namespace std;int main(){int a, b, c;a=5;b=6;c= a + b;c= c+(b-a);c=c*2;cout<< c <<endl;system("Pause");return 0;}

Page 20: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Dijagram tijeka

Već smo rekli da se algoritmi najčešće zapisuju kao Pseudokod i Dijagram tijeka.

Oni pripadaju u klasu tzv. umjetnih jezika i nemaju stroga pravila zapisivanja instrukcija kao

viši programski jezici, ali su ipak detaljno definirani tako da se sve potrebne operacije mogu

jednoznačno opisati.

Za Dijagram tijeka možemo reći da je grafički prikaz algoritma.

Takav način zapisivanja ima nekoliko prednosti pred pseudokodom:

o zapisivanje se vrši međunarodno dogovorenim simbolima,

o ne ovisi o govornom jeziku sastavljača algoritma,

o prikaz je jednostavan, pregledan i lako se pronalaze pogreške,

o problem se može jednostavno analizirati,

o troši se manje vremena na pronalaženje rješenja.

Page 21: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Najvažnije konstrukcije algoritma

Ponavljanje – Struktura petlje (iteracija)

Ponavljanje u algoritmu (tzv. petlje) omogućava višestruko izvođenje određenog broja naredbi

u zavisnosti od uvjeta koji govori do kada se taj niz naredbi mora uzastopno ponavljati.

Oprez!Na dvije stvari se posebno mora obratiti pažnja:

o granični uvjet petlje (odluka kada će se petlja prestati "vrtjeti"),

o mogućnost lošeg zadavanja uvjeta ponavljanje koji za posljedicu

ima beskonačno ponavljanje tog dijela koda!

Slijed – Pravocrtna struktura (sekvenca)

Instrukcije se odvijaju jedna iza druge, odnosno izvode se pravocrtno jedna iza druge.

Grananje – Struktura grananja (selekcija)

Osnova grananja u algoritmu je ispitivanje logičkog uvjeta. Logički uvjet može poprimiti

samo dva uvjeta: istina ili laž, te u zavisnosti od te vrijednosti izvodi se određeni dio koda.

Page 22: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Osnovni simboli

Dijagrama tijeka:

Najava (deklaracija) varijabli i konstanti.

Postavljanje na početnu vrijednost.

Obrada podataka.

Početak / Kraj

Izlaz podataka

Ulaz podataka

Odluka

Priključna točka

Informacijski tijek

Vanjski modul

Page 23: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike
Page 24: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Samo u slučaju rješavanja najjednostavnijih zadataka, programska struktura je

pravocrtna i program se uvijek izvršava istim slijedom naredbi.

Opis Pseudo jezik

Unos ulaz

Ispis izlaz

Operator pridruživanja :=

Page 25: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 1

Unijeti dva cijela broja a i b, zbrojite ih i ispisati njihov zbroj c. Algoritam zadatka napisati

pseudokodom i nacrtati dijagram tijeka.

Pseudokod

Početak

a, b

c = a + b

Kraj

Dijagram tijeka

#include "stdafx.h"#include<iostream>using namespace std;int main()

{int a,b,c;cout<<"Unesite prvi broj: ";cin>>a;cout<<"Unesite drugi broj: ";cin>>b;c = a + b;cout<< c <<endl;system("Pause");return 0;}

Page 26: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 2

Potrebno je unijeti cijenu proizvoda c i postotak sniženja p pa izračunati cijenu proizvoda s

nakon sniženja i ispisati je.

Pseudokod

Početak

c, p

s = (c – (c*p/100));

Kraj

Dijagram tijeka

#include "stdafx.h"#include<iostream>using namespace std;int main(){float c,p,s;cout<<"Unesite cijenu: ";cin>>c;cout<<"Unesite sniženje u %: ";cin>>p;s = (c-(c * p /100));cout<<"Nova cijena: "<< s <<endl;system("Pause");return 0;}

Page 27: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 3

Potrebno je unijeti realni broj veći od 0 (nije potrebna provjera) te:

o Izračunati drugi korijen broja.

o Zaokružiti uneseni broj na najbliži veći cijeli broj.

o Zaokružiti uneseni broj na najbliži manji cijeli broj.

o Ispisati dobivene vrijednosti.

Pseudo kod

Početak

x

a:= sqrt (x);b:= ceil (x);c:= floor (x);

Kraj

Dijagram tijeka

Page 28: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 4

Potrebno je unijeti dva broja pa izračunati i ispisati njihov kvocijent, cjelobrojni dio kvocijenta

i cjelobrojni ostatak dijeljenja ta dva broja.

Pseudokod

Početak

x, y

a = x / y;b = x % y;

Kraj

Dijagram tijeka

a,b

Page 29: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

#include "stdafx.h"#include <iostream>using namespace std;

int main(){int a, b, kvocjent, ost;float dj;cout << "Upišite broj koji dijelite: ";cin >> a;cout << "Upišite broj kojim dijelite: ";cin >> b;

kvocjent = a / b;ost = a % b;dj = float (a) / float (b);

cout <<endl << "Vrijednost izraza a / b iznosi: " << kvocjent << endl; cout <<endl << "Vrijednost izraza a % b iznosi: " << ost << endl;cout <<endl << "Vrijednost izraza a / b iznosi: " << dj << endl<< endl;

system ("pause");return 0;}

Page 30: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 5

Potrebno je zamijeniti sadržaj dvije varijable a i b.

Pseudo kod

Početak

a, b

c = a;a = b;b = c;

Kraj

Dijagram tijeka

Page 31: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike
Page 32: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Grananje uvijek ima jedan ulaz i najmanje dva izlaza. Ako su samo dva izlaza, onda je riječ

o jednostrukom grananju, a odgovori na postavljeni logički uvjet mogu biti Da ili Ne,

odnosno T ili F (True i False).

Ako je moguće odabrati više odgovora, onda govorimo o višestrukom grananju.

Nažalost, u životu zbivanja ne teku jednostavno kao što je slučaj s pravocrtnim algoritmima.

Ponekad treba stati, razmisliti, usporediti neke stvari i donijeti odluku kako dalje. Takvo

mjesto u algoritmu zove se grananje.

Page 33: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Grananje je programska struktura koja omogućuje različit tijek programa, ovisan o rezultatu

postavljenog uvjeta. To je važna struktura bez koje bi mogućnost rješavanja zadataka

računalom bila vrlo ograničena. Rezultat postavljenog uvjeta mora biti jedno od dva stanja:

True/False, da/ne, istina/laž, 1/0.

Vrijednost rezultata uvjeta bit će 1 ako je uvjet zadovoljen i 0 ako uvjet nije zadovoljen.

Dijelovi programa koji se uvjetno izvode, grupiraju se u skupine ili blokove naredbi. Svaki se

blok naredbi u ovoj inačici pseudo jezika omeđuje parom otvorene i zatvorene vitičaste

zagrade ({ }). Ako blok naredbi ima samo jednu naredbu zagrade se mogu izostaviti. Blokovi

naredbi se obično pišu uvučeno zbog preglednosti.

U dijagramu tijeka se za grananje koristi geometrijski lik romb:

Opis Pseudo jezik

Grananje

ako je uvjet ondanaredba 1

inačenaredba 2

Blok naredbiC++

{}

Page 34: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 1

Potrebno je upisati prirodan broj x pa odrediti da li je paran ili neparan. Rezultat ispisati.

Algoritam zadatka napisati pseudo jezikom i nacrtati dijagram tijeka.

Pseudokod Dijagram tijeka

a = x % 2

Page 35: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Pseudokod

Zadatak 2

Nakon unesena dva broja x i y odrediti i ispisati dali je x > y, x < y ili x = y.

Pseudokod Dijagram tijeka

Page 36: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 3

Upisati prirodni broj x i provjeriti da li je x istodobno djeljiv sa 7 (s) i s 9 (d). Ispisati rezultat.

Pseudokod Dijagram tijeka

s =x % 7d =x % 9

Page 37: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Pseudokod

Primjer uporabe uvjetnog grananja

Napisati program za unos tri broja te izračunavanje razlike između najvećeg i zbroja ostala

dva broja.

Page 38: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

IF

ELSEIF

ELSE

Page 39: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Treba upisati vrijednosti dva broja a i b te ispisati poruku o tome koji je veći.

Grananje – usporedba

Početak

a, b

a > b

a > bb > a

DaNe

Kraj

Stvar izgleda vrlo jednostavna. Ali, što ako netko

upiše dva ista broja, primjerice 5 i 5? U uvjetu će

biti pitanje da li je 5 > 5. Odgovor je Ne i

sukladno tome izvršit će se lijeva grana, a kao

rezultat ispisat će se: Broj 5 je veći od broja 5.

Ova poruka baš i nema logike!

Zato ljudi koji rade na razvoju informacijskih

sustava moraju predvidjeti što više situacija, pa i

onih najekstremnijih, koje bi se pri radu s

programom mogle dogoditi. Dobra kontrola

podataka pri unosu sprječava do 90% pogrešaka

koje bi se naknadno u radu programa mogle

dogoditi.

Page 40: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zato ćemo rješenje zadatka malo promijeniti:

Početak

a, b

a = b

b > a

a = b

Da Ne

Kraj

a > bDaNe

a > b

Page 41: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike
Page 42: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Ponavljanje

Ponavljanje (petlje) služe za višestruko ponavljanje dijela koda. Pa, zapetljajmo stvari još

malo.

Nekada su nastavnici imali običaj učenike kažnjavati tako da su im zadali 100 puta napisati u

bilježnicu: "Neću nikada više ….!". Zamislite da danas dobijete takvu kaznu.

Naravno, računalo će nas spasiti i odraditi kaznu umjesto nas. Treba mu samo zadati da 100

puta ispiše jednu te istu poruku. Ništa jednostavnije. Evo rješenja:

Morate priznati da ovakvo rješenje baš i nije nešto s čime bi se mogli pohvaliti.

Početak

„Neću nikada ...”

„Neću nikada ...”

„Neću nikada ...”

Page 43: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Ovo je već bolje!

Brojač

Početak

i = 1

i > 100Da

Ne

Kraj„Neću nikada ...”

i = i + 1

Petlja

Neki zlobnici tvrde da napredak možemo zahvaliti

samo ljudskoj lijenosti. Naime, ljudi će svašta

izmisliti samo da ne moraju raditi. Tako je netko

izmislio još jednostavnije rješenje za naš primjer s

ispisom 100 poruka.

Kraj„Neću nikada...”

Pravokutnik ispod simbola za početak je naredba

For koja je sama po sebi petlja. Brojač, kao i uvjet

već su sadržani u naredbi, pa ne treba voditi brigu

oko brojača. Taj red u algoritmu čitamo:

"Za i koji ide od 1 do 100 učini slijedeće:".

For i = 1 to 100

Početak

Page 44: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Kada je u programu potrebno ponoviti neku radnju više puta rabi se programska struktura

petlje koja omogućuje ponavljanje jedne ili više naredbi.

Petlja može biti:

o Bezuvjetna - izvršava se unaprijed zadan broj puta.

o Uvjetna - broj ponavljanja petlje ovisi o postavljenom uvjetu.

Naredbe ove inačice pseudo jezika za strukturu petlje su:

Opis Pseudo jezik

Petlja s unaprijed poznatim brojem ponavljanjaza i = a do b činiti

naredba;

Petlja kod koje nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na početku petlje

dok je uvjet činitinaredba;

Petlja kod koje nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na kraju petlje

ponavljatinaredba;

dok je uvjet;

Da ponovimo

Page 45: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

U ovom se primjeru petlja ponavlja sto puta.

To je ostvareno naredbom:

za k = 1 do 100 činiti

Pri svakom prolazu petlje vrijednost varijable k se

poveća za jedan (od početne vrijednosti 1 do

krajnje vrijednosti 100).

Zadatak 1

Potrebno je upisati 100 cijelih brojeva. Prije svakog unosa broja ispisati tekst “Unesi broj”.

Algoritam zadatka napisati pseudokodom i nacrtati dijagram tijeka.

Pseudokod

Početak

x

Kraj

Dijagram tijeka

Petlja se p

on

avlja 1

00 p

uta

Page 46: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 2

Potrebno je ispisati parne brojeve u rasponu od 1 do 100.

Pseudokod

Početak

Kraj

Dijagram tijeka

Petlja se p

on

avlja 1

00 p

uta

i % 2=0

i

Da

Ne

i = 1 to 100

Page 47: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

Zadatak 3

Potrebno je unositi brojeve. Unos traje sve dok je zbroj unesenih brojeva manji od 1000.

Nakon što zbroj unesenih brojeva postane veći ili jednak 1000 unos se prekida. Ispisuje se

zbroj unesenih brojeva i podatak o broju unesenih brojeva.

U ovom se primjeru rabi uvjetna petlja. Unaprijed

nije moguće odrediti koliko će se puta petlja

izvršiti. To ovisi o brojevima koje će unositi

korisnik. Ovakav tip zadataka rješava se tako da se

rabe pomoćne varijable. U ovom primjeru to su

varijable s i n. Te su pomoćne varijable na početku

prazne, a tijekom odvijanja petlje sadržaj im se

mijenja. Ako se uneseni brojevi žele zbrajati, oni

se tijekom odvijanja petlje pribrajaju pomoćnoj

varijabli s. Ako se uneseni brojevi žele prebrojiti,

sadržaj pomoćne varijable n se svakim prolaskom

kroz petlju uvećava za 1.

Pseudokod

Page 48: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike
Page 49: Pojam algoritma predstavlja temelj za razumijevanje ...web2.ss-elektrotehnicka-ri.skole.hr/upload/ss-elektrotehnicka-ri/... · koncepta nule kao broja, negativnih brojeva, aritmetike

U ovom primjeru petlja će se izvršiti barem jednom

zbog uvjeta koji se ispituje na kraju.

Zadatak 4

Potrebno je unositi parove brojeva x i y. Samo u slučaju ako su oba broja pozitivna treba

ispisivati njihov umnožak. Unos traje sve dok se za vrijednost varijable x ili varijable y ne

unese 0.

Pseudokod

Dijagram tijeka