Professional Documents
Culture Documents
Skripta UUTP
Skripta UUTP
Osnovni pojmovi
Softver je pojam za različite vrste programa koji se koriste za rad računara i sličnih uređaja.
Softver je, po A.K. Koy-u, modeliranje i implementiranje filozofije, metodologije i znanja o
izvršavanju određenog zadatka pomoću računarskog koda.
Dijeli se na:
● Aplikacijski: programi koji izršavaju posao za koji su korisnici zainteresovani
● Sistemski: Operativni sistem ili programi koji su podrška za rad aplikacijskog softvera
Sofver čine:
● Instrukcije: naredbe čije izvršavanje odrađuje željenu funkcionalnost
● Strukture podataka: omogućavaju programima adekvatno manipulisanje informacija
● Dokumenti: opisuju operacije i upotrebu programa
Programski jezik predstavlja formalni jezik u kojem je napisan računalni program. Također
se može reći da je to: organizirana lista naredbi čije izvršavanje uzrokuje da se računar
ponaša na unaprijed definisani način.
Principi dizajna:
● Sintaksa: opisuje šta čini strukturno ispravan program tj. šta je gramatika jezika, koji
je osnovni skup riječi i simbola dozvoljeno koristiti.
● Imenovanje i tipovi :Programski jezik sadrži potpuno izgrađen skup pravila za
imenovanje varijabli, funkcija, klasa, parametara i sl., kao i njihovu “vidljivost”
unutar programa. Tipovi podataka omogućavaju programerima bolje razumijevanje i
upotrebu operatora, kao i kvalitetniju kontrolu kompajlera.
● Semantika: Značenje programa, tj. programskih izraza definirano je semantikom
programskog jezika.
Izvorni kod je bilo koji niz izraza napisan u nekom, od strane čovjeka čitljivom programskom
jeziku. Izvorni kod je obično jedna ili više tekstualnih datoteka. Promjene programa mogu se
raditi ISKLJUČIVO na izvornom programu.
Prve tri faze (leksička, sintaksna i semantička) imaju za cilj pronaći značenje izvornog
programa i još se nazivaju i sučelje (engl. front end) kompajlera. Posljednje faze
(optimiziranje koda, generiranje koda i specifično optimiziranje) - koriste se za konstrukciju
odgovarajućeg programa i nazivaju se pozadinske faze (engl. back end) kompajlera.
Sintaksna analiza podrazumjeva organizovanje tokena u posebna stabla - viši nivo jezičke
konstrukcije (rečenice, izraze, podprograme i sl.). Svaka konstrukcija je čvor u stablu i čine
ga njegova „djeca“. Korijen stabla je „program“, dok su listovi, počevši s lijeva udesno
tokeni preuzeti iz faze leksičke analize. Stablo pokazuje kako se tokeni međusobno uvezuju
da bi se dobio ispravan program.
U procesu leksičke i sintakske analize, kompajler provjerava jesu li svi programski tokeni
dobro formirani, te zadovoljava li niz tokena sintaksu definiranu pomoću „context-free“
gramatike. Svaki neispravni token trebao bi uzrokovati da skener prikaže poruku o
greški. Svaki sintaksno neispravni niz tokena trebao bi dovesti do toga da parser prikaže
pogrešku.
Context-free gramatika definiše sintaksu jezika. Odnosi se na pravilo da rečenice, tj. skupovi
naredbi, mogu biti ugnježdeni unutar drugih rečenica proizvoljno duboko, ali nije dozvoljeno
njihovo preklapanje.
Sematička analiza ima za cilj otkriti značenje programa. Ova faza kompilacije prepoznaje
kada se višestruke pojave istog identifikatora odnose na isti programski entitet, i osigurava da
je upotreba konzistentna. U većini programskih jezika, u fazi semantičke analize se prati tip
identifikatora i izraza kako bi se potvrdila konzistenost uporabe i kako bi se omogućilo
izvođenje generisanja koda u narednoj fazi.
Kompajleri obično kao izlazni rezultat daju objektni kod koji se pomoću linkera
transformira u izvršni.
Linker je program koji uzima jedan ili više objektnih programa generiranih od strane
kompajlera i spaja ih u jedan izvršni program.
Rezultat kompilacije kod programskih jezika koji koriste linkere je objektni kod koji se onda
pomoću linkera transformira u izvršni. Dva su osnovna tipa linkera:
● Statički: odradi svoj dio posla, odnosno formira izvršnu programsku datoteku, prije
izvođenja programa na računaru.
● Dinamički: odradi svoj posao nakon što se program koji se izvršava učita u memoriju.
Linkeri mogu uzimati objekte i iz tzv. gotovih kolekcija objekata – programskih biblioteka.
Prednost postojanja takve kolekcije objekata je ponovno korištenje koda napisanog od strane
drugih programera, s tim da program ne uključuje cijelu biblioteku već samo one objekte iz
biblioteke koji su mu potrebni.
Linker vodi brigu o smještanju objekata u adresnom prostoru programa, što može imati za
posljedicu premještanje koda koji preferira specifičnu adresu u odnosu na neku drugu. Kako
kompajler uglavnom ne zna gdje će objekt biti smješten, on obično pretpostavlja fiksnu
lokaciju. Izvršna verzija koju formira linker često traži dodatno adresno premještanje
kada se konačno učita u memoriju
Izvršni kod ili izvršna datoteka je datoteka čiji sadržaj računar razumije i interpretira
kao program. Obično sadrži binarno predstavljen skup strojnih instrukcija za specifični
procesor Većina operativnih sistema koristi specifičan princip imenovanja ovakvih datoteka.
Interpreter je u biti program koji izvršava korake međukoda dok se izvršava na realnom
računaru, odnosno to je program koji zamjenjuje dvije posljednje faze kompajliranja na način
da izravno izvršava međukod.
Postoje dva opća tipa interpretera:
•Čisti
•Miješani.
Čisti interpreter svaki izraz tokenizira, raščlanjuje, semantički provjerava i interpretira pri
svkom izvršavanju.
Miješani interpreter prvo prevodi čitav program u međukod, ali samo jedanput po
izvršavanju, a onda dalje ponavlja interpretiranje međukoda bez daljnjeg prevođenja.
Programske paradigme:
● imperativno programiranje
● objektno-orjentisano programiranje
● funkcionalno programiranje
● logičko programiranje
Imperativno programiranje:
Osnovne osobine:
● Kontrolne strukture
● Ulaz/Izlaz
● Greške i upravljanje izuzecima
● Proceduralna apstrakcija
● Izrazi i pridruživanje
● Biblioteke i potpora za podatkovne strukture
Prednosti:
Osnovne osobine:
● Modul je logički neovisna i zaokružena cjelina
● Moduli se mogu programirati i testirati neovisno
● Mogu se formirati moduli zajednički za sve
● Ispravak, testiranje i dokumentiranje je jednostavnije i brže
● Modul sadrži jednu neovisnu programsku funkciju
● Veze između modula trebaju biti jednostavne i vidljive
● Obrada podataka se programira neovisno o fizičkom memoriranju istih
● Modul u pravilu treba imati jednu ulaznu i jednu izlaznu točku
● Nakon izvršavanja modul treba vraćati kontrolu na mjesto pozivanja
Struktuirano programiranje:
Osnovni koncepti:
● Objekat
● Klasa
● Nasljeđivanje
● Enkapsulacija
● Polimorfizam
Objekat može biti bilo što sposobno za omogućavanje ograničenog skupa korisnih servisa
(usluga). Svaki objekat ima stanje, ponašanje i identitet.
Svaki objekat ima pristup bilo kojem znanju potrebnom za izvršavanje njegovih usluga, što
ne znači da objekt sadrži tu informaciju (znanje), već da joj može prići pitajući neki
drugi objekt.
Uz objekt se vežu sljedeći pojmovi:
- odgovornost
- poruke
- protokol
Poruka je formalna komunikacija poslana od strane jednog objekta drugom a koja zahtjeva
neki servis (uslugu).
Pojam protokol se koristi za onaj dio sučelja koji prikazuje poruke na koje je objekt spreman
odgovoriti.
Skup poruka na koje objekat odgovara i mijenjanje stanja objekta koje se bilježi – naziva se
sučelje (engl. interface).
Klasa je apstrakcija (generički opis) za skup objekata s istim atributima i
operacijama, odnosno to je predložak (engl. template) za kreiranje objekata.
Zbog toga se kaže da je objekat instanca (pojavni – konkretni oblik) klase.
Enkapsulacija osigurava da kod izvan klase (tj. Druga klasa) vidi samo funkcionalne, ali ne i
implementacijske detalje klase. “skriva” ponašanje objekta od njegove implementacije,
odnosno odvaja kako objekt izgleda od toga kako implementira svoje ponašanje. jamči da
nitko osim objekta ne može znati kako “iznutra” taj objekt izgleda, tj. na koji način izvršava
svoj zadatak. Rezultat enkapsulacije je da svaki objekt prema „vanjskom svijetu“, tj ostalim
klasama pokazuje svoje sučelje tj. Skup poruka (metoda) na koje odgovara.
Polimorfizam potječe od grčkih riječi poly – mnogo i morph-oblik, što znači mnogo oblika.
U objektno orijentiranom programiranju to znači da jedna poruka može uzrokovati različite
oblike odgovora. Polimorfizam je ponašanje koje se mijenja ovisno od toga koja klasa ga
uzrokuje, što znači da dvije ili više klasa mogu reagirati potpuno različito na istu poruku,
odnosno da je primatelj poruke odgovoran za njenu interpretaciju.
Funkcionalno programiranje:
Nastaje 60-tih godina prošlog stoljeća. Rezultat potrebe istraživača umjetne inteligencije,
simboličke računalne obrade, dokazivanja teorema, sustavi bazirani na pravilima, obrada
prirodnog jezika ...
LISP – prvi funkcionalni programski jezik
Osnovne karakteristike:
– Računarska obrada se promatra kao matematička funkcija koja preslikava ulaze u izlaze
nema navođenja stanja, te ni potrebe za pridruživanjem,
– Efekt petlje se postiže rekurzijom
Logičko programiranje:
Historija programskih jezika je vezana za tekstilnu industriju. Francuz Joseph Marie Charles
Jacquard, gledajući kako krojači svaki put iznova podešavaju mašinu , 1801. Dizajnira
mašinu koja čita instrukcije s bušenih kartica.
Iako je bilo riječ o jednostavnom programiranju, mogle su se primijetiti dvije bitne ideje:
- raščlanjivanje kompleksnih zadaća na niz nedvosmislenih i konačnih koraka koje stroj može
izvesti
- mašina na temelju programa može izvršavati ponavljajuće zadatke
● mašinsi
● asembler
● proceduralni
● problemski orijentiran
● Prirodni
IZGRADNJA ALGORITMA
Zajedničko za izgradnju svakog algoritma jeste izgrada općeg plana i općeg niza koraka za
rješavanje algoritamskog problema. Za izradu programa, potrebno je precizno, jasno i
nedvosmisleno definiranje svakog koraka. Algoritam nije upotrebljiv ako nije u postpunosti
ispravan, tj u svim svojim dijelovima i u svim okolnostima.
Najčešći pristup razvoju algoritma je odozgo prema dolje, tj profinjenje u koracima.Prema
ovom pristupu, algoritamski problem se dijeli u određen broj podproblema, podprocesa koji
opisuju dijelove problema, tako da se algoritam izvršava dio po dio.
Opći plan razvoja algoritma:
1. Definirati korake algoritma
2. Ispitati svaki korak algoritma
3. Ispitati granične uvjete
Svaki algoritam bi trebao imati sljedeće sekcije (dijelove):
Zaglavlje:Naziv algoritma (naslov)
Opis algoritma: Kratak opis algoritma
Deklaracija: Kratak opis varijabli
Tijelo:Niz koraka
Kraj algoritma: Naredba kraj
TIPOVI PODATAKA
POHRANJIVANJE PODATAKA U RAČUNARSKOJ MEMORIJI
Osnovna arhietktura današnjih računara bazirana je na von Neumannovom modelu računara u
kome su programske instrukcije i podaci zajedno pohranjeni u memoriji. Razlikujemo
memorijske razine:
Primarna
Sekundarna
Tercijarna
Neaktivna ili odvojena
Sekundarna memorija- vanjska memorija, CPU joj ne može izravno pristupiti, trajna
memorija, koriste se ulazno/izlazni kanali putem kojih se prebacuju traženi podaci. Primjer
ove memorije je hard disk.
Tercijarna memorija- robotizirani mehanizmi koji postavljaju i skidaju izmjenjive masovne
medije za pohranu podataka s odgovarajućih uređaja. Ovi podaci se često kopiraju na
sekundarnu memoriju prije upotrebe. Ona se koristi za automatiziranje ogromnih arhiva
podataka, a rijetko za pristup podacima. Tipični primjeri su upotrebe biblioteke traka i optički
diskovni automati.
Neaktivna memorija poznata i kao odvojena. Podrazumijeva pohranu podataka na medije ili
uređaje koji nisu pod kontrolom CPU-a. Čovjek sam mora da poveže ovu vrstu memorije sa
računarom. Danas se dosta sekundarne i tercijarne memorije koristi u obliku odvojene
memorije.
Općenito, glavna memorija se može shvatiti kao skup elektroničkih prekidača-tranzistora.
Može da ima dva stanja: uključeno(1) i isključeno(0).Logičkim kombinovanjem prekidača, tj
nula i jedinica, možemo da predstavimo podatke u računaru. Glavna memorija se može
zamisliti kao naizgled beskonačni niz odijeljenih blokova organiziranih u grupe od po
osam(1Byte=8bit).Svaki blok može da primi samo 0 ili 1, a svaka grupa od po 8 blokova ima
jedinstveni broj koji se naziva memorijska adresa. CPU pristupa podacima u memoriji
zahvaljujući memorijskoj adresi(zna adresu i njenu veličinu). Rezervisanje memorije za nove
podatke vrši se zahvaljujući poznavanju tipa podataka i varijabli.
VARIJABLA
Varijabla je pridruživanje imena memorijskoj adresi, tj vrijednost pridružujemo varijabli.
Svaka varijabla ima svoj tip, vrijednost i trajanje. Varijabla se kroz program može ažurirati to
jeste njena se vrijednost može mijenjati.
Tip varijable je imenovani skup(npr cjelobrojni) svih vrijednosti koje varijabla može
poprimiti i za koji su dopuštene odgovarajuće operacije.
DEFINIRANJE TIPOVA PODATAKA
Tip podataka označava potrebnu količinu memorije za pohranu podatka, kao i vrstu podatka
koji će biti pohranjen. Tip podataka se definira i kao skup vrijednosti i operatora koji se mogu
izvršavati nad tim vrijednostima. Tipovi podataka imaju za cilj dati određeno semantičko
značenje skupu bitova.
Osnovne funkcije koje tipovi podataka omogućavaju su:
Dokumentacija- kod ekspresivnijih sistema tipova podataka, tip podataka može služiti
kao oblik dokumentacije, jer može ilustrirati namjeru programera.
Byte- 8 bita
Polu-riječ 16 bita
Riječ 32 bita
Druga varijanta jeste Poljska postfix notacija u kojoj operator uvijek dolazi iza svojih
operanada.
Izraz za ovu notaciju se može zapisati kao:
ab + cd *-
Algoritam za ovaj oblik kretanja bi bio:
1. posjetiti lijevo poddrvo
2. posjetiti desno poddrvo
3. generirati vrijednost čvora
Jedno od ograničenja Poljske notacije je da se isti simbol ne može koristiti za operacije sa
različitim brojem argumenat.
Druga, Cambridge notacija ovaj problem izbjegava tako što u toj notaciji operatori uvijek
dolazi ispred operanada, a čitavi izrazi se zatvaraju u zagrade.
(-(+ab)(*cd))
Prednost Cambridge prefiks notacija je da operatori kao što su - i + postaju prirodno n-narni.
Operator uvećanja povećava vrijednost za jedan dok operator umanjenja umanjuje vrijednost
za jedan.
operatori uvećanja i umanjenja su posebni po tome što se mogu pojaviti u dvije notacije:
postfiks, kada slijede iza podatka
prefiks, kada prethode podatku
Naime, ako ovi operateri koriste prefiks notaciju, to znači da se vrijednost varijable i
povećava, odnosno smanjuje, prije nego se upotrijebi u izrazu. Dok ako koristi postfix
notaciju, znači da se vrijednost varijable ponovo koristi u izrazu, a zatim se povećava
odnosno smanjuje.
Operatori poređenja utvrđuju odnos, porede jednu vrijednost sa drugom. Tipični operatori
usporedbe su veće, manje, jednako, različite i sl. Rezultat operatora usporedbe je uvijek
logička vrijednost to jest boolean tip podatka. Ovi operatori se najčešće koriste u izrazima sa
naredbom if i u različitim kontrolnim strukturama.
Logički operatori se mogu koristiti samo s podacima boolean tipa, a konačni rezultat je
također tipa boolean.
Većina programskih jezika koriste dva specifična logička operatora konjukcije i disjunkcije,
pod zajedničkim nazivom kratkospojni operatori .
Naime, prilikom utvrđivanja istinitosti logičkih izraza, radi se tzv. kratkospojna evaluacija
što podrazumijeva da se nikad ne izračunava dio izraza koji ne utječe na rezultat.
Java također koristi i specifični trojni ili tenarni operator ? : koji koristi infiks notaciju za
višestruke operatore. Osnovna osobina ovog tipa operatora je da može zamijeniti određene
vrste uvjetnih izraza. Opći prikaz Java tenarnog operatora je:
izraz1 ? izraz2 : izraz3
Ako izraz1 ima vrijednost TRUE onda se izračunava izraz2 ,u suprotnom ako je vrijednost
za izraz1 FALSE, izračunava se izraz3.
Konačni rezultat operatora ?: jeste rezultat onog izraza koji se izračunava (iraza2 ili
izraza3). Bitno je napomenuti da rezultat računanja izraza izraz2 i izraz3 mora biti vrijednost
istog tipa podataka, kao i da mora označavati memorijsku lokaciju određenog tipa upisivao u
vrijeme izvođenja.
Upotreba više različitih operatora u jednome izrazu, bez korištenja zagrada, može dovesti do
neodređenosti izraza. Zbog toga, u svim programskim jezicima, ako se koristi infix notacija,
izbor između alternativnih evaluiranih redoslijeda ovisi o dva pravila: prioritetu izvršavanja i
asocijativnosti operatora. U slučaju da se koristi prefiks ili postfix notacija, ova pravila nisu
bitna za konačni rezultat.
Pravilo asocijativnosti određuje da li se niz operatora istog prioriteta grupira ulijevo ili
udesno. osnovni aritmetički operatori gotovo uvijek imaju asocijativnost slijeva u desno,
međutim, uvijek se preporučuje upotreba zagrada.
2.PRIDRUŽIVANJE
Koncept pridruživanja je temeljni koncept imperativne paradigme, iako ga implementiraju i
gotovo svi objektno orijentirani programski jezici.
Pridruživanje vrijednosti varijabli općenito se prikazuje kao:
varijabla = vrijednost
gdje na lijevoj strani može biti jednostavna varijabla ili element polja, odnosno bilo koja l-
vrijednost. S desne strane operatora pridruživanja nalazi se bilo koji izraz odgovarajućeg tipa.
Taj izraz se, suprotno od l-vrijednosti naziva r-vrijednost. Svaka l-vrijednost može imati
ulogu r-vrijednosti, ali obrnuto ne vrijedi.
Pridruživanje se obavlja s desna na lijevo.
U modelu pridruživanja po referenci, svaka varijabla je l-vrijednost. Kada se pojavi u
kontekstu koji očekuje r-vrijednost, mora biti diferencirana da bi dobila vrijednost koju
pokazuje (referencira).
Pošto pomoću pridruživanja omogućavaju dodjelu vrijednosti varijabli, imperativni
programski jezici ne osiguravaju uvijek način za specificiranje inicijalne, odnosno početne
vrijednosti varijabli prilikom njene deklaracije.
Nehotična upotreba neinicijaliziranih varijabli je jedna od najčešćih programskih grešaka, a
najlakši način da se to izbjegne jeste dodijeliti vrijednost svakoj varijabli pri prvom
pojavljivanju, odnosno deklariranju.
U slučaju da varijabli nije dodijeljena inicijalna vrijednost pri njenom deklariranju, većina
programskih jezika ih specificira(engl. default value).
Za lokalne varijable notacija definitivnog pridruživanja onemogućava upotrebu
neincijaliziranih varijabli. To bi značilo da svaki mogući put do izraza mora dodijeliti
vrijednost svakoj varijabli i tom izrazu. ovo je izrazito konzervativno pravilo i može ponekad
proglasiti pogrešnim neke programe, iako oni nikada ne bi stvarno koristili neinicijalizirane
varijable. inicijalizacija se interpretira kao poziv funkciji konstruktora.
3. STANJE PROGRAMA
Stanje programa je povezivanje svih aktivnih objekata sa njihovim trenutnim vrijednostima.
Za stanje programa su značajna dva mapiranja:
uparivanje aktivnih objekata sa specifičnim memorijskim lokacijama
uparivanje aktivnih memorijskih lokacija sa njihovim trenutnim vrijednostima
Stanje programa se posmatra kao mapiranje, od deklariranje varijabli do njihovih trenutno
dodijeljenih vrijednosti u nekoj tački tokom izvršavanja programa. Stanje programa je uvijek
povezano sa određenom programskom instrukcije i za svaku programsku varijablu prikazuje
njenu trenutnu vrijednost.
Svako pridruživanje mijenja stanje programa, a kako test while petlje nema popratnih
efekata on ne može promijeniti stanje programa.
Selekcija
Selekcija ili grananje osigurava promjenom toka izvođenja programa na osnovu ispunjenja
zadanog uvjeta, izračunavanja nekog izraza ili stanja određene varijable.
U većini programskih jezika postoje dva oblika naredbi koji implementiraju selekciju a to su:
1. if
2. case/switch
Programski jezik Java podržava oba oblika kroz naredbe if i switch i te naredbe omogućavaju
upravljanje tokom programa na osnovu uvjeta koji su poznati samo u trenutku izvršavanja
programa.
1. Naredba IF
Naredba if je naredba za uvjetno grananje ili selekciju. Uvjetna naredba se koristi za odabir
alternativnih puteva tokom izvršavanja programa. opći oblik naredbe if može se prikazati na
sljedeći način:
IfNaredba-> if (izraz) naredba1 [esle naredba2]
ELSE nije obavezni dio if naredbe, što znači da se if naredba može napisati i bez korištenja
pojma else. Može se reći da naredba if radi po slijedećem principu:
if (ako)je uvjet TRUE (istinit) izvršava se naredba1, else(inače, ako je uvjet
FALSE) izvršava se naredba2
Unutar jedne naredbe if može se nalaziti jedna ili više drugih if naredbi. U tom slučaju se
govori o ugniježdenim if naredbama a opći prikaz za veći broj ugniježdenih if naredbi je:
IfNaredba-> if Izraz then Naredbe
{else if Izraz then Naredbe}
[else Naredba]
end if
Kod niza ugniježđeni if naredbi one se izvršavaju odozgo prema dolje. Ako je uvijet neke od
if naredbi ispunjen, tj. istinit, izvršava se naredba vezana za taj uvjet a ostale if naredbe u nizu
se preskaču i izvršava se prva sljedeća naredba koja dolazi iza niza if naredbi. Ako pak ni
jedan od uvjeta nije ispunjen, to jest svi su neistiniti, izvršava se naredba koja se nalazi iza
posljednjeg else. Za taj posljednji else se može reći da predstavlja podrazumijevanu akciju, a
ako nema ti tog krajnjeg else, program nastavlja sa prvom sljedećem naredbom što znači da
niz if nije uzrokovao nikakvu promjenu.
2. Naredba SWITCH
Naredba switch osigurava alternativnu sintaksu za specijalni slučaj ugniježdenih if naredbi.
Ona omogućava grananje programa na način da se na osnovu vrijednosti određenog izraza
kontrola programskog toka usmjerava na određeni dio programskih naredbi.
Ugniježdene if naredbe se mogu zapisati pomoću switch naredbe (pogledati stranu 135).
Vrijednost izraza se upoređuje sa svakim literalom iz naredbi case . Ako se pronađe literal
identične vrijednosti, izvršava se niz naredbi koje slijede iza te naredbe case, a ako se ne
pronađe niti jedan literal čija bi vrijednost odgovarala vrijednosti izraza, izvršava se niz
naredbi za default. Međutim default nije obavezan za switch naredbu što znači da ako nema
defaulta, nijedna vrijednost literala se ne poklapa sa vrijednošću izraza i programski tok se
nastavlja s prvom sljedećom naredbom iza naredbe switch.
Naredbe switch također mogu biti ugniježdene jedna unutar druge. Za razliku od naredbe if
koja može provjeriti svaki logički izraz, switch naredba samo provjerava postojanje
jednakosti između vrijednosti izraza i jednog od case literala.
Naredba switch je obično mnogo efikasnija od niza ugniježdenih if naredbi. Naime, kada
prevodi naredbu switch kompilator može pregledati svaki literal u naredbama case i sastaviti
takozvanu “tablicu skokova” koju će koristiti za biranje puta izvršavanja programa zavisno o
vrijednosti izraza. Međutim, kada je riječ o nizu ugniježdenih if naredbi kompilator ne
raspolaže nikakvim sličnim predznanjima.
ITERACIJA
Iteracija ili petlja se koristi u imperativnoj paradigmi dok je rekurzija bliža funkcionalnoj i
objektnoj paradigmi. Ovisno o mehanizmu koji se koristi za određivanje broja ponavljanja tj.
iteracija, razlikuju se dva osnovna tipa iteracija:
1. logički kontrolirana
2. brojčano kontrolirana
Kod logički kontrolirane iteracije broj iteracija nije unaprijed poznat, a isti skup naredbi se
izvršava onoliko puta koliko je potrebno da se ispuni zadani uvjet. Ispitivanje ispunjenosti
uvjeta može se raditi na početku ili na kraju iteracije pa se shodno tome i razlikuju:
Pre-test iteracije
Post-test iteracije
To je iteracija koja se izvršava jedanput za svaku vrijednost u datom konačnom skupu i kod
koje je broj iteracija poznat prije početka prve iteracije. Ovaj oblik iteracije se prvi put
pojavio u programskom jeziku Fortran I a implementiran je pomoću naredbe do loop.
Danas većina programskih jezika brojčano kontroliranu iteraciju implementira pomoću
naredbe for. Opći oblik naredbe je: FOR i :=prva TO konačna, korak... END
Varijabla i se naziva indeks petlje ili brojač i njena se vrijednost mijenja nakon svake iteracije
odnosno ciklusa. Kada varijabla i dostigne konačnu vrijednost, završava se izvođenje skupa
naredbi unutar for petlje i prelazi se na prvu sljedeću naredbu.
Na samom početku izvršavanje naredbi for postavlja se vrijednost za brojač ciklusa petlje.
Nakon toga, ispituje se vrijednost uvjeta koji mora biti logički izraz. Uvjet obično poredi broj
sa zadanom ciljnom vrijednošću. Dakle, ako je uvjet istinit izvršavaju se naredbe koje čine
iteracija a u sklopu izvršavanja iteracije brojač se mijenja. Ciklus provjera uvjeta, izvršavanje
tijela petlje i ažuriranje brojača ponavlja se sve dok uvjet ne postane neistinit.
4.UPRAVLJANJE ULAZOM/IZLAZOM
programski jezici imaju razvijene tehnike za prikupljanje podataka s trajnih izvora i za
pohranjivanje podataka na ta trajna odredišta. Zajednički naziv za te tehnike je ulaz/izlaz.
Izvori i odredišta za U/I operacije nazivaju se datoteke. Većina savremenih programskih
jezika uključuje U/I operacije u svoje standardne programske biblioteke.