You are on page 1of 14

www.modernscience.

com

1. Pristupiuprogramiranju

1.1 Terminologija

Kroz ostatak rada spominjat e se niz rijei i termina ije znaenje treba odmah na poetku
definirati i usvojiti. Podruje zanimanja ovog rada dosta je veliko, stoga valja istaknuti da je
autor bio u nemogunosti svaki detalj pojedino razraditi i oslanja se na injenici da itatelj
posjeduje odreeni nivo predznanja. Termini koriteni u redcima ovog rada kreu od samog
sistema kompjutera, multimedije, Interneta pa sve do psiholokog prikaza korisnika odnosno
klijenta.
Sljedealistatrebalabipokritiveibrojterminakoritenihuredcimakojiteknadolaze.
Algoritam(engl.Algorithm)Algoritamjelogikiproces,pomoukojegsedolazidorjeenja
odreenog problema ili donoenja neke odluke tj. algoritam je ureeni skup jednoznanih
(nedvosmislenih),izvedivihkoraka.Iakoalgoritammoebitipredstavljenunekomkonkretnom
programskomjeziku,onjezapravoapstraktnakategorija.Usvijetuprogramiranjapostojiveliki
broj poznatih algoritama koje svaki obrazovani programer dnevno primjenjuje pri rjeavanju
svakodnevnihprogramskihproblema.Jedanpoznatijialgoritamjetzv.BubbleSortalgoritam
algoritam koji je u svakodnevnoj primjeni za sortiranje podataka (po rastuem ili padajuem
redoslijedu) npr. sortiranje lista po broju bodova. Pojam algoritma predstavlja temelj za
razumijevanjeraunarstvaopenito.
Pseudo jezik ili pseudo kod Zamijeni li se formalna, stroga struktura programskog jezika,
manjeformalnimsustavomoznaavanja,dobivasesustavzapredstavljanjealgoritmapoznatpod
nazivompseudokododn.pseudojezikpomoukojegidejemoemoizraziti(zapisati)nalakii
manjeformalannaintijekompostupkarazvijanja(smiljanja)samogalgoritma.Jedanodnaina
predstavljanja algoritma pseudo kodom je izostavljanje pravila iz naredbi koja prate svaki
formalni programski jezik. Navedeni nain se koristi za prikaz nekih kompliciranih (a i
jednostavnih) algoritama u opem obliku, a prilikom njihove primjene pseudo kod zamijene
naredbeprogramskogjezikazakojiseprogramerodluio.
Klijent(engl. Client) Uterminologiji kompjuterskih igara i aplikacija, rije klijent oznaava
osobu koja uestvuje u igri, chattanju ili se spaja na server u nekom treem smislu, odnosno
kompjuterkojijeuporabljenutusvrhu.
Konzola (engl. Console) Kompjuter koji je dizajniran iskljuivo radi igranja igra, svakih
godinabrojigraihkonzolarasteizdanaudan.NekiodkonzolasuNintendo,Microsoft,Sonyi
dr. Konzola ne mora biti samo igraa stanica, ve moe i biti terminal, prozor u koji se unosi
programski kod, najee sistemski. Konzola takoer moe biti sredite za obradu informacija
neke kompleksnije aplikacije, na nain da korisnik radi u suelju a unesene vrijednosti i
nainjenepromijeneseobraujuukonzoli.
Izvorni kd (engl. Source code) Izvorni kod je kod koji je programer napisao u nekom
programute jeodnjega istoimenaaplikacija sastavljena.Izvornikodsekompilirateaplikacija
objavljujeipokreenakorisnikuuoblikuizvrne.exedatoteke.

VarijablaNjensmisaojepodostaopenitusvimpoljimauporabe.Uprogramiranjuvarijabla
predstavljavrijednostkojasetokomizvravanjaprogramamoemijenjati.

www.modernscience.com 1
1.2 Openitooprogramiranju

Raunalojestrojkoji,uskladusauputamadefiniranimuprogramu,izvodi4osnovneoperacije:

a.) Unospodataka.
b.) Obradupodataka.
c.) Prikazrezultata.
d.) Pohranjivanjepodataka.

Program je skup instrukcija sloenih odreenim redoslijedom u skladu sa kojima raunalo


izvodiprethodnonavedeneoperacijesaciljemizvoenjaodreenogzadatka,odnosno,program
sesastojiodskupanaredbikojesekoristezarjeenjeproblema.
Programskijezicisluezapisanjeprogramskogkodaimogubiti:

a.) Strojni.
b.) Simboliki.

Programskijezici,takoersedijeleiporazinama.Slijedeapodjelasesmatranajosnovanijom:

a.) Visokijezikujezikjeugraenosvetoprogramereli,raunaloseupotpunosti
prilagoavaprogrameru(npr.Pascal.).
b.) Srednjijezikdajeskupalata,kojiomoguujuprogramerurazvojvisokihkonstrukcijate
pruaprogramerusnaguuizradiprogramausprezisfleksibilnosti(npr.C.).
c.) Niskijezikdajesamopristupstrojniminstrukcijama,ovjekprogramerseprilagoava
karakteristikamastroja(npr.Asembler.).

Radprogramskogprevodiocajeopisansljedeomshemom:

Dakle,izvorniprogramprolazikrozkompajler(ulaz),ukolikoseprogramsamotestiraidena
izlazipokreeprogramzatestnuuporabu.Akoseprogramkompilirazakoritenjetadaprolazi
krozkompajler,zatimsemoduli(akoihima)povezujuprekolinkera.Ukolikopostojipogrekau
programuilinekavrstanedozvoljeneoperacijeprogramseprikompiliranjuzaustavljatese
javljaporukaopogreci.

www.modernscience.com 2
Fazeprogramiranja:

a.) Analizaproblema.
b.) Metodarjeavanjaproblema.
c.) Algoritam(blokdijagramtj.rjeenjetokaprograma''napapiru''.).
d.) Kodiranje(pisanjeprograma.).
e.) Testiranjeprograma.
f.) Pisanjedokumentacijeprograma.

www.modernscience.com 3
1.3 Tehnikeiprincipiprogramiranja

1.3.1 Strukturnoprogramiranje

1.3.1.1 Preglediciljstrukturnogprogramiranja

Strukturnoprogramiranjejespecifiannainpisanjaprogramatj.metodaprogramiranjakojaza
stvaranjeelementarnealgoritamskestrukturekoristi3elementastrukture:

a.) Linijskaprostastruktura
b.) Linijskarazgranatastruktura
c.) Ciklikastruktura

Navedenealgoritamskestruktureimajuosobinudaimajusamojedanulaziizlaz.
Ciljstrukturnogprogramiranjaje:

a.) Podiiprogramiranjenaviinivo
b.) Izbacitinaredbugotoizprogramiranja.
c.) Eliminiratineitljivostinepotrebnusloenost.

Naredbu goto u principu nastoji izbjei veliki dio programera sa tvrdnjom da se naredbama
(petljam) poput doloop, for, ifelse i sl. moe postii isti uinak, meutim, u praksi nekada
koritenje zamjena, alternativnih naredbi za postizanjem istog cilja dodatno komplicira kod.
Spomenuti pokuavaju smanjiti uporabu naredbe goto jer njena viestruka primjena dovodi
nepreglednostipisanogkoda,oteavanjegovuanalizu,odravanjeatimeipronalaskagreke.

1.3.1.2 Elementarneisloenealgoritamskestrukture

Linijskaprostastrukturasvakikoraklinijskeprostestruktureizvritesetonojedanput.

Linijska razgranata struktura njezina karakteristika nalae, da obavezno postoji jo jedan


algoritamski korak koji ispituje neki uvjet. Ovisnoo uvjetu izvrit e se odreeni algoritamski
korakitosamojednom,anekimnitijednomtj.neebitipokrenuti.

www.modernscience.com 4
Ciklikastrukturaodlikujetokomgdjesejedaniliviealgoritamskihkorakamoeizvriti
jedanilivieputa,amoesedogoditidaseneizvrinitijedanput!

a.) Konstantneciklikestrukturebrojponavljanjajeunaprijedpoznatiodreen.

b.)Promjenjiveciklikestrukture brojponavljanja nijeunaprijedpoznat iodreen ve


ovisiouvjetukojiseispituje.

Ako se kombiniraju dvije ili vie elementarne algoritamske strukture dobiva se sloena
algoritamskastruktura program.

www.modernscience.com 5
1.3.2 Organizacijaobradepodatakauciklikimalgoritamskimstrukturama

Svakikompjuterizvrava3osnovnefunkcije.

a.) Ulaznufunkciju
b.) Funkcijuobrade
c.) Izlaznufunkciju

Navedene funkcije se realiziraju u pojedinim dijelovima programa koji ine posebno


organizirane cjeline. Prilikom izrade blok dijagrama treba paziti na organizaciju programa,
odnosno o smjetaju navedene 3 osnovne funkcije u programu. S obzirom na ove funkcije
moguisusljedeisluajeviorganizacijeprograma.

a.) Svefazesuizoliraneposebnoseizvravajuulazpodataka,obradateizlaz.

b.) Prve dvije faze se preklapaju ulazna faza zajedno sa fazom obrade ine posebnu
organizacijskucjelinuodizlaznefaze.

c.) Druge dvije faze se preklapaju faza ulaza je zasebna organizacijska cjelina, a faza
obradeiizlazasemeusobnoisprepleu.

www.modernscience.com 6
d.) Svefazesepoklapaju

www.modernscience.com 7
1.3.3 Modularnoprogramiranje

Modularnoprogramiranjesenajeeprimjenjujekakosejedanvelikiikompleksniprogram
podijelio u vie potprograma tj. modula, koji ine posebne organizacijske cjeline, a to je vrlo
bitno jer se mogu zasebno pisati, testirati i izvravati. Svaki modul ima odreenu funkciju i
naziv.Prilikomkreiranjamodulatrebapazitidabuduitkiinepreveliki.
Prednostimodularnogprogramiranjasu:

a.) Preglednostprograma.
b.) Omoguuje krai zapis programa (smanjuje ukupan broj naredbi program, ako je u
nekommoduludefiniranaodreenaakcijakojasevieputaizvrava.).
c.) Omoguujeefikasnijekoritenjememorijskogprostora.
d.) Modulsemoepozivatiiizvravatineogranienibrojputa.
e.) Pisanjeitestiranjeprogramajeolakanojerjesvakimodulrelativnonezavisanoostalim
modulima.
f.) Modulisemogutestiratiposebno.
g.) Olakanojeodravanjeprogramajersepromjenevrenanivoupojedinihmodula.
h.) Modulisemoguukljuivatiiiskljuivatipopotrebiikoriteniodviekorisnika.

Modulimogubiti:

a.) Interni(nalazeseunutarkompiliranogprograma,najeeuoblikupotprograma.).
b.) Eksterni(nalazesuizvanprograma,najeenekevanjskedatoteke.).

Modul se moe pozivati na izvravanje iz programa ili iz nekog drugog modula. Modul se
poziva na izvravanje preko njegova imena. Povezuju se s programom ili nekim drugim
modulom pomou ulaznoizlaznih parametara koji se navode iza imena modula. Preko tih
parametarasevrirazmjena.
Nasljedeojslicijeprikazangrafikiprikazkomunikacijeizmeumodula:

Pomouparametaraxiysevriizmjena.

Parametri
Modul Ulazni Izlazni
B x,y x1,y1

www.modernscience.com 8
1.3.4 Razvojprogramasvrha

Osnovaovetehnikepoiva natehnici modularnogprogramiranja.Razvojprogramasvrha je


zapravo jedna vrsta ue definiranog modularnog programiranja koja program dijeli na vie
dijelova (modula) temeljene njihovim sadrajem i integrira, spaja module u jedinstvenu
programskustrukturu.

Glavni program sadri meni i poziva pojedine module. Modul obrade poziva itav niz modula
hijerarijski nieg nivoa od kojih svaki rjeava odreeni segment programa. Oigledno je, da je
kljuna programska struktura koncentrirana u glavnom programu i modulu obrade. Opisani
principuprojektiranjuprogramazahtjevapostepenoukljuivanjemodularadilakegtestiranja.
Vezeizmeumodulaseodmahprovjeravajuinajvanijidijeloviprogramasenajvietestiraju.

1.3.5 Principiprogramiranja

Osimtehnikapisanjauizradiaplikacija,igara,webstranicaidr.trebapazitiinaprincipe(zlatna
pravila)pokojimseakiteakzadatakmoelakeobaviti.

a.) Suradnjasdrugimprogramerima(timskirad.).
b.) Pridravatisedogovoreniiusvojenihstandardaonainuobavljanjaposla:
1. koritenjemetodastrukturnorazvojaprograma.
2. podjelaradautimove.
3. upotrebadogovorenihprogramskihjezikazapisanjeodreenihprograma.
4. prisustvovatinasastancimakadasedogovaraopromjenamastandardailikadase
provodeanalizeitestirajudosadanjiuradci.

c.) Pisatitoopenitijiprogram(mislisenaradumodulima).
d.) Pisati itljivi kod kako bi i ovjek koji nije pisao izvorni kod mogao se u njemu snai,
analiziratiosnovnulogiku,dodatiiliuklonitinekenaredbe,izmijenitiuvjeteisl.
Preglednostseostvaruje
1. modularnimistrukturnimoblikovanjemprograma.
2. izbacivanjemGOTOnaredbe.
3. ukljuivanjemkomentaraukod.
4. nekoritenjemglobalnihupotrebaiteitiuporabilokalnihvarijabli.
5. koristitismislenaimevarijabli,modulaipotprograma.
e.) Potovatistandardanredoslijedoperacijauprogramu(ulaz=>obrada=>izlaz=>kraj).
f.) Dokumentiratiprogram(dokumentacijaprogramajebitnazanjegovoodravanje.).

www.modernscience.com 9
1.3.6 Grekeuprogramiranju

Pisanjeprogramauraznimprogramskimjezicimazahtjevavarijabilanbrojredovanaredbi.Neki
jezici koji uz konzolu, u koju se unosi kod sadre korisniko suelje sa ve (donekle) pred
definiranimobjektima,koje bitrebaloolakatiprogramerovposaoizadrati nivoprogramskog
jezika na to veem moguem (zbog lakeg rada). Uz sve to, programer opet mora pisati kod
kojimprilagoavapredefiniranukomponentuobjekt,integrirajeuprogram,kodkojijekoristi
i sl. ovisno o zahtjevima. Sve to upuuje na pisanje dosta linja koda u kojima se lako moe
dogoditidaprogramernetonepredvidiilisluajnoizostavipasejavljagreka!Prosjekjeoko
1420greakana1000linijakoda,ovajprosjeksemoesmanjiti,meutimtimecijenaprojekta
znatnoraste.Grekekojepromaknuprogrameruiliprogramerskomtimuprilikomtestiranjatese
primijetetekkasnijenazivajusebugovi.

Izvorigreakasu:

a.) Grekaupostavcialgoritma.
b.) Grekaukodiranjuprograma.
c.) Greka u fazi testiranja ,ako nisu uzete sve mogue kombinacije ulaznih podataka.(to
najeeuzrokujedasenekegraneprogramanikadanepokrenu.).
d.) Grekakodprenoenjaprogramanaraunalo.

Grekesameposebimogubiti:

a.) Dijeljenjesnulom.
b.) Vaenje drugog korijena iz negativnog broja (veliki broj programskih jezika ne pozna
kompleksnebrojeve).
c.) Logaritamskiargumentnesmijebitinegativanbroja.
d.) estosejavljajugrekeualgoritamskimizrazimakojioviseorazlomcima.
e.) Razliit broj otvorenih i zatvorenih zagrada u matematikim izrazima, a i blokovima
koda.
f.) Prekoraenjemaksimalnevrijednosti varijable.
g.) Grekaprilikomzaokruivanjavrijednosti.
h.) Beskonanepetljeioposebniprekidiiprolazipetlji.

www.modernscience.com 10
1.4 Algoritmiipseudokodovi
Veuprethodnimdefinicijamaalgoritma,spomenutojedajealgoritamskupjednoznanihuputa
usmjerenih programu u cilju uspjenog obavljanja neke zadae. Takoer je reeno ja se dosta
algoritmaskicira,odnosnopiepseudokodomkojijeuoblikukojisejednostavnomoeprevesti
ustvarneprogramske naredbe.Pseudokodnemoebitikompiliraniliizvren,inemastvarnih
sintaktikihpravilatouzrokujeznatnerazlikeu sintaktikimpogledimakodovakojesupisale
dvije razliite osobe. Pseudo kod je vaan korak u stvaranju finalnog koda koji omoguuje
programerudasekoncentriranaalgoritmebezrazmiljanjaosintaktikimdetaljimaodreenog
programskogjezika.Akomalopodrobnijerazmisliteipojednostavnitesituacijulakozakljuujete
dailjudskimozakizvrava,zakljuujeiradiradnjeponekompseudokodu,naravnotosujako
kompleksneoperacijealipojedinidijelovibiseadekvatnopredoitipseudojezikom.

Primjer1.Pseudokodzaunoshraneutijelo.

AlgoritamKlopa
start{
initi(hrana=!0){
Prinijetihranuustima
Otvoritiusta
Primitihranu
vakati
Progutati
}
}

Programpoinjeotvaranjem vitiastezagradeposlije naredbestart.Usljedeemreduotvarase


petlja koja kae initi (hrana=!0) odnosno, ponavljaj sve ono to se nalazi unutar ovih
vitiastihzagradadokgodjehranarazliitaodnule(dokgodimahrane).Unutarsljedeegbloka
naredbiopisanjeredoslijedkojimseprima,obraujeinakrajugutahrana.
Lako se uvia plitkost ovog algoritma, nijedna od akcija kao to su to primiti hranu, vakati,
progutati i sl. nije osnovna, ve zahtijeva niz radnji, kao da je i ona jedan potprogram koji se
takoer moe probati predoiti pseudo jezikom. Kompleksnost ovakvih funkcija i jest glavni
problem pri programiranju inteligentnih strojeva, kako ovo nije rad o zaprekama prilikom
programiranja AI, autor e pokuati predoiti uporabu pseudo algoritama na nekim realnijim i
jednostavnijimprimjerima.

1.4.1 Algebarskialgoritmi

Primjer1. Algoritam''HelloWorld!''

AlgoritamHelloWorld
ulaz:nemapodatakanaulazu
izlaz:porukaHelloWorld!
{
output"HelloWorld!"
}

Uovimprimjerimakoritenajedrugaijasintaktikakonstrukcija(pseudo)algoritma.Uprvom
retkuposlijerijeiAlgoritamslijedinazivprograma,drugiredopisujeprogrameruulazne,atrei
izlazne funkcije. Izmeu dvaju vitiastih zagrada pie se kod koji bi od trebao ulazne podatke
obraditiu izlazne.Nemavrstesintaktikepodrkevese autorkoristiengleskim simbolikim

www.modernscience.com 11
rijeima kao naredbama. Naredba output ''tekst'' je ekvivalent za naredbu ispisa u
programskomjezikuukojemprogramerkasnijepiesvojkod.Promotritesljedeeprimjerekoji
nisupseudokodovi.

ProgramskijezikQuickBasicAlgoritam''HelloWorld!''

10CLS
20PRINT''HelloWorld''
30END

ProgramskijezikPascal Algoritam''HelloWorld!''

PROGRAMprog1
BEGIN
WRITE('HelloWorld!')
READLN
END

ProgramskijezikFlashActionScript Algoritam''HelloWorld!''

trace(''HelloWorld')//ispisujeukonzolu

polje_txt.text=''HelloWorld''//ispisujeutekstualnopoljesanazivompolje

ProgramskijezikC++Algoritam''HelloWorld!''

#include<iostream>
usingnamespacestd

intmain(){
cout<<''HelloWorld!''<<endl
return0
}

Slijedinizprimjerajednostavnihpseudokodova.

Primjer2. Algoritamzazbrajanjedvabroja.

AlgoritamZbrajanja
ulaz:x,y
izlaz:zbrojbrojevax,y
{
inputx,y
zbroj=x+y
outputzbroj
}

Primjer3Algoritamzamaksimum(pronaimaksimumtribroja.).

AlgoritamMaksimum
ulaz:x,y
izlaz:veiodbrojevaxiy
{
inputx,y
if(x>y)max=x
elsemax=y

www.modernscience.com 12
outputmax
}
Primjer4.Algoritamzaizraunavanjesumebrojevakojaseunosiprijeunosanule

AlgoritamZbroj
ulaz:brojevisvedokseneunesenula
izlaz:zbrojbrojeva
{
zbroj=0//Definirasevarijablazbrojistavljananulu.
inputx//Unosprvogbrojaunizu.
whilex!=0//Provjerasedalijebrojxrazliitodnule,akojeonda
//sepribrajazbroju.
{
zbroj=zbroj+x
inputx //unosimonoviulaznibroj.
}
outputzbroj//Naizlazaljemoizraunatizbroj.
}

Primjer5.Algoritamzamaksimumbrojevakojiseunose,zavretakunosajenula

AlgoritamMaksimum
ulaz:brojevisvedokseneunesenula
izlaz:maksimumunesenihbrojeva
{
inputx
max=x
while(x!=0)//Provjeravadalijebrojxrazliitodnule
{
inputx//Unosimonoviulaznibroj
if(x>max)max=x//Provjeravamodalijeuneseni brojveiodtrenutnog
//maksimuma,akojestondatrenutnommaksimumu
//dodjeljujemonjegovuvrijednost
}
outputmax//Naizlazuseispisujeizraunatimaksimum
}

Primjer6.Algoritamzan!

Algoritamn!
ulaz:prirodanbrojn
izlaz:faktorijelprirodnogbrojan
{
inputn
f=1
while(n>1)
{
f=f*n
n=n1
}
outputf
}

Primjer7.Algoritamzapronalazakntog Fibonaccijevogbroja

AlgoritamFibonacci
ulazn
izlazntiFibonaccijevbroj
{

www.modernscience.com 13
inputn
x0=0
x1=1
ifn=0rezultat=x0
else{
while(n>1)
{
novi=x0+x1
x0=x1
x1=novi
n=n1
}
rezultat=x1
outputrezultat
}
}

Fibonaccijevi brojevi ili kako ih esto nazivamo Fibonaccijev niz su vrsta rekurzivnog niza u
kojem suma dva prethodna daje sljedei broj. Niz je nazvan prema Leonardu Fibonacciju
(1175g.). Preko istoimenog niza objanjavaju se razni prirodni fenomeni i njegov je udio u
dobivanju broja phi (zlatni rez) jako velik. Broj phi je izrazito vana konstanta, omjer u
matematici,estetiku,graevinu,umjetnostisl.

Uprethodnimprimjerimakoritenjepseudojezikrazumljivsvima.Umjestoengleskihtermina
moglisuseistotakokoristitiihrvatski.
// subilekoriteneusvrhukomentiranjaprograma.SintaksajepreuzetaizjezikaC,C++i
FlashAS.Kadaprogramprilikomkompiliranjanaienaopisanuinstrukciju,preskaejeionase
nekompilira,vesluiiskljuivokaoposjetnikiopisradaprogrameru.
Izrazikao zbroj=zbroj+x supotpunamatematikaglupost,jernepostoji brojkoji je jednak
samom sebi uveanom za neki iznos (osim nule). Meutim, s programskog pogleda, stvari su
netodrugaije.Ovakavpristupnazivasepridjeljivanje,vrijednostisdesnestraneseprebacujui
pohranjujuuvarijabluslijeve.

AndrejNovak

Literatura

[1]http://laris.fesb.hr
[2]http://www.ktfsplit.hr/informatika/
[3]http://www.student.foi.hr/~darados/knjiga/
[4]http://www.matf.bg.ac.yu/~milena/OPcasovi/algoritmi.pdf
[5]StrukturnoprogramiranjeiC++dr.sc.DanijelRadoevi
[6]Osnoviprogramiranjamr.sc.MilenaVujoeviJanii,
[7]Cprogramiranjeskriptasapredavanja,dr.Damirukac
[8]MacromediaFlash2004dizajniranjeigara,JobeMakariBenWiniarczyk
[9]kolaFlashapredavanja,AndrejNovak
[10] QuickBasic7.1,odpoetnikadoprogramera! AndrejNovak
[11] FibonaccijevibrojeviibrojPhi AndrejNovak

www.modernscience.com 14

You might also like