Professional Documents
Culture Documents
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.
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.
www.modernscience.com 4
Ciklikastrukturaodlikujetokomgdjesejedaniliviealgoritamskihkorakamoeizvriti
jedanilivieputa,amoesedogoditidaseneizvrinitijedanput!
a.) Konstantneciklikestrukturebrojponavljanjajeunaprijedpoznatiodreen.
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
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
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
}
}
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