You are on page 1of 45

S v e u !

i l i t e u Z a g r e b u
F a k u l t e t s t r o j a r s t v a i b r o d o g r a d n j e
Katedra za osnove konstruiranja








N. Pavkovi!, D. Marjanovi!, N. Boj"eti!

PROGRAMIRANJE I ALGORITMI

Skripta, prvi dio



















Zagreb, 2005.

Sadraj

PREDGOVOR...................................................................................................... 4
DIGITALNO RA!UNALO .................................................................................... 1
Virtualna arhitektura ra!unala......................................................................................1
Hardver, softver i vierazinska ra!unala .......................................................................................................... 4
Dijelovi ra!unala - na!in rada ......................................................................................4
Prikaz na!ina rada jednostavnog procesora ......................................................................................... 5
PROGRAMSKA PODRKA ................................................................................ 6
Sistemska programska podrka ..................................................................................6
Operacijski sustavi............................................................................................................................... 6
Operacijski sustav MS Windows ..................................................................................................................... 7
Operacijski sustav UNIX................................................................................................................................. 7
Programski jezici (prevodioci)............................................................................................................. 8
Razvojne okoline ................................................................................................................................. 8
Aplikacijska programska podrka ................................................................................8
Datoteke ......................................................................................................................9
UVOD U ALGORITME I PROCES RAZVOJA PROGRAMSKE PODRKE ....... 9
Pojam algoritma...........................................................................................................9
Zna!ajke algoritma ....................................................................................................10
Prikaz algoritma.........................................................................................................11
Simboli dijagrama toka .............................................................................................12
Faze razvoja programa..............................................................................................13
Analiza problema............................................................................................................................... 14
Postavljanje modela........................................................................................................................... 14
Izrada algoritma................................................................................................................................. 14
Izrada dijagrama toka......................................................................................................................... 14
Kodiranje programa ........................................................................................................................... 15
Prevo"enje programa ......................................................................................................................... 15
Testiranje programa ........................................................................................................................... 16
Dokumetiranje programa ................................................................................................................... 16
Eksploatacija programa...................................................................................................................... 17
OSNOVNI KONCEPTI PROGRAMSKIH JEZIKA.............................................. 17
Sintaksa i semantika programskog jezika..................................................................17
Formalne metode prikaza sintakse................................................................................................................. 17
Sintaksa, semantika i prevo"enje programa................................................................................................... 18
Tipovi i strukture podataka u programskim jezicima..................................................19
Osnovni (primitivni tipovi) podataka................................................................................................ 19
Tipovi podataka u Visual Basic-u:................................................................................................................. 20
Varijable ............................................................................................................................................ 20
Odre"ivanje imena varijable.......................................................................................................................... 20
Adresa varijable............................................................................................................................................. 21
Tip varijable................................................................................................................................................... 21
Vrijednost varijable........................................................................................................................................ 21
Doseg varijable .............................................................................................................................................. 21
Trajanje varijable ........................................................................................................................................... 22
Deklaracija varijable...................................................................................................................................... 23
Pokaziva!i (kazala, "pointeri") ...................................................................................23
Polja................................................................................................................................................... 24
Deklariranje polja .......................................................................................................................................... 25
Izrazi (eng. expressions)............................................................................................26
Zagrade .............................................................................................................................................. 26
Aritmeti!ki izrazi ............................................................................................................................... 27
Redoslijed izvo"enja operatora...................................................................................................................... 27
Konverzija tipova podataka u izrazima.......................................................................................................... 27
Relacijski izrazi ................................................................................................................................. 28
Logi!ki (Boolean) izrazi .................................................................................................................... 28
Mjeoviti izrazi .................................................................................................................................. 29
Naredba za dodjeljivanje (eng. assignment statement).............................................29
Kontrolne strukture na razini naredbi .........................................................................30
Bezuvjetni skok ................................................................................................................................. 31

Uvjetna grananja (naredbe selekcije)................................................................................................. 31
Odlu!ivanje na temelju vrijednosti numeri!kog izraza.................................................................................. 31
Odlu!ivanje (uvjetno grananje) Ako ..... Onda.................................................................................... 32
Uvjetno grananje: Ako ..... Onda ..... Ina!e...................................................................................... 32
Uvjetno grananje sa viestrukim ispitivanjem uvjeta..................................................................................... 33
Ugnje"enje kontrolnih struktura - uvjetna grananja jedno unutar drugog .................................................... 34
Viegransko usmjeravanje ................................................................................................................. 35
Naredbe za ponavljanje izvo"enja sekvenci programa (petlje).......................................................... 36
Petlje kontrolirane eksplicitnim broja!em...................................................................................................... 37
Petlja "For Each .... Next".......................................................................................................................... 38
Petlje kontrolirane logi!kim uvjetima............................................................................................................ 38
Petlja sa ispitivanjem logi!kog uvjeta na po!etku.......................................................................................... 38
Petlja sa ispitivanjem logi!kog uvjeta na kraju.............................................................................................. 39
Petlja sa ispitivanjem logi!kog uvjeta koja se izvodi dok je uvjet neistinit.................................................... 39
Naredbe za izlaz iz petlje ............................................................................................................................... 40
Ugnje"enje petlji - vie petlji jedna unutar druge......................................................................................... 40


PREDGOVOR

Ove podloge namijenjene su studentima Fakulteta strojarstva i brodogradnje kao osnovna
literatura za pra#enje predavanja i vjebi iz kolegija PROGRAMIRANJE I ALGORITMI i
kolegija PRIMJENA RA$UNALA B. Pretpostavka uspjenog savladavanja kolegija je redovito
pra#enje nastave i samostalan rad na ra!unalu. Vjebe se odravaju na ra!unalima u PC
u!ionicama CADLab -a.
Pisanje podloga za kolegij koji obra"uje materiju koja je tako podlona brzim promjenama kao
ra!unalstvo, nezahvalan je posao. Sjena zastarijevanja nadvila se nad rukopis onog trenutka kada
je zapo!ela priprema teksta. Ipak vjerujemo da #e podloge omogu#iti studentima lake
savladavanje prvih koraka ra!unalstva na Fakultetu strojarstva i brodogradnje Sveu!ilita u
Zagrebu. U CADLab -u instalirana ra!unalna i programska oprema, razvojni alati, CAD/CAE
aplikacije, pristup Internetu, te podrka asistenata i demonstratora omogu#uju studentima FSB-a
usvajanje znanja potrebnih svakom inenjeru. Stoga o!ekujemo da #e studenti koristiti ra!unala u
svakodnevnom radu i izvan kolegija Katedre za osnove konstruiranja.
Namjena je gradiva izloenog u ovim skriptama dati op#eniti pregled tehnika programiranja i
kreiranja algoritama neovisno o pojedinom programskom jeziku i operativnom sustavu. Zadnjih
nekoliko godina na vjebama se u!i programski jezik Visual Basic, pa je stoga ve#ina primjera u
ovim podlogama prilago"ena tome, a objanjena je i sintaksa osnovnih naredbi Visual Basic-a.
Gdje se smatralo pogodnim, dani su i primjeri iz drugih programskih jezika ili pregledi i
usporedbe razli!itih postupaka i sintaksi u vie razli!itih jezika. Vano je napomenuti da u!enje
programiranja ne zna!i samo u!enje naredbi (sintakse) pojedinog jezika, nego prvenstveno zna!i
nau!iti osnove kreiranja algoritama te poznavati zajedni!ke teoretske osnove svih programskih
jezika, odnosno poznavati osnove ra!unalne znanosti. Predavanja iz ovog kolegija upravo stoga
nastoje dati pregled osnova ra!unalne znanosti neophodnih za u!enje i razumijevanje procesa
razvoja sloenih programskih sustava.
U satnicom doputenom okviru namjena je ovog kolegija budu#em inenjeru dati osnovna
znanja o na!inu rada ra!unala i razvoju jednostavnih programskih aplikacija za svakodnevnu
uporabu u inenjerskoj praksi. Dani pregled metodologija razvoja programskih susutava trebao
bi inenjera osposobiti za aktivnog suradnika u izradi sloenih aplikacija i sustava. Znanje
ste!eno na ovom kolegiju moe biti polazite za dublje prou!avanje svijeta ra!unalnog
programiranja podru!ja ljudske djelatnosti koje se u dananje vrijeme vjerojatno najbre
razvija i mijenja u usporedbi s drugim djelatnostima.
Autori
U Zagrebu, listopad 2005.

1
DIGITALNO RA!UNALO
Zakonitosti koje opisuju svijet oko nas spoznajemo kroz podatke i informacije i neprestano
dogra"ujemo pove#avaju#i tako koli!inu znanja.
Veliki broj me"uzavisnosti u naoj okolini, velika brzina u kojoj se niu doga"aji i promjene oko nas,
te sve ve#i zna!aj nae interakcije s okolinom, zahtijevaju izgradnju pomagala !ovjeku koje #e
mu pove#ati: sposobnosti sagledavanja, sposobnosti primanja i obrade podataka i informacija,
sposobnosti zaklju!ivanja i sposobnosti odlu!ivanja.
Ra!unalo kao temeljno informacijsko pomagalo !ovjeku, prema gore navedenim potrebama, razvijeno
je tako da omogu#i primanje, uskladitenje, obradu i slanje podataka, informacija i znanja.
Digitalno ra!unalo je stroj koji moe rjeavati probleme izvode#i dane mu instrukcije. Niz
instrukcija koji opisuje kako se rjeava pojedini zadatak naziva se PROGRAM.
Ra!unalo se sastoji od elektroni!kih sklopova koji mogu prepoznati i izvriti organi!eni skup
instrukcija, u koji se prevode sve instrukcije programa koji se eli izvesti na ra!unalu. Osnovne
instrukcije vrlo su jednostavne. U biti nisu mnogo sloenije od:
- zbrajanja dva broja;
- uspore"ivanja broja s nulom;
- kopiranja podatka s jednog dijela memorije ra!unala u drugi dio;
- skoka na slijede#u instrukciju programa.
Primitivne instrukcije tvore jezik pomo#u kojih moemo upravljati, odnosno komunicirati s
ra!unalom. Ovakav jezik nazivamo STROJNI JEZIK.
Virtualna arhitektura ra!unala
Poto su instrukcije jednostavne, teko je i mukotrpno upotrebljavati ih, odnosno pisati programe
u strojnom jeziku.
Problem se moe rjeiti na principjelno dva na!ina, ali oba zahtjevaju razvoj novog jezika,
(skupa instrukcija) koji je blii ljudima, odnosno laki za upotrebu od ugra"enog strojnog jezika.
Novi skup instrukcija koji se razvija nazovimo L2, kao to #emo ozna!iti i strojni jezik oznakom
L1. Ova se dva pristupa razlikuju u na!inu na koji se programi pisani u jeziku L2 izvode na
ra!unalu koje u stvari moe izvoditi samo instrukcije iz skupa L1.
Jedna metoda izvo"enja programa napisanog u L2 jeziku je da se sve instrukcije prvo zamijene s
ekvivalentnim nizom instrukcija u L1 jeziku. Prevodi se cijeli program iz jezika L2 u jezik L1.
Ra!unalo izvodi novi program napisan u L1 jer jedino to i moe. Ovu metodu nazivamo
PREVO%ENJEM. Program za prevo"enje iz jezika L2 u L1 naziva se COMPILER.
Drugi pristup je da napiemo program u L1 jeziku kojemu #e ulazni podaci biti instrukcije
programa napisanog u L2. Program #e !itati jednu po jednu instrukciju, svaku analizirati i odmah
izvoditi ekvivalentni niz strojnih instrukcija jezika L1, za svaku instrukciju jezika L2. Ne
generira se cijeli novi program u L1 jeziku. Metodu nazivamo inerpretacija, a program koji
interpretira instrukcije INTERPRETER.
Prevo"enje i interpretacija su sli!ne metode i obje su u irokoj upotrebi. U obje metode
instrukcije programa napisanog u L2 izvravaju se izvo"enjem ekvivalentnog niza instrukcija u
jeziku L1. Razlika je to s kod prevo"enja cijeli program L2 prevodi u L1. Time program
napisan u L2 postaje nepotreban. Izvodi (izvrava) se samo program napisan u L1. Nasuprot
tome, pri interpretiranju ne generira se novi program, ve# se svaka instrukcija programa L2
analizira, dekodira i odmah izvrava odgovaraju#i niz L1 instrukcija.
2

Slika 1: Virtualna arhitektura ra!unala
Kako nebi uvijek razmiljali o prevo"enju ili interpretaciji zamislimo da postoji ra!unalo !iji je
strojni jezik L2. Kada bi se takvo ra!unalo moglo (dovoljno jeftino) realizirati nebi postojala
potreba za L1. Me"utim !ak ako to i nije mogu#e moemo zamisliti takvo ra!unalo, hipoteti!ko
ra!unalo ili virtualno ra!unalo, !iji jezik je L2. $injenica da se u stvarnom ra!unalu instrukcije
L2 prevode ili interpretiraju u L1 nije od zna!aja za ovo razmiljanje, ali nam omogu#uje
prou!avanje strukture ra!unala kroz razli!ite razine. Naime, da bi prevo"enje ili interpretacija
bili prakti!no provedivi jezici L2 i L1 se ne smiju "previe" razlikovati. Ovo na prvi pogled nije
u skladu s osnovnom idejom L2, jer ovakvo ograni!enje svakako uzrokuje odre"enu
neprakti!nost za razvoj aplikacija.
Rjeenje problema koje se samo name#e je razvoj jezika L3 koji #e biti vie prilago"en ljudima,
a manje stroju. Ljudi mogu programirati u L3 ba kao da je to strojni jezik hipotetskog ra!unala.
Takvi programi mogu se prevoditi u jezik L2 ili se interpretirati pomo#u interpretera napisanog u
L2.
Razvoj cijele serije novih jezika, "boljih" od njihovih predhodnika moe i#i bez ograni!enja sve
dok se ne postigne eljeni cilj. Svaki jezik koristi svog prethodnika kao temelj i odre"uje jedno
virtualno ra!unalo. Ovo nam omogu#uje prou!avanje ra!unala na nizu razli!itih razina (slika ),
ovisno o naim interesima. Jezik na najnioj razini je najjednostavniji, a onaj na najvioj razini je
najsofisticiraniji.

Slika 2: Ra!unalo razmatrano kroz niz razina
3
U ovakvom razmatranju vano je uo!iti odnos izme"u jezika i virtualnog ra!unala. Svako
ra!unalo odre"eno je strojnim jezikom kojim se mogu opisati instrukcije koje ra!unalo moe
izvriti. Ra!unalo definira jezik i obrnuto jezik definira ra!unalo, tj. ra!unalo moe izvriti sve
programe napisane u tom jeziku.
Ra!unalo s n razina moemo razmatrati kao n ra!unala s razli!itim strojnim jezicima, pri tome ne
treba zaboraviti da se samo programi u strojnom (L1) jeziku mogu direktno izvravati na
elektroni!nom sklopovlju ra!unala. Me"utim osoba koja pie programe za n-tu razinu ne mora
biti upoznata s detaljima prevo"enja (ili interpretiranja) na razinama niim od one koja je
neophodna za koritenje ra!unala za potrebe odre"ene vrste poslova. Ve#inu korisnika zanima
samo razina na kojoj rade, a sve nie od te, nisu predmet njihovog interesa. Ovako opisana
virtualna struktura ra!unala moe se primjeniti i na izvedena ra!unala (koja su u komercijalnoj
uporabi).
Svrstavanje razina ra!unala moe se prikazati na slijede#i na!in:
Razina sklopova - program kao niz instrukcija ne egzistira.
Mikroprogramska razina - ne postoje dva ra!unala s identi!nim mikroprogramskim razinama,
(njihovi se centralni procesori razlikuju u broju i na!inu izvo"enja instrukcija) ali postoje
zajedni!ke karakteristike kao i velike sli!nosti. No npr. dvadesetak osnovnih instrukcija
procesora dovoljno je da se kreira upotrebljivo ra!unalo. Svako ra!unalo moe izvravati barem
jedan mikroprogram, koji implicitno definira jezik na 2. razini.
Strojna razina - je stvarna razina strojnog jezika. Na ovoj razini ve#e su sli!nosti nego
razli!itosti me"u jezicima odnosno arhitekturama razli!itih proizvo"a!a ra!unala/procesora.
Ovakav je pristup subjektivan, pa #emo zbog op#e terminoloke neusaglaenosti ovu razinu
nazivati konvencionalnom strojnom razinom. Priru!nici proizvo"a!a ra!unala, koji opisuju
jezike ove razine (tipi!ni naziv: Machine Language Reference Manual ...), de facto opisuju
instrukcije virtualnog ra!unala !ije se instrukcije interpretiraju i izvravaju na nioj razini.
Razina operacijskog sustava (OS) - je hibridna razina: dio interpretira OS, a djelomi!no se
parsira na niu razinu. Ova razina nije nuno ekvivalentna sa korisni!kim su!eljem operacijskog
sustava.
Op#enito ne postoje fiksna pravila kada se kod interpretira, a kada se prevodi (jer to ovisi od
projektanata ra!unala), ali moe se re#i da se kod na niskim razinama uglavnom interpretira, a na
viim prevodi.
Assemblerska razina na kojoj postoji simboli!ki oblik strojnih instrukcija, za razliku od
numeri!kog oblika na nizim razinama.
Razina programskih jezika (razvojnih okolina) ovu razinu tvore simboli!ki jezici, podobni
za rjeavanje razli!itih problema (npr. BASIC, FORTRAN, PASCAL, C itd.). Programi pisani u
takvim, visoko simboli!kim jezicima prevode se pomo#u programa-prevodioca (COMPILER-s)
na nie razine, a ponekad se interpretiraju interpreterima (INTRPRETER-s).
Aplikacije predstavljaju skupine razvijenih programa prilago"enih zahtjevima odre"enog
podru!ja primjene. To prakti!no zna!i da su u te programe ugra"ene velike koli!ine informacija
o pojedinom podru!ju primjene (aplikaciji). Ova razina je tek predmet istraivanja, pa moemo
zamisliti ra!unala namijenjena specijalno samo za npr. administraciju, obrazovanje, itd.
Korisnik, koji se koristi tom razinom ra!unala ne mora znati to se deava na niim razinama.
4
APLIKACIJE
ASSEMBLERI
PROGRAMSKI JEZICI
OPERACIJSKI SUSTAVI
STROJNA RAZINA
MIKROPROGRAMIRANJE

Slika 3: Razine arhitekture modernih ra!unala
Ono to je za nae razmatranje zna!ajno moemo saeti na slijede#i na!in:
Ra!unala su konstruirana i mogu se razmatrati kao serijski niz logi!kih cjelina, a svaka se od njih
osniva na prethodnoj. Svaka cjelina predstavlja drugu razinu apstrakcije. Na ovaj na!in moemo
zanemariti sloene detalje koji nisu zna!ajni za naa razmatranja.
Skup informacija, instrukcija, podataka i svojstava pojedinog ra!unala nazivamo arhitekturom
ra!unala.
Hardver, softver i vierazinska ra"unala
Hardver (HW) se sastoji od sklopova ra!unala "fizi!kih" ("opipljivih") objekata.
Softver (SW) se sastoji se od algoritama i njihove ra!unalne reprezentacije, odnosno programa
koji !ine programsku podrku. Bit softvera je niz naredbi koje !ine program, a ne fizi!ki medij
na kome su pohranjene.
Treba uo!iti da se svaka operacija koja se rjeava softverom moe rjeiti i hardverom (direktno
ugraditi u hardver). Razlika izme"u SW i HW bila je potpuno jasna samo na samim po!etcima
razvoja ra!unala, kada je HW mogao izvriti nekoliko jednostavnih instrukcija (ADD, STORE,
MOVE, JUMP), a sve ostalo je bio mukotrpno napisani SW. Danas ne postoje fiksna pravila to
#e se rjeiti SW, a to HW. To ovisi o zahtjevima i ciljevima projektanta.
Dakle, moemo zaklju!iti da su HW i SW logi!ki ekvivalentni.
Dijelovi ra!unala - na!in rada
Gotova sva moderna ra!unala temelje se na hardverskoj arhitekturi koju je razvio matemati!ar
John Von Neumann. Originalnu Von Neuman-ova arhitekturu !ini pet osnovnih dijelova:
aritmeti!ko-logi!ka jedinica, kontrolna (upravlja!ka) jedinica, memorija, ulazno-izlazni sklopovi
i sabirnica koja omogu#ava tok podataka izme"u svih dijelova.
Upravlja!ka jedinica obra"uje podatke, upravlja i nadzire protokom podataka izme"u pojedinih
dijelova sustava, te uskla"uje pravilan rad cijelog sustava. Memorija (spremnik) pohranjuje
podatke i programe, te ih po potrebi stavlja na raspolaganje ostalim dijelovima sustava. Ulazno-
izlazni sklopovi omogu#uju prijenos podataka izme"u ra!unala i okoline.

Slika 4: Originalna Von Neumannova arhitektura ra!unala
5
Razvoj ra!unala donio je razne izmjene i poboljanja, ali i u dananjim ra!unalima zadrana je
osnovna ideja Von Neumannove arhitekture:
! programi i podaci se !uvaju u vanjskoj (sporoj) memoriji (tvrdi disk i sl.)
! kad se programi izvode, kopiraju se u memoriju s brzim pristupom, odakle se obra"uju u
procesoru koji dohva#a i izvrava naredbe jednu po jednu
Prikaz na"ina rada jednostavnog procesora
Tradicionalna Von Neumann-ova arhitektura ima jedan tok instrukcija (jedan program) koji se
izvrava u jednom procesoru, a jedna memorijska jedinica sadri podatke. U ra!unalnoj
terminologiji ovakav proces se skra#eno naziva SISD (eng. - single instruction stream, single
data stream). Za razliku od navedenog postoje i arhitekture sa vie paralelnih tokova instrukcija i
podataka.
Prepostavke primjera rada jednostavnog procesora s nekoliko registara:
! U radnom spremniku je smjeten strojni oblik programa kao niz instrukcija pohranjenih u
uzastopne memorijske lokacije.
! U radnom spremniku nalaze se i svi ulazni podaci koje #e program dohva#ati tijekom
izvo"enja.
! Program #e rezultate pohranjivati na odre"eno mjesto u spremniku.
! Unutar procesora sadraji se mogu interpretirati:
! kao instrukcije strojnog programa ra!unala i
! kao osnovni tipovi podataka.
Procesor je automatski izvoditelj programa koji obavlja instrukcije onim redom kojim su one
smjetene u spremniku tj. adresira instrukcije s pomo#u programskog brojila. Ako se taj
redoslijed izvo"enja treba naruiti (izvesti neke "skokove") onda se unutar instrukcije mora
prisilno promijeniti sadraj programskog brojila.
Osnovna svojstva procesora su odre"ena skupom registara i skupom instrukcija. Instrukcije
mogu biti za premjetanje sadraja, za obavljanje aritmeti!ko-logi!kih operacija, za programske
skokove (bezuvjetni, uvjetni i skokovi u potprogram) i za upravlja!ka djelovanja.
Ako u programsko brojilo upiemo adresu prve instrukcije programa, procesor #e automatski
po!eti izvoditi taj program.
Struktura registara procesora:
programsko brojilo (prog. counter PC), adresni registar (AR), instrukcijski reg. (IR), akumulator
(ACC), podatkovni reg. (DR), status reg. (SR).
Simboli!ki tok programa rada centralnog procesora:
1. DOHVATI instrukciju iz memorije, pohrani u IR.
2. Inkrementiraj PC (pomakni ga da pokazuje na slijede#u instrukciju).
3. DEKODIRAJ instrukciju (odredi tip intstrukcije).
4. Ukoliko instrukcija treba operande (podatke), odredi adresu (-e) gdje se nalaze.
5. Dohvati podatke (ako ih ima, i stavi u ACC).
6. IZVEDI instrukciju.
7. Spremi rezultat na odgovaraju#e mjesto.
8. nastavi na 1. (slijede#a instrukcija)
Uobi!ajeno se ovakav slijed koraka naziva "FETCH-DECODE-EXECUTE" ciklus (dohvati
dekodiraj izvedi). Ovaj ciklus je osnova rada svakog ra!unala.
Da bi ostvarili potprogram slue nam dvije posebne instrukcije skoka:
! instrukcija za poziv potprograma
! instrukcija za povratak iz potprograma.
6
Pri pozivu potprograma treba prenijeti ulazne podatke, a potprogram pri zavretku treba vratiti
rezultate programu koji ga je pozvao.
Osnovni zadatak operacijskog sustava je da prije zapo!injanja nekog procesa u ra!unalu mora
stvoriti uvjete za njegvo izvo"enje i da se to izvo"enje moe opisati modelom koji se zasniva na
opisu jedostavnog ra!unala.

PROGRAMSKA PODRKA
Programska podrka (software) dijeli se na dvije velike skupine: sistemsku i aplikacijsku.
Sistemska programska podrka
Namijenjena je pokretanju ra!unala i zatim to djelotvornijem iskoritenju.Unosi se u ra!unalo
da bi ono uop#e funkcioniralo, te da bi se mogu#nosti ra!unala to efikasnije iskoristile.
Sistemska programska podrka moe se podijeliti na slijede#e osnovne vrste:
! Operacijski sustavi
! Pomo#ni programi operacijskog sustava
! Interpreteri i prevodioci- razvojne okoline
Operacijski sustavi
Operacijski sustav je skup programa koji omogu#uje koritenje ra!unala. Operacijski sustav (OS)
djeluje kao okolina unutar koje se izvode postoje#i programi i razvijaju novi.
Sve do nedavno gotovo svaki proizvo"a! ra!unala razvijao je svoj operacijski sustav prilago"en
arhitekturi i namjeni cjelokupnog ra!unalnog sustava i njegove sloenosti. Bez obzira na
raznolikost su!elja operacijski sustavi su u osnovi me"usobno vrlo sli!ni.
Osnovni zadaci operacijskog sustava su:
! komunikacija s korisnikom,
! raspore"ivanje procesorskog vremena,
! upravljanje ulazno / izlaznim funkcijama (kontrola repova redova?),
! raspore"ivanje rada ostalih ure"aja ra!unala:
o dodjela radne memorije,
o kontrola i pozivanje programa s vanjskih ure"aja,
o nadzor i organizacija struktura podataka,
o ispitivanje pogreaka,
o odravanje aktivnosti sustava.

Obzirom na na!in rada i broj korisnika operacijske sustave moemo podijeliti na
jednokorisni!ke operacijske sustave i viekorisni!ke operacijske sustave.
Jednokorisni!ki operacijski sustavi obra"uju zahtjeve koji dolaze od jednog korisnika. To su
jednostavni OS koji nemaju ugra"ene mehanizme zatite korisnika ili sustava od neautoriziranog
koritenja.
Viekorisni!ki OS moraju obra"ivati zahtjeve koji dolaze iz razli!itih izvora i upravljati
ure"ajima ra!unala na temelju tih zahtjeva. Npr. nekoliko korisnika moe traiti pristup nekom
ure"aju u isto vrijeme. OS mora odrediti redoslijed izvravanja zahtjeva i omogu#iti njihovo
izvo"enje.
Daljnji razvoj omogu#io je kreiranje OS kod kojih mnogo programa moe istovremeno raditi,
odnosno postavljati zahtjeve OS. To su viezada#ni (eng. multitasking) OS. Iako se kod ovih OS
u jednom trenutku izvodi samo jedan program u CP-u (centralni procesor), paralelno izvo"enje
vie programa omogu#eno je zbog razli!ite brzine razli!itih ure"aja, te zbog toga to se U/I
operacije na razli!itim perifernim ure"ajima mogu odvijati paralelno.
7
Pitanje redoslijeda izvravanja razli!itih programa, odnosno problem dodjele procesorskog
vremena rjeava se na dva na!ina:
! Na temelju sistemskih prekida, naj!e#e realiziranih na temelju nekih doga"aja u tijeku
izvo"enja programa, npr. U/I zahtjev (OS upravljan doga"ajima, (eng. ("event driven")).
Doga"ajem se smatra svaka promjena stanja u izvo"enju programa, pri tome nije vano
tko ili to je uzrokovalo promjenu. Doga"aj moe uzrokovati zahtjev korisnika,
korisni!ki program ili operacijski sustav.
! Dodjelom odre"enog djeli#a vremena CP svakom programu u sustavu. Svaki program
registriran u ra!unalu dobiva odre"eni dio vremena CP. Ovakvi se OS nazivaju
timesharing. OS. OS nadzire krunu izmjenu programa u izvo"enju, uz optimalizaciju
koritenje mogu#nosti ra!unala.
Mogu#e je dodjeljivati procesorsko vrijeme i kombinacijom navedena dva na!ina.

Kod viekorisni!kih sustava nuan je mehanizam zatite korisnika i podataka od neautoriziranog
koritenja, kao i zatite OS od korisnika. Redoslijed izvravanja programa moe se regulirati i
dodjelom razli!itih prioriteta razli!itim korisnicima, za to je u pravilu zaduen sistem inenjer.
Prevladavaju#i operativni sustavi koji su u irokoj uporabi na ra!unalima op#e namjene mogu se
razvrstati u dvije osnovne skupine: tzv. "unixoidi" (odn. unix-u sli!ni sustavi) i skupina varijanti
sustava Microsoft Windows. Tzv. "mainframe" ra!unala i drugi sloeniji ra!unalni sustavi
upotrebljavaju druga!ije operativne sustave, ve#inom dosta razli!ite od Unix-a i MS Windows-a.
Operacijski sustav MS Windows
Po broju instalacija OS Microsoft Windows u razli!itim verzijama danas je sigurno
"najpopularniji" operativni sustav. Pretpostavka je da se studenti snalaze u okoliu MS
Windows-a u dovoljnoj mjeri za izvo"enje nastave na vjebama, stoga smatramo da nije
potrebno detaljnije obrazlagati ovaj OS.
Operacijski sustav UNIX
UNIX je viekorisni!ki, vieprogramski OS. Prva verzija razvijena je 1969 u "Bell laboratories".
Od tada ovaj se OS (u razli!itim verzijama i pod raznim nazivima) primjenjuje na velikom broju
hardwerskih platformi. Rali!iti "derivati" UNIX-a nazivaju se obi!no "unixoidi", a na PC
ra!unalima danas se najvie koristi LINUX. Naglo irenje UNIX-a vezano je uz porast
popularnosti samostalnih radnih stanica. Osnovni razlozi za popularnost UNIX-a su:
! Portabilnost - UNIX je u cijelosti realiziran u programskom jeziku C, to omogu#uje
instalaciju na velikom broju ra!unala.
! Izvorni kod je poznat i dostupan - proizvo"a!ima procesora je povoljnije preuzeti gotov i
poznati OS od razvijanja vlastitog.
! UNIX zadovoljava sve zahtjeve koji se postavljaju pred bilo koji OS pruaju#i korisniku
mogu#nosti koje on moe zahtijevati.
U osnovi UNIX se sastoji od dva dijela:
! jezgre OS koja se zove KERNEL, koja omogu#uje rad razli!itih ure"aja ra!unala,
nadgleda komunikaciju, te dodjelu memorije i redoslijed izvravanja programa, i
! komunikacijske ljuske ( SHELL ) koja slui kao komandni interpreter, s kojom korisnik
interaktivno komunicira.
Pod kontrolom ljuske korisnik koristi postoje#e uslune programe, komunicira s OS i razvija
nove aplikacije. Iako UNIX izvorno nije namijenjen krajnjim korisnicima ra!unala, ve#
programerima upravlja!kih sustava, informati!ka zajednica brzo ga je prihvatila. Razvoj UNIX-a
divergirao je u razli!itim smjerovima, pa se ubrzo pojavio problem kompatibilnosti programskih
proizvoda razvijanih pod razli!itim verzijama OS. Problem relativno sloene komunikacije na
radnim stanicama se rjeavao razvojem standardnih elemenata korisni!kiih su!elja s prozorima,
8
pri kojima se koriste grafi!ki simboli - ikone, za pozivanje programa kojima se izvode
standardne funkcije. Ovakva su!elja (danas op#e prihva#ena) omogu#uje jednostavniji rad i bre
uhodavanje korisnika.
Neke od ina!ica operacijskog sustava UNIX: ULTRIX (1984.), AIX (IBM 1990.), Solaris SUN
OS - (Sun Microsystems 1991.), Linux (Linus Torvald 1991.)
Programski jezici (prevodioci)
Programski prevodioci nekad su bili prakti!ki jedina ili prevladavaju#a vrsta sistemske
programske podrke sve do intenzivnijeg razvoja ra!unalne grafike i grafi!kih programskih
su!elja koja su omogu#ila upotrebu ra!unala i za druge svrhe osim numeri!kih prora!una i baza
podataka. Kao kratak povijesni pregled, ovdje #emo samo nabrojiti neke od vanijih (poznatijih)
programskih jezika, odnosno ujedno i programskih prevodioca:
FORTRAN (FORmula TRANslator, IBM 1954.)
Algol 58, 60, 68 (ALGOrithmic Language 1958.)
COBOL (Common Business Oriented Language, CODASYL 1959.)
PL/1 (IBM sredina 1960-tih)
BASIC (1964.)
PASCAL (Niklaus Wirth) 1971.-
ADA (razvoj zapo!eo 1975., dovren 1995.)
C ( Dennis M. Ritchie 1970.)
C++ (Bjarne Stroustrup )
Visual Basic, Delphi (Borland)
SmallTalk, Java (SUN)
PHP (Hypertext Preprocessor) skriptni jezik
Razvojne okoline
Usporedno sa razvojem hardvera te!e i razvoj sistemske i aplikativne programske podrke.
Programski sustavi postaju izuzetno sloeni, a isto tako i proces njihova razvoja. Pojam razvojne
okoline obuhva#a zapravo skup programskih alata namijenjenih za razvoj sloenih programskih
sustava. U po!etku su razvojne okoline bile ve#inom gra"ene oko jednog programskog jezika
(npr. C, C++, Delphi, Visual Basic 5, Visual Basic 6) da bi danas imali i razvojne okoline sa
"viejezi!nom" platformom kakva je "Microsoft .Visual Studio .NET".
Microsoft Visual Studio .NET je kompletan skup razvojnih alata za izradu vie razli!itih vrsta
sloenih mrenih aplikacija i servisa kao i jednostavnijih "desktop" aplikacija. Ova razvojna
okolina uklju!uje !etiri programska jezika: Visual Basic .NET, Visual C++ .NET, Visual
C# .NET i Visual J# .NET. Sva !etiri jezika rabe zajedni!ku integriranu razvojnu okolinu koja
omogu#uje kreiranje sloenih sustava !ije su komponente napisane u razli!itim jezicima.
Microsoft opisuje .NET Framework kao novu ra!unalnu platformu kreiranu u cilju
pojednostavljenja razvoja programskih aplikacija u visoko distribuiranom okruenju interneta.
Aplikacijska programska podrka
Obuhva#a programsku podrku pomo#u koje primjenjujemo ra!unalo u svim aspektima naeg
djelovanja - omogu#uje koritenje ra!unala u svakodnevnim poslovima korisnika: razvoj novih
programa i aplikacija, u!enje, projektiranje, dopisivanje, upravljanje procesima, financije,
uprava, zabava itd.
Primejri aplikativne programske podrke:
Programi za obradu teksta: MS Word, WordPerfect, TeX, HTML (Hiper Text Markup
Language), .
Programi za obradu crtea i slika: CorelDraw, Freehand, Corel Photo Paint, Paintbrush, Paint
Shop Pro, MS Photo Editor, Photoshop
9
Programi za prijelom i ure"ivanje publikacija: Adobe Illustrator, ...
Programi za kreiranje i upravljanje bazama podataka: Clarion, dBase, Ingres, Informix, MS
Access, Oracle, Paradox,..
Tabli!ni kalkulatori: Lotus 123, MS Excel
Antivirus programi: Norton Anti virus, Sophos, .
Internet alati: Internet explorer, Netscape, MS FrontPage,.
Programi za modeliranje i konstruiranje proizvoda: AutoCAD, CATIA, IDEAS,
PRO/Engineer, Solidworks,..
Programi za rjeavanje matemati!kih zada#a: MATHCAD, Mathematica, Matlab, .
Datoteke
Datokeka (eng. file) u ra!unalnom sustavu je niz "bitova" spremljenih kao jedna cjelina, tipi!no
u okviru datote!nog sustava (eng. file system) na tvrdom disku ili nekom drugom mediju za
pohranu. Sadraj datoteke moe biti program napisan u nekom od programskih jezika (tekstualni
zapis), ili program u strojnom jeziku (binarnom kodu), tj. izvrni oblik programa, podaci
potrebni za izvo"enje programa, podaci potrebni za razne evidencije, tekstovi, crtei itd. Premda
datoteku prikazujemo kao jedan jedinstveni niz, naj!e#e se ona sprema u nekoliko fragmenata
na razli!ita mjesta na tvrdom disku (to pogotovo vrijedi za velike datoteke).
Jedna od osnovnih zada#a operativnog sustava je organiziranje pohrane i manipulacije s
datotekama unutar datote!nog sustava. Na!in pristupa sadraju datoteka prije svega odre"en je
internim mehanizmima upravlja!kog sustava, ali i programima kojim se datoteke kreiraju.
Datoteke kreiramo koritenjem programske podrke (softverom). Uobi!ajeno je da pojedina
vrsta, odnosno proizvo"a! programa organiziraju zapis u datoteci po odre"enim pravilima koje
nazivamo "format" datoteke (eng. file format).
Nekada je bilo uobi!ajeno da se datoteke definiraju kao niz slogova (eng. records), no to je danas
vie iziuzetak nego pravilo. Neki operativni sustavi (uglavnom starijeg porijekla) omogu#uju da
se sadraj datoteke segmentira u tzv. slogove fiksne ili varijabilne duine. MS Windowsi imaju
samo jednu specijalnu klasu datoteka tekstualne datoteke u kojima to!no odre"eni niz znakova
moe separirati podatke u retke teksta (specijalna varijanta slogova varijabilne duine). Unix ne
manipulira sa slogovima datoteke na razini operativnog sustava, ali se to moe raditi na razini
aplikacija.

UVOD U ALGORITME I PROCES RAZVOJA
PROGRAMSKE PODRKE
Pojam algoritma
Pojam algoritma osnovni je temelj ra!unalnog programiranja, stoga je potrebno posvetiti
posebnu panju analizi i razumijevanju algoritama.
U po!etku upotrebe pojma algoritma tako su se nazivala samo pravila ra!unanja s brojevima,
kasnije i pravila obavljanja ostalih zadataka u matematici. U XX stolje#u, pojavom ra!unala,
pojam se proiruje na ra!unalstvo, a zatim i na druga podru!ja.
Primjer Euklidovog algoritma za traenje najve#eg zajedni!kog djelitelja dva cijela broja m i n:
1. Odrediti ostatak od dijeljenja: podijeli m sa n, i odredi ostatak od dijeljenja r, 0 <= r < n
2. Da li je ostatak jednak nuli? Ako jest, algoritam zavrava, n je traeni odgovor.
3. Ako ostatak nije jednak nuli, napravi zamjenu: postavi m = n, n = r i vrati se na po!etni
korak

10
Neke od varijacija definicije algoritma:
! Algoritam je precizan opis svih pravila i postupaka potrebnih za postizanje eljenog
rezultata.
! Algoritam je kona!ni skup pravila koja daju redoslijed operacija za rjeavanje
specifi!nog problema.
! Algoritam je procedura (postupak) koji do posljednjeg detalja opisuje sve aktivnosti i
njihov redoslijed, potreban da se obradom ulaznih podataka do"e do izlaznih podataka,
odnosno rjeenja.
Zna!ajke algoritma
Osim to mora biti skup pravila algoritam mora posjedovati i slijede#a vana svojstva:
! kona!nost mora uvijek zavriti nakon kona!nog broja koraka
! definiranost svaki korak algoritma mora biti precizno definiran akcije koje treba
poduzeti moraju biti u svakom slu!aju rigorozno i nedvosmisleno (nedvojbeno)
specificirane
! ulaz - algoritam moe ali i ne mora imati ulazne veli!ine koje su dane inicijalno prije
po!etka algoritma
! izlaz algoritam ima jednu ili vie izlaznih veli!ina koje su u specificiranom odnosu sa
ulzanim veli!inama
! efikasnost se o!ekuje od svakog algoritma

U"inkovitost algoritma
Od algoritma se o!ekuje i da bude efikasan (u!inkovit). To zna!i da sve operacije koje se
obavljaju u algoritmu moraju biti dovoljno jednostavne tako da se mogu obaviti to!no i u
kona!nom vremenu koriste#i olovku i papir. Euklidov algoritam koristi samo operacije dijeljenja
pozitvnih cijelih brojeva, provjere da li je broj jednak nuli, te dodjeljivanja vrijednosti jedne
varijable drugoj. Navedene operacije su efikasne jer se cijeli brojevi mogu prikazati na papiru u
kona!nom obliku i jer postoji algoritam dijeljenja cijelih brojeva. Na primjer zbrajanje cijelih
brojeva je u!inkovito, ali zbrajanje realnih brojeva nije jer se moe pojaviti broj s beskona!no
mnogo znamenki. Algoritam koji bi izabirao potez igra!a aha tako da ispita sve mogu#e
posljedice poteza, zahtijevao bi milijarde godina na najbrem zamislivom ra!unalu.

Ra"unalna procedura i ra"unalni program
Postupak koji ima sva svojstva kao i algoritam, ali ne mora zavriti u kona!nom broju koraka jest
ra!unalna procedura. Primjeri za proceduru su operacijski sustav ra!unala, ure"iva! teksta i sl.
Vrijeme izvo"enja procedure mora biti "razumno".
Ra!unalni program je opis algoritma koji u nekom programskom jeziku jednozna!no odre"uje
to ra!unalo treba napraviti.
Programirati zna!i nau!iti sintaksu nekog programskog (proceduralnog) jezika i ste#i osnovna
intuitivna znanja glede algoritmizacije problema opisanog rije!ima.
Navesti #emo ovdje mnogo puta citiranu izreku Niklausa Wirtha koji je koncipirao programski
jezike Pascal i Modulu:
Algoritmi + strukture podataka = PROGRAMI
Programiranje na neki na!in moemo smatrati i vjetinom i to vjetinom koju nije lako nau!iti.
Potrebno je mnogo mukotrpnog rada (u!enja) i stjecanja iskustva ("vjebanja") po!evi od izrade
jednostavnih prema kompleksnijim programima da bi se postalo "produktivnim" programerom.
Nisu svi jednako talentirani u tom podru!ju, jer programiranje bi mogli okarakterizirati i kao
"umjetnost razmiljanja i planiranja".
11
Temeljni problemi programiranja su:
! kako osmisliti algoritme
! kako strukturirati podatke
! kako formulirati algoritme
! kako verificirati korektnost algoritama
! kako analizirati algoritme
! kako provjeriti (testirati) program
Postupci izrade algoritama nisu jednozna!ni te !esto zahtijevaju i veliku dozu kreativnosti. Ne
postoje !vrsta pravila za definiranje algoritama. Od prvih programskih jezika nastoje se razviti
metode i alati za formaliziranje algoritama. Napori su urodili razli!itim metodologijama prikaza
problema i modela koji se koriste pri razvoju sloenih programskih sustava.
Prikaz algoritma
Razvoj i prikaz algoritma preduvjet je izrade programa. Algoritmi se mogu prikazati na razli!ite
na!ine:
! opisno, re!enicama,
! grafi!ki, dijagramom toka,
! u nekom jeziku koji je blizak !ovjeku (pseudokod), ili
! nekim strogo formaliziranim programskim jezikom.
Me"utim, program koji je zaista u ra!unalu i po kojemu se izvodi neki konkretan postupak,
uvijek je samo u binarnom (strojnom) obliku .
Stoga postoji potreba, da se na odre"eni uobi!ajeni na!in prikae program tako da ima logi!ku
ispravnost, ali i da je blizak i razumljiv !ovjeku. Takav na!in prikaza je pseudokod koji nije
ovisan niti o ra!unalu niti o programskom jeziku, a zna!ajan je stoga jer program napisan
pseudokodom predstavlja zapravo model programa i najvaniji je rezultat rada u programskom
inenjerstvu.

PRIMJER EUKLIDOVOG ALGORITMA U PASCALU I C-U:

program euclid(input.output);
var x.y: integer;
function gcd(u.v: integer): integer;
var t: integer;
begin
repeat
if u<v then
begin t:=u; u:=v; v:=t end;
u:=u-v
until u=0;
gcd:=v
end;
begin
while not eof do
begin
readln(x.y);
if (x>0) and (y>0) then writeln (x.y.gcd(x.y))
end;
end.


# include <stdio.h >
main( )
{
int x,y;
while (scanf("%d %d" ,&x , &y) != EOF)
if ((x>0) && (y>0))
printif (("%d %d %d\n" , x , y , gcd (x , y));
}
int gcd (u , v)
int u , v;
{
int t;
do {
if (u<v)
{t = u; u = v; v = t; } ;
u = u-v;
} while (u ! = v);
return (u);
}


12
Simboli dijagrama toka
Prikaz algoritma dijagramom toka vjerojatno je ipak najpregledniji, pogotovo za programere
po!etnike, stoga je uloga dijagrama toka nezaobilazna pri u!enju programiranja. Dijagram toka
sastoji se od simbola koji prikazuju razli!ite vrste akcija: izvravanje operacija, odlu!ivanje,
u!itavanje i ispisivanje podataka. Simboli dijagrama toka povezani su linijama koje prikazuju
tijek odvijanja algoritma.
Slijede#a tablica prikazuje standardne simbole dijagrama toka:

Operacija (op#enito). Prikazuje se jedna operacija ili vie njih, ako je
rezultat operacija promjene vrijednosti, oblika ili mjesta nekih
informacija. Naj!e#e se ovdje zapravo upisuju naredbe za
dodjeljivanje vrijednosti varijablama.

Aritmeti!ka odluka (grananje). Instrukcija aritmeti!ke odluke
izra!unava aritmeti!ki izraz na osnovu kojega se donosi odluka.
Mogu#e su tri akcije ovisno o tome da li je vrijednost izraza manja,
ve#a ili jednaka nuli. Simbol ima dakle jednu ulaznu putanju (granu) i
tri izlazne.

Logi!ka odluka (grananje). Prikazuje se operacija koja ispituje
istinitost nekog izraza, nakon !ega program odabire jedan put. Simbol
ima jednu ulaznu putanju i dvije izlazne ("DA" i "NE", odn. istinitost i
neistinitost logi!kog izraza).

Ulaz podataka obi!no se upisuje lista podataka (varijabli) !ije se
vrijednosti u!itavaju

Izlaz podataka - obi!no se upisuje lista podataka (varijabli) !ije se
vrijednosti ispisuju na nekom izlaznom ure"aju
Ulaz/Izlaz podataka
Crta toka odvijanja operacija programa prikazuje veze me"u
simbolima u dijagramu. Radi jasno#e mogu se na crtama toka postaviti
strelice usmjerene na simbol koje se kasnije izvodi. Prioritetni su
smjerovi: a) odozgo prema dolje, b) slijeva udesno

Grani!no mjesto: po!etak (start), zaustavljanje (stop), prekid i sli!no.

$vorite mjesto spajanja vie linija toka. U !vorite moe ulaziti vie
linija, ali uvijek smije biti najvie samo jedna izlazna linija.
A

Povezivanje raznih dijelova u dijagramu toka. U krui# se upisuje neki
simbol (brojka ili slovo). Izlaz iz nekog dijela dijagrama toka i ulaz u
drugi dio, koji su me"usobno povezani uz pomo# tog simbola, moraju
imati istu oznaku. Vie se izlaza moe povezati s jednim jedinim
ulazom.

13

START
N
i = 1, N
A(i)
M = A(1)
i = 2, N
A(i) > M
M = A(i)
M
END
DA
NE

Slika 5: Primjer dijagrama toka programa koji u!itava niz brojeva te nalazi i ispisuje najve#i !lan niza
Faze razvoja programa
Elektroni!ko ra!unalo je stroj za obradu informacija, na osnovu programa koji je prethodno
upisan u centralnu memoriju ra!unala. Programiranje elektroni!kog ra!unala je sloen proces
koji zahtijeva egzaktno i precizno definiranje operacija kojima se obra"uje informacija, s ciljem
da ra!unalo izvravanjem programa obavi eljeni zadatak. Tijekom izrade ra!unalnih programa,
bez obzira koliko su oni jednostavni, potrebno je voditi ra!una o velikoj koli!ini informacija i
pravila neophodnih za ispravno funkcioniranje programa. Iz tog razloga proces izrade programa
moe se podijeliti na slijede#e faze:
1. Analiza problema
2. Postavljenje modela
3. Izrada algoritma
4. Izrada dijagrama toka
5. Kodiranje programa
6. Prevo"enje programa
7. Testiranje programa
8. Dokumentiranje programa
9. Eksploatacija programa
14
Ove faze opisuju sve neophodne aktivnosti potrebne za izradu programa, ali u principu proces
izrade programa je iterativan postupak, to zna!i da je vrlo !esto potrebno vratiti se na neki od
prethodnih koraka i izvriti potrebnu korekciju i modifikaciju.
Analiza problema
Elementarni uvjet koji mora biti ispunjen da bi se napravio ra!unalni program je potpuno
razumijevanje i poznavanje zadatka koji elimo isprogramirati. Odnosno, ukoliko nam nije jasno
kako bi rijeili zadatak bez ra!unala (bez obzira koliko vremena nam treba za njegovo rjeenje)
definitivno ga je nemogu#e rijeiti pomo#u ra!unala, odnosno isprogramirati. Stoga je
ANALIZA PROBLEMA prvi korak u izradi svakog programa. Ona se u principu sastoji od 3
osnovna segmenta:
- sagledavanje problema
- definiranje ulaznih informacija (podataka) i
- definiranje izlaznih informacija (podataka)
Prilikom sagledavanja problema bitno je uo!iti sve relevantne !injenice i podatke koji opisuju
problem, te uo!iti koji su to ulazni podaci koje treba obraditi da bi doli do izlaznih podataka
(rezultata). Evidentno je da pogotovo kod sloenijih problema, u fazi analize nije uvijek mogu#e
definirati sve ulazne i izlazne podatke. Stoga, u trenutku spoznaje da svi podaci nisu definirani,
potrebno je ponoviti i nadopuniti analizu problema.
Postavljanje modela
Slijede#i korak u izradi programa je postavljanje modela, odnosno odabir metodologije pomo#u
koje se zadani problem moe rijeiti. U ovom izlaganju fokusiramo se na tipi!ne inenjerske
probleme !ije rjeavanje naj!e#e uklju!uje neki numeri!ki prora!un. Osnovna karakteristika ove
faze izrade programa je potpuno razumijevanje zadanog zadatka te definiranje matemati!kog
modela, odnosno metodologije pomo#u koje se zadatak moe izvriti. Model odnosno metoda za
rjeenje postavljenog problema proizlazi prije svega iz samog zadatka, te iz poznavanja:
- fizike problema
- tehni!kih ili nekih drugih propisa i standarda
- matemati!kih metoda i
- logike obrade ulaznih informacija s ciljem da se dobije izlazni rezultat.
U trenutku kada se postavi model, odnosno definira metodologija rjeavanja problema, moraju
biti definirani svi ulazni podaci, metodologija njihove obrade, te naravno koje su sve izlazne
informacije.
Potrebno je naglasiti da nema recepta za izradu modela odnosno metodologije rjeenja
postavljenog zadatka. Kreiranje modela i metodologije obrade su umni i kreativni posao koje
prije svega ovisi o poznavanju postavljenog problema. Ukoliko problem nije mogu#e rijeiti
pomo#u postavljenog modela i metodologije "ru!no" bez ra!unala, model je neispravan i nije
primjenjiv za programiranje na ra!unalu.
Izrada algoritma
U ovoj fazi izrade programa rezultati analize problema i postavljenog modela se formiraju u
formu procedure (recepta), koji opisuje sve neophodne operacije i njihov redoslijed nuan za
izvo"enje programa. Proces izrade algoritma uz malo iskustva je u biti rutinski posao, ali samo
pod uvjetom da postoje ispravna analiza i model sa metodologijom rjeavanja problema.
Izrada dijagrama toka
Dijagram toka programa je simboli!ko prikazivanje algoritma pomo#u simbola dijagrama toka.
Simboli dijagrama toka su standardizirani i u principu je mogu#e na osnovu algoritma
predstavljenog simbolima dijagrama toka napisati program u bilo kojem programskom jeziku,
odnosno dijagram toka je takva op#a simboli!ka forma koja omogu#ava jednozna!no kodiranje
15
programa u nekom od programskih jezika. Za programera po!etnika izrada dijagrama toka
je vaan korak kojeg nikako ne bi trebao zanemarivati. Dananji programski jezici, tehnike
programiranja i alati razvojnih okolina za iskusne programere nude dovoljno alternativa koje
eliminiraju potrebu izrada dijagrama toka. Tako"er, standardni simboli "klasi!nog" dijagrama
toka ne pokrivaju sve situacije koje nastupaju u dananjim tehnikama programiranja. U
ezdesetim i sedamdesetim godinama proces razvoja programa bio je mnogo mukotrpniji nego
danas, pa su dijagrami tokova bili od velike koristi pri "debugiranju" i odravanju programa.
Danas se razvijaju daleko sloeniji programski sustavi kod kojih se dijagramski prikazi rade na
viim razinama organizacije i strukture programskog koda, kao to su npr. UML dijagrami.
Kodiranje programa
Ova faza izrade programa je posljednja faza koja nije vezana za rad na ra!unalu. Ona obuhva#a
kodiranje programa opisanog dijagramom toka u neki od simboli!kih programskih jezika.
Svaki simboli!ki jezik posjeduje svoj alfabet (niz znakova koji poznaje) i sintaksu (pravila po
kojima se piu instrukcije). Stoga je proces kodiranja programa u nekom od programskih jezika u
biti prevo"enje programa iz simbola dijagrama toka u programsku formu definiranu alfabetom,
sintaksom i instrukcijama konkretnog programskog jezika.
Prevo#enje programa
Vano je napomenuti da je op#enito gledano za dananji stupanj razvoja ra!unalnog
programiranja teko dati "univerzalni" opis procesa prevo"enja programa. Opis procesa koji
slijedi stoga moe dosta varirati u odre"enim detaljima za razne vrste programskih jezika,
metode i tehnike programiranja, te integriranih okruenja i pomagala za razvoj programskih
sustava. Uputanje u opis svih specifi!nosti pojednih slu!ajeva zahtijevalo bi previe prostora.
Prevo"enje programa je prva faza izrade programa vezana za rad sa ra!unalom. Sastoji se od
dva, odnosno tri koraka ovisno da li se program napisan u nekom od simboli!kih jezika izvrava
pomo#u INTERPRETER-a ili se prevodi u binarne strojne instrukcije pomo#u COMPILER-a.
Interpreteri su takvi ra!unarski programi koji instrukcije simboli!kog programskog jezika ne
prevode u strojne binarne instrukcije ve# ih interpretiraju i odmah izvravaju. Programi koji se
izvravaju pomo#u interpretera u principu se lake korigiraju i ispravljaju, ali zato se sporije
izvravaju. Programski jezici koji posjeduju prevodioce (compiler-e), omogu#avaju prevo"enje
programa u strojni binarni kod koji je puno efikasniji i bri prilikom izvravanja, ali kod njih je
tee dijagnosticirati pogreke, a i sam postupak dobivanja izvrnog binarnog koda je neto
sloeniji. U daljnjem tekstu #e biti opisan postupak prevo"enja simboli!kih programskih jezika
koji posjeduju prevodilac (compiler). Prvi korak kod prevo"enja programa, i kod interpretera i
kod compiler-a, je unoenje programa u ra!unalo u izvornom obliku odnosno "source" kodu.
Nakon to je program spremljen u datoteku u izvornoj simboli!koj formi, evidentno je da takav
program nije mogu#e izvriti jer ne posjeduje strojne binarne instrukcije. Stoga je logi!an i nuan
slijede#i korak, a to je prevo"enje programa u strojni binarni kod. Ovu operaciju obavljaju
programi koji se nazivaju COMPILER-i, odnosno prevodioci. Posao compiler-a je viestruk i
svaki compiler obavlja slijede#e funkcije:
- u!itavanje instrukcije simboli!kog programskog jezika,
- sintakti!ka analiza u!itanih instrukcija i javljanje eventualnih pogreaka,
- prevo"enje sintakti!ki ispravnih instrukcija u strojni binarni kod, te
- spremanje prevedenog binarnog koda koji se obi!no naziva "object modul" u datoteku.
Na alost, i ako se u object modulu nalaze prevedene strojne binarne instrukcije, object modul
nije jo spreman za izvo"enje programa. Razlog za to se nalazi u !injenici da compiler u trenutku
prevo"enja ne zna kompletnu strukturu programa, pa nije u stanju definirati stvarne odnose
memorijskih lokacija na kojima #e se program nalaziti, stoga svaki program i pojedine rutine
(potprogrami) u njemu, po!ne smjetati od po!etka memorije. Rezultat toga je da se u object
16
modulu moe na#i vie dijelova programa koji bi se istovremeno morali nalaziti u istim
memorijskim lokacijama, to je nemogu#e.
Tre#i korak u procesu prevo"enja programa je povezivanje svih "object modula" u jedinstvenu
cjelinu. To se obavlja pomo#u programa koji se naj!e#e naziva "linker". Osnovne funkcije koje
obavlja linker su:
- izrada memorijske mape programa,
- smjetanje i povezivanje svih dijelova programa (rutina) na njihova stvarna mjesta u
memoriji,
- auriranje memorijskih adresa iz "object modula" sa stvarnim adresama u skladu s
memorijskom mapom, te
- spremanje ovako ure"enog programa u datoteku koja se naj!e#e naziva izvrna verzija
programa, ili popularno "exe verzija" programa.
Tek ovako pripremljen program moe se izvravati u memoriji ra!unala jer se sastoji od strojnih
binarno kodiranih instrukcija sa adresama stvarnih memorijskih lokacija na kojima se nalazi
program i podaci.
U slu!aju pronalaenja sintakti!ke greke pri prevo"enju programa, compiler nije u stanju
generirati object modul, te se na osnovu poruke o greci treba izvriti korekcija, i novonastalu
izvornu datoteku ponovo prevoditi. Druga vrsta greaka su one koje otkriva linker prilikom
povezivanja.
Testiranje programa
Ova faza izrade programa slui za provjeru odnosno verifikaciju programa - da li napravljeni
program, kada se izvri u stroju, obavlja postavljeni zadatak potpuno korektno. Nema generalnog
postupka s kojim je uvijek mogu#e izvriti apsolutnu verifikaciju svakog programa, pogotovo
kod sloenih programskih sistema, jer nije mogu#e pripremiti ulazne podatke testiranja i rjeenja
za njih za sve mogu#e kombinacije ulaznih podataka. Zbog toga se testiranje i verifikacija
programa vri za najkarakteristi!nije kombinacije ulaznih podataka za koje se znaju sva rjeenja,
ili ukoliko to nije mogu#e, za koje se znaju djelomi!na rjeenja.
Ukoliko program ne zadovolji prilikom testiranja potrebno je otkriti to ne valja i ovisno o vrsti
greke vratiti se na neku od prethodnih faza izrade programa. U ovoj fazi naj!e#e otkrivamo
greke u algoritmima ili u modelu problema. Jedna vrsta tih greaka se popularno nazivaju "bug-
ovi". Greku (posljedicu) je relativno lako uo!iti prilikom testiranja, ali je redovito vrlo teko u
sloenijem programu prona#i uzrok greke, pogotovo po!etnicima i programerima s malo
iskustva. U ovakvim situacijama dolaze do izraaja razlike u "kvaliteti" programiranja -
organizaciji i na!inu pisanja programskog koda. Razvijene su mnoge metode razvoja sloenih
programskih sustava koje nastoje eliminirati navedene kao i neke druge probleme odravanja i
nadogradnje sloenih programskih sustava (o tome detaljnije u poglavlju ####).
Naalost ve#ina dananjeg aplikativnog softvera je toliko sloena da i pored vrlo opsenih
testiranja u toku razvoja ne budu otkrivene sve greke prije lansiranja na trite. Redovita je
pojava da greke otkrivaju tek korisnici tijekom eksploatacije programa i prijavljuju ih
proizvo"a!u kroz unaprijed odre"ene mehanizme komunikacije. Proizvo"a! tada izdaje tzv.
"service pack"-ove kojima se zamjenjuju dijelovi programskog sustava u kojima su prona"ene
greke.
Dokumetiranje programa
Nakon to je program testiran i verificiran, potrebno ga je dokumentirati. Dokumentacija
programa sastoji se iz dva osnovna dijela:
! tehni!ka dokumentacija (za programe sa uskom domenom primjene, naj!e#e za
to!no odre"ene inenjerske probleme)
! korisni!ka dokumentacija
17
Tehni!ka dokumentacija se sastoji iz:
- opisa problema
- opisa modela i metode rjeenja problema
- dijagrama toka i listinga programa (ako je tako ugovoreno)
- postupka instalacije programa
- postupka eksploatacije programa
- test primjera sa rezultatima
Korisni!ka dokumentacija je namijenjena korisnicima programa, i opisuje postupak koritenja
programa, kako se zadaju ulazni podaci i kako se interpretiraju izlazni rezultati.
Eksploatacija programa
Bez obzira koliko to na prvi pogled izgledalo nelogi!no, eksploatacija programa je ujedno i jedna
od faza njegovog razvoja. Praksa i iskustvo ukazuju da svi programi imaju svoj ivotni vijek, i
da tokom svog "ivota" doivljavaju modifikacije i poboljanja koje proizlaze iz iskustva
ste!enih tijekom njihove eksploatacije. Odnosno, drugim rije!ima re!eno, nakon odre"enog
vremena potrebno je vratiti se u neku od prethodnih faza izrade programa, obi!no je to
modeliranje ili izrada algoritma, i izvriti njegovu korekciju i poboljanje. Stoga je pri razvoju
sloenih programskih sustava uvijek (ve# od samog po!etka postavljanja modela) potrebno
voditi ra!una o svim aspektima odravanja, tj. daljnim modifikacijama i nadogradnji
programskog sustava. Objektno orijentirano programiranje je metodologija !iji je razvoj
pokrenut upravo zbog navedenih razloga, a biti #e detaljno izloena u poglavlju ###. Danas je
objektno orijentirano programiranje dominantna tehnologija u izradi sloenih programskih
sustava.


OSNOVNI KONCEPTI PROGRAMSKIH JEZIKA
Sintaksa i semantika programskog jezika
Prou!avanje programskih jezika, sli!no kao i prou!avanje prirodnih jezika moe se podijeliti na
sintaksu i semantiku.
Sintaksa programskog jezika je skup pravila i konvencija koji omogu#uje formiranje korektnih
programa sa stanovita reprezentacije (prikaza). Sintaksa nema nita sa zna!enjem niti sa
"ponaanjem" programa u toku izvo"enja, ali sintaksa je osnovni preduvjet za dobivanje
(gradnju) zna!enja.

Elementi sintakse:
Sintakti!ke jedinice najnie razine nazivaju se "leksemi" (eng. lexemes). Opis lexema moe se
dati u leksi!koj specifikaciji koja moe biti odvojena od od sintakti!ke specifikacije jezika.
Ra!unalni program se moe promatrati i kao niz leksema i/ili kao niz znakova.
Leksemi programskog jezika uklju!uju identifikatore, konstante, operatore i specijalne rije!i.
Proces leksi!ke analize konvertira nizove znakova u jeziku u listu leksema. Leksemi s
proslje"uju tzv. "parser-u" na daljnju sintakti!ku analizu. U ra!unalnoj znanosti pojam "token"
ozna!ava osnovni gramati!ki nedjeljivi element jezika - npr. kju!na rije!, operator, identifikator,
itd. "Token" je kategorija lexema, u nekim slu!ajevima token i leksem su jedno te isto, npr.
simbol aritmeti!kog operatora.
Formalne metode prikaza sintakse
Osnovne formalne metode za opis sintakse programskih jezika su grafovi (dijagrami) sintakse i
tzv. "context-free" gramatike (poznate i kao Backus-Naur forme (BNF).
Backus-Naur notacija (poznata kao BNF, tj. Backus-Naur forma) je formalna matemati!ka
metoda za opis jezika, koji su razvili John Backus i Peter Naur za opis sintakse programskog
18
jezika Algol 60. BNF se moe promatrati i kao metajezik ili metasintaksa, odnosno formalni
na!in za opis formalnih gramatika.

BNF specifikacija je skup "derivacijskih pravila" zapisanih kao:
<simbol> ::= <izraz sa simbolima>

Neka pravila sintakse ne mogu se zapisati sa BNF npr. da sve varijable treba deklarirati prije
nego su referencirane u programu

U ra!unalnoj znanosti semantika programskog jezika je podru!je koje se bavi rigoroznim
matemati!kim prou!avanjem zna!enja programskih jezika i ra!unalnih modela.
Stati!ka semantika programskog jezika bavi se "dozvoljenim" formama programa. U mnogim
slu!ajevima stati!ka semanti!ka pravila odre"uju ograni!enja na tipovima podataka. Naziv
"stati!ka" semantika je zbog toga to se provjera pravila odn. specifikacija moe obaviti za
vrijeme prevo"enja ("kompajliranja") programa. Gramatika atributa (eng. attribute grammar)
metoda je za formalni opis i sintakse i stati!ke semantike.
Dinami!ka semantika je specifikacija zna!enja, to je opis efekata izvo"enja programa.
Opisati sintaksu programskog jezika relativno je jednostavno, za razliku od semantike. Npr. za
dinami!ku semantiku ne postoji op#eprihva#ena metoda prikaza.
Za specifikaciju dinami!ke semantike, uobi!ajene formalne tehnike su operacijske, aksiomatske i
denotacijske metode. Sve navedene metode specifikacija semantike vrlo su kompleksne, stoga ih
ovdje ne#emo detaljnije obrazlagati.
Sintaksa, semantika i prevo#enje programa
Kako se pitanja sintakse i semantike odraavaju na prevo"enje ("kompajliranje") programa?
Koncipiranje programa prevodioca (kompajlera) je vrlo kompleksan problem. Ovdje #emo dati
samo op#u shemu osnovnih elemenata odnosno faza rada komplajlera u svrhu boljeg
razumijevanja veza izme"u sintakse, semantike i implementacije programskog jezika.
LEKSICKA ANALIZA
IZVORNI KOD
PROGRAMA
SINTAKTICKA ANALIZA
GENERIRANJE KODA
OPTIMIZACIJA
OBJEKTNI
KOD
PROGRAMA

Slika 6: Osnovni elementi tipi!nog programa prevodioca
Izvorni kod napisan u viem programskom jeziku prvo se podvrgava leksi!koj analizi !ija je
zada#a da prepozna osnovne "tokene" koji se pojavljuju u programu i da ih klasificira na
konstante, identifikatore, rezervirane rije!i, itd. Prva faza zapravo konvertira programski tekst u
niz (listu) prepoznatih "tokena". Sintakti!ka analiza konvertira pretodnu listu u stablo
"parsiranja", koriste#i se internim prikazom gramatike jezika. Generiranje programskog koda
zapravo je veza izme"u sintakse i semantike (strojnog prikaza) jezika. U ovoj fazi stablo
parsiranja konvertira se u ekvivalentni listu strojnih naredbi. Optimizacija nastoji poboljati
generirani kod u smislu smanjenja trajanja izvravanja programa. "Objektni program" koji
nastaje kao rezultat prevo"enja moe biti ili u strojnom jeziku ili u nekom "prelaznom obliku" do
kona!nog strojnog jezika koji se moe izvesti na ra!unalu.
19
"Parser" je algoritam odn. program za odre"ivanje sintakti!ke strukture re!enice ili niza simbola
u nekom jeziiku. Kao ulazne podatke parser dobija niz "tokena" generiranih od "leksi!kog
analizatora". Kao izlaz parser moe producirati tzv. stablo apstraktne sinatkse (eng. abstract
sytax tree). U ra!unalnoj znanosti "parsiranje" je proces analiziranja kontinuiranog niza znakova
(pro!itanog npr. sa tipkovnice ili iz datoteke) u cilju odre"ivanja gramati!ke strukture u odnosu
na propisanu formalnu gramatiku. "Parser" je ra!unalni program koji obavlja navedenu zada#u.
Parsiranje transformira ulazni tekst u strukturu podataka, (obi!no struktura stabla), koja je
pogodna za daljnje procesiranje.
Tipovi i strukture podataka u programskim jezicima
U ra!unalnoj znanosti tip podatka je ime ili oznaka za skup vrijednosti i operacije koje se mogu
obaviti na tom skupu vrijednosti. Programski jezici implicitno ili eksplicitno podravaju jedan ili
vie tipova podatka. Tipovi podataka zapravo djeluju kao ograni!enja u programima koja se
stati!ki ili dinami!ki provjeravaju. Osnovna ideja uvo"enja tipova podataka je davanje zna!enja
ne!emu to je u kona!nici zapravo samo niz bitova. Tipove obi!no povezujemo ili sa
vrijednostima u memoriji ili sa objektima poput varijabli. Za ra!unalo svaka vrijednost je
jednostavno samo skup bitova, u hardveru nema razlikovanja izme"u memorijske adrese, koda
instrukcije, znakova, cijelih brojeva i decimalnih brojeva. Tip podatka govori nam kako treba
tretirati taj niz bitova.

Programi se mogu promatrati i kao niz operacija koje se izvode na objektima - podacima. Tipovi
objekata koje podravaju pojedini programski jezici me"usobno se razlikuju. Osnovni tipovi
zajedni!ki su ve#ini programskih jezika koji se naj!e#e koriste, a razlike u definiranju
(deklaracijama) istih tipova podataka i varijabli u razli!itim programskim jezicima nisu velike.
Temeljna svrha programa je obrada podataka pomo#u ra!unala, tako da je ishodino pitanje
programiranja opis i strukturiranje podataka.
Vanjski podaci, koji su definirani zadatkom, nisu jedini, jer niz podataka nastaje i za vrijeme
obrade, postoje u memoriji i kasnije se nigdje ne vide. Zato moemo postaviti tri osnovne
skupine podataka odnosno varijabli koje #e postojati:
! ulazni podaci,
! izlazni podaci,
! unutarnji podaci programa.
Svaki podatak koji se obra"uje u nekom programu treba definirati i povezati tj. strukturirati u
povezane cjeline (strukture podataka) kako bi jednostavno radili s njima.
Prema svojstvima pojedinih atributa koji opisuju entitete, podaci mogu biti tipa: cjelobrojni,
realni broj, logi!ka varijabla, znakovno polje ....
Sa stajalita struktura, podatke moemo povezati u: nizove (koji predstavljaju matemati!ke
vektore i matrice), skupove, slogove, datoteke ....
Ra!unalu je potrebno dati potpunu definiciju podataka kako bi se kontrolirale operacije nad
njima: aritmeti!ke operacije doputene su nad brojevima, skupovne operacije nad elementima skupa
itd.
Tip podataka (objekata) odre"uje i dozvoljene vrijednosti koje pojedini objekt moe poprimiti,
kao i skup dozvoljenih operacija. To ujedno ima i utjecaja na na!in pohrane podataka.
Osnovni (primitivni tipovi) podataka
Primitivni tipovi podataka, za razliku od kompozitnih, su tipovi podataka koje programski jezik
nudi kao osnovne gradbene elemente. Ovisno o programskom jeziku i njegovoj implementaciji,
primitivni tipovi mogu ili nemoraju imati "jedan prema jedan" korespondenciju sa objektima u
ra!unalnoj memoriji. Primitivni tipovi poznati su i kao "ugra"eni" tipovi (eng. built-in types) ili
osnovni tipovi.
20
Tipi!ni primitivni tipovi podataka uklju!uju: (navedene su oznake koje prevladavaju u ve#ini
jezika):
! niz znakova: character, char, string
! cijeli broj, sa nekoliko razli!itih podru!ja vrijednosti : integer, int, short,
long
! decimalni broj, sa nekoliko razli!iti preciznosti: float, real, single,
double, double precision
! logi!ki (boolean), ima vrijednosti istinu ili la (eng. true i false)
! referenca (eng. "pointer"), ili pokaziva! (kazalo) sadri memorijsku adresu nekog
drugog objekta

Ovdje je potrebno naglasiti razliku izme"u preciznosti (eng. precision) i to!nosti (eng. accuracy).
Preciznost broja odre"ena je duinom rije!i procesora (32 ili 64 bita, naj!e#e 4 byta za prikaz
integera odnosno realnog broja).
Preciznost se iskazuje brojem prvih vae#ih to!nih znamenki, a to!nost je bliskost stvarnoj
(nepoznatoj) vrijednosti.
Za dovoljnu to!nost potrebna je adekvatna preciznost, ali preciznost ne implicira automatski
to!nost jer su iskazane znamenke mogle nastati na temelju npr. pogrenog mjerenja.

Neke od klju!nih zna!ajki programskih jezika:
! da li su deklarcije tipa podatka obavezne ili neobavezne
! da li su ograni!enog dosega unutar programske jedinice (procedure, modula, bloka) ili
ne?
Tipovi podataka u Visual Basic-u:
numeri!ki: Integer, Long, Single, Double, Currency
tekstualni: String
logi!ki: Boolean
op"i: Variant
datum: Date
binarni: Byte

Varijable
Pojam varijable u programskom jeziku ozna!ava apstrakciju memorijske #elije ra!unala ili skupa
memorijskih #elija. Programeri !esto razmiljaju o varijablama kao imenima za memorijske
lokacije (#elije), premda pojam varijable obuhva#a i mnogo vie. Programeru je mnogo
prirodnije manipulirati sa simboli!kim imenima memorijskih #elija nego sa njihovim apsolutnim
adresama u numeri!kom obliku. Varijablu karakterizira slijede#ih est atributa:
! ime
! adresa
! tip
! vrijednost
! doseg (eng. scope)
! trajanje (eng. lifetime)

Odre#ivanje imena varijable
Ime (naziv) je niz znakova upotrijebljen kao identifikator nekog entiteta u programu. Imena se u
programima ne upotrebljvaju samo za varijable nego i za neke druge elemente (entitete) u
21
programu (potprograme, labele, formalne parametre, itd.). Pravila odre"ivanja imena varijabli u
razli!itim programskim jezicima uglavnom se razlikuju po slijede#im kriterijima:
maksimalna duljina imena
dozvoljeni znakovi u imenu varijable
da li se razlikuju velika i mala slova ili se tretiraju kao isti znak ("case sensitive")
da li su specijalne rije!i rezervirane rije!i ili kju!ne rije!i
Klju!na rije! (keyword) je rije! u programskom jeziku koja je specifi!na (specijalna) samo u
odre"enom kontekstu.
Primjer klju!ne rije!i u FORTRAN-u:
REAL APPLE naredba deklaracije tipa varijable
REAL = 3.4 naredba dodjeljivanja vrijednosti varijabli REAL
Fortranski prevodioc prepoznaje razliku izme"u imena i specijalnih rije!i prema kontekstu.
Rezervirana rije! (reserved word) je specijalna rije! programskog jezika koja se ne smije
koristiti kao ime (identifikator).
To je bolja opcija nego klju!ne rije!i (keywords) - u FORTRAN-u:
INTEGER REAL deklaracija varijable imena "REAL" koja je tipa "integer"
REAL INTEGER deklaracija varijable imena "INTEGER" koja je tipa "real"
Pravila imenovanja varijabli u Visual Basic-u:
ime mora po!injati slovom abecede
moe sadravati samo slova, brojeve i znak _
ne smije sadravati to!ku
ime ne smije biti due od 255 znakova
ime mora biti jedinstveno u dijelu programa u kojem se nalazi varijabla.
Adresa varijable
Adresa varijable je adresa memorijske #elije (lokacije) koju varijabla simbolizira (predstavlja).
Takova asocijacija nije uvijek jednostavna kako se !ini. U mnogim jezicima mogu#e je isto ime
pridruiti (povezati sa) razli!tim adresama u razli!itim dijelovima programa. Za razumijevanje
programskih jezika, od velike vanosti je i poznavanje trenutka u kojem se ime varijable
povezuje sa memorijskom adresom.
Tip varijable
Tip varijable odre"uje podru!je vrijednosti koje varijabla moe poprimiti kao i skup operacija
koje se mogu obavljati na vrijednostima tog tipa. Na primjer u FORTTRAN-u cjelobrojni tip
varijable koji koristi dva byte-a ima podru!je vrijednosti od -32768 do 32767. Na cjelobrojnom
tipu podatka dozvoljene su operacije zbrajanja, oduzimanja, mnoenja i dijeljenja, te pozivi
ugra"enih funkcija kao npr. apsolutna vrijednost.
Vrijednost varijable
Vrijednost varijable je sadraj memorijske #elije (ili vie njih) koju varijabla simbolizira
(predstavlja). Gledaju#i memoriju kao niz pojedina!no adresibilnih jedinica, u ve#ini dananjih
ra!unala te jedinice su veli!ine "bajta" (byte) koji se sastoji od 8 bitova. Jedan "bajt" je
premalena jedinica za zapis vrijednosti ve#ine programskih varijabli. Stoga je obi!ajeno govoriti
o ra!unalnoj memoriji u kontekstu "apstraktnih" #elija, a ne "fizi!kih" #elija. Apstraktna #elija
sadri odgovaraju#i broj "bajtova" za zapis vrijednosti odre"enog tipa varijable.
Doseg varijable
Doseg (eng. scope) je rang (podru!je) naredbi programa u kojima je varijabla "vidljiva".
Varijabla je "vidljiva" u nekoj naredbi programa ukoliko moe biti referencirana (poznata je
njena adresa) u toj naredbi. Pravila dosega odre"uju kako je pojedino pojavljivanje imena
22
varijable u programu povezano sa varijablom. Posebno, pravila dosega odre"uju to se doga"a s
referencama na varijable koje su deklarirane izvan procedure koja se trenutno izvodi.
Prema dosegu, varijble se obi!no dijele na:
globalne
lokalne
Globalne varijable su vidljive, dostupne u svim procedurama, odnosno u jednom modulu koji
sadri vie procedura. Lokalne varijable su deklarirane unutar procedure ili funkcije i dostupne
su samo unutar te procedure ili funkcije. Na!in deklariranja globalnih varijabli dosta se razlikuje
izme"u programskih jezika.
Razlika lokalnih i globalnih varijabli moe se vidjeti na primjeru dvije procedure u Visual Basic-
u. Globalnim varijablama vrijednosti se dodjeljuju u trenutku pokretanja programa i one se
nakon toga ne mijenjaju niti u jednoj proceduri. Loklanim varijablama vrijednosti se dodjeljuju u
svakoj proceduri.


Public Class Form1
Inherits System.Windows.Forms.Form
Dim global1, global2 As Integer

Private Sub Form1_Load()
global1 = 50
global2 = 80
End Sub

Private Sub prva_procedura_Click()
Dim local1, local2 As Integer
local1 = 100
TextBox1.Text = CStr(global1)
TextBox2.Text = CStr(global2)
TextBox3.Text = CStr(local1)
TextBox4.Text = CStr(local2)
End Sub

Private Sub druga_procedura_Click()
Dim local1, local2 As Integer
local2 = 200
TextBox1.Text = CStr(global1)
TextBox2.Text = CStr(global2)
TextBox3.Text = CStr(local1)
TextBox4.Text = CStr(local2)
End Sub

End Class

Slika 7: Izgled forme nakon izvo"enja prve procedure i nakon izvo"enja druge procedure

Trajanje varijable
Trajanje varijable (eng. lifetime) je vremenski period u kojem varijabla zadrava svoju vrijednost
dok se izvodi ra!unalni program.
Doseg i trajanje varijable ponekad su povezani:
Globalne varijable su postojane, traju koliko i izvodjenje cijelog programa i zadravaju
vrijednosti od jednog poziva potprograma (funkcije) do drugog.
Lokalne varijable su deklarirane unutar funkcije (ili bloka) i traju smo dok se funkcija
(blok) izvodi.
Ako se eli sa!uvati vrijednost lokalne varijable za slijede#i poziv procedure, treba ju
deklarirati kao stati!ku takvu mogu#nost nemaju svi programski jezici.
23
Primjer deklariranja stati!ke lokalne varijable u Visual Basic-u:
Function Total(num)
Static Suma
Suma = Suma + num
Total = Suma
End Function

Deklaracija varijable
Deklariranje varijabli i vrijeme kada se povezuju razli!iti atributi podataka vani su parametri
snage, fleksibilnosti i efikasnosti nekog programskog jezika..
Op#enito to je vrijeme povezivanja ranije (npr. za vrijeme prevo"enja) mogu#e je generirati
efikasniji kod. Nasuprot tome ukoliko je povezivanje kasnije fleksibilnost je ve#a.

Npr. izraz : y =y + 1
Naizgled trivijalno, ali treba povezati:
1. ime varijable i deklaraciju varijable,
2. deklaraciju i adresu,
3. adresu i vrijednost.

Pokaziva!i (kazala, "pointeri")
Ovaj tip podatka sadri memorijsku adresu, odnosno referencu na drugi podatak. Pokaziva!i
imaju dvije osnovne namjene:
! indirektno adresiranje (dosta se upotrebljava u programiranju na razini "assembler-a"
! kao metoda dinami!kog upravljanja alociranjem memorije
Jezici u kojima postoji tip podatka pokaziva! (eng. pointer) obi!no uklju!uju i dvije osnovne
operacije nad ovim tipom podatka:
! dodjeljivanje adrese neke varijable pokaziva!u ("setiranje")
! dereferenciranje dodjeljivanje ("uzimanje") vrijednosti varijable na koju pokaziva!
(pointer) pokazuje, odnosnu !iju adresu sadri
Programski jezik C:
! & je operator dodjeljivanja adrese
! * je operator dereferenciranja
Programski jezik C ima i aritmeti!ke operacije nad pokaziva!ima (pointerima).
Za ilustraciju upotrebe pokaziva!a i operacija nad njima razmotrimo slijede#i primjer programa
u C-u:

(1) int a, *ptr, b, c, *d;
(2) a = 25;
(3) ptr = &a;
(4) b = a;
(5) c = *ptr;
(6) d = ptr;

Na slijede#oj slici prikazana su stanje sadraja pet memorijskih lokacija nakon izvo"enja svake
od naredbi programa. Naredbe programa ozna!ene su rednim brojevima u zagradama. Adrese
memorijskih lokacija su: 1000, 2000, 3000, 4000 i 5000.

24
a
1000
ptr
2000
b
3000
c
4000
d
5000
25
a
1000
ptr
2000
b
3000
c
4000
d
5000
25
a
1000
1000
ptr
2000
b
3000
c
4000
d
5000
25
a
1000
1000
ptr
2000
25
b
3000
c
4000
d
5000
25
a
1000
1000
ptr
2000
25
b
3000
25
c
4000
d
5000
25
a
1000
1000
ptr
2000
25
b
3000
25
c
4000
1000
d
5000
(1) (2) (3)
(4) (5) (6)

Slika 8: Sadraji memorijskih lokacija u toku izvo"enja primjera programa
Polja
Neki programski jezici omogu#uju definiranje jednostavnijih struktura podataka, a gotovi svi
jezici omogu#uju definiranje strukture polja. Polje (eng. array) se koristi u situacijama kada treba
manipulirati sa nizovima podataka (vektorima) ili sa tabli!nim podacima odn. matricama. U
takvim slu!ajevima daleko je pogodnije i razumljivije koristiti zajedni!ko ime za vie
memorijskih lokacija nego skup (niz) razli!itih imena.

Polje je:
podatkovna struktura gdje isto ime dijeli vie podataka
sekvencijalni niz memorijskih lokacija kojima je pridrueno jedno zajedni!ko simboli!ko
ime
homogena agregacija podataka u kojima je jedan individualni element identificiran
svojom pozicijom u odnosu na prvi element
Za polja vrijede i slijede#a pravila:
Svi podaci u nekom polju moraju biti istog tipa
Sva pravila imenovanja varijabli vrijede i za polja
Elementi (!lanovi) polja se identificiraju indeksom
Indeks odre"uje adresu elementa u polju
U nekim jezicima je po!etna vrijednost indeksa 1 (npr. FORTRAN), a u nekima je
po!etna vrijednost indeksa 0 (npr. C i Visual Basic)
Indeks moe biti nenegativni cijeli broj (konstanta, varijabla, cjelobrojni izraz)
Polje moe imati vie indeksa, odnosno dimenzija
Dimenziju polja odre"uje broj indeksa kojima se odre"uje pojedini podatak unutar polja.

Primjeri odre"ivanja indeksa:
x ( 0 ) x ( 9 ) x ( n ) x ( MAX ) x ( n+1 ) x ( k/m+5 )


25
Primjer jednodimenzionalnog polja (vektora):
Visual Basic:
Dim a(10) As Integer

a(0) a(1) a(2) a(3) a(8) a(9) . . . . . . . .

Jednodimenzionalno polje (vektor) koje ima 10 !lanova, zajedni!ko ime je "a", prvi !lan polja
ima indeks "0", a zadnji !lan polja ima indeks "9".

Primjeri dvodimezionalnog polja (matrice):
(prvi indeks je redni broj retka, a drugi indeks je redni broj stupca!)

a(0,0) a(0,1) a(0,2) . a(0,n-2)
a(1,0) a(1,1) a(1,2) . a(1,n-2)
.
.
.
.
a(m-2,0)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a(m-1,0)
a(m-2,1) a(m-2,2) . a(m-2,n-2)
a(m-1,1) a(m-1,2) . a(m-1,n-2)
a(0,n-1)
a(1,n-1)
.
.
.
.
a(m-2,n-1)
a(m-1,n-1)

Slika 9: Dvodimenzionalno polje sa m redaka i n stupaca (po!. vrijednost indeksa: 0)


a(2,1) a(2,2) . a(2,n-1)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a(m-1,1) a(m-1,2) . a(m-1,n-1)
a(m,1) a(m,2) . a(m,n-1)
a(2,n)
.
.
.
.
a(m-1,n)
a(m,n)
a(1,1) a(1,2) . a(1,n-1) a(1,n)
a(2,3)
.
.
.
.
a(m-1,3)
a(m,3)
a(1,3)

Slika 10: Dvodimenzionalno polje sa m redaka i n stupaca (po!. vrijednost indeksa: 1)

Deklariranje polja
U svim programskim jezicima potrebno je odrediti broj indeksa u polju (dimenzije polja) kao i
ukupan (maksimalni) broj !lanova polja jer su to podaci neophodni za rezerviranje (adresiranje)
memorijskih lokacija koje #e polje koristiti pri izvo"enju programa. Uobi!ajeno se takav
postupak odre"ivanja parametara polja naziva "deklariranje" polja.
26
Op#i oblik naredbe za deklaraciju polja:
tip_podatka ime_polja (veli!ina_polja)
(redoslijed gore navedenih dijelova naredbe nije isti u svim jezicima, ali uvijek postoje sva
tri navedena elementa naredbe)
Primjeri:
Visual Basic:
Dim a(10) As Integer
Dim b(50,50) As Single

C: FORTRAN:
Float b[20][34]; REAL A(100,100)
Izrazi (eng. expressions)
Integralni dio svih imperativnih programskih jezika je koncept varijabli !ija se vrijednost mijenja
u toku izvravanja programa. Vrijednosti varijabli mijenjaju se naredbom dodjeljivanja (eng.
assignment statement). Moe se re#i da je naredba dodjeljivanja temeljna naredba za ra!unala
Von Neumann-ove arhitekture. Naredba dodjeljivanja u najjednostavnijem slu!aju moe kopirati
sadraj jedne memorijske #elije u drugu ili memorijskoj #eliji pridruiti konstantu, ali u ve#ini
slu!ajeva naredba dodjeljivanja uklju!uje aritmeti!ke ili mjeovite izraze. Naredba dodjeljivanja
op#enito dakle sadri izraz !iju vrijednost treba odrediti (izra!unati), zatim operator dodjeljivanja
i ciljnu lokaciju (varijablu) kojoj treba pridruiti vrijednost izraza.
Izraz u programskom jeziku je kombinacija vrijednosti, funkcija, token-a i procedura koji se
interpretiraju prema pravilima redoslijeda i asocijacije !ijom primjenom se izra!unava i "vra#a"
vrijednost izraza. Pojam "token-a" objanjen je u poglavlju o sintaksi prog. jezika.
Izrazi se sastoje se od jednog ili vie operanada nad kojima djeluju operatori. Operandi mogu biti
varijable i konstante. Operatori mogu biti unarni (imaju sam jedan operand) i binarni (imaju dva
operanda):
Primjer:
-a*b ovisno o situaciji i + mogu biti i unarni i binarni: - a * b + c +x / y - z
Prema vrsti operanada i operatora izraze dijelimo na:
! aritmeti!ke
! relacijske
! logi!ke
! mjeovite
Da bi razumjeli odre"ivanje vrijednosti izraza (eng. expression evaluation) nuno je poznavati
pravila redoslijeda izvo"enja operatora i operanada.
Zagrade
Zagrade mijenjaju pravila redoslijeda izvo"enja operatora. Dio izraza unutar zagrada ima vii
prioritet izvravanja od ostatka izraza izvan zagrada. U izrazu (A + B) * C prvo #e se
izvriti zbrajanje, pa onda mnoenje. Ako izraz sadri vie ugnje"enih zagrada (jedne unutar
drugih), zagrade se izvravaju od unutarnjih prema vanjskim.
( (A + B) / C ) + (D E) / 2
Izraz mora uvijek sadravati jednak broj otvorenih i zatvorenih zagrada.

27
Aritmeti"ki izrazi
Jedan od primarnih ciljeva prvih generacija programskih jezika bio je automatska evaluacija
aritmeti!kih izraza. Ve#ina zna!ajki aritmeti!kih izraza u programskim jezicima naslije"ena je iz
matemati!kih konvencija. Aritmeti!ki izrazi sastoje se od operatora, operanada, zagrada i poziva
funkcija. Rezultat evaluacije (izra!unavanja) aritmeti!kog izraza uvijek je numeri!ka vrijednost.
Redoslijed izvo#enja operatora
Umjesto da se operatori izvode s lijeva na desno, u ve#ini jezika odre"ena su pravila redoslijeda
izvo"enja aritmeti!kih operatora. U gotovo svim imperativnim jezicima najvii prioritet ima
potenciranje, zatim mnoenje i dijeljenje, pa tek onda zbrajanje i oduzimanje. Ako vie operatora
ima jednaki prioritet, izvode se lijeva na desno.
Ako izraz sadri dva uzastopna pojavljivanja operatora istog prioriteta, redoslijed izvo"enja
odere"uje se prema pravilima asocijativnosti operator moe imati ili lijevu ili desnu
asocijativnost. Ako je lijeva, izvodi se prvi operator s lijeve strane, a ako je desna onda prvi
operator s desne strane. Ve#ina imperativnih jezika ima lijevu asocijativnost.

asocijativnost
operatora
Pascal C FORTRAN
77
lijeva svi
operatori
*, /, %, binarni +, binarni
-
*, /, +, -
desna ++, --, unarni +, unarni
-
**

Primjeri: A B + C prvo se izvodi oduzimanje pa onda zbrajanje
A ** B ** C u FORTRAN-u se prvo izvodi desni operator potenciranja
Konverzija tipova podataka u izrazima
Ve#ina programskih jezika dozvoljava da operatori u aritmeti!kim izrazima imaju operande
razli!itih tipova. Jezici koji dozvoljavaju takve aritmeti!ke izraze moraju definirati konvencije za
implicitne konverzije tipova operanada zbog toga to ra!unala obi!no nemaju operacije nad
operandima razli!itih tipova. Takve implicitne (prisilne) konverzije inicirane od "compiler-a" u
eng. ra!unalnoj terminologiji obi!no se nazivaju "coercion in expressions".
Primjer aritmeti!kog izraza sa varijablama razli!itih tipova (prog. jezik C):
int a; float b; double c;
c = a + b;
Implicitno se obi!no konvertira iz nieg u vii tip , tj. vii tip bi trebao uklju!ivati bar
aproksimacije mogu#ih vrijednosti nieg tipa: int - float - double
Sa razmatranog aspekta razlikujemo tri tipa programskih jezika:
! ne dozvoljavaju mjeovite izraze (Ada, Modula-2), potrebna eksplicitna pretvorba npr.
real(a) + b
! dozvoljavaju "razumne" kombinacije (npr. realni i cijeli brojevi, Pascal, FORTRAN)
! dozvoljavaju sve kombinacije (C, Visual Basic)
Ako programer eli eksplicitnu konverziju tipova podataka, gotovo svi jezici posjeduju ugra"ene
funkcije za tu namjenu.
28
Primjer nekih od funkcija za eksplicitnu konverziju tipova podataka u Visual Basic-u:
FUNKCIJA: KONVERTIRA U:
CDbl Double
CInt Integer
CLng Long
CSng Single
CStr String
CVar Variant

Relacijski izrazi
Relacijski operatori uspore"uju vrijednosti dva operanda. Relacijski izraz ima dva operanda i
jedan relacijski operator. Vrijednost relacijskog izraza je logi!ka (istina ili la), osim ako jezik ne
poznaje logi!ki tip podatka (npr. C).
Sintaksa relacijskih operatora u naj!e#e koritenim jezicima:
operacija Pascal C FORTRAN 77 Visual Basic
jednakost = = = .EQ. =
nejednakost <> != .NE. <>
ve#i od > > .GT. >
manji od < < .LT. <
ve#i od ili jednak >= >= .GE. >=
manji od ili jednak <= >= .LE. <=

Relacijski operatori uvijek imaju nii prioritet izvo"enja od aritmeti!kih.
U mjeovitom izrazu b + 3 > 2 * a prvo #e se izvesti aritmeti!ki izrazi, pa tek
nakon toga usporedba.
Logi"ki (Boolean) izrazi
Sadre logi!ke varijable i konstante, relacijske izraze i logi!ke operatore. Logi!ke varijable
mogu poprimiti samo dvije vrijednosti istinu ili la (eng. true, false)
Logi!ki operatori su:
! logi!ka konjukcija AND
! logi!ka disjunkcija OR
! negacija NOT
Ovisnost rezultata logi!kih operacija o vrijednostima operanada obi!no se prikazuje tzv.
tablicom "istinitosti" za logi!ke operatore (A i B su operandi logi!ke varijable):

A B A AND B A OR B
istina istina istina istina
istina la la istina
la istina la istina
la la la la
29
U ve#ini jezika logi!ki operatori imaju odre"en redoslijed izvo"enja najvii prioritet ima unarni
NOT operator, pa zatim AND i nakon njega OR.
Programski jezik C nema logi!ki tip podatka; numeri!ka vrijednost 0 predstavlja la (false), a
sve ostale numeri!ke vrijednosti smatraju se istinom. Rezultat izvo"enja logi!kog izraza u C-u je
integer sa vrijedno#u 0 za la ili vrijedno#u 1 za istinu.
Mjeoviti izrazi
Aritmeti!ki izrazi mogu biti operandi relacijskih izraza, a relacijski izrazi mogu biti operandi
logi!kih izraza sve zajedno tvore#i jedan izraz. Stoga moraju postojati i pravila redoslijeda
izvo"enja pojedinih vrsta operatora.
U ve#ini jezika prvo se izvode aritmeti!ki, zatim relacioni i na kraju logi!ki operatori.
Primjer evaluacije mjeovitog izraza:
Izraz: b/((a-b)*c) + a^2 > a + (b-c)/3
Vrijednosti varijabli: a = 2, b = 3, c = 4
Redoslijed operacija:
a b = -1
-1 * c = -4
a^2 = 4
b / (-4) = -0.75
-0.75 + 4 = 3.25
b c = -1
-1 / 3 = -0.3333
2 + (-0.3333) = 1.6666
3.25 > 1.6666
kona!na vrijednost izraza: istina
Naredba za dodjeljivanje (eng. assignment statement)
Kao to je ve# prije navedeno, naredba za dodjeljivanje (dodjeljivanje) jedan je od osnovnih
elemenata imperativnih programskih jezika. Ona daje mehanizam za dinami!ko mijenjanje
vrijednosti varijabli. To zna!i da jedna te ista varijabla moe sadravati razli!ite vrijednosti u
tijeku izvravanja ra!unalnog programa. To je razli!iti koncept od nepoznanica (x, y, z ) u
algebri koje uvijek imaju istu vrijednost.
Op#a sintaksa naredbe dodjeljivanja:
<varijabla> <operator dodjeljivanja> <izraz>
Navedena sintaksa vrijedi za osnovni (najjednostavniji) oblik naredbe koji se i naj!e#e koristi.
Primjeri:
A = B + C
suma = suma + clan_niza
K := K + 5

Naredba za dodjeljivanje izvodi se tako da se prvo izra!una vrijednost izraza s desne
strane operatora dodjeljivanja. Zatim se ta izra!unata vrijednost pridruuje (dodjeljuje)
kao nova vrijednost varijabli s lijeve strane operatora dodjeljivanja. Pri tome nova
vrijednost varijable zamjenjuje ("gazi, brie") staru (prethodnu) vrijednost.
U gotovo svim programskim jezicima operator pridruuvanja je znak jednakosti. Ta !injenica
!esto uzrokuje zabune pri u!enju programiranja, jer se doga"a da se naredba dodjeljivanja
shva#a kao matemati!ka jednadba. Stoga ovdje moramo naglasiti da se naredba dodjeljivanja
mora tuma!iti isklju!ivo kao naredba koja ima svoj redoslijed i korake izvravanja, koji zapravo
30
nemaju nita zajedni!ko sa pojmom jednadbe osim simbola koji se koristi kao operator
dodjeljivanja vrijednosti. Kao primjer navedimo sintakti!ki ispravnu naredbu: a = a + 1
koja zapravo kae: trenutnoj vrijednosti varijable "a" dodaj 1 i nakon toga zapii to kao novu
vrijednost varijable "a". Dakako "a = a + 1" nije ispravna jednadba, odn. ne moe biti
jednadba.

Kontrolne strukture na razini naredbi
Pored naredbe dodjeljivanja, potrebni su jo neki mehanizmi (elementi jezika) koji #e osigurati
fleksibilnost i snagu izvo"enja ra!unalnog programa.
Naredbe programskog jezika normalno se izvode jedna za drugom - redoslijedom pisanja ako
nije druk!ije odre"eno. Ve#ina programskih jezika posjeduje naredbe za kontrolu toka izvo"enja
(eng. control flow statements). Navedene naredbe omogu#uju variranje redoslijeda izvo"enja na
slijede#e na!ine:

! Naredbe se izvravaju samo pod odre"enim uvjetima
! Izvravanje niza (grupe) naredbi se ponavlja vie puta uzastopno
! Prelazi se na izvravanje grupe naredbi izvan trenutnog programa u drugu programsku
jedinicu (tzv. potprogram)

Kontrolnu strukturu !ine kontrolne naredbe zajedno sa skupom drugih naredbi !ije izvravanje
kontroliraju.
Kontrolne naredbe se obi!no dijele u tri temeljne skupine:
! uvjetna grananja (selekcije),
! petlje (iteracije) i
! skokovi.
Ve#ina programskih jezika posjeduje inicijalnu klju!nu ili rezerviranu rije! koja odre"uje vrstu
kontrolne strukture (iznimka je Smaltalk). Jezike moemo podijeliti po tome da li kontrolna
struktura ima ili nema "zavrnu" klju!nu ili rezerviranu rije! koja ozna!ava kraj skupa naredbi
koje !ine kontrolnu strukturu.
! Jezici koji nemaju zavrnu rezerviranu ili klju!nu rije!:
Algol 60, C, C++, Java, Pascal, PL/1. Takvi jezici posjeduju druge na!ine grupiranja
naredbi unutar kontrolne strukture:
o Algol 60 i Pascal : begin ... end.
o C, C++ i Java: viti!aste zagrade { ... }.
o PL/1: DO ... END.
! Jezici koji imaju zavrnu rezerviranu ili klju!nu rije!:
Ada, Algol 68, Modula-2, Fortran 77. Forme zavrne rije!i su razli!ite:
o Visual Basic, Ada: zavrna rije! je end + razmak + inicijanlna rije!,
npr: if ... end if, loop ... end loop.
o Algol 68: inicijalna rije! napisana obrnuto, npr: if ... fi, case ... esac.
o Fortran 77: end + inicijalna rije!, npr: IF ... ENDIF, DO ... ENDDO.
o Modula-2: ima istu zavrnu rije! end za sve
Jezici koji posjeduju zavrnu klju!nu ili rezrerviranu rije! imaju !itljiviji programski kod,
pogotovo oni gdje je oblik zavrne rije!i end + inicijalna rije!.

31
Bezuvjetni skok
Naredba bezuvjetnog skoka prenosi kontrolu izvo"enja na specificirano mjesto (naredbu) u
programu. Na taj na!in ova naredba daje veliku fleksibilnost, ali s druge strane prevelika
fleksibilnost !ini upotrebu ove naredbe opasnom. Bez odre"enih restrikcija u upotrebi programi
mogu postati teko !itljivi ili gotovo potpuno ne!itljivi, a kao posljedica toga vrlo nepouzdani i
teki za odravanje. Stoga neki jezici niti ne sadre ovakvu naredbu, a ve#ina metoda i standarda
programiranja preporu!a upotrebu ove naredbe izbjegavati to je vie mogu#e.
U ve#ini jezika naredba bezuvjetnog skoka je "go to " naredba. Naredba na koju se prenosi
kontrola izvo"enja ozna!ava se sa "labelom" koja u nekim jezicima moe biti ono to se ina!e
koristi kao idetifikator ili neki jezici koriste cjelobrojne konstante.

Primjer u Visual Basic-u:

Primjer u FORTRAN-u:

naredba_1
naredba_2
goto oznaka
naredba_3
............
naredba_n
oznaka: naredba_n+1
naredba_n+2

naredba_1
naredba_2
goto 100
naredba_3
............
naredba_n
100 naredba_n+1
naredba_n+2

Uvjetna grananja (naredbe selekcije)
Naredbe za uvjetna grananja omogu#uju upravljame tokovima podataka. Tijekom izvo"enja
programa, ra!unalo #e usmjeriti aktivnosti zavisno od stanja logi!kih uvjeta koji su postavljeni u
dijagramu toka podataka.
Odlu"ivanje na temelju vrijednosti numeri"kog izraza
Ova naredba je iznimka jer koristi vrijednost numeri!kog, a ne logi!kog izraza. To je bila prva
varijanta naredbe odlu!ivanja, uvedena u prvoj verziji FORTRAN-a. Vrijednost numeri!kog
izraza uspore"uje se s nulom, a izraz ima tri izlazne grane (uvjetna skoka): (<0, =0, >0).
Sintaksa za FORTRAN:
IF (numeri!ki izraz) n1,n2,n3
n1, n2 i n3 su labele naredbi na kojima se nastavlja izvo"enje programa, ovisno o vrijednosti
numeri!kog izraza. Za razliku od bezuvjetnog skoka, ovu naredbu moemo razmatrati i kao
"uvjetni skok" jer se labele mogu nalaziti na bilo kojem dijelu programa sa izvrnim naredbama.

numericki
izraz
< 0
= 0
> 0

Slika 11: dijagram toka naredbe odlu!ivanja na temelju numeri!kog izraza
32
Odlu"ivanje (uvjetno grananje) Ako ..... Onda
Oblik Ako ..... Onda (eng. If . Then) je najjednostavniji oblik naredbe odlu!ivanja koji
ima dvije izlazne grane, odnosno dvije mogu#nosti izbora.
Odlu!ivanje odnosno izbor izvrava se na temelju vrijednosti logi!kog uvjeta. Uvjet je logi!ki
izraz !ija vrijednost moe biti samo istina ili la.
Mogu#nosti izbora su slijde#e:
! Ako je vrijednost logi!kog izraza istina (true) izvrava se jedna ili vie naredbi iza
rezervirane rije!i then.
! Ako je vrijednost logi!kog izraza la (false) izvrava se slijede#a naredba iza rezervirane
rije!i Endif.
Ukoliko treba izvriti samo jednu naredbu za istinitost izraza, nije potrebno pisati rezerviranu
rije! Endif tada se za vrijednost logi!kog izraza la (false) izvrava prva slijede#a naredba iza
If naredbe.

Sintaksa (Visual Basic) Primjer (Visual Basic)
If uvjet Then naredba


If a < b Then i = i + 1


If uvjet Then
naredbe
Endif

If c > 0 Then
x = b * 2
Suma = suma + x
Endif

Slika 12: dijagram toka primjera naredbe uvjetnog grananja
Ovakav oblik uvjetnog grananja koristimo u slu!ajevima kada treba izvriti jednu ili vie naredbi
za istinitost logi!kog izraza, a u slu!aju neistinitosti logi!kog izraza ne treba napraviti nita, nego
dalje nastaviti sa normalnim slijedom programa.
Uvjetno grananje: Ako ..... Onda ..... Ina"e
Oblik Ako ..... Onda . Ina!e (eng. If . Then . Else) omogu#ava izvravanje vie
naredbi (odre"enog niza naredbi) i za istinitost i za neistinitost logi!kog izraza. Kao i u
prethodno obrazloenom jednostavnijem obliku uvjetnog grananja iza rezervirane rije!i Then
slijedi niz (blok) naredbi koje se izvravaju ako je vrijednost logi!kog izraza istina. Kraj tog niza
naredbi i po!etak bloka naredbi koji se izvrava ako je vrijednost logi!kog izraza la ozna!ava se
c > 0
DA
NE
x = b * 2
Suma = suma + x
33
rezerviranom rije!i Else. Zavretak drugog bloka naredbi ozna!ava se rezerviranom rije!i
Endif.
Kao i u prethodnom obliku odlu!ivanje odnosno izbor izvrava se na temelju vrijednosti
logi!kog uvjeta.
Mogu#nosti izbora su slijde#e:
! Ako je vrijednost logi!kog izraza istina (true) izvrava se jedna ili vie naredbi iza
rezervirane rije!i then, zatim se nastavlja sa izvo"enjem naredbe iza rezervirane rije!i
Endif.
! Ako je vrijednost logi!kog izraza la (false) izvrava se jedna ili vie naredbi iza
rezervirane rije!i Else, zatim se nastavlja sa izvo"enjem naredbe iza rezervirane rije!i
Endif.

Sintaksa (Visual Basic) Primjer (Visual Basic)
If uvjet Then
blok_ naredbi_1
Else
blok_ naredbi_2
Endif

If i > j Then
n = n + 1
b(n) = a(i,j)
Else
m = m + 1
c(m) = a(i,j)
Endif

i > j
DA
n = n + 1
b(n)= a(i,j)
m = m + 1
c(m)=a(i,j)
NE

Slika 13: dijagram toka primjera naredbe uvjetnog grananja
Uvjetno grananje sa viestrukim ispitivanjem uvjeta
Rezervirana rije! Elseif omogu#ava izvravanje viestrukih testova, odnosno ispitivanje vie
logi!kih uvjeta jedan za drugim. Prelazak na ispitivanje slijede#eg logi!kog uvjeta nakon
rezervirane rije!i Elseif moe se ponavljati proizvoljni broj puta. Na taj na!in izbjegava se
nepotrebno koritenje rezervirane rije!i Endif na kraju ispitivanja svakog pojedinog uvjeta.
Ovisno o potrebi, posljednji uvjet koji se ispituje moe ili ne mora uklju!iti rezerviranu rije!
Else, odnosno blok naredbi koji se izvrava ako i posljednji ispitani uvjet nije ispunjen.
Grananje odnosno izbor izvrava se na slijede#i na!in:
Redom se ispituju logi!ki uvjeti, ako uvjet nije ispunjen (vrijednost la), prelazi se na ispitivanje
slijede#eg uvjeta u nizu. Izvrava se blok naredbi iza onog logi!kog uvjeta !ija je vrijednost
istina, a nakon toga se nastavlja sa prvom naredbom iza rezervirane rije!i Endif . Ako niti
jedan od uvjeta u nizu nije istinit izvrava se blok naredbi iza rezervirane rije!i Else (ako
postoji) i nakon toga se nastavlja s prvom naredbom iza rezervirane rije!i Endif.

34
Sintaksa (Visual Basic) Primjer (Visual Basic)
If uvjet_1 Then
blok_naredbi_1
Elseif uvjet_2
blok_naredbi_2
Else
blok_naredbi_3
Endif
If a > 0 Then
Poz = poz + 1
Elseif a < 0
neg = neg + 1
Else
nula = nula + 1
Endif

Slika 14: dijagram toka primjera naredbe uvjetnog grananja sa viestrukim ispitivanjem uvjeta
Ugnje#enje kontrolnih struktura - uvjetna grananja jedno unutar drugog
U programiranju se !esto javlja potreba ispitivanja sloenijih struktura logi!kih uvjeta. Naredba
uvjetnog grananja moe se pojaviti kao jedna od naredbi unutar blokova naredbi druge naredbe
uvjetnog grananja. Takva struktura naziva se "ugnje"enje" (eng. nesting). Mogu#e je
"ugnijezditi" naredbe uvjetnog grananja i na vie razina (Slika 15). Maksimalni broj razina
ugnje"enja razlikuje se u razli!itim programskim jezicima. Pri kodiranju ugnje"enja treba
paziti na to da svaka "if" naredba mora imati svoju "endif" naredbu, odnosno oznaku kraja. Svaki
endif pripada najblioj if naredbi, odnosno zatvaranajbliu If naredbu. Obi!aj je da se sve
naredbe na pojedinoj razini ugnje"enja piu "uvu!eno" radi bolje preglednosti strukture naredbi.

If uvjet_1 Then
blok_naredbi_1
If uvjet_2 Then
blok_naredbi_2
If uvjet_3 Then
blok_naredbi_3
Endif
................
Endif
...............
Endif

Slika 15: primjer "ugnje"enja" vie naredbi uvjetnih grananja
a < 0
NE
nula = nula + 1
a > 0
NE DA
poz = poz + 1
neg = neg + 1
DA
35
Viegransko usmjeravanje
Naredba viegranskog usmjeravanja (case ili switch) slui za odabir jednog slu!aja unutar
skupa mogu#ih slu!ajeva. Temelj odabira je vrijednost izraza koji moe biti numeri!ki i
tekstualni. Nakon izraza navode se slu!ajevi mogu#ih vrijednosti izraza. Naredba se izvrava
tako da se prvo odredi vrijednost izraza, a zatim se ta vrijednost uspore"uje sa slu!ajevima
unutar tijela naredbe. Ako je vrijednost izraza jednaka nekoj od vrijednosti navedenih iza
pojedine "case" naredbe, tada se izvrava blok naredbi koji slijede, a nakon toga se nastavlja iza
naredbe "end select". Ako niti jedna od navedenih vrijednosti ne odgovara vrijednosti izraza,
izvravaju se naredbe iza naredbe "Case Else". Ako nema potrebe, grana "Case Else" moe se
ispustiti. Iza svake "Case" naredbe moe se navesti vie vrijednosti izraza i tada se odvajaju
zarezima. Ako se vrijednost izraza podudara sa vie "Case" blokova, samo prvi blok naredbi #e
se izvriti.

Op!a Sintaksa Primjer (Visual Basic)
skretnica (izraz)
slu!aj C1
blok naredbi1
slu!aj C2
blok naredbi1
slu!aj C3
blok naredbi4
. . . . .
ina!e
blok naredbi n
Kraj

Select Case znak
Case A,E,I,O,U
vrsta = veliki samog.
Case a,e,i,o,u
vrsta = mali samog.
Case 1,2,3,4,5,6,7,8,9
vrsta = znamenka
Case Else
Vrsta = nesto drugo
End Select

Primjer (C)
switch (nekiZnak) {
case 'a': actionOnA;
break;
case 'x': actionOnX;
break;
case 'y':
case 'z': actionOnYandZ;
break;
default: actionOnNista;
}
Uo!ite razliku u ozna!avanju po!etka i kraja kontrolne strukture izme"u Visual Basic-a i C-a: u
Visual Basic-u po!etak i kraj odre"uju rezervirane rije!i Select Case i End Select, a u
C-u je po!etak odre"en rezerviranom rije!i switch, a grupa naredbi kontrolne strukture je
ome"ena viti!astim zagradama, tj. nema rezervirane rije!i koja odre"uje kraj.
Ne postoji standardni simbol dijagrama toka za prikaz naredbe viegranskog usmjeravanja. Stoga
je ova naredba prikazana kao struktura odlu!ivanja u kojoj se simbol za logi!ku odluku koristi za
prikaz uspore"ivanja izraza sa mogu#im slu!ajevima.

36
Case
vrijednost 1
DA
NE
Blok naredbi 1
Select Case izraz
Case
vrijednost 2
DA
Blok naredbi 2
Case
vrijednost N
DA
Blok naredbi N
Case Else
DA
Blok naredbi
End Select

Slika 16: Grafi!ki prikaz naredbe viegranskog usmjeravanja
Naredbe za ponavljanje izvo#enja sekvenci programa (petlje)
Pojam petlje u programiranju ozna!ava sekvencu (niz) naredbi koji je specificiran jedamput, ali
se moe izvoditi vie puta zaredom. Sekvenca moe biti jedna naredba ili skup naredbi.
Petlje dakle omogu#avju ponavljanje grupe naredbi unutar programa. Koritenje brzine rada
ra!unala manifestira se upravo u petljama. Ponavljanje izvo"enja prekida se:
! nakon to je petlja izvedena onoliko puta koliko je to bilo odre"eno, ili
! ako je u toku izvo"enja petlje zadovoljen uvjet koji je prethodno postavljen.
Provjera uvjeta petlje moe biti na po!etku (vrhu), kraju (dnu) ali i u sredini petlje.
Sekvenca naredbi koje se ponavljaju uobi!ajeno se naziva tijelo petlje (eng. the body of the
loop). Na slici 17 prikazani su uobi!ajeni pojmovi vezani uz petlje koji se koriste u
programerskoj praksi.

Slika 17: Grafi!ki prikaz pojma petlje u programiranju
37
U razli!itim programskim jezicima razvijeno je do danas dosta varijacija petlji, no sve se mogu
svesti na dvije vrste:
! kontrolirane broja!ima koje se izvode to!no odre"eni broj puta
! kontrolirane logi!kim uvjetima koje se izvode neodre"eni (unaprijed nepoznati) broj puta
Razlike u izvedbi petlji izme"u razli!itih programskih jezika nisu velike, stoga ovdje nije dan
prikaz svih varijacija.
Neka jednostavna pravila vrijede za konstrukciju svih vrsta petlji:
! petlje se ne smiju "zapetljati" npr. ako je vie petlji jedna unutar druge, kraj jedne
petlje ne moe biti unutar instrukcija druge petlje
! u petlju se ne smije "usko!iti", npr. naredbom bezuvjetnog skoka
! iz petlje se ne smije "isko!iti" bezuvjetnim skokom.

Petlje kontrolirane eksplicitnim broja"em
Ova vrsta petlji upotrebljava se u situacijama kada je u trenutku prije izvo"enja petlje to!no
poznato koliko puta treba ponoviti izvo"enje naredbu u tijelu petlje. Broj ponavljanja odre"uje se
varijablom koja se zove "broja! petlje". Broja! petlje ima po!etnu vrijednost, krajnju vrijednost i
korak. Sve tri vrijednosti moraju biti cijeli brojevi, a u ve#ini jezika mogu biti i negativne.
Postupak izvo"enja petlje:
1. Postavi broja! na po!etnu vrijednost
2. Provjeri da li je vrijednost broja!a ve#a od krajnje vrijednosti:
a. Ako jest prekini izvo"enje iza"i iz petlje
b. Ako nije izvedi sve naredbe u tijelu petlje
3. Pove#aj broja! za korak, odnosno za 1 ako korak nije specificiran
4. Ponavljaj korake 2., 3., 4 (vrati se na korak 2.)


Sintaksa for petlje u Visual Basic-u: Primjer for petlje u Visual Basic-u:
For brojac = pv To kv [Step korak]
naredba_1
naredba_2
.......
naredba_n
Next [brojac]

For i = 1 To 10 Step 1
suma1 = suma1 + a(i)
suma2 = suma2 + b(i)
Next i


Slika 18: Dijagram toka primjera petlje kontrolirane broja!em
i = 1, 10, 1
suma1 = suma1 + a(i)
suma2 = suma2 + b(i)
38
Petlja "For Each .... Next"
Varijacija implementacije "For" petlje je "For Each" petlja koja ponavlja sekvencu naredbi za
svaki element iz nekog skupa objekata ili za svaki element polja, dok ne obradi ("pro"e kroz")
cijeli skup odnosno polje. Takva naredba osobito je korisna ako nije poznat broj elemenata skupa
ili polja.
Sintaksa "For Each"petlje u Visual Basic-u:

For Each element In group
naredba_1
naredba_2
.......
naredba_n
Next element

Primjer "For Each" petlje u Visual Basic-u: (Ova petlja ispisuje nazive svih tablica u kolekciji
tablica koje !ine bazu podataka).

For Each MyTableDef In objDb.TableDefs()
List1.AddItem MyTableDef.Name
Next MyTableDef
Petlje kontrolirane logi"kim uvjetima
Ova vrsta petlji upotrebljava se u situacijama kada je broj ponavljanja nepoznat, odnosno ne
moe se to!no unaprijed odrediti. Petlja se kontrolira logi!kim uvjetom, s time da postoje
slijede#e varijacije:
! uvjet se ispituje na po!etku petlje, petlja se izvodi dok je uvjet istinit
! uvjet se ispituje na kraju petlje, petlja se izvodi dok je uvjet istinit
! uvjet se ispituje na po!etku petlje, petlja se izvodi dok je uvjet nije istinit
! uvjet se ispituje na kraju petlje, petlja se izvodi dok je uvjet nije istinit
Logi!ki uvjet koji kontrolira petlju treba formirati tako da sadri bar jednu varijablu !ija #e se
vrijednost promjeniti u toku ponavljanja naredbi u tijelu petlje. Posljedica promjene vrijednosti
te varijable (ili vie njih) treba biti promjena vrijednosti logi!kog uvjeta sa istine na la (ili
obratno, ovisno o varijaciji petlje). Ako se logi!ki uvjet ne formira na opisani na!in, velika je
vjerojatnost da #e se petlja izvravati beskona!ni broj puta, tj. ne#e biti prekida izvo"enja petlje
u tom slu!aju treba naredbom operacijskog sustava prekinuti izvravanje programa.
Petlja sa ispitivanjem logi"kog uvjeta na po"etku
Logi!ki uvjet se provjerava na po!etku petlje, a petlja se izvodi tako dugo dok je logi!ki uvjet
istinit. Ukoliko pri prvom ispitivanju ("ulazak u petlju") uvjet nije ispunjen, naredbe u tijelu
petlje ne#e se izvriti niti jednom. U Visual Basic-u takva petlja zapo!inje rezerviranim rije!ima
Do While a zavrava sa rezerviranom rije!i Loop.

Sintaksa (Visual Basic) Primjer (Visual Basic)
Do While logi!ki uvjet
naredba_1
naredba_2
........
naredba_n
Loop
Do While Math.Abs(x) > tocnost
x = (-1)^(i+1)/(2*i-1)
suma = suma + x
i = i + 1
Loop
39
Ne postoji standardni simbol dijagrama toka za prikaz ove vrste petlje, uobi!ajeno je ispred
ispitivanja uvjeta staviti oznaku !vorita, nakon toga simbol za ispitivanje logi!kog uvjeta, te
ozna!iti povratni skok sa kraja petlje na !vorite iza kojeg slijedi ponovno ispitivanje uvjeta.

Slika 19: Dijagram toka primjera petlje sa ispitivanjem logi!kog uvjeta

Petlja sa ispitivanjem logi"kog uvjeta na kraju
Petlja s ispitivanjem logi!kog uvjeta na kraju prvo izvodi sve naredbe u tijelu petlje, a potom
kontrolira uvjet za izlazak iz petlje, odnosno prekid. Na taj na!in osigurava se bar jedno
izvravanje naredbi u tijelu petlje. U Visual Basic-u takva petlja zapo!inje rezerviranom rije!i
Do a zavrava sa rezerviranim rije!ima Loop While.

Sintaksa (Visual Basic) Primjer (Visual Basic)
Do
naredba_1
naredba_2
........
naredba_n
Loop While logi!ki uvjet
Do
k = k + 1
b(k) = a(k) + 1
Loop While m < k

Petlja sa ispitivanjem logi"kog uvjeta koja se izvodi dok je uvjet neistinit
Varijacija petlje koja se izvodi tako dugo dok je logi!ki uvjet neistinit u Visual Basic-u zapo!inje
rezerviranim rije!ima Do Until i zavrava sa Loop ako se uvje provjerava na po!etku petlje.
Ako se uvjet provjerava na kraju petlje, petlja zaqpo!inje sa rezerviranom rije!i Do, a zavrava
sa rezerviranim rije!ima Loop Until.

Provjera uvjeta na po"etku
petlje
Provjera uvjeta na kraju petlje

Do Until logi!ki uvjet
naredba_1
naredba_2
........
naredba_n
Loop
Do
naredba_1
naredba_2
........
naredba_n
Loop Until logi!ki uvjet
abs(x) > tocnost
DA
NE
x = (-1)^(i+1)/(2*i-1)
suma = suma + x
i = i + 1
40
Naredbe za izlaz iz petlje
Unutar tijela petlje mogu se koristiti i naredbe koje #e prekinuti izvo"enje petlje, tj. izvo"enje
programa #e nastaviti s prvom naredbom iza kraja petlje. U nekim jezicima se za takve situacije
mogu koristiti naredbe bezuvjetnog skoka, a u Visual Basic-u postoji naredba Exit For za
izlaz iz "For" petlje i naredba Exit Do za izlaz iz petlji kontroliranih logi!kim uvjetima. Exit
For i Exit Do smisleno je koristiti unutar naredbe uvjetnog grananja ("If" naredbe) ili
"Select Case" naredbe koje se nalaze unutar tijela pelje.
Ugnje#enje petlji - vie petlji jedna unutar druge
U programiranju se vrlo !esto javlja potreba formiranja struktura u kojima se jedna ili vie petlji
nalazi unutar druge petlje. Takva struktura uobi!ajeno se koristi za "generiranje" svih
kombinacija vrijednosti dvaju ili vie skupova elemenata, odnosno nizova diskretnih vrijednosti.
Npr. za manipuliranje sa matricom (tablicom) koriste se dvije petlje jedna "vrti" redni broj
retka, a druga "vrti" redni broj stupca, da bi se "obradili" svi elementi matrice.
Takva struktura naziva se "ugnje"enje" petlji (eng. nesting). Mogu#e je "ugnijezditi" petlje i na
vie razina (Slika 15). Maksimalni broj razina ugnje"enja razlikuje se u razli!itim programskim
jezicima. Pri kodiranju ugnje"enja treba paziti na slijede#e:
Svaki po!etak petlje mora imati svoj kraj (npr. svaki For mora imati svoj Next)
Svaka unutarnja petlja (nie razine) mora zavriti prije "vanjske" petlje (na vioj razini)
ne smije biti preklapanja "tijela" tih petlji
Nije dozvoljen skok iz "vanjske" petlje u "unutarnju" u tom slu!aju ne dolazi do
inicijalizacije broja!a ili se ne ispituje uvjet kod petlji sa logi!kim uvjetom
izme"u po!etaka i krajeva petlji moe biti vie naredbi ili niti jedna naredba
Uobi!ajena je praksa da se sve naredbe na pojedinoj razini ugnje"enja piu "uvu!eno" za
nekoliko znakova, da bi na taj na!in struktura naredbi bila preglednija. "Ugnijezditi" se mogu sve
prethodno opisane vrste petlji.


For br_1 = pv_1 To kv_1
blok_naredbi_1
For br_2 = pv_2 To kv_2
blok_naredbi_2
For br_3 = pv_3 To kv_3
For br_4 = pv_4 To kv_4
blok_naredbi_3
Next br_4
Next br_3
blok_naredbi_4
Next br_2
Next br_1

Slika 20: Ugnje"enje vie petlji kontroliranih broja!em

Ve" je prije objanjeno da kao i petlje, vie naredbi uvjetnog grananja moe biti jedna unutar
druge, tj mogu biti "ugnje#ene". Na isti na!in jedna ili vie naredbi uvjetnog grananja moe
se smjestiti unutar petlje ili jedna ili vie petlji moe biti unutar naredbe uvjetnog grananja.
41
Vrlo je vano usvojiti i razumjeti ovakve na!ine kombiniranja kontrolnih struktura jer velika
ve"ina algoritama zahtijeva formiranje sloenih "isprepletenih" struktura petlji i viestrukih
ispitivanja uvjeta. Za rjeavanje programerskih zadataka koji uklju!uju i najjednostavnije
algoritme manipuliranja sa nizovima i matricama nuno je detaljno poznavati kontrolne
strukture i naredbe, a posebno je vano znati sva pravila i mogu"nosti kombiniranja odnosno
ugnje#enja kontrolnih struktura. To je jedna od prvih i osnovnih stepenica koje se moraju
savladati pri u!enju programiranja.

You might also like