Download as pdf or txt
Download as pdf or txt
You are on page 1of 92

CS101 - Uvod u u objektno-orijentisano

programiranje
Lekcija 01
O S N OV E P R O G RA M I RA N JA

Metropolitan

PRIRUNIK ZA STUDENTE
Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava
zadrana. Bez prethodne pismene dozvole od strane Univerziteta
METROPOLITAN zabranjena je reprodukcija, transfer, distribucija ili
memorisanje nekog dela ili itavih sadraja ovog dokumenta.,
kopiranjem, snimanjem, elektronskim putem, skeniranjem ili na bilo koji
drugi nain.

Copyright 2010 BELGRADE METROPOLITAN UNIVERSITY. All rights


reserved. No part of this publication may be reproduced, stored in a
retrieval system or transmitted in any form or by any means, electronic,
mechanical, photocopying, recording, scanning or otherwise, without the
prior written permission of Belgrade Metropolitan University.
CS101 - Uvod u u objektno-orijentisano
programiranje

Lekcija 01

OSNOVE PROGRAMIRANJA
Osnove programiranja
Poglavlje 1: Uvod u raunare
Poglavlje 2: Programski jezici
Poglavlje 3: Uvod u programiranje u Javi
Poglavlje 4: Razvojno okruenje NetBeans
Poglavlje 5: Pokazna veba
Poglavlje 6: Zadaci za individualni rad
Poglavlje 7: Domai zadatak br.1
Zakljucak
Lekcija 01: Osnove programiranja

Osnove programiranja

UVOD

Implementacija se bavi pretvaranjem projektnog


reenja (UML objektnog modela) u programski kod, npr.
Java program.

Cilj ove lekcije je da vam ukae na kljuna pitanja o kojima se mora


voditi rauna pri implementaciji (kodiranju) softvera, ukljuujui i pitanja
viestruke primene (engl., software reuse) i razvoja primenom otvorenih
izvora (engl., open-source development).

Posebna panja je poklonjena procesima preslikavanja, tj. Transformacije,


objektnog modela softvera, koji je razultat projektovanja, u programski
kod, koji je rezultat implementacije.

4
Poglavlje 1: Uvod u raunare

Poglavlje 1 Uvod u raunare

TA JE RAUNAR?

Raunar je elektronski ureaj koji memorie i obrauje


podatke.

Raunar ini hardver i softver. Hardver ini fiziki deo raunara, znai ono
to se vidi, a softver je nevidljiv, jer ga ine programske instrukcije koje
kontroliu rad hardvera i koje omoguavaju da hardver izvri odreeni
zadatak.

Raunar ine sledee osnovne komponente:

Centralna procesorska jedinica (CPU-Central Processing Unit)


Glavna memorija (main memory)
Ureaj za skladitenje podataka (storage device)
Ureaji za unos podataka (input devices)
Ureaji za prikazivanje podataka (output devices)
Ureaji za komunikaciju (communication devices)

Komponente raunara su meusobno povezane sistemom koji se naziva:


magistrala podataka (data bus). Preko magistrale podataka
komponente raunara razmenjuju podatke. Kod personalnih raunara
(PC-Personal Computer) magistrala podataka je ugraena u osnovnu
elektronsku plou raunara (motherboard) koja sadri eleketronska kola
koja povezuju sve elemente raunara.
Slika 1 prikazuje osnovnu strukturu raunara.
Slika 1.1 Osnovna struktura
raunara

5
Lekcija 01: Osnove programiranja

CENTRALNA PROCESORSKA JEDINICA


(CPU)

Centralna procesorska jedinica (CPU) preuzima


instrukcije iz glavne memorije raunara i izvrava ih, i
time koordinie akcije ostalih komponenata i izvrava
osnovne aritmetike operacij

Centralna procesorska jedinica je mozak raunara. Ona preuzima


instrukcije iz glavne memorije i izvrava ih.

Centralnu procesorsku jedinicu obino ine:

Jedinica upravljanja (control unit)


Aritmetiko-logika jedinica (arithmetic/logic unit)

Jedinica za upravljanje koordinie akcije ostalih komponenata.


Aritmetiko-logika jedinica izvrava osnovne aritmetike operacije
(sabiranje, oduzimanje, mnoenje i deljenje brojeva) i logike operacije
(operacije uporeivanja).

Centralna procesorska jedinica se proizvodi u obliku silikonskog


poluprovodnikog ipa koji sadri milione malih elektronskih prekidaa
tranzistora , za obradu podataka.

Centralna procesorska jedinica koristi interni asovnik, koji emituje


elektronske pulseve sa konstantnom frekvencijom (brzinom ponavljanja).
Ovi pulsevi se koriste radi kontrole i sinhronizacije operacija. Vea brzina
unutranjeg asovnika, tj. frekvencija emitovanih pulseva omoguava
izvrenje veeg broja instrukcija u jedinici vremena, tj. sa veom
frekvencijom, koja se meri hercima (Hz). Jedan herc odgovara jednom
pulsu u jednom sekundu. Danas Intelovi procesori rade sa brzinama od
oko 3 GHz (jedan giga Hz sadri milijardu instrukcija u sekundi).
Dananji procesori obino sadre nekoliko jezgara- Jedno jezgro (core) je
deo procesora koji izvrava operaciju itanja i izvrenja instrukcija. Da
bi poveali brzinu svojih procesora, tj. CPU, njihovi proizvoai proizvode
procesore sa vie jezgara (multicore CPU). Procesor sa vie jezgara je
jedinstvena komponenta koja sadri 2, 4, 8 ili vie jezgara.

6
Poglavlje 1: Uvod u raunare

BINARNI SIGNALI

Binarni signal ima dva stanja (iskljueno-0,


ukljueno-1), a bit predstavlja vrednost binarnog
signala koja moe biti 1 ili 0.

Re ''binarno'' znai "dva stanja". Ova dva stanja se nekad oznaavaju


sa 0 i 1; ponekad sa tano i netano ili ukljueno i iskljueno. Najvanija
karakteristika svakog binarnog ureaja je da on moe imati dva stanja.

Bit je signal, odnosno najmanji element programa koji moe imati samo
dve vrednosti: "ukljueno/iskljueno"' ili 1 ili 0.

Zamislite prekida za svetlo. Taj prekida moete samo ukljuiti ili


iskljuiti. Prekida znai nosi jedan bit informacija. Prekida sa
postepenim podeavanjima nije binarni ureaj. On ima vie poloaja koji
se nalaze izmeu ukljuenog i iskljuenog.

Analogni signal kontinuirano menja svoju vrednost. Ovakav signal


moe imati bilo koju vrednost u nekom opsegu. Ovo je ilustrovano na slici
2.

Ako se uvede prag, analogni signali se mogu predstaviti binarnim


podacima. Ovo je lako i brzo, tako da elektronika, (a i ljudi) mogu lako da
odrede da li je napon signala iznad ili ispod nekog praga.

Na slici 3 je prikazan signal ovog tipa.. tj. binarni signal. Ako


posmatramo samo napon signala, moemo ovo iskazati i na sledei
nain: vrednosti ispod nekog praga se smatraju signalom 0, a vrednosti
iznad smatraju se signalom 1.
Slike 2 i 3 prikazuju primer analognog i binarnog signala, i kako analogni
signal moe da se pretvori u binarni signal.

7
Lekcija 01: Osnove programiranja

Slika 1.2 Primer analognog


signala

Slika 1.3 Primer binarnog


signala

ZATO SE BINARNI SIGNALI KORISTE U


RAUNARIMA?

Binarni signali se koriste u raunarima zato to su


jednostavi i laki za izradu, ne mogu da budu
dvosmisleni i sa njima se moe predstaviti bilo koji
podatak.

8
Poglavlje 1: Uvod u raunare

Binarni signali se koriste u raunarima iz sledeih razloga:

1. Jednostavni, laki za izradu. Prekida za ukljuivanje i


iskljuivanje se lako pravi. Takav prekida spaja ili odvaja dva
metalna dela. Ako biste eleli da napravite prekida koji bi
postepeno menjao jainu svetla, to bi bilo mnogo tee za rad,
utoliko to bi takav prekida morao da ima i vie delova.
Prekidai sa samo dva stanja se relativno lako prave. To znai da
su ureaji mali, jeftini i pouzdani, tako da se milioni njih mogu
staviti na mali prostor.
2. Nedvosmisleni signal. Binarni signal sadri ili vrednost 1 (ima)
ili 0 (nema), te ne moe da bude po definiciji, dvosmislen.
3. Binarnim signalom se moe predstaviti bilo ta. Sve to se
moe predstaviti nekim obrascem, moe se predstaviti obrascem
bitova. Ideja je da se bilo koji sistem simbola moe prevesti u
obrazac sa bitovima. Pogledajmo na primer, kako se karakteri
predstavljaju preko obrazaca od osam bitova. Sporazum o tome
ta obrazac predstavlja se naziva ASCII. Hardver i softver
raunara prate ovaj sporazum kada su u pitanju tekstualni
podaci. Drugi tipovi podataka se predstavljaju na drugi nain.

Japanski i kineski karakteri se takoe prebacuju u obrasce bitova, a


raunari mogu da njima manipuliu podjednako lako kao da je re o
engleskim slovima. Tada se koristi sporazum nazvan UNICODE, koji
karaktere predstavlja preko 16 bitova (ASCII to radi preko 8 bitova).

BIT I BAJT

Bajt je najmanja informacija koja se moe predstaviti u


raunaru u ima vrednost 0 ili 1. Bajt predstavlja grupu
od 8 bitova, kojoj se moe pristupiti na odreenoj
adresi u memoriji.

Bit(engl. Binary Unit) je najmanja informacija koja moe biti


predstavljena u raunaru. Jedan bit pamti jedno od dva mogua
stanja koja su u raunaru predstavljena kao 0 ili 1.

Poto jedan bit moe da uva samo jedno od dva stanja, to je nedovoljno
za opisivanje informacija iz realnog sveta. Da bi se prevaziao ovaj
problem, informacije je opisuju grupama od vie bitova. Tako je
memorija raunara organizovana u grupe od po 8 bitova koji
se nazivaju bajtovi(engl. bytes). Jedan bajt je otprilike dovoljan za
smetanje jednog karaktera u ASCII kodu.

9
Lekcija 01: Osnove programiranja

Memorija raunara je organizovana kao dugaak niz bajtova gde svaki


bajt ima svoju adresu preko koje se moe pristupiti toj memorijskoj
lokaciji (slika 4).

Raunar pristupa sadraju memorijske lokacije preko adrese. Adrese


poinju od 0 i zavravaju se zakljuno sa poslednjim bajtom u nizu.
Procesori mogu da piu ili itaju vie bajtova u isto vreme. Ako je
procesor 32-bitni onda moe da radi sa 4 bajta istovremeno, no, ako
je procesor 64-bitni onda moe da radi sa 8 bajtova istovremeno. Za
predstavljanje veih koliina podataka koriste se vee jedinice od bajta
koje su stepen dvojke. Svaka sledea jedinica je od prethodne vea 1024
puta (slika 5)
Slika 1.4 Binarni podaci
smeteni u registrima sa
svojim adresama

Slika 1.5 Jedinice za prikaz


veliine memorije

GLAVNA I POMONA MEMORIJA

Glavna memorija je mesto gde se podaci i programi


nalaze kada ih procesor aktivno koristi. Pomona

10
Poglavlje 1: Uvod u raunare

memorija je mesto gde se podaci i programi trajno


skladite.

Glavna memorija je mesto gde se podaci i programi nalaze kada ih


procesor aktivno koristi. Kada programi i podaci postaju aktivni, oni se
kopiraju iz sekundarne memorije u glavnu i ta kopija ostaje u glavnoj
memoriji. Ova memorija je blisko povezana sa procesorom, tako da je
prebacivanje instrukcija iz programa i podataka do procesora vrlo brzo.
Glavna memorija se esto naziva RAM memorijom. To je skraenica za
Random Access Memory. "Random" (sluajno) znai da se memorijskim
elijama moe pristupiti bilo kojim redosledom.

Kada ljudi kau da raunar ima "256 megabajta RAM-a", oni govore o
njegovoj glavnoj memoriji. U glavnoj memoriji se nita ne uva za stalno.
Ponekad se podaci tu nalaze samo nekoliko sekundi, odnosno samo
onoliko vremena koliko su bili potrebni.

Glavna memorija je tesno povezana sa procesorom. jer sadri


programske instrukcije i podatke sa kojima procesor trenutno radi. Njen
sadraj se brzo i lako menja, jer se interakcija sa procesorom obavlja u
milionitim delovima sekunde. Kao i procesor, memorija je smetena na
silikonskim ipovima koji na svojim povrinama imaju milione tranzistora.

Pomona ili sekundarna memorija je mesto gde se podaci i programi


trajno skladite. Ona se nalazi na medijumu koji ne zavisi od elektrine
energije.
Najee se kao ureaji za skladitenje (medijumi) koriste

magnetni diskovi,
optiki diskovi (CD, DVD)
USB fle (flash).DD
SSD (Solid State Drive)

Razlog postojanja dve vrste memorije se moe ustanoviti iz sledee


tabele koja daje uporedan pregled karakteristika glavne i sekundarne
memorije.

Memorijski medijum fiziki skladiti podatke i programske instrukcije.


Medijum se stavlja u odgovarajuu hardversku jedinicu (drive) koja
omoguava rad sa memorijskim medijumom. Ova jedinica ita podatke
sa memorijskog medijuma i zapisuje podatke na njemu.

Pomona memorija slui sa trajno skladitenje velike koliine podataka


i programskih instrukcija. Podaci i programske instrukcije se prebacuju
u glavnu memoriju kada su potrebni za izvravanje. Glavna memorija
je stalno puna sa bajtovima koji predstavljaju podatke i programske
instrukcije. Procesor kordinie dolazak novih bajtova sa pomone u

11
Lekcija 01: Osnove programiranja

glavnu memoriju (itanje podataka) i smetanje nazad bajtova sa glavne


memorije u pomonu memoriju (zapisivanje podataka).

ULAZNI I IZLAZNI UREAJI

Standarni ureaji za unos su tastatura i mi, a prikaz


izlaznih informacija iz softvera su monitor i tampa.

Ulazni i izlazni ureaji omoguavaju korisniku da komunicira sa


raunarom. Najpoznatiji ulazni ureaji su tastatura i mi, a najpoznatiji
izlazni ureaji su monitori i printeri.

Tastatura omoguava unos, pored slova, brojeva i specijalnih znakova,


i signala za pokretanje razliitih funkcija, preko vie razliitih tastera.
Funkcionalni tasteri se nalaze na vrhu tastature i oznaeni su slovom
F. Njihove funkcije zavise od softvera koji ih koristi.

Postoje i tasteri-modifikatori (Shift, Alt i Ctrl) koji modifikuju normalne


akcije u specifine akcije, zavisno od pritiska jednog ili dva tastera-
modifikatora.

Numerika tastatura je obino postavljena na desnoj strani tastature,


predstavlja poseban deo tastature i sadri tastere sa brojevima i drugim
aritmetikim znacima matematikih operacija, potrebnih za rad
kalkulatora.

Tasteri sa strelicama slue za pomeranje pokazivaa mia gore, dole,


levo i desno.

Tasteri: Insert, Delete, Page Up i Page Down se koriste kod programa


za unos i obradu tekstova i drugih programa u cilju ubacivanja tekstova
i objekata, brisanje tekstova i objekata i njihovog pomeranja gore ili dole
na ekranu.
Mi je je ureaj za pokazivanje. Upotrebljava se kao grafiki pokaziva
(pointer) koji se naziva kursor (cursor). Sa klikom dugmeta mia,
pokazuju odabrani objekat (na primer dugme grafikog korisnikog
interfejsa) i pokree se odreena akcija, zavisno od softvera.

Monitor prikazuje informaciju (tekst i grafiku). Rezolucija ekrana i


veliina taaka (dot pitch) odreuje kvalitet prikaza na ekranu.
Rezulocija ekrana je broj piksela koje ima ekran u horizontalnom ili
vertikalnom pravcu. Pikseli (pixels) su male take koje prikazuju neku
sliku na ekranu. Rezolucija se moe runo podeavati izborom jedne od
opcija koje odreeni ekran omoguava. to je vea rezolucija, to je otrija
i istija slika na ekranu.

12
Poglavlje 1: Uvod u raunare

Razmak izmeu taaka na ekranu (dot pitch) je veliina prostora


izmeu piksela merena u milimetrima. to je razmak manji, to je slika
otrija i istija.

KOMUNIKACIONI UREAJI

Komunikacioni ureaji povezuju raunare sa


raunarskim mreama (dial up, DSL i kablovski
modemi, NIC mrene kartice, beini adapteri).

Raunari se mogu povezivati preko komunikacionih ureaja, kao to


su modemi (DSL ili kablovski), kartice komunikacione mree i preko
beinog adaptera.

Modemi sa pozivanjem (dial up modem) koriste telefonske linije i


prenose podatke sa brzinom od 56.000 bps (bita u sekundi).
DSL modem (digital subscriber line) takoe koristi standarne
telefonske linije, ali moe da prenosi podatke i 20 puta bre od
obinog modema sa pozivanjem (dial up modem).
Kablovski modem upotrebljava kabal kablovske TV i obino je bri
od DSL modema.
Kartica mrenog interfejsa (NIC Network Interface Card) je
ureaj koji povezuje raunar sa lokalnom raunarskom mreom (LAN
Local Area Network). NIC oznaen sa 1000BaseT ostvaruje brzinu
od 1000 miliona bitova u sekundi, tj.1000 mbps.
Beini adapter omoguava povezivanje raunara sa lokalnom
raunarskom mreom bez korienja ica (wireless).

TA JE SOFTVER?

Softver obuhvata programe, tj. listu instrukcija koje


procesor treba da izvri i podatke koje raunar koristi.

Softver obuhvata programe i podatke koje raunar koristi; nalazi se na


nekom ureaju, na primer, na disku, ali je sam po sebi neopipljiv.

Programi su lista instrukcija koje procesor treba da izvri.

Podaci mogu biti bilo koje informacije koje program koristi. To mogu
biti brojani podaci, tekst, zvuni ili neki drugi podaci. Razlika izmeu
programa i podataka nije ba tako jasna kako bismo moda zakljuili.

13
Lekcija 01: Osnove programiranja

I programi, i podaci se u memoriji raunara predstavljaju na isti nain.


Elektronika memorije raunara ne pravi razliku izmeu programa i
podataka. Upravo ta injenica da se i programi, i podaci skladite na isti
nain, jedna je od najvanijih ideja u raunarskim naukama. Raunarski
sistemi svoju memoriju koriste za ono to potrebe nalau.

Postoje dva tipa softvera (programa), slika 6

1. Aplikacioni programi (aplikacije) su programi koje ljudi koriste


za obavljanje nekog konkretnog posla. Raunari i postoje upravo
zato to ljudi imaju potrebu da koriste takve programe.
2. Sistemski softver (programi) omoguavaju da hardver i softver
jednog raunarskog sistema rade kako treba.

Najvaniji sistemski program je operativni sistem. Ovaj program je


uvek prisutan kada raunar radi i on koordinira rad svih hardverskih i
softverskih komponenti sistema.

Operativni sistem je odgovoran za pokretanje aplikacionih programa;


za pronalaenje resursa koji su potrebni za rad tih programa. Tokom rada
nekog aplikacionog programa operativni sistem rukuje detaljima vezanim
za hardver koji su, tom prilikom - potrebni.

Na primer, kada na tastaturi unesete neki karakter, operativni sistem


odreuje kojem programu je to namenjeno.

14
Poglavlje 1: Uvod u raunare

Slika 1.6 Osnovni tipovi


softvera - aplikacioni i
operativni

OSNOVNA ARKITEKTURA RAUNARA


(VIDEO)

Video na jednostavan nain objanjava strukturu


raunara

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

15
Lekcija 01: Osnove programiranja

VON NEUMANN MODEL RAUNARA


(VIDEO)

Video prikazuje Von Neumann-ov model raunara

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

16
Poglavlje 2: Programski jezici

Poglavlje 2 Programski jezici

MAINSKI JEZIK

Mainski jezik ini skup ugraenih jednostavnih


mainskih instrukcija u binarnom obliku, razumljiv
raunaru ali ne i ljudima.

Mainski jezik ini skup ugraenih jednostavnih mainskih instrukcija.


Ove instrukcije su u obliku binarnig koda. Raunar razume samo ove
mainske instrukcije u obliku binarnog koda. Na primer, ako zahtevate od
raunara da vam sabere dva broja, morate napisati program u binarnom
kodu, koji bi mogao da izgleda ovako:

1101101010011010

Proizvoai raunara, odnosno, procesora, definiu mainski jezik svog


raunara, odn. procesora. Ovo znai da binarni kod napisan za jedan
raunar, moe da ne bude upotrebljiv kod drugog raunara.

Da objasnimo ovo malo detaljnije. Program na mainskom jeziku se


sastoji od niza instrukcija koje su opisane sa po nekoliko bajtova koje
govore procesoru koju operaciju treba izvriti i sa kojim operandima.

Procesor ita instrukcije iz memorije i izvrava ih sekvencijalno.

Mainska instrukcija se sastoji od operacionog koda (opcode) i


operanada koji odreuju nad kojim se podacima obavlja ta operacija
(registri, memorijske lokacije). Broj operanada zavisi od operacionog
koda.
Glavna memorija na odreenom mestu (adresi) sadri podatke u
binarnom obliku, tj. vidu bajtova (slika 1).

17
Lekcija 01: Osnove programiranja

Slika 2.1.1 Prikaz sadraja


glavne memorije raunara

U sledeem primeru imamo 2 operanda, jer instrukcija radi sa 2


operanda.
Slika 2.1.2 Primer sabiranja
dva broja datih na dve
memorijske lokacije

Ovaj primer ilustruje sabiranje dva broja na adresama 128 i 129 na


mainskom jeziku Fon Nojmanove maine. Operacioni kod (opcode) je
8-bitan, a adrese memorijskih lokacija 16-bitne.

Mana ovakvog naina zadavanja naredbi raunaru je to je teko


razumljiv ljudima, programiranje je komplikovano, a mogunost
pronalaenja greke veoma teka.

PROBLEM RADA SA MAINSKIM JEZIKOM

Program pisan u mainskom jeziku brzo radi, ali je


sporo i zamorno programiranje u njemu.

Programiranje u mainskom jeziku je vrlo zamorno, sporo jer se i


programske instrukcije (ta treba raunar da uradi) piu brojevima, isto
kao i podaci (koje instrukcije treba da obrade, tj. da prebace iz jednog
registra u drugi i dr.).
Da bi se programiranje olakalo, ubrzalo i uprostio proces programiranja,
40-tih godina 20. veka programske instrukcije su poeli da oznaavaju,
umesto brojevima, slovima (mneumonicima, tj. na engleskom,
mneumonics). Na primer, instrukcija:
Prebaci sadraj registra 5 u registar 6

18
Poglavlje 2: Programski jezici

u mainskom jeziku bi se napisala sledeim brojevima:


4056
U mneumonikom sistemu programiranja, ova instrukcija se pie na
sledei nain:

MOV R5 R6

jer MOV oznaava instrukciju pomeranja sadraja iz jednog registra u


drugi, a R oznaava registar sa odreenim rednim brojem.

Evo i drugog primera. Sledea programska intrukcija:

Saberi sadraje registra 6C i 6D i stavi rezultat u registar 6E

se izvrava po postupku (algoritmu):


Korak 1: Uzmi jednu od vrednosti koju treba uzeti iz memorije i staviti u
registar
Korak 2: Uzmi drugu vrednost iz memorije i stavi je u drugi registar.
Korak 3: Aktiviraj deo procesora sa registrima iz koraka 1 i 2 kao ulazima
i pripremi novi registar za smetaj rezultata.
Korak 4: Stavi (memorii) rezultat u memoriju
Korak 5: Stop zaustavi program
Ovaj algoritam, tj. procedura izvrenja, se realizuje sledeim programom
napisanim u mainskom jeziku
156C
166D
5056
306D
C000
Objanjenje navedenih instrukcija u mainskom jeziku:
156C - Puni registar 5 sa bitovima iz memorijske elije na lokaciji 6C
166D - Puni registar 6 sabitovima iz memorijske elije na lokaciji 6D
5056 - Saberi sadraj registra 5 i 6 i stavi rezultat u registar 0
306D- Stavi (memorii) sadraj u registru 0 u memorijsku eliju na lokaciji
6D
C000 - Zaustavi izvrenje programa (kraj)
Oigledno, program u mainskom jeziku je teko itljiv za oveka i
zahteva unos puno instrukcija, to je zamorno i zahteva puno vremena.

MNEUMONIKI SISTEM PROGRAMIRANJA

Primena mneumonika (menumonics), tj. slovnih oznaka


u programskim instrukcijama je povealo njihovu
itljivost i olakalo rad programerima.

19
Lekcija 01: Osnove programiranja

Primenom menumonika (mneumonics), tj. slovnih oznaka u programskim


instrukcijama, olakalo se programiranje jer je program posao itljiviji za
ljude.

Na primer, prethodni primer koji je uraen u mainskom jeziku, u


menumonikom sistemu programiranja izgledao bi ovako:
LD R5,Price
LD R6,ShippingCharge
ADDI R0,R5 R6
ST R0,TotalCost
HLT
Ovde smo primenili operacije sa sledeim oznakama: LD (load) ubaci
, ADDI (add) saberi, ST (store) uskladiti (memorii) i HLT (halt)
zaustavi. Opisna imena Price, ShippingCharge i TotalCost oznaavaju
nazive memorijskih elija na lokacijama 6C, 6D i 6E. Ova opisna imena se
esto nazivaju identifikatorima (engl. identifiers). Oigledno, isti program
napisan mneumatikim sistemom programiranja daje jasniju sliku ta
programska instrukcija radi, nego ona napisana u mainskom jeziku.
Jedan mneumoniki sistem programiranja je postao poznat pod nazivom
asembler (assemblers) koji ima za zadatak da instrukcije napisane sa
menumonicima prevede u mainski jezik. Primenom asemblera, posao
programera je olakan, jer on instrukcije pie mneumotikim oznakama,
a asembler ih prevodi u mainske instrukcije. Time je posao programera
olakan.

Mneumoniki sistem koji predstavlja programe se naziva asembler jezik


(assembly language). Ne postoji samo jedan asembler jezik, jer razliiti
proizvoai raunara su koristili razliite mneumonike i razliite oznake
za registre te je tako postalo vie asmebler jazika. Oni su napravili veliki
pomak u programiranju, te se esto nazivaju drugom generacijom
programskih jezika, jer se mainski jezici smatraju prvom generacijom
programa. Meutim, program napisan u jednom asembler jeziku za
jedan odreeni raunar, nije mogao direktno da se primeni u drugom
raunaru, drugog proizvoaa.

Drugi nedostatak asembler jezika je bio u tome to je programer i dalje


morao da razmilja o svakom malom programskom koraku mainskog
jezika, iako ga opisuje mneumonicima. Ovi elementarni primitivni, tj.
osnovni elementi jezika, nisu pogodni za izradu sloenijih programa, koji
zahtevaju i sloenije primitive, tj. gradivne elemente jezike vieg nivoa.

20
Poglavlje 2: Programski jezici

ASEMBLERSKI JEZIK

Asemblerski jezik koristi kratke rei (mneumonik) za


nazive mainskih instrukcija. Asembler prevodi
asemblerski jezik u mainske instrukcije

Primena mainskog jezika je vrlo naporna. Programi pisani u mainskom


jeziku teko se itaju i menjaju. Zato je stvoren asemblerski jezik jo
u ranim fazama raunarstva. On koristi kratku re (mneumonik) koja je
karakteristina za naredbu mainskog jezika. Na primer, menumotik koji
se koristi za sabiranje je add a za oduzimanje koristi se menumotik sub.
Sabiranje brojeva 2 i 3 se vri na sledei nain:

add, 2, 3, result

Asemblerski jezika je razvijen da bi se olakao posao programera.


Umesto da koriste mainski jezik raunara, lake programiraju
korienjem asemblerskog jezika. Meutim, raunar ne razume asembler
jezik. Zbog toga, korienjem odgovarajueg prevodioca asemblera -
asemblerski jezik se prevodi u mainski jezik (slika 3).

Pisanje programa u asemblerskom jeziku je lake nego pisanje programa


u mainskom jeziku. Meutim, ni u njemu nije lako pisati programe. Jedna
instrukcija u asemblerskom jeziku odgovara jednoj mainskoj instrukciji.
Slika 2.1.3 Asembler prevodi
program pisan u
asemblerskom jeziku u
mainski jezik

Da bi pisali program u asemblerskom jeziku, morate da znate kako CPU


radi.

Asemblerski jezik se smatra jezikom niskog nivoa, jer je po prirodi blizak


mainskom jeziku i to je zavistan od maine, tj. od raunara.

PROGRAMSKI JEZICI TREE GENERACIJE

Programi tree generacije ne zavise od raunara na


kome se izvravaju

21
Lekcija 01: Osnove programiranja

U cilju da se izbegnu asembler jezici niskog nivoa, koji su zavisni od


raunara za koji su razvijeni, dolo je do razvoja tree generacije
programskih jezika koji ne zavise od raunara. Najpoznatiji programski
jezici te tree generacije programskih jezika su FORTRAN (FORmula
TRANslator), koji je razvijen za izradu matematikih i inenjerskih
programa, i COBOL (COmmon Business Oriented Language) koji je razvila
amerika mornarica za poslovne aplikacije.

Programski jezici tree generacije definiu skup primitiva (gradivnih


elemenata jezika) vieg nivoa (sloenijih) jer jedna takva primitiva
zamenjuje vie primitiva nieg nivoa (jednostavnije). Zato je svaka
primitiva vieg nivoa tako kreirana da moe da zameni redosled
(sekvencu) primitiva niskog nivoa koja je podrana mainskim jezikom.
Na prethodni primer koji je bio napisan jezikom prve i druge generacije,
sada se u programskom jeziku tree generacije moe napisati na sledei
nain:

assign TotalCost the value Price + ShippingCharge


Ova programska instrukcija vieg nivoa ne zavisi od raunara koji treba
da je izvri. Program koji se naziva prevodilac (translator) prevodi
program koji sadri primitive vieg nivoa u program predstavljen
mainskim jezikom. Ovi programski prevodioci se esto zovu i
kompajlerima (compilers).
Pored kompajlera, postoje i programski prevodioci koji se nazivaju
interpreterima (interpreters). Razlika je u tome to interpreteri, odmah
po prevoenju instrukcije vieg nivoa u instrukcije izraene u mainskom
jeziku izvravaju ove instrukcije, pre nego to pone da prevodi sledeu
instrukciju vieg nivoa. Za razliku od kompajlera, koji prevedu program
visokog nivoa u program pisan u mainskom jeziku i koji se memorie
za kasniju i ponovljenu upotrebu, interpreter odmah izvrava svaku
instrukciju programa vieg nivoa.
Primenom odgovarajueg kompajlera, tj. kompajlera koji je razvijen za
odreen raunar, aplikacioni program pisan u jeziku tree generacije,
je mogao da se izvrava na bilo kom raunaru, koji ima kompajler za
programski jezik u kome je pisan aplikacioni program. Meutim, ta
"nezavisnost" od raunara nije uvek bila 100%. Kako se neke operacije
na raunarima razliito izvode, a da bi oni bre radili posle primene
prevedenog programa, dolazilo je i do prilagoavanja programskih jezika
specifinostima pojedinih maina, pa je dolo i do ugroavanja njihove
nezavisnosti od raunara. Da bi se manjila upotreba ovih dijalekata
programskih jezika ameriki institut za standarde (American National
Standards Institute) i meunarodna organizacija za standardizaciju ISO
(the International Organization for Standardization) standardizovali su
vanije programske jezike.

22
Poglavlje 2: Programski jezici

NEDOSTACI TREE GENERACIJE


RAUNARA

Zbog specifinosti razvijenih kompajlera za programe


tree generacije, dolo je do ograniene njihove
primene na razliitim raunarima.

Proizvoai kompajlera, da bi omoguili da oni bre prevode, ali, jo


znaajnije, da prevedeni programi bre rade (optimizacija prevedenog
koda), dodavali su pojedine programske module (proirenja jezika, engl.
langauage extensions) u svojim kompajlerima koji su specifino razvijeni
za pojedine raunare, te je to ograniilo primenu programa pisanih u
standardizovanim programskim jezicima samo na one raunare za koje
su oni razvili te bre kompajlere. Ako programer u svoj aplikativni
program ubaci i instrukcije koje koriste ta proirenja programskog jezika,
onda tako napisan program nee moi da koriste kompajleri ostalih
proizvoaa raunara, te e on moi da se primenjuje samo na
kompajlerima proizvoaa koji je uveo ta proirenja programskog jezika.
Naunici i inenjeri koji su se bavili razvojem programskih jezika su poeli
da razmiljaju o razvoju programskih jezika koji omoguavaju primenu
apstraktnih koncepata, koji su potpuno nezavisni od kocepata koji su
prilagoeni pojedinim raunarima. Oni su istraivali mogunost da sami
raunari (tj. njihovi operativni sistemi) pronalaze najpogodnije algoritme
za realizaciju postavljenog koncepta, nego da samo izvravaju programe
koji primenjuju unapred definisane algoritme. Ovo je proizvelo razvoj
novih generacija programskih jezika, koje je esto teko generacijski
klasifikovati.

TA JE PROGRAMSKI JEZIK? (VIDEO)

Govori se o funkciji programskih jezika

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

PROGRAMSKI JEZICI NISKOG I VISOKOG


NIVOA (VIDEO)

Objanjava se evolucija od programskih jezika niskog


nivoa do programskih jezika visokog nivoa

23
Lekcija 01: Osnove programiranja

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

2.1 PARADIGME PROGRAMSKIH


JEZIKA

PARADIGME PROGRAMIRANJA I NJIHOVA EVOLUCIJA

Paradigma programiranja je specifian proces


programiranja

Programski jezici se mogu klasifikovati po generaciji kojoj pripadaju, a


koja se moe prikazati na vremenskoj osi (slika 1). Programski jezici vie
generacije dozvoljavaju vei stepen njihove nezavisnosti od specifinosti
raunara na kojima se izvravaju njihovi programi i postaju, u veem
stepenu, orijentisani ka problemu koji reavaju.
Slika 2.2.1 Generacije
raunara

Razvoj programskih jezika nije sledio linerani trend razvoja, ve su


razliiti jezici imali svoje specifine putanje razvoja, podravajui razliite
procese programiranja, koji se nazivaju programskim paradigmima. Slika
2 prikazuje ove razliite putanje razvoja, zavisno od primenjene
paradigme programiranja. Slika prikazuje etiri razliite putanje razvoja,
koje odgovaraju etiri paradigmi razvoja softvera:

Funkcionalna paradigma
Objektno-orijentisana paradigma
Imperativna (ili proceduralna) paradigma, i
Deklarativna paradigma.

24
Poglavlje 2: Programski jezici

Slika 2.2.2 Evolucija


paradigmi programiranja

Kako ove paradigme programiranja utiu na nain razvoja softvera, te


obuhvataju sve faze razvoja jednog procesa, one su u stvari paradigme
razvoja softvera, a ne samo paradigme programiranja.

IMPERATIVNA PARADIGMA PROGRAMIRANJA

Imperativna paradigma reava problem primenom


odgovarajueg algoritma i potrebnih podataka.

Imperativna (proceduralna) paradigma

Imperativna paradigma, poznata i kao proceduralna paradigma,


predstavlja tradicionalni nain razvoja softvera, tj, predstavlja
tradicionalni proces programiranja. Imperativna (proceduralna)
paradigma definie proces programiranja po kome se komande definiu
sekvencijalno, tj. po redosledu izvravanja, i one manipuliu podacima
radi dobijanja eljenog rezultata. Proces programiranja se odvija u skladu
sa odabranim algoritmom za reavanje konkretnog problema. Na primer,
ako elite da napravite program za reavanje kvadratne jednaine, onda
treba da koristite algoritam koji predstavlja poznati matematiki iskaz
koji daje dva mogua reenja kvadratne jednaine. Alogoritam
predstavlja proces koji ine poreane komande koje jedna za drugom
izvravaju neophodne operacije nad podacima, kako bi se dobio eljeni
rezultat.

DEKLARATIVNA PARADIGMA PROGRAMIRANJA

Deklarativna paradigma polazi od opisa problema za


koji, primenom opteg postupka reavanja za
kategoriju kojoj problem pripada, dovodi do reenja
problema.

Deklarativna paradigma zahteva od programera da opie problem koji


ima, a ne algoritam za njegovo reavanje. Sistemi koji koriste

25
Lekcija 01: Osnove programiranja

deklarativnu paradigmu ustvari primenjaju neki opti, unapred odabran i


postavljen algoritam reavanja problema. U sluaju primene deklarativne
paradigme, posao programera se svodi na precizno opsivanje problema
koji se treba reiti, a ne opisivanje algoritma za njegovo reavanje.
Zbog toga to ne postoje tako opti procesi reavanja problema koji se
mogu primeniti na sve probleme, primena deklarativne paradigme je
ograniena samo na specifine probleme odreene kategorije, za koje
postoji opti postupak reavanja. Na primer, na ovaj nain se razvijaju
programi za simulaciju razliitih sistema (trasporta, zakljuivanja,
politikih, ekonomskih i dr.). Njima se testiraju postavljene hipoteze ili
utvruju predvianja moguih reenja. Najee se raunaju
karakteristine vrednosti parametara problema za razliite vremenske
trenutke. Poseban podstrek primene deklarativne paradigme je
prouzrokovala primena formalne logike i matematike, kojim je definisan
opti postupak reavanja neke klase problema ili svih problema. U tom
pravcu se razvila i primena tzv. logikog programiranja (logic
programming).

FUNKCIONALNA PARADIGMA PROGRAMIRANJA

Funkcionalna paradigma dovodi do rezultata (funkcije)


na osnovu unosa odreenih podataka. Rezultat se
dobija sekvencijalnom primenom niza jednostavnih
funkcija, tj. programskih jedinica.

Po funkcionalnoj paradigmi, proces reavanja problema se svodi na unos


potrebnih podataka i dobijanje proizvedenih rezultata. Entitet koji
proizvodi rezultat kada mu se unesu odreeni podaci se u matematici
zove funkcija, te je tako ova pradigma i dobila naziv (funkcionalna
paradigma). Po ovoj paradigmi, program ine manje, prethodno
definisane programske jedinice (pripremljene za odreene funkcije), tako
da izlazni rezultat iz jedne programske jedinice, je ulazni podatak u
drugoj programskoj jedinici. Pri tome, obezbeuje se da poetni unos
podataka, daje na kraju eljeni razultat. Ustvari, primena funkcionalne
paradigme se svodi na primenu niza povezanih jednostavnih funkcija
koje zajedno, daju ukupno, krajnji rezultat koji odgovara postavljenoj
sloenoj funkciji. Na slici 3 je dat primer reavanja problema
uravnoteavanja vaih prihoda i rashoda.

26
Poglavlje 2: Programski jezici

Slika 2.2.3 Primer primene


funkcionalne paradigme

OBJEKTNO-ORIJENTISANA PARADIGMA
PROGRAMIRANJA

Objektno-orijentisana paradigma posmatra softverski


sistem kao skup objekata, sposobnih da sprovode
definisane akcije, a njihovom interkacijom, objekti
reavaju ukupni problem.

Objektno-orijentisana paradigma primenjuje proces programiranja koji


se najee naziva objektno-orijetisanim programiranjem. Softverski
sistem, po ovoj paradigmi, ini skup (kolekcija) jedinica, koje se nazivaju
objektima. Svaki od objekata je uvek spreman da izvede akcije nad
sobom, ili da zahteva akcije koje bi izvrili drugi objekti. Meusobnom
interakcijom, ovi objekti reavaju ukupni problem programske aplikacije.
Na primer, garfiki korisniki iterfejsi programskih sistema (na primer,
MS Word) imaju niz ikonica. Svaka ikonica predstavlja neki softverski
objekat. Kada kliknete neku ikonicu, ona reaguje nekom akcijom, jer
ste aktivirali odreeni skup procedura (koje se nazivaju metodima). Ovi
metodi opisuju reakciju objekta na razne dogaaje na koje objekat
reaguje. Ceo objektno-orijentisani sistem ini niz objekata, koji neki
eksterni dogaaj (na primer, klik neke ikonice korisnikog interfejsa)
pokree talas dogaaja, tako to aktivirani metodi nekih objekata,
proizvode dogaaje koji aktiviraju metode drugih objekata, i tako redom,
ceo sistem proizvodi eljenu reakciju usklaenu interakcijom pojedinih
njegovih objekata koji razmenjuju poruke koje aktiviraju pojedine metode
koji su sadrani u objektima. Jedan objekat ine podaci i metodi koji
manipiliu tim podacima. Svaki metod koristi odgovarajui algoritam
za tu manipulaciju podacima. Drugi objekti koji ele da manipuliu

27
Lekcija 01: Osnove programiranja

podacima drugog objekta, koriste metode tog objekta za njihovu


manipulaciju, umesto da imaju svoje metode za manipulaciju podacima
drugih objekata.
Na ovaj nain, programer ima manje posla, jer se jedan metod koristi u
mnogim i razliitim sluajevima. Jedna klasa definie i opisuje svojstva
(podatke i metode) objekata koje klasa predstavlja. Klasa u svakom
trenutku moe da stvara objekte za koje ti objekti koje stvara jedna klasa
imaju iste karakteristike, iako predstavljaju razliite entitete. Najee
imaju razliite vrednosti podataka. Na primer klasa Student kreira
objekte koji predstavljaju konkretne studente, sa konkretnim imenima i
prezimenima, kao njihovim specifinim podacima. Ako se u podacima
nalazi i h+godina roenja studenta, onda se moe definisati metod koji u
trenutku svog aktiviranja, moe da izrauna godine, mesece i dane ivota
studenta.
Programi razvijeni u skladu sa objektno-orijentisanom paradigmom (na
primer, C++), vrlo esto koriste i deo jezika koji primenjuje imperativnu
paradigmu (na primer C). Na taj nain, metodi koji se koriste u objektno-
orijentisanim sistemima su jedinice koje primenjuju imperativnu
paradigmu u tim programskim jedinicama. Objektno-orijentisani
programski jezici Java i C# su derivati programskog jezika C++. Zbog
toga, i oni od njega nasleuju to imperativno jezgro, jer i njihovi metodi
primenjuju imperativnu (proceduralnu) paradigmu.

2.2 PROGRAMSKI JEZICI VIEG NIVOA

OPTA SVOJSTVA PROGRAMSKIH JEZIKA

Programski jezik mora da zadovolji zahteve


univerzalnosti, primenljivosti i efikasnosti

Svaki programski jezik je sredstvo rada, i kao takav - treba da se precizno


projektuje. Neke programske jezike su napravili pojedinci (C++), neke
male grupe ljudi (C, Java), a neke su pravile velike grupe (ADA). Da
bi programski jezik bio zaista programski jezik, on mora da zadovolji
odreene zahteve.

Programski jezik mora biti univerzalan

To znai da svaki problem mora imati reenje koje se moe isprogramirati


u jeziku; naravno, ako je problem uopte reiv na raunaru. Ovo moda
izgleda kao strog zahtev, ali ga ak i mali programski jezici mogu ispuniti.
Svaki jezik koji moe definisati rekurzivne funkcije, univerzalan je. Sa
druge strane, jezik koji nema ni rekurziju ni iteraciju, ne moe se smatrati
univerzalnim. Programski jezik moe imati oblast za koju je namenjen.
Na primer, programski jezik iji su jedini tipovi podataka brojevi i nizovi,

28
Poglavlje 2: Programski jezici

moe se koristiti za reavanje numerikih problema, ali verovatno nee


biti pogodan za primenu u vetakoj inteligenciji.
Mora da postoji mogunost implementacije programskog jezika
na raunaru

To znai da mora postojati mogunost realizacije svakog dobro napisanog


programa. Matematika notacija se ne moe u potpunosti primeniti,
poto je pomou te notacije mogue formulisati probleme koje nije
mogue reiti na raunaru. Jezici kojima ljudi govore se takoe ne mogu
primeniti, poto su neprecizni i dvosmisleni.

Programski jezik u praksi treba da ima prihvatljivo efikasnu


implementaciju, tj. primenu u raunaru

Postoji mnogo razliitih miljenja o tome ta je prihvatljiva efikasnost.


Programeri koji koriste FORTRAN, C ili PASCAL mogu oekivati da njihovi
programi budu skoro isto tako efikasni kao i programi pisani u asembleru.
Programeri koji koriste PROLOG moraju prihvatiti manju efikasnost, ali se
to nadoknauje upotrebom jezika koji je pogodan za odreenu oblast.

PROGRAMSKA INSTRUKCIJA

Jedna naredba napisana u jeziku vieg nivoa odgovara


skupu jednostavnih mainskih instrukcija

S obzirom na to da je pisanje i odravanje programa na mainskom


jeziku komplikovano pogotovo ako se radi o veim i komplikovanim
programima, programi se piu u jezicima vieg nivoa kao to su Java, C/
C++, Perl, itd.

Jedna instrukcija u jeziku vieg nivoa obavlja zadatak koji je dosta


komplikovaniji u odnosu na mainsku instrukciju. Jedna naredba napisana
u jeziku vieg nivoa odgovara skupu jednostavnih mainskih instrukcija.
Primer:

double pi = 3.14156;

Ova jednostavna instrukcija napisana u Javi ili C/C++ jeziku prevodi se


na skup mainskih instrukcija koje:

rezerviu potrebnu memoriju


smetaju broj na odgovarajuu memorijsku lokaciju
belee tu lokaciju za kasniju upotrebu

Svi ovi detalji su sakriveni od programera, a ovakav nain pisanja je


jednostavniji i krai. Program napisan na jeziku visokog nivoa sastoji
se od sekvenci naredbi smetenih u tekstualnom fajlu. Tako napisan
program se zove izvorni kod (engl. source code).

29
Lekcija 01: Osnove programiranja

Primer:

public class MojPrviJavaProgram {


public static void main(String[] args) {
System.out.println("Zdravo, svete!");
}
}

Iz primera se vidi da je program napisan na jeziku vieg nivoa razumljiviji


oveku i da se sastoji od iskaza formiranih od rei jezika kojim ljudi
govore. Ovako napisani izvorni kod se smeta u tekstualni fajl sa imenom
MojPrviJavaProgram.java. Poto se izvorni kod sastoji od regularnog
teksta, pisanje i editovanje koda je mogue raditi iz jednostavnog
programa za editovanje teksta.

Procesor raunara ne moe da izvrava ovakav program poto procesor


razume samo mainske instrukcije. Da bi ovako napisani kod mogao da
se izvrava na raunaru, potrebno je izvorni kod pretvoriti u ono to
procesor razume, mainski kod. Poseban program koji se zove prevodilac
(engl.compiler) zaduen je za prevoenje koda. Kao ulaz, prevodilac
uzima tekstualne datoteke sa izvornim kodom i od njih pravi nove
datoteke koje sadre instrukcije u binarnom obliku. Kada se program
prevede, on postaje razumljiv raunaru. Tako dobijeni izvrni kod se
uitava u memoriju raunara, odakle procesor ita instrukcije i izvrava
ih.

SINTAKSA, SEMANTIKA I PRAGMATIKA


PROGRAMSKOG JEZIKA

Sintaksa programskog jezika se odnosi na formu


programa, a semantika programskog jezika se odnosi
na znaenje.

Svaki programski jezik ima svoju sintaksu i semantiku. Jezici koje ljudi
koriste u svakodnevnom ivotu, takoe imaju sintaksu i semantiku. Kod
programskih jezika postoji i pragmatika, koja je jedinstvena za njih.

Sintaksa programskog jezika se odnosi na formu programa. Ona


prezentuje nain na koji se moraju urediti izrazi, komande, deklaracije
i ostale programske konstrukcije - da bi se dobio ispravan program.
Sintaksa odreuje formu po kojoj programeri piu programe, drugi
programeri itaju i raunar obrauje.

Semantika programskog jezika se odnosi na znaenje programa. Ona


ukazuje na to kako se od ispravnog programa moe oekivati da se
ponaa. Semantika odreuje nain na koji programer komponuje

30
Poglavlje 2: Programski jezici

programe, kako ih drugi programeri razumeju i kako ih raunar


interpretira.

Pragmatika programskog jezika se odnosi na nain na koji se jezik


namerava da koristi u praksi. Pragmatika utie na to kako programeri
oekuju da se programi projektuju i implementiraju u praksi.

Sintaksa je vana, ali su semantika i pragmatika jo vanije. Ovo se moe


jasnije sagledati na primeru jednog eksperta koji razmilja o reenju
datog problema.
Programer prvo dekomponuje problem i identifikuje odgovarajue
programske jedinice (procedure, pakete, apstraktne tipove ili klase).

Posle toga, on razmatra odgovarajuu primenu svake od programskih


jedinica, odreuje tipove podataka i promenljivih koji postoje u jeziku,
definie kontrolne strukture, izuzetke itd.

Tek na kraju programer kodira program, tj. pie program u sintaksi


odreenog programskog jezika. Samo u ovoj zavrnoj fazi sintaksa
programskog jezika postaje bitna. Vrlo je vano da se primenasintakse
odreenog programa izvri to kasnije u procesu razvoja nekog
programa, jer svi nedostaci nekog programa nisu posledica sintakse
(sem u sluaju elementarnih greaka u njenoj primeni, to se lako
otklanja), ve u pogreno postavljenoj semantici.

Zato je projektovanje nekog programskog sistema mnogo znaajnije


nego isto programiranje tj. kodiranje, kada se primenjuje sintaksa
odreenog programskog jezika da bi se semantika programa pretvorila
u formu (sintaksu) koji prevodilac programa (interpreter ili kompajler)
razume i koji prevodi u izvrni, mainski program.

ISTORIJSKI PREGLED RAZVOJA PROGRAMSKIH


JEZIKA

Postoji vie generacija programskih jezika vieg nivoa

Piter Vegner je dao jednu klasifikaciju programskih jezika vieg nivoa,


koju emo i mi ovde koristiti. Kao kriterijum su koriene karakteristike
jezika koje su se po prvi put pojavile. Tako je prva generacija
programskih jezika nastala u periodu od 1954. do 1958. godine. To su
bili jezici:

FORTRAN I - podravao matematike izraze


ALGOL 58 - podravao matematike izraze
Flowmatic - podravao matematike izraze
IPL 5 - podravao matematike izraze

31
Lekcija 01: Osnove programiranja

Jezici druge generacije su se koristili tokom perioda od 1959. do 1961.


godine. To su bili jezici:

FORTRAN II - podravao potprograme, odvojeno kompajliranje


ALGOL 60 - blokovska struktura, tipovi podataka
COBOL - opis podataka, rukovanje datotekama
Lisp - obrada listi, pokazivai

Jezici tree generacije su se koristili tokom perioda od 1962. do 1970.


godine. To su bili jezici:

PL/1 FORTRAN + ALGOL + COBOL


ALGOL 68
Pascal
Simula

Period od 1970. do 1980. belei zastoj u razvoju programskih jezika.


Nastalo je mnogo novih jezika, ali je malo njih zaista zaivelo. Tako su
tada nastali, ali i opstali jezici kao to je Smalltalk (naslednik jezika
Simula), Ada (naslednik jezika ALGOL 68 i Pascal) ili C++ (izveden iz
jezika C i Simula).

Jezici prve generacije su se uglavnom koristili u naunim i inenjerskim


oblastima, tako da su uglavnom i reavani matematiki problemi. Jezici
kao to je na primer bio FORTRAN I su omoguavali programerima da piu
matematike formule oslobaajui ih potrebe da poznaju mainski jezik.

32
Poglavlje 2: Programski jezici

Slika 2.3.1 Prikaz istorijskog


razvoja programskih jezika

33
Lekcija 01: Osnove programiranja

TA JE JAVA?

Java nije samo objektno-orijentisani programski jezik.


Java je i tehnologija za razvoj objektno-orijentisanih
programa

Programski jezik Java razvio je tim strunjaka firme Sun Microsystems


poetkom 90-tih godina. Kreiran je s ciljem da omogui programerima
da jednom napisan program mogu da izvre na bilo kojoj maini, tj.
raunaru.

Java je jednostavan, objektno-orijentisan, distribuiran, interpretatorski,


robusan, bezbedan, arhitektonsko neutralni, prenosiv, visoko
performansni, vie nitni i dinamiki programski jezik.

Java je u poetku kreiran za razvoj veb alikacija. Danas je to jezik koji


se koristi za samostalne aplikacije koje se mogu izvravati na razliitim
platformama (raunarima i operativnim sistemima) na serverima, sitnim
raunarima, i mobilnim ureajima. Danas se Java esto koristi za razvoj
aplikacija instaliranih na veb serverima. Ove aplikacije obrauju podatke,
vre obraune, i generiu veb stranice.

Tzv. Java standard definie specifikaciju Java programskog jezika i Java


API (Application Programming Interface).

Specifikacija Java programskog jezika daje tehniku definiciju sintakse i


semantike Java jezika i moe se nai na: http://docs.oracle.com/javase/
specs/
Interfejs programske aplikacije (API), poznat i kao biblioteka, sadri
unapred definisane klase i interfejse koji se mogu koristiti pri razvoju
programa pisanih u Javi. Ova biblioteka je u stalnom razvoji ime se
proiruju i poboljavaju mogunosti razvoja softverskih sistema u Javi.
Java API se moe nai na: http://download.java.net/jdk8/docs/api/

Java se nudi u tri posebna izdanja (edicije):

Java Standard Edition (Java SE) za razvoj klijentskog dela aplikacije.


Razvijen program moe da se izvrava samostalno ili kao aplet u okviru
veb pregledaa (Web browser)..

Java Enterprise Edition (Java EE) za razvoj serverskog dela aplikacija,


kao to su Java servlets, JavaServer Pages (JSP), i JavaServer Faces (JSF)

Java Micro Edition (Java ME) za razvoj aplikacija za mobilne uraaje,


kao to su mobilni telefoni.

34
Poglavlje 2: Programski jezici

Oracle povremeno objavljuje nova izdanja Jave. Poslednje izdanje je


Java 8. Oracle objavljuje nove verzije Jave u obliku Java Development
Toolkit. (JDK). Sada je aktuelan JDK 8.

2.3 KONCEPTI TRADICIONALNOG


PROGRAMIRANJA

TRI KATEGORIJE ISKAZA U PROGRAMU

Program predstavlja skup iskaza koji mogu biti:


deklarativni iskazi, imperativni iskazi i komentari

Ovde emo prikazati primenu koncepta tradicionalnog programiranja


(imperativnog i objektno-orijentisanog) na primeru sa razliitim
programskim jezicima:
C imperativni (proceduralni) programski jezik tree generacije
C++ - objektno-orijentisani jezik koji nastao proirenjem C jezika
Java i C# - objektno-orijentisani jezici nastali kao derivati C++ jezika
FORTRAN i Ada imperativni jezici tree generacije, znai sa novim
proirenjima imaju mnoge karakteristike objektno-orijentisanih jezika
Ovde emo primeniti imperativnu paradigmu, jer je primenjuju i
objektno-orijentisani jezici, jer njihovi metodi predstavljaju kratke
imperativne (proceduralne) programe.
Program sadri skup iskaza koji spadaju u tri kategorije:

1. Deklarativni iskazi definiu prilagoenu terminologiju koja se


upotrebljava u programu, ko to su nazivi podataka koji se koriste
u programu.
2. Imperativni iskazi opisuju korake primenjenih algoritama
3. Komentari poboljavaju itljivost programa objanjavajui
svojstva programa u oveku razumljivijoj formi.

Imperativni program (ili metod u objektno-orujentisanom programu) ima


strukturu prikazanu na slici 1. Poinje sa nizom deklarativnih iskaza
koji opisuju podatke koji e biti korieni u programu. Zatim dolaze
imperativni iskazi koji opisuju algoritam po kom e se program izvravati.
Komentari se mogu, po potrebi, koristiti svuda u programu da bi se
poveala njegova razumljivost.

35
Lekcija 01: Osnove programiranja

Slika 2.4.1 Struktura tipinog


imperativnog programa ili
programske jedinice

PROMENLJIVE I TIPOVI PODATAKA

Promenljiva je naziv memorijske lokacije sa podatkom


promenljive vrednosti. Tip podataka odreuje nain na
koji se promenljiva smeta u memoriju i akcije koje se
mogu izvesti nad njom

Programski jezici visokog nivoa koriste imena za oznaavanje


memorijskih lokacija (umesto numerikih adresa). One su "promenljive"
jer podaci na tim lokacijama mogu promeniti svoju vrednost u toku
izvrenja programa. One se moraju definisati na poetku programa
deklarativnim iskazima da bi se oznaio njihov tip popodataka koji e biti
smeten u memorijskoj lokaciji koja je namenjena nekoj promenljivoj. Taj
tip se naziva tipom podataka (data type) i on odreuje nain na koji e
se promenljiva usladititi (memorisati) i operacije koje se mogu izvriti
nad njom. Primeri:

integer tip koji oznaava samo cele brojeve, sa tradicionalnim


aritmentikim operacijama i sa uporeivanjima njihovih vrednosti
float oznaava brojeve koji ne moraju biti celi brojevi i koji se
skladite sa decimalnom takom, a sa operacijama koje su sline
operacijama sa podatcima tipa integer.

36
Poglavlje 2: Programski jezici

Na poetku programa, programer daje deklarativne iskaze kojim


odreuje tipove svih podataka i promenljivih koje program kasnije koristi.
Na taj nain, daje instrukciju kompajleru o prostoru koji treba da obezbedi
na memorijskim lokacijama u glavnoj memoriji raunara na kojima e se
nalaziti vrednosti ovih podataka u toku izvrenja programa.
Jedan deklarativni iskaz se moe koristiti i za vie podataka i
promenljivih, kao na primer:

int Height, Width;

U najveem broj programskih jezika, mogue je u deklarativnom iskazu i


dodeliti promenljivoj odreenu, poetnu vrednost. Na primer:

int WeightLimit = 100;

Postoje i drugi tipovi podataka:

char oznaava podatak koji se sastoji od simbola (znakova), a


operacije nad njima najee vri uporeivanje simbola (npr. slova)
ili odreivanje da li se jedan simbol javlja pre drugog po alfabetskom
redosledu, ili se proverava da li se jedan niz simbola (string) javlja
untar i dr.

Iskaz:

char Letter, Digit;


se moe koristiti u jezicima C, C++, C# i Java radi deklarisanja da su
promenljive Letter i Digit tipa char.

LOGINE PROMENLJIVE

Logine promenljive se oznaavaju sa tipom Boolean i


predstavljaju podatak koji moe imati samo jednu od
dve mogue vrednosti: true (istinito) ili false
(pogreno).

U svim jezicima postoji i sledei tip podataka:

Boolean oznaava podatke koji mogu imati samo jednu od dve


mogue vrednosti: true (istinito) ili false (pogreno). Operacije nad
ovim tipom najee proveravaju da li je trenutna vrednost
promenljive true ili false.

Na primer, u sledeem iskazu se proverava da li je prethodno deklarisana


promenljiva tipa Boolean ima vrednost true.

if (LimitExceeded) then (...) else (...)

37
Lekcija 01: Osnove programiranja

Tipovi podataka koje smo do sada naveli (integer, float, char, Boolean)
se definiu u svim programskim jezicima, nazivaju se primitivnim
tipovima podataka. Pored njih, mogu se javiti tipovi podataka koji se
jo ne koriste ire, kao to su: slike(image), zvuni zapis (audio), video
zapis (video) i hipertekst (hypertext). U objektno-orijentisanim jezicima
programer moe da sam definie svoje tipove podataka.

STRUKTURA PODATAKA

Struktura podataka je konceptualno oblikovanje


podataka ili ureivanje podataka

Pored dodeljivanja nekoj promenljivoj odreeni tip podataka, mogu se


promenljive povezati sa strukturom podataka. Struktura podataka je
konceptualno oblikovanje podataka ili ureivanje podataka. Na primer,
neki tekst moe da se predstavi kao jedan dugaak niz (string) znakovnih
simbola (broj, slovo, posebni znaci...).

Vrlo esta struktura podataka je array (niz). Array je blok elemenata istog
tipa, kao to je jednodimenziona lista, ili dvodimenziona tabela, sa svojim
redovima i kolonama, ili neka viedimenziona tabela. Programski jezici
omoguavaju programeru da na poetku programa deklarie ime niza
(array), kao i duinu (broj elemenata) svake dimenzije viedimenzionog
niza. Na slici 2 je predstavljena struktura podataka u vidu jednog
dvodimenzionog niza podataka koja se deklarie sledeim iskazom:

int Scores[2][4];
Kada je neka struktura podataka deklarisana na poetku programa, onda
se ona moe pozivati svojim imenom, a svaki njen element (odreenog
primitivnog tipa) se moe preuzimati ili aurirati, pri emu do odreenog
elementa dolazimo ako znamo njegov indeks (redni broj) du svake
od dve dimenzije. Menjajui ove indekse, moe se pristupiti bilo kom
elementu, ako je potrebno, preko odgovarajue vrednosti indeksa svake
od dimenzije strukture.

38
Poglavlje 2: Programski jezici

Slika 2.4.2 Dvodimenzioni niz


sa dva reda i devet kolona

Pored nizova iji su svi elementi istog primitivnog tipa, postoje nizovi
koji sadre razliite tipove primitivnih podataka, te se ovi tipovi podataka
nazivaju agregatni tipovi , ili, se koriste i druga imena: structure, ili
slog (record) ili heterogeni niz, tj. heterogenious array. U ovom sluaju,
elementi bloka mogu biti razliitog tipa. Na primer, u jeziku C struktura
podataka pod nazivom Employee se moe iskazati na sledei nain:

HETEROGENE STRUKTURE

Heterogoni nizovi sadre razliite tipove primitivnih


podataka.

Pored nizova iji su svi elementi istog primitivnog tipa, postoje nizovi
koji sadre razliite tipove primitivnni podataka, te se ovi tipovi podataka
nazivaju agregatni tipovi , ili se koriste i druga imena: structure, ili
slog (record) ili heterogeni niz, tj. heterogenious array. U ovom sluaju,
elementi bloka mogu biti razliitog tipa. Na primer, u jeziku C struktura
podataka pod nazivom Employee se moe iskazati na sledei nain:

struct {char Name[25];


int Age;
float SkillRating;}
Employee

Elementi svake od tri dimenzije niza su razliitog tipa. Kada je jedna


struktura deklarisana na poetku programa, programer moe kasnije
da poziva ili da pristupa odreenom jednodimenzionom nizu (redu)
viedimenzione strukture, na taj nain to e u programu navesti ime
strukture (tj. Employee) staviti taku, a iza nje upisati ime polja (field)
strukture, tj. jednodimenzionog niza, kao na primer: Employee.Name ili
Emplyee.Age ili Employee.SkillRating .
Na slici 3 je prikazan jedan sluaj primene strukture Employee.

39
Lekcija 01: Osnove programiranja

Slika 2.4.3 Primer strukture


Employee

KONSTANTE

Konstanta je podatak koji ne menja vrednost u toku


izvrenja programa.

Ako neki podatak treba da ima nepromenjenu, konstantnu vrednost za


vreme izvrenja programa, onda se on naziva konstantnom. Konstanta se
u programskim jezicima C++ i Java deklarie na sledei nain:

C++: const int AirportAlt = 645;

Java: final int AirportAlt = 645;


Ovo znai da se identifikator AirportAlt povezuje sa vrednou 645,
tj. definie se konstanta sa imenom AirportAlt sa vrednou 645. Bilo
gde u progamu, kada se poziva konstanta AirportAlt, automastki e biti
koriena njena vrednost 645. Vrednost konstante se ne moe menjati za
vreme izvrenja programa.
Posle deklarisanja promenljivih i konstanti, programer poinje da opisuje
algoritme koje e koristiti. Za tu svrhu se koriste imperativni iskazi.
Najosnovniji imperativni iskaz je iskaz dodele. Na ovaj nain se odreeoj
promenljivoj, tj. njenoj lokaciji, biti dodeljena neka vrednost. Oznaka za
operaciju dodeljivanja je znak jednakosti =. S njegove leve strane je
ime promenljive, a s desne, izraz koji koji se izvrava i njegov rezultat
se dodeljuje promenljivoj s leve strane znaka jednakosti. Evo primera u
kome se zbir vrednosti promenljivih X i Y dodeljuje promenljivoj Z.
Bilo koji aritmetiki iskaz moe da bude izkaz sa desne strane znaka
dodeljivanja (=). Dobijeni rezultat posle izvrenja se dodeljuje
promenljivoj s leve strane znaka operacije dodele.

ISKAZI UPRAVLJANJA

Iskaz upravljanja definie redosled izvrnih operacija u


programu.

40
Poglavlje 2: Programski jezici

Iskaz upravljanja definie redosled izvrnih operacija u programu. Oni


izvravaju algoritam (postupak) reavanja problema. U svim jezicima se
koriste iskazi upravljanja poznati kao if-then-else and while iskazi. Njihov
pseudo kod, tj. kod koji objanjava njihov rad, ali nije namenjen raunaru
ve oveku jer je u obliku koji je lako razumljiv, izgleda ovako:

If-then-else:
if (uslov)
then (iskazA)
else (iskazB)
while:
while (uslov) do
(telo petlje)
U programskim jezicima C, C++, C# i Java , ovi iskazi bi bili napisani na
sledei nain:

if (uslov) iskazA
else iskazB;

while (uslov)
{telo petlje};

while (uslov)
{telo petlje};

switch:

Pored navedena dva iskaza upravljanja, esto se koriste i iskaz swich i


case. On omoguuje da se izabere jedna od ponuenih nekoliko sekvenci
programskih iskaza, zavisno od vrednosti dodeljenoj odreenoj
promenljivoj. Naprimer, iskaz:

switch (promenljiva) {
case 'A': iskazA; break;
case 'B': iskazB; break;
case 'C': iskazC; break;
default: iskazD}

napisan u C, C++, C# i Javi odreuje izvrenje jednog od ponuenih


iskaza (iskazA, ili iskazB, ili iskazC), zavisno da li promenljiva ima
vrednost A, B, ili C. Za neku drugu vrednost, program izvrava iskaz
iskazD.

41
Lekcija 01: Osnove programiranja

UPRAVLJAKA STRUKTURA FOR

Iskaz upravljanja for definie programsku petlju, tj.


sekvencu programskih iskaza, koja e se izvravati
onoliko puta koliko je definisano u for iskazu

Pored navedena tri iskaza upravljanja, u programskim jezicima C, C++,


C# i Java se koristi i iskaz upravljanja for. Ovaj iskaz definie programsku
petlju, tj. sekvencu programskih iskaza, koja e se izvravati onoliko
puta koliko je definisano u for iskazu, kao to je pokazano u primeru na
slici 4. U ovom primeru, telo petlje se izvrava tri puta, za sluaj kada
promenljiva Count ima vrednost 1, 2 i 3. Kada dobije vrednost 4 ili neku
drugu, izvrenje programa zaobilazi navedno telo programske petlje.

Primenom navedena etiri iskaza upravljanja, ili njihovih derivata u


nekim drugim programskim jezicima, raunarski programi izvrvaju svoje
predviene operacije. Ovo znai da bilo koji problem moete reiti
upotrebom ovih iskaza upravljanja.
Slika 2.4.4 Primer upotrebe
upravljake strukture for

KOMENTARI

Komentari su iskazi koji ne utiu na izvrenje programa


jer su namenjeni samo oveku jer mu daju objanjenja
pojedinih delova programa.

42
Poglavlje 2: Programski jezici

Vano je da programer napie svoj program tako da ga i drugi programeri


mogu lako da razumeju, jer e drugi programeri raditi u odravanju
nekog programa ili u daljem njegovom razvoju. Isti program moe da se
napie tako da drugi programeri mogu s mukom da shvate kako program
radi, a moe i da se napie tako da svima bude odmah jasno kako on
radi. Vrlo je vano da programer upravo tako napie svoj program, tako
da svi mogu lako da razumeju njegovu ideju i nain njenog izvrenja
u programu. Zbog toga, svi programski jezici omoguavaju iskaze koje
nazivamo komentarima (coments), jer njihov sadraj ne utie na
izvrenje programa, jer sadre samo tekst koji je namenjen oveku. Taj
tekst objanjava odreene delove programa.
U jezicima C++, C# i Java se koriste dva naina za unos komentara
u program. U prvom, komentar se unosi u vie redova, a oznaava se
poetak i kraj redova sa komentarima. Evo primera:

/* Ovde se unosi tekst komentara u jednom ili vie redova */

Drugi nain omoguava unos teksta komentara samo u jednom redu:

// Ovde se unosi tekst kratkog komentara u samo jednom redu

Iskazi sa komentarima se mogu koristiti bilo gde u programu. Dobra


praksa je da se na poetku programa, ili programske jedinica, u vie
redova preko komentara da objanjenje ta program radi, ta su mu
promenljive i emu one slue, i koji algoritam program koristi i sa kojom
svrhom. Kasnije u programu, poeljno je, gde treba, ubaciti komentar u
jednom ili par redova, u kojima se objanjava ta ili zbog ega se koriste
naredni programski iskazi (ili instrukcije ili naredbe).

2.4 IZVRENJE PROGRAMA

KOMPAJLER

Proces prevoenja proizvodi izvorni kod u mainskom


jeziku. U sluaju programa ispisanih u Javi, dobija se
program u vidu meukoda, poznat po nazivu bytecode.

Predvodilac ili kompajler je sistemski program kojim se program napisan


u programskom jeziku vieg nivoa prevodi u mainski jezik koji raunar
razume i moe da izvri.

Proces prevoenja(kompajliranja) je proces u kome se izvorni kod


napisan u jeziku vieg nivoa prevodi u format instrukcija koje raunar
razume.Programi koji vre ovaj proces zovu se prevodioci (engl.
compilers).

43
Lekcija 01: Osnove programiranja

Posao prevodioca je da od jednog ili vie tekstualnih datoteka koje sadre


izvorni kod napisan na jeziku vieg nivoa prevede, spoji i kao izlaz da
izvrnu datoteku koja sadri instrukcije razumljive od strane raunara,
izvrni kod.

Slika 1 prikazuje proces prevoenja izvornog koda u mainski kod,


tj.izvrni kod. Njegovim aktiviranjem, program se izvrava, a rezultat se
prikazuje na ekranu monitora.
Slika 2.5.1 Proces prevoenja
izvornog koda u mainski kod

U sluaju programskog jezika Java, posle prevoenja izvornog koda, ne


dobija se odmah izvrni (mainski) kod, ve program u meu kodu,
poznat kao Bytecode.
Slika 2.5.2 Proces prevoenja
izvornog koda u Javi, preko
Bytecode-a u mainski kod

PREVOENJE I IZVRENJE PROGRAMA U JAVI

Program u izvornom kodu (u datoteci program.java),


posle prevoenja, nalazi se u meukodu, sa nazivom
bytecode (u datoteci program.class), koji izvrava
virtualna maina Jave, tj.JVM.

Ceo proces izgleda ovako:

1. Pomou editora teksta pie se izvorni kod na jeziku vieg nivoa


2. Tekst sa izvornim kodom smeta se na disk pod nekim imenom
3. Pokree se prevodilac i prosleuje mu se naziv jedne datoteke ili
liste datoteka sa izvornim kodom
4. Prevodilac transformie instrukcije iz izvornih datoteka u
mainske instrukcije i obino pravi neki posredni binarni fajl
5. Posredni binarni fajlovi se onda spajaju pomou programa koji se
naziva linker, ovaj proces je poznat kao linkovanje, i generie se
datoteka sa izvrnim kodom koja se snima na disk

Kada se dobije izvrna datoteka, onda se ona moe startovati, to u


principu znai uitavanje sadraja instrukcija iz izvrne datoteke u
memoriju raunara odakle ih procesor ita i izvrava. Kod nekih
programskih jezika kao to je Java, proces se malo razlikuje. Kao proizvod

44
Poglavlje 2: Programski jezici

prevoenja dobija se takozvani bajtkod (engl. bytecode), kod slian


mainskom jeziku, ali ovaj kod je namenjen za izvravanje preko
posebnog programa koji se zove virtuelna maina.
Slika 3 prikazuje proces prevoenja i izvrenja programa napisanog u
Javi, sa oznakama ekstenzija u nazivima datoteka.

1. Datoteka u kojoj je napisan program u izvornom programu u Javi:


program.java
2. Datoteka u kojoj je smeten meukod, tj. Bytecode:
program.class

Slika 2.5.3 Proces prevoenja


programa u Javi sa oznakama
ekstenzija fajlova

Ako je program pod nazivom Java Virtual Machine, ili krae JVM instaliran
na nekom raunaru, on moe da izvri program u meukodu Jave, tj. u
bytecode-u. Ovo omoguava portabilnost programa pisanih u Javi, jer
mogu da se izvravaju na svim raunarima na kojima je instalirana Java,
tj. JVM.

INTERPRETER

Interpreter prevodi program pisan u programskom


jeziku vieg nivoa u izvrni kod u toku izvrenja
programa.

Jedan od problema programskih jezika visokog nivoa je prenosivost


na razliite platforme. Razliite arhitekture procesora koriste razliite
mainske instrukcije, pa je prenosivost oteana. Da bi se program
izvravao na drugoj platformi potrebno je prevesti program sa jezika
vieg nivoa na mainski jezik te platforme (slika 4). Ovaj zadatak je
nekada lak, a nekada moe biti veoma teak. Ovaj problem se donekle
moe prevazii upotrebom jezika vieg nivoa koji se ne kompajliraju pre
pokretanja ve se taj proces obavlja u toku izvravanja. Ovakvi programi
se zovu interpreteri. Izvorni kod koji obrauje interpreter se ne razlikuje
od izvornog koda koji obrauje kompajler. I ovde se radi i tekstualnom
fajlu koji sadri instrukcije. Izvorni kod se pie takoe u tekst editoru, a
datoteka uva na disku. Razlika je u tome to se kod interpretera izvorni
kod prevodi na mainski u toku izvravanja. Interpreter uitava izvorni
kod i parsira ga, a zatim prevodi u mainski kodkoji procesor direktno
izvrava.

45
Lekcija 01: Osnove programiranja

Slika 2.5.4 Primena


interpretera

Na slici 5 j prikazan proces istovremeni proces prevoenja i izvrenja


programa u sluaju primene interpreter.
Slika 2.5.5 Proces
istovremenog prevoenja i
prikaza dobijenog rezultata

Prednost ovakvog naina rada je to je izvorni kod prenosiv na svim


platformama za koje postoji intrepreter, datoteka se jednostavno
prekopira na raunar i pokrene interpreterom.

Mana je u tome to je brzina izvravanja manja u odnosu na prevodioce.


Drugo, greke se otkrivaju tek u toku izvravanja dok se kod prevodioca
otkrivaju za vreme prevoenja, dakle pre pokretanja.

Neki od poznatih programskih jezika koji sadre interpretere su BASIC,


Perl, Python, Ruby, itd.

VIRTUALNA MAINA

Virtualna maina je sistemski softver koji primenjuje


kombinovani model prevoenja i interpretiranja.

Da bi se prevazili problemi interpretera i zadrale prednosti prevodilaca,


uvedene su virtuelne maine. Programski jezici vieg nivoa koji su
namenjeni izvravanju na virtuelnim mainama koriste kombinovani
model prevoenja i interpretiranja.

46
Poglavlje 2: Programski jezici

Slika 2.5.6 Koncept virtualne


maine

Kombinovani model se sastoji od prevoenja koda u takozvani bajtkod


(engl.bytecode) ili p-code (portable code), a onda se tako generisani
kod izvrava (interpretira) od strane virtuelne maine
(interpretera).Jedan od primera ovakvog modela je programski jezik Java

Java bajtkod je forma izvrnog koda koji je razumljiv od strane Java


virtuelne maine (engl. JVM Java Virtual Machine). Ovaj kod generie
Java kompajler, mada postoje drugi jezici i kompajleri koji proizvode
bajtkod kao to su Scala, Groovy, Clojure itd.

Bajtkod je slian mainskom jeziku sa tom razlikom to ne zavisi od


konkretne arhitekture procesora. Ideja je da se instrukcije sa jezika vieg
nivoa prevedu na mikroinstrukcije koje se onda interpretiraju od strane
virtuelne maine. Na ovaj nain se zadrava portabilnost kao kod
interpretera, ali se sa druge strane dobijaju i prednosti prevoenja kao
to su provera greaka i slino. Takoe ovako dobijene mikroinstrukcije
se lake prevode na konkretne mainske instrukcije platforme na kojoj je
pokrenuta virtuelna maina pa je postignuta neka optimalna sredina oba
modela.

47
Lekcija 01: Osnove programiranja

JAVA (COMPILER, INTERPRETER, JIT) (VIDEO)

Video objanjava ta je kompajler, ta je interpreter, a


ta JIT.

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

KAKO RADI JVM? (VIDEO)

Video prikazuje funkciju JVM i njen nain rada.

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

IZVRENJE JAVA PROGRAMA (VIDEO)

Daje se opis procesa pripreme i izvrenja Java


programa

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

48
Poglavlje 3: Uvod u programiranje u Javi

Poglavlje 3 Uvod u programiranje


u Javi

UVOD

Programske platforme obezbeuju programske


biblioteke i softverske alate neophodne za uspean
razvoj i izvrenje programa

Radi lakeg razvoja softvera i i znatnog ubrzanja celog procesa, razvijene


su posebne programske platforme. U ovom delu e biti rei o :

Java Runtime Environment - elementarnog dela Jave koji je potreban


za pokretanje i izvravanje Java programa
Java Development Kit - skupa programskih alata za razvoj Java
aplikacija
Kreiranju i prevodjenju prvog java programa

JAVA RUNTIME ENVIRONMENT

Java Runtime Environment (JRE) predstavlja


elementarni deo Jave koji je potreban za pokretanje i
izvravanje Java programa

Radi lakeg razvoja softvera i i znatnog ubrzanja celog procesa, razvijene


su posebne programske platforme. U ovom delu e biti rei o :

Java Runtime Environment - elementarnog dela Jave koji je potreban


za pokretanje i izvravanje Java programa
Java Development Kit - skup programskih alata za razvoj Java
aplikacija

Kreiranju i prevodjenju prvog Java programa

Java Runtime Environment (JRE) predstavlja elementarni deo Jave


koji je potreban za pokretanje i izvravanje Java programa.
JRE sadri:

49
Lekcija 01: Osnove programiranja

Java virtuelnu mainu (engl. Java Virtual Machine - JVM )


Biblioteke i druge komponente koje omoguavaju izvravanje Java
aplikacije

Aktuelna verzija JRE je 8. Preuzimanje i instalacija se moe izvriti sa


sledee adrese: http://www.java.com/en/download/index.jsp

JRE je potreban element za izvrenje Java programa, ali ne i za razvoj


Java programa.
Slika 3.1.1 JDK - Java
Development Kit - Run time -
JDK izvrna verzija

JAVA DEVELOPMENT KIT (JDK)

Java Development Kit (JDK) predstavlja skup


programskih alata za razvoj Java aplikacija.

Java Development Kit (JDK) predstavlja skup programskih alata za


razvoj Java aplikacija. JDK sadri:

Java Runtime Environment


Alate za razvoj, prevoenje, praenje i debagovanje aplikacija (slika
1)

Spisak alata koje sadri moete videti na sledeem linku:

http://en.wikipedia.org/wiki/Java_Development_Kit

50
Poglavlje 3: Uvod u programiranje u Javi

Slika 3.1.2 JDK -Java


Development Kit - razvojna
verzija

Aktuelna verzija je 8. Preuzimanje i instalacija se moe izvriti sa


sledeeg linka:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Napomena da je za razvoj aplikacija u Javi potrebno preuzeti Java


Development Kit (JDK), a ne Java Runtime Environment (JRE), poto
ovaj paket omoguava samo pokretanje Java aplikacija.

Pre preuzimanja potrebno je prihvatiti uslove korienja (License


Agreement). Prilikom preuzimanja je potrebno odabrati verziju za
operativni sistem koji je instaliran na raunaru na kome e se instalirati
JDK. Po preuzimanju potrebno je pokrenuti instalaciju i pratiti upustva do
kraja instalacije.

PODEAVANJE OPERATIVNOG SISTEMA

Path je promenljiva operativnog sistema definie koje


se aplikacije mogu pozivati iz komandnog prompta.

Path je promenljiva operativnog sistema definie koje se aplikacije mogu


pozivati iz komandnog prompta, u ovom sluaju mi trebamo omoguiti da
se aplikacije javac.exe i java.exe mogu pozivati iz komandnog prompta.

Ako se Path promenljiva ne podesi valjano prilikom poziva aplikacije


javac.exe iz komandnog prompta, moete dobiti sledeu poruku:

'java' is not recognized as an internal or external command, operatible


program or batch file.

51
Lekcija 01: Osnove programiranja

Posle instalacije, neophodno je obaviti jo nekoliko koraka, prvi je


podeavanje putanja do instalacije JDK-a:

Podeavanje putanja u MS Windows 2000/XP

Uz pretpostavku da je JDK instaliran u C:\Program Files\java\jdk folderu:

1. Otvorite My Computer i odaberite Properties


2. Kliknite na dugme Environment variables i selektujte Advanced
karticu
3. Selektujte Path i u polju za vrednost treba dodati sledeu liniju:

;C:\Program Files\java\jdk\bin;

Podeavanje putanja na Linux, Solaris, FreeBSD i drugim UNIX sistemima

Posle prijave na sistem, u tekst editoru treba otvoriti fajls ~/.bashrc i


dodati sledee dve linije na kraju fajla:

export JAVA_HOME="/putanja/do/jave"
export PATH="$JAVA_HOME/bin:$PATH"

RAZLIKE IZMEU JDK, JRE I JVM (VIDEO)

Video pokazuje razlike izmeu JDK, JRE i JVM.

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

3.1 KREIRANJE I PREVOENJE PRVOG


JAVA PROGRAMA

PRVI PROGRAM

Kreiranje programa MojPrviJavaProgram.java

Program pisan u Javi se moe pokrenuti sa komandnog promta


pozivanjem fajla koji sadri Java aplikacije u izvornom (Java) obliku.

Sledei kod predstavlja prvi program koji se obino daje kada se poinje
sa nekim programskim jezikom. To je program koji na ekranu treba da
ispie Zdravo, svete!.

52
Poglavlje 3: Uvod u programiranje u Javi

public class MojPrviJavaProgram{


public static void main(String[] args){
System.out.println("Zdravo, svete!");
}
}

Ime ove datoteke mora biti MojPrviJavaProgram.java i to ime mora


odgovarati imenu klase. Kod definisanja imena mora se voditi rauna o
velikim i malim slovima (o emu emo govoriti u narednom predavanju),
pritom ime klase i ime datoteke moraju i po tome odgovarati jedno
drugom. Prvi red programa

public class MojPrviJavaProgram{

govori da je u pitanju izvorni program koji definie klasu po imenu


MojPrviJavaProgram.
Mali programi se obino sastoje od samo jedne klase, a klasa predstavlja
deo programa. (Kasnije emo detaljnije definisati klase.) Neke klase
mogu da sadre mnogo redova koda. Sve to pripada jednoj klasi mora
da se postavi izmeu otvorene i zatvorene velike zagrade ({ i }). Ime
klase, (a time i ime datoteke) sami odreujete. Ime se mora sastojati od
slova ili brojeva. Prvi karakter mora biti slovo, a unutar imena ne smeju
postojati praznine. Obino imena klasa poinju velikim slovima, ali to nije
obavezno. Ime izvorne datoteke obavezno ima ekstenziju .java (pie se
malim slovima). Obino se u jednoj datoteci nalazi samo jedna klasa, ali
se u istoj datoteci moe nai i vie klasa. Rad:

public static void main(String[] args)

pokazuje gde program poinje.

Re main znai da je ovo glavni metod, odnosno metod kojim virtuelna


maina poinje izvrenje programa. Taj glavni metod u ovom sluaju
sadri samo jedan iskaz:

System.out.println("Zdravo, svete!");

Ovaj iskaz prikazuje tekst koji je dat u okviru dvostrukih navodnika na


ekran.

IZVRENJE PROGRAMA

Izvrenje programa MojPrviProgram.java koji prikazuje


pozdrav Zdravo, svete!

Potrebno je otvoriti editor teksta (Notepad...) i uneti sledei tekst:

53
Lekcija 01: Osnove programiranja

public static void main(String[] args){


System.out.println("Zdravo, svete!");
}
}

Zatim, potrebno je sauvati fajl pod imenom: MojPrviJavaProgram.java u


proizvoljni folder, recimo D:\MojiProgrami\

Nakon toga, potrebno je otvoriti komandni prompt i pozicionirati se u


folder u kome je sauvan fajl (naredba cd) i uneti sledeu naredbu ime
emo pozvati kompajler koji e izvriti prevoenje (kompajliranje):

(Neophodno je prethodno instalirati Java Development Kit i podesiti Path


promenljivu operativnog sistema)

javac mojPrviJavaProgram.java

Ovim postupkom emo dobiti fajl pod nazivom


MojPrviJavaProgram.class, koji predstavlja bajtkod. Ako nema
greaka treba uneti sledeu naredbu:

java mojPrviJavaProgram.class

Ovim pokreemo program i dobijamo izlaz

"Zdravo, svete!"

Slika 3.2.1 Pokretanje


programa

54
Poglavlje 3: Uvod u programiranje u Javi

SINTAKSNE GREKE

Sintaksne greke se mogu javiti pri prevoenju


izvornog programa (koda).

U sluaju da nismo prethodnu proceduru valjano ispotovali, mogu se


javiti greke. Sledi programski kod programa sa namerno napisanom
grekom:

public Class MojPrviJavaProgram{


public static void main(String[] args) {
System.out.println("Zdravo, svete!");
}
}

Kljuna re class je ovde napisana velikim poetnim slovom, pa ova


vrsta greke predstavlja sintaksnu greku. Sintaksne greke predstavljaju
"gramatike greke" kod rada sa nekim programskim jezikom.

Ako se ovaj program kompajlira, prikazae se sledee:

D:\MojiProgrami>javac MojPrviJavaProgram.java
compiling: MojPrviJavaProgram.java
MojPrviJavaProgram.java:1: Class or interface declaration
expected.
Class MojPrviJavaProgram
^
1 error

Kompajler je pokuao da prevede izvorni kod u bajkod, ali je naiao na


veliko slovo C tamo gde to nije oekivao. Poruka o greci koju je dao, nije
ba najjasnija. Te poruke nikad nisu potpuno jasne. Ipak, ova greka bar
pokazuje u kojem redu se kompajler zbunio. U ovom sluaju kompajler
nije napravio novu izvrnu datoteku, poto je prevoenje zaustavljeno.

Da bi program ponovo proradio, moramo da ispravimo greku - potrebno


je vratiti se se u editor i promeniti veliko slovo C u malo, a nakon toga
ponoviti ciklus prevoenja i izvravanja.

Potrebno je izvravati sledeu proceduru sve dok program ne bude radio


kako treba:

1. Unesite program uz pomo nekog editora teksta i snimiti


program na disk
2. Kompajlirajti program pomou komande javac
3. Ako postoje sintaksne greke, vratite se na korak 1
4. Pokrenite program pomou komande java
5. Ako program ne radi kako treba, vratiti se na korak 1
6. Ako sve radi kako treba - procedura je zavrena

55
Lekcija 01: Osnove programiranja

LOGIKE GREKE

Logike greke su neoekivane i javljaju se u radu


programa.

Ako je program uspeno preveden (kompajliran) ne mora da znai da


e on ispravno raditi. Greke koje se manifestuju u radu programa, a
koje niste oekivali se nazivaju logikim grekama, ili bagovima u
programu.

Ako ste, na primer, dobili zadatak da odtampate tekst Zdravo, svete!,


a napiete sledei program, on e se uspeno prevesti, ali neete
ostvariti ono to ste oekivali.

public class MojPrviJavaProgram{


public static void main (String[] args) {
System.out.println("Zdravo, problemi!");
}
}

Logike greke se mnogo ee javljaju u programima koji su dui od


naeg primera. Mnogo tee ih je otkriti i one se uglavnom otkrivaju tek
kasnije kada program pone da se primenjuje u praksi. Zbog toga je
vrlo vano izvriti testiranje programa pre realnog putanja u upotrebu.
Testiranje treba da rade i programeri, ali i krajnji korisnici u realnim
uslovima. Testiranje je posebna pria, o kojoj e kasnije biti vie rei.

PISANJE PRVOG JAVA PROGRAMA (VIDEO)

Video pokazuje kako da va prvi program pripremite i


izvrite.

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

3.2 JEDNOSTAVAN PROGRAM U JAVI

KAKO PROGRAM IZGLEDA I RADI?

Programi u Javi se izvravaju iz main metoda.

Ispod je prikazan listing jednostavnog programa koji pri svom izvrenju


prikazuje na monitoru raunara tekst Welcome to Java.. Zbog toga,
naziv datoteke koja sadri program, nazvana je Welcome.java

56
Poglavlje 3: Uvod u programiranje u Javi

1 public class Welcome {


2 public static void main(String[] args) {
3 // Prikaz poruke Welcome to Java! na monitoru
4 System.out.println("Welcome to Java!");
5 }
6 }

Rezultat na monitoru:

Welcome to Java!

Prikazani brojevi nisu deo programa. Navedeni su samo radi reference, tj.
pri objanjenju programskih linija.

Linija 1 definie klasu. Svaki program u Javi (nazivaemo ih Java


programima) mora da ima najmanje jednu klasu. Svaka klasa ima svoje
ime, koje poinje velikim slovom. U naem primeru, naziv klase je
Welcome. ta je klasa? To je skup podataka i metoda (malih programa)
definisana izmeu dve velike zagrade, ispred kojih se nalazi kljuna re
class, i naziv klase, npr. public class Welcome { ..}..
O konceptu klasa govoriemo u kasnijim lekcijama.

Linija 2 definie metod koji se naziva main. Metod je mali program. Svaki
program u Javi mora da ima metod main i izvrenje programa poinje i
kontrolie se iz metoda main. Klasa moe da ima vie metoda, ali metod
main mora da ima, jer on inicira poetak izvrenja programa.

ta je metod? Metod je konstrukcija (mali program) koja sadri


programske instrukcije na pisane u programskom jeziku, tj. u Javi. Metod
main u ovom programu sadri instrukciju System.out.println . Ova
instrukcija prikazuje tekst Welcome to Java na ekranu monitora. Tekst
definisan izmeu znakova navodnika (npr. Welcome to Java) se u Javi
naziva stringom. String je pojam u programiranju koji oznaava niz
znakova (tj. Slova, brojeva, specijalnih znakova...). String poinje i
zavrava se znakom navodnika. Svaka instrukcija u Javi se zavrava
zapetom i takom (;).

KOMENTARI U PROGRAMU

Komentari pomau programerima da objasne program


koji piu, a ostalim programerima da razumeju kako
program radi.

Program pisan u Javi sadri kljune rei, tj. rezervisane rei koje imaju
specifino znaenje koje kompajler (prevodilac izvornog programa)
razume. Te kljune rei se ne mogu u programu koristiti za neke druge

57
Lekcija 01: Osnove programiranja

svrhe, jer imaju rezervisano znaenje. Na primer, kada kompajler vidi


kljunu re class, on to razume kao ime (naziv) klase. Druge kljune rei
u programu su public, static i void.

1 public class Welcome {


2 public static void main(String[] args) {
3 // Prikaz poruke Welcome to Java! na monitoru
4 System.out.println("Welcome to Java!");
5 }
6 }

Linja 3 sadri komentar koji dokumentuje ta je ovaj program i kako


on radi. Komentari pomau programerima da objasne program koji piu,
a ostalim programerima da razumeju kako program radi. Linije sa
komentarima ne predstavljaju programske instrukcije, jer program moe
da radi i bez njih. Meutim, preporuka je da programeri koriste to vie
linija sa komentarima, kako bi program bio dobro dokumentovan, tj.
objanjen. To znatno pomae ostalima da razumeju kako program radi.
U Javi, linija sa komentarom poinje sa dve kose crte (//) po liniji. Drugi
nain da se definie jedna ili vie linija sa komentarima, je da se pre
komentara stavi kosa crta i zvezdica (/*), a na kraju komentara se stavi
zvezdica i kosa crta (*/). Na ovaj nain se definie komentar u bloku ili u
pasusu.

Kada kompajler vidi //, on ignorie celu liniju, tj. tekst iza // do kraja
linije. Meutim, kada kompajler vidi /* on preskae jednu ili vie linija u
programu, sve dok ne doe do */ , to je za njega oznaka za prestanak
ignorisanja tog dela programa. Primer jednog komentara u bloku se daje
dole

// This application program displays Welcome to Java!


/* This application program displays Welcome to Java! */
/* This application program
displays Welcome to Java! */

PROGRAMSKI BLOKOVI

Programski blokovi, koji poinju sa { i zavravaju se sa


} definiu grupu instrukcija metoda, ili grupu podataka
i metoda, u sluaju klase.

Par velikih zagrada ({.}) u Java programu definie programski blok


koji grupie komponente programa koje se nalaze izmeu ovih zagrada.
Svaki blok poinje sa otvorenom velikom zagradom ({), a zavrava se
zatvorenom velikom zagradom (}).

58
Poglavlje 3: Uvod u programiranje u Javi

Svaka klasa ima blok klase koji grupie podatke i metode klase.Takoe,
svaki metod sadri blok metoda koji grupie programske instrukcije (ili
iskaze) metoda.

Blokovi mogu da budu povezani, tako da se jedan nalazi unutar drugog i


tako redom, kao to je pokazano na slici:
Slika 3.3.1 Blokovi u
programu

Svaka otvorena velika zagrada mora da se zatvara sa drugom velikom


zagradom zatvaranja. Uvek kada otkucate otvorenu veliku zagradu,
odmah otkucajte i zatvorenu veliku zagradu istog programskog bloka,
da je ne bi zaboravili, to onda izaziva javljanje greke u programu.
Najvei broj Java IDE automatski ubacuju zatvorene velike zagrade
posle svake otvorene velike zagrade.

U sledeoj slici , prikazana je upotreba nekih specijalnih znakova u Javi.


Slika 3.3.2 Upotreba
specijalnih znakova u Javi

Programi pisani u Javi su osetljivi (reaguju) na velika slova. Zato, ne


smete naziv metoda, npr. main, napisati sa Main.

Java ima svoja pravila pisanja programa, tj. programskih instrukcija


(sintaksa) i ako ne potujete ta pravila sintakse, kompajler e vam javiti
greke u programu. Ako doe do javljanje greaka sintakse pri
prevoenju programa, treba da ih otklonite u izvornom kodu, i onda
ponoviti prevoenje programa pozivanja kompajlera javac.

PRIMERI MALIH PROGRAMA

Primeri sa vie poruka i sa matematikim izrazom.

59
Lekcija 01: Osnove programiranja

Sledei program sadri tri poruke sa grekama:

1 public class WelcomeWithThreeMessages {


2 public static void main(String[] args) {
3 System.out.println("Programming is fun!");
4 System.out.println("Fundamentals First");
5 System.out.println("Problem Driven");
6 }
7 }

Rezultat na monitoru:

Programming is fun!

Fundamentals First

Problem Driven

Sledei program obraunava vrednost sledeeg razlomka:

1 public class ComputeExpression {


2 public static void main(String[] args) {
3 System.out.println((10.5 + 2 * 3) / (45 3.5));
4 }
5 }

Rezultat na monitoru:

0.39759036144578314

60
Poglavlje 3: Uvod u programiranje u Javi

Operator mnoenja u Javi je *. Kao to vidite, relativno je jednostavno


napisati matematiki izraz u Javi.

PROCES KREIRANJA, PREVOENJA I IZVRENJA


PROGRAMA

Java program se kreira u tekst editoru ili u Java IDE,


prevodi i izvrava sa komandne linije komandnog
prozora raunara, ili korienjem Java IDE.

Svaki program proe kroz aktivnosti kreiranja, prevoenja i izvrenja


(slika 1). Taj proces se ponavlja, ako se jave greke pri prevoenju ili
pri izvrenju ili se dobijaju pogreni rezultati. Proces se ponavlja posle
otklanjanja uzroka greke.

Moete koristiti bilo koji editor teksta ili Java IDE za kreiranje ili menjanje
izvornog koda programa. Prevoenje i izvrenje programa moete izvriti
i sa komandne linije prikazane na komandnom prozoru raunara.

Na slici 3 je prikazan Notepad editor sa ispisanim programom


Welcome.java.
Slika 3.3.3 Program
Welcome.java unet preko
Notepad-a

61
Lekcija 01: Osnove programiranja

Slika 3.3.4 Prikaz procesa


prevoenja izvornog koda u
Javi, u bajtkod, a onda u
mainski kod koji izvrava
program

IZVRENJE PROGRAMA

Program Welcome.java se prevodi sa prevodiocem


javac Welcom.java u bajtkod, koji je u fajlu
Welcome.class, koja se izvrava sa: java Welcome.

Na slici 5 je prikazan komandni prozor u kome se na komandnoj liniji


poziva Java kompajler (prevodilac) sa javac, i onda prevodi izvorni kod u
bajtkod, sa komandom java.

java
Slika 3.3.5 Komandni prozor u
kome se na komandnoj liniji
poziva Java kompajler i
prevodi izvorni kod u bajtkod

62
Poglavlje 3: Uvod u programiranje u Javi

Upozorenje: Ne koristite proirenje .class u komandnoj liniji pri


izvrenju programa. Za izvrenje programa otkucajte : java ImeKlase

Kada se izvrava Java program, JVM prvo uzima bajtkod klase u


memoriji, upotrebom programa koji se naziva class loader. Ako va
program upotrebljava druge klase, class loader dinamiki preuzima
datoteke pred samu njihovu upotrebu.

Posle preuzimanja klase , JVM upotrebljava program koji se naziva


verifiktorom bajtkoda radi provere ispravnosti bajtkoda i
obezbeuje kontrole da bajtkod ne prekri sigurnosne restrikcije i
provere da izvri program bez optereenja ostalih programa i
raunara.

KORIENJE KOMENTARA

Pored komentara u linijama (//) i u bloku linija (/*....*/),


treba koristiti i javadoc komentarisanje celih klasa ili
metoda.

Program treba tako pisati da se moe lako itati i razumeti.


Dokumentaciju programa ine napomene i komentari koji su ubaeni
u tekst programa u izvrnom obliku. Stil programiranja i njegova
dokumentacija je isto tako vana kao i dobro programiranje, jer smanjuju
mogunost javljanja greke, i ine program itljivijim. Ovde se daju
najvaniji saveti za ispravno pisanje Java programa.

Stavite apstrakt na poetku svakog programa koji objanjava ta


program radi, navedite njegova glavna svojstva i funkcije, kao i
specifine tehnike koje upotrebljava. U sluaju velikih programa, ukljuite
i komentare koji opisuju glavne korake njegovog rada i objasnite ono to
je u samom programu teko itljivo.

Pored korienja linija sa komentarima, koje poinju sa //, i blokova


komentara koje poinju a sa /* , Java podrava i komentare specifikog
tipa, koji se nazivaju javadoc komentarima. Komentari javadoc poinju
sa /** a zavravaju se sa */.. Oni se dobijaju u jednoj HTML datoteci
upotrebom javadoc naredbe, definisane u JDK.

Upotrebljavajte javadoc comentare (/**..*/) za komentarisanje cele


klase ili celog metoda. Ovi komentari moraju da budu ispred zaglavlja
klase ili metoda da bi mogli da budu izvueni u javadoc HTML datoteku.
Za komentarisanje unutar metoda, upotrebljavajte linije sa komentarom
(//).

63
Lekcija 01: Osnove programiranja

Primena konzistentnog stila u uvlaenju linije (indentation), ini


programe jasnijim i lake itljivim, lakim za ispravljanje i odravanje.
Uvlaenje reda se koristi radi ilustracije strukturnih odnosa izmeu
programa i njegovih komponenti ili instrukcija. Java moe da ita
program i u sluaju da sadri sve instrukcije u jednom vrlo dugom redu,
ali ljudi lake itaju i odravaju program ije instrukcije su poreane sa
razliitim uvlaenjem linija. Uvlaenje (indent)svake podkomponente ili
instrukcije za najmanje dva blanko otkucaja, tako da se ta uvlaenja
meusobno nadometaju.

Jedno prazno polje bi trebalo dodati na obe strane zbog binarnog


operatora , ko to je pokazano u sledeim instrukcijama:

System.out.println(3+4*4); Ovo je lo stil

System.out.println(3 + 4 * 4); Ovo je dobar stil

STILOVI ZA BLOKOVE

Postoji dva stila koji se preporuuju za pisanje blokova:


stil sledee linije i stil kraja linije. Kada izaberete jedan
od njih, morate se konsistentno njega pridravati, jer
meanje stilova ne v

Blok je grupa instrukcija (iskaza) navedenih izmeu velikih zagrada.


Postoje dva popularna stila za prikazivanje blokova (slika 6):

stil sledee linije, i


stil kraja linije.

Slika 3.3.6 Dva stila pisanja


programskih blokova

Stil sledee linije povezuje velike zagrade po vertikali i ini program


lake itljivim, dok stil kraja linije tedi prostor i moe da pomogne
da se izbegnu neke greke pri programiranju. Oba stila su prihvatljiva.
Izbor zavisi od linog afiniteta programera ili organizacije. Meutim,
kada izaberete jedan od ova dva stila, koristite ga konzistentno, jer nije
preporuljivo ih meati.

U ovom predmetu emo koristiti stil kraja linije, da bi bili konzistentni sa


Java API izvornim kodom.

64
Poglavlje 4: Razvojno okruenje NetBeans

Poglavlje 4 Razvojno okruenje


NetBeans

INTEGRISANO RAZVOJNO OKRUENJE

Integrisana razvojna okruenja (engl. IDE Integrated


Development Environment) su aplikacije koji
omoguavaju brz i efikasan razvoj aplikacija

Za razvoj Java aplikacija dovoljan je JDK i editor teksta. Meutim, takav


razvoj bi bio naporan i spor.

Integrisana razvojna okruenja (engl. IDE Integrated Development


Environment) su aplikacije koji omoguavaju brz i efikasan razvoj
aplikacija.

Prednosti korienja IDE:

Editovanje koda, kompletiranje koda skraenicama i preicama,


syntax highlighing, pomo (hints)
Pretraivanje koda, refaktorisanje koda
Kompajliranje i izvravanje, integrisan debugger
arobnjaci (wizards) koji olakavaju komplikovane zadatke
Kreiranje izvrnih i instalacionih paketa

Neka razvojna okruenja za programski jezik Java:

NetBeans besplatno razvojno okruenje, jednostavno za uenje i


korienje, sadri sve neophodne elemente potrebne za razvoj aplikacija
svih obima, moe se proirivati dodacima.

Eclipse besplatno razvojno okruenje, malo sloenije za korienje,


sadri sve neophodne elemente potrebne za razvoj aplikacija svih obima,
moe se proitivati dodacima.

IntelliJ IDEA komercijalno okruenje, veoma mono za sve tipove


aplikacija, ogroman broj dodataka, odlina podrka kako za Javu tako i
za ostale jezike koje proizvode bajtkod kao to su Scala i Groovy, odlini
dodaci i mogunosti.

65
Lekcija 01: Osnove programiranja

PREUZIMANJE

Razvojno okruenje NetBeans IDE (Integrated


Development Environment) je namenjeno razvoju
razliitih vrsta programa

Razvojno okruenje NetBeans IDE (Integrated Development


Environment) je namenjeno razvoju razliitih vrsta programa. Ovde
emo predstaviti osnovne mogunosti tog alata za razvoj Java programa
i pokazati sve neophodne korake na primeru radnog programa
MojPrviJavaProgram.

Za razvoj Java programa u okruenju NetBeans je potrebno instalirati:

JDK 8 (Java Development Kit, version 8)


NetBeans IDE 8

Razvojno okruenje NetBeans se moe izabrati sa sledee adrese, pri


emu je potrebno izabrati paket Java SE:

https://netbeans.org/downloads/

Instalacija ovog neophodnog softvera je jednostavna i svodi se na


prihvatanje ponuenih podrazumevanih opcija i prelaska na sledee
korake dok se ne zavri instalacija. Ipak, da ne biste naknadno morali
da runo konfiguriete pojedine parametre, obratite panju na redosled
instaliranja: najpre instalirajte JDK, a nakon toga NetBeans.
Glavni prozor se sastoji od linije menija i linije alata na vrhu prozora,
dok preostali deo prozora dele etiri panela u kojima se prikazuju
informacije relevantne za aktuelni program koji se razvija. Sa leve strane
se nalaze panel projekata i panel navigatora, sa desne strane se nalazi
radni panel, a na dnu se nalazi izlazni panel.

Ukoliko neki od panela nije trenutno prikazan, moe se aktivirati iz menija


Window.

66
Poglavlje 4: Razvojno okruenje NetBeans

Slika 4.1 Paneli

LINJA MENIJA U GLAVNOM PROZORU


NETBEANS-A

Svaki deo glavnog prozora ima svoju namenu.

Namena pojedinih delova glavnog prozora okruenja NetBeans su:

Linija menija sadri sve menije iz kojih se mogu birati opcije za


postojee funkcije NetBeans-a. Osnovni meniji su:

Meni File je namenjen za formiranje novih i otvaranje postojeih


projekata, za formiranje novih i otvaranje postojeih fajlova, kao i za
ostale standardne aktivnosti u vezi sa fajlovima od kojih se sastoji
Java aplikacija.
Meni Edit ima potpuno istu funkciju za rad sa tekstom programa
kao istoimeni meniji u ostalim grafikim okruenjima (na primer:
Undo, Redo, Copy, Paste, Find,Replace).
Meni Run je namenjen za izvravanje prevedenog programa. Pored
toga, u ovom meniju se moe pokrenuti debager radi otklanjanja
greaka, testiranja i detaljnog praenja stanja promenjivih u toku
rada programa.

67
Lekcija 01: Osnove programiranja

Slika 4.2 Linije menija

LINIJA PANELA GLAVNOG PROZORA


NETBEANS-A

Linija sa alatima sadri ikone alata koji omoguavaju


bri pristup razliitim funkcijama NetBeans-a nego
preko menija

Linija sa alatima sadri ikone alata koji omoguavaju bri pristup


razliitim funkcijama NetBeans-a nego preko menija.

Panel projekata sadri kartice Projects, Files i Services u kojima se


hijerarhijski prikazuju projekti, datoteke i servisi koji su trenutno aktuelni
za program.

Panel navigatora prikazuje detalje stavki koje su izabrane u jednoj od


tri pomenute kartice panela projekata.

U desnom, radnom panelu se prikazuje sadraj datoteka koje su


izabrane u jednoj od kartica panela projekata. Sadraj otvorenih datoteka
u radnom panelu se moe menjati, jer se oni automatski otvaraju u
integrisanom editoru NetBeans-a.

U donjem, izlaznom panelu se prikazuju sve vane poruke tokom


prevoenja programa, kao i ulazno-izlazni podaci samog programa tokom
njegovog izvravanja.

68
Poglavlje 4: Razvojno okruenje NetBeans

Slika 4.3 Glavni prozor


NetBeans-a

NETBEANS PROJEKAT

Osnovna jedinica rada u okruenju NetBeans je


projekat.

Osnovna jedinica rada u okruenju NetBeans je projekat. Projekat koji


odgovara, grubo govorei, jednom Java programu i sastoji se od njegovih
izvornih datoteka, pridruenih informacija o tome kako ih treba prevesti
i izvriti, kao i od ostalih tehnikih detalja o putanjama, dokumentaciji
i slino. Sve ove podatke NetBeans smeta u direktorijumu projekta
(sa poddirektorijumima) koji se pravi na osnovu imena projekta. Da bi
se omoguilo grupisanje vie povezanih projekata na jednom mestu,
svi direktorijumi takvih projekata se inicijalno prave u drugom datom
direktorijumu koji se obino naziva radni direktorijum (engl. workplace ili
workbench).

Naravno, o svemu ovome vodi rauna uglavnom sam softver, pa za razne


vrste uobiajenih Java projekata (obina aplikacija, biblioteka klasa, Web
aplikacija i tako dalje) postoje standardni abloni od kojih se inicijalno
pravi odgovarajui projekat. Nakon poetnog formiranja projekta na
osnovu odgovrajueg ablona, projekat se otvara u glavnom prozoru
NetBeans-a tako to se njegova logika struktura prikazuje u kartici
Projects i struktura datoteka u kartici Files panela projekata. Pored toga,
u radnom panelu se otvara glavna datoteka projekta koji sadri poetni
izvorni tekst Java programa
Da biste napravili novi projekat nakon pokretanja NetBeans-a, postupite
na sledei nain (pritiskom na dugme Next odgovarajueg prozora u
svakom koraku, prelazite na sledei korak):

69
Lekcija 01: Osnove programiranja

U glavnom prozoru izaberite opciju File > New Project, kao to je to


prikazano sa slici:
Slika 4.4 Glavni prozor menija

DEFINISANJE NOVOG PROJEKTA

U prozorima NewProject i New Java Application unose


se odreeni podaci neophodni za kreiranje novog
projekta razvoja softvera.

U otvorenom prozoru New Project izaberite kategoriju Java i zatim opciju


Java Application, kao to je to prikazano sa slici:

70
Poglavlje 4: Razvojno okruenje NetBeans

Slika 4.5 Prozor NewProject

U otvorenom prozoru New Java Application treba upisati sledee podatke


o novom projektu (to je ilustrovano sa slici 6 ):
U polju Project Name upiite MojPrviProjekat za ime projekta.
Slika 4.6 Upisivanje teksta u
polje Project Name

U polju Project Location, pritiskom na dugmeBrowse izaberite


direktorijum radnog prostora gde elite da se nalaze svi projekti. Obratite
panju na to da taj direktorijum mora biti prethodno napravljen (u
primeru je to NetBeansProjects, koji se automatski kreira). U polju Create
Main Class upiite MojPrviJavaProgram za ime glavne klase Java
programa.

71
Lekcija 01: Osnove programiranja

IZGLED PRAZNOG OBJEKTA

Primenom komande Create Main Class formira se


kostur glavne klase MojPrviJavaProgram

Poto ste u postupku pravljenja projekta izabrali polje Create Main Class,
u okruenju NetBeans se formira kostur glavne klase
MojPrviJavaProgram.

Automatski generisan tekst u datoteci MojPrviJavaProgram.java zamenite


tekstom radnog programa MojPrviJavaProgram na slici .

Promene u datoteci MojPrviJavaProgram.java sauvajte birajui opciju


File > Save (preica za ovu opciju je Ctrl + S).
Slika 4.7 Memorisanje
projekta

POKRETANJE PROJEKTA

Primena komande Run File i Run Project

Da biste preveli Java program, izaberite opcijuRun > Run File u glavnom
prozoru NetBeans-a. Preica za ovu opciju je Shift + F6. Ulazno-izlazni
podaci tokom izvravanja programa se takoe prikazuju u izlaznom
panelu tog prozora. Jedan primer izvravanja programa
MojPrviJavaProgram je prikazan na slici:

Ukoliko elite da program izvrite vie puta (moda sa promenjenim


ulaznim podacima), to postiete ponovnim biranjem opcije Run > Run
Project.

72
Poglavlje 4: Razvojno okruenje NetBeans

Slika 4.8 Pokretanje projekta,


tj. izvrenje programa

Ako se rezultat prevoenja zavrava porukom BUILD SUCCESSFUL, to


znai da je prevoenje bilo uspeno i da se program moe izvriti. U
suprotnom, ako se rezultat prevoenja zavrava porukom BUILD FAILED,
program sadri greke koje se moraju ispraviti. Greke se u izlaznom
panelu prikazuju u obliku hiperveza ijim praenjem moete prei u
izvorni tekst radnog panela na mestu odgovarajue greke. Na taj nain
moete ispraviti sve greke i ponovo prevesti program izborom opcije
Run > Run Project. Ovaj postupak morate ponoviti sve dok prevoenje ne
bude uspeno.

STRUKTURA PROJEKTA

U panelu projekta Files prikazuju se komponentne


datoteke projekta MojPrviJavaProjekat

U konkretnom primeru, uspeno prevedeni projekat se sastoji od


bajtkoda u datoteci MojPrviJavaProgram.class. Lokacije datoteka raznih
komponenti projekta MojPrviProjekat moete pregledati otvaranjem
karticeFiles panela projekata i proirivanjem pojedinih vorova prikazane
strukture. Jedan primer ove mogunosti je prikazan na slici.

Pored ovih osnovnih mogunosti, grafiko okruenje NetBeans prua jo


mnogo toga to je potrebno za razvoj sloenih i profesionalnih aplikacija.
Dodatne informacije o tome moete nai u priruniku sa sledeeg linka:

http://docs.oracle.com/cd/E40938_01/doc.74/e40142/toc.htm

73
Lekcija 01: Osnove programiranja

Slika 4.9 Struktura projekta

UVOD U NETBEANS (VIDEO)

Daje se instrukcija za preuzimanje i za instaliranje


NetBeans IDE na vaem raunaru

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

74
Poglavlje 4: Razvojno okruenje NetBeans

HELLO WORLD UPOTREBOM NETBEANS


(VIDEO)

Pokazuje se kreiranje programa Hello World primenom


NetBeans IDE-a

Ova lekcija sadri video materijal. Ukoliko elite da pogledate


ovaj video morate da otvorite LAMS lekciju.

75
Lekcija 01: Osnove programiranja

Poglavlje 5 Pokazna veba

ZADATAK 1

Kreiranje prvog projekta CS101-V01 i klase


Zadatak1.java

Zadatak 1:

Kreirati java projekat koji ete zvati CS101V01. Main klasa treba da
se zove Zadatak1. Ovaj zadatak treba da prikae 3 poruke na ekranu:
Dobrodoli u Javu, Dobrodoli u kompjuterske nauke i Programiranje je
zabavno.

Objanjenje:

Vano je obratiti panju na samu strukturu programa. Prva linija definie


klasu programa. Svaki Java program mora imati najmanje jednu klasu ije
ime se po konvenciji pie poetnim velikim slovom. U ovom sluaju smo
kreirali klasu Zadatak1.

Svaka klasa moe sadrati nekoliko metoda, ali najvaniji je metod main
koji predstavlja prvu taku u izvravanju programa. Svaki
program poinje da se izvrava metodom main.

Blok koji se izvrava u okviru neke metode mora poinjati otvorenom


skupovom zagradom, a zavravati se zatvorenom {}.

Metoda koju koristimo za tampanje poruka je System.out.println


Reenje:

public class Zadatak1 {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak1();
}
public Zadatak1(){
/*
System.out.printLn je metoda biblioteke System koja
omoguava ispisivanje poruke na ekranu. Razlika
izmeu print i printLn je da li e se tekst

76
Poglavlje 5: Pokazna veba

prikazati u novom redu ili ne


*/
System.out.println("Welcome to java");
System.out.println("Welcome to Computer Science");
System.out.println("Programming is fun");
}
}

ZADATAK 2

Kreiranje novog projekta CS101-V01.Z2 i klasu


Zadatak2.java

Zatadatk 2:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z2. U


njemu treba da postoji pokretaka klasa Zadatak2. Napisati program koji
e da ispisuje Dobrodoli u Javu 5 puta. Poeljno je korienje petlji.

Objanjenje:

Kao i u prethodnom primeru, program poinjemo definisanjem imena


klase, a onda sam program piemo u okviru metode main od koje poinje
izvravanje programa.

Ono to nije pomenuto u prethodnom primeru je da sve ono to se


nalazi izmeu /** i */ predstavlja komentar koji se ne prevodi prilikom
kompajliranja, a slui da objasni metodu ili deo koda.
Reenje:

public class Zadatak2 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak2();
}

public Zadatak2() {
System.out.println("Dobrodoli u Javu");
System.out.println("Dobrodoli u Javu");
System.out.println("Dobrodoli u Javu");
System.out.println("Dobrodoli u Javu");
System.out.println("Dobrodoli u Javu");
}

77
Lekcija 01: Osnove programiranja

ZADATAK 3

Kreiranje novog projekta CS101-V01.Z3 i klasu


Zadatak3.java

Zadatak 3:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z3. U


njemu treba da postoji pokretaka klasa Zadatak3. Napraviti program
koji ispisuje sledei tekst:
Slika 5.1 Ovo treba da
program prikae na monitoru

Objanjenje:

Celokupna slika predstavlja kombinaciju tampanja 4 linije teksta sa


odgovarajuim rasporedom karaktera, kako bi se formirao odgovarajui
prikaz.
Reenje:

public class Zadatak3 {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak3();
}

public Zadatak3() {
/*
\r\n su karakteri koji nam omoguavaju da napravimo novi
red
u stringu
*/
System.out.println(" J A V V A \r\n"
+ " J A A V V A A \r\n"
+ " J J AAAAA V V AAAAA\r\n"
+ " J J A A V A A\r\n");

78
Poglavlje 5: Pokazna veba

}
}

ZADATAK 4

Kreiranje novog projekta CS101-V01.Z4 i klasu


Zadatak4.java

Zadatak 4:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z4. U


njemu treba da postoji pokretaka klasa Zadatak4. Napraviti program
koji ispisuje sledei tekst:

79
Lekcija 01: Osnove programiranja

Slika 5.2 Ovo treba da


program prikae na monitoru

Objanjenje:

Celokupna slika predstavlja kombinaciju tampanja 5 linija teksta sa


odgovarajuim rasporedom karaktera, kako bi se formirao odgovarajui
prikaz matrice.
Reenje:

public class Zadatak4 {


public static void main(String[] args) {
System.out.println("a a^2 a^3");
System.out.println("1 1 1");
System.out.println("2 4 8");
System.out.println("3 9 27");
System.out.println("4 16 64");

80
Poglavlje 5: Pokazna veba

}
}

Napredno reenje:

public class Zadatak4 {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
/**
* Ispisujemo zaglavlje tabele
* a zatim ponavljamo 4 puta ispis a a*a i a*a*a s tim
* to je a svaki put vei za 1. 1 2 4 2 4 8 3 9 27
*/
System.out.println("a a^2 a^3");
for(int a=1;a<=4;a++){
System.out.println(a+" "+a*a+" "+a*a*a);
}

ZADATAK 5

Kreiranje novog projekta CS101-V01.Z5 i klasu


Zadatak5.java

Zadatak 5:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z5. U


njemu treba da postoji pokretaka klasa Zadatak5. Napraviti program
koji rauna sledei zadatak:

Objanjenje:

81
Lekcija 01: Osnove programiranja

U ovom primeru je prvi put upotrebljen tip podataka double. Tipovi


podataka e biti razmatrani detaljno kasnije, ali je vano to da double
predstavlja realni broj.

Kao rezultat operacije deljenje oekujemo realan broj, to i oznaavamo


tako to vrednost promenljive result deklariemo kao double tip.

Svaka promenljiva u programu mora imati svoj tip koji se navodi ispred
imena.
Reenje:

public class Zadatak5 {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak5();
}
public Zadatak5() {
double result = ((9.5*4.5) - (2.5*3))/(45.5-3.5);
System.out.println("rezultat je = " + result);
}
}

ZADATAK 6

Kreiranje novog projekta CS101-V01.Z6 i klasu


Zadatak6.jav

Zadatak 6:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z6. U


njemu treba da postoji pokretaka klasa Zadatak6. Napraviti program
koji sabira brojeve od 1 do 9.

(1+2+3+4+5+6+7+8+9)

Objanjenje:

U naprednom reenju programa je prvi put upotrebljen tip podataka int


koji predstavlja celobrojni podatak i oznaava da e promenljiva sum na
kraju izvrenja petlje imati vrednost koja je ceo broj.

Kljuna re for oznaava brojaku petlju. U ovom sluaju vrednost


celobrojne promenljive e uzimati vrednosti poev od 1 i u narednih 9
prolaza kroz blok poveavati svoju vrednost za 1 i dodavati je na sumu

82
Poglavlje 5: Pokazna veba

iz prethodne iteracije. Na kraju poslednje iteracije dobiemo zbir svih


prethodnih, to je suma koja je traena.
Reenje:

public class Zadatak6 {


public static void main(String[] args) {
System.out.println(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9);
}
}

Napredno reenje

public class Zadatak6 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
/**
* Suma svih brojeva od 1 do 9. Suma se svaki put poveava
* za i koji predstavlja iterator kroz petlju. U svakom
* krugu petlje i je vei za jedan (i++).
*/
int sum = 0;
for (int i = 1; i <= 9; i++) {
sum += i;
}
System.out.println("Zbir je = " + sum);
}
}

ZADATAK 7

Kreiranje novog projekta CS101-V01.Z7 i klasu


Zadatak7.java

Zadatak 7:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z7. U


njemu treba da postoji pokretaka klasa Zadatak7. Napraviti program
koji rauna matematiko Pi koristei sledeu formulu:

4 * [1.0 (1/3)+(1/5)-(1/7)+(1/9)-(1/11)]
Reenje:

public class Zadatak7 {


/**
* @param args the command line arguments

83
Lekcija 01: Osnove programiranja

*/
public static void main(String[] args) {
new Zadatak7();
}
public Zadatak7() {
double result = 4 * (1.0 (1/3)+(1/5)-(1/7)+(1/
9)-(1/11));
System.out.println("Rezultat = " result);
}
}

ZADATAK 8

Kreiranje novog projekta CS101-V01.Z8 i klasu


Zadatak8.java

Zadatak 8:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z8. U


njemu treba da postoji pokretaka klasa Zadatak8. Napisati program koji
prikazuje na ekranu povrinu i obim kruga za radius od 5.5 koristei
sledeu formulu.

Obim = 2*r*Pi.

Povrina = radius * radius * Pi.

Objanjenje:

Iako je u primeru za Pi upotrebljena direktna vrednost, to treba izbegavati


jer Java sadri biblioteku Math koja sadri konstante poput PI, pa je
ea i tanija upotreba umesto 3.14159 koristiti Math.PI. Pored Math
biblioteke, Java sadri mnotvo drugih o emu e biti rei kasnije.

izracunajObimKruga(5,5) i izracunajPovrsinuKruga(5,5) predstavljaju


primer metoda. Obiaj je da se za kod koji se ponavlja nekoliko puta
ili predstavlja neku celinu, definie funkcija . Na taj nain se izbegava
ponavljanje u kodu jer ponovno korienje koda e biti ostvareno
ponovnim pozivom funkcije, a ne kopiranjem istog koda.
Reenje:

public class Zadatak8 {


public static void main(String[] args) {
System.out.println(5.5 * 5.5 * 3.14159);
System.out.println(2 * 5.5 * 3.14159);
}
}

84
Poglavlje 5: Pokazna veba

Napredno reenje:

public class Zadatak8 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak8();
}

public Zadatak8() {
System.out.println("Obim kruga je " +
izracunajObimKruga(5.5));
System.out.println("Povrsina kruga je " +
izracunajPovrsinuKruga(5.5));
}

/**
* Ovo je metoda. Metoda omoguava da neku operaciju koju
esto ponavljate
* svedete na minimalnu koliinu koda Naprimer ukoliko treba
na 10 mesta da
* raunate povrinu kruga moete napsati jednu metodu i
pozvati je umesto
* da svaki put piete kod za proraun. Ova metoda prima
radius koji je tipa
* double i takoe vraa double rezultat
*
* @param radius
* @return ova metoda vraa 2 pomnoeno sa radiusom i sa
Pi.
*/
public double izracunajObimKruga(double radius) {
return 2 * radius * Math.PI;
}

/**
* Metoda koja proraunava povrinu kruga. Prima radius koji
je tipa double
* i vraa double kao rezultet.
*
* @param radius
* @return
*/
public double izracunajPovrsinuKruga(double radius) {
return radius * radius * Math.PI;
}

85
Lekcija 01: Osnove programiranja

ZADATAK 9

Kreiranje novog projekta CS101-V01.Z9 i klasu


Zadatak9.java

Zadatak 9:

Kreirati novi paket unutar CS101-V01 koji e se zvati CS101-V01.Z9. U


njemu treba da postoji pokretaka klasa Zadatak9. Napraviti proram koji
prikazuje povrinu pravougaonika ako je visina 7.9 i irina 4.5.
Objanjenje:

Primer je ekvivalent prethodnom primeru, osim formule po kojoj se


rauna traena povrina.
Reenje:

public class Zadatak9 {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak9();
}
public Zadatak9() {
System.out.println("Povrsina pravougaonika je: " +
(4.5*7.9));
}
}

Napredno reenje:

public class Zadatak8 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak8();
}

public Zadatak8() {
System.out.println("Obim kruga je " +
izracunajObimKruga(5.5));
System.out.println("Povrsina kruga je " +
izracunajPovrsinuKruga(5.5));
}

/**
* Ovo je metoda. Metoda omoguava da neku operaciju koju
esto ponavljate

86
Poglavlje 5: Pokazna veba

* svedete na minimalnu koliinu koda Naprimer ukoliko treba


na 10 mesta da
* raunate povrinu kruga moete napsati jednu metodu i
pozvati je umesto
* da svaki put piete kod za proraun. Ova metoda prima
radius koji je tipa
* double i takoe vraa double rezultat
*
* @param radius
* @return ova metoda vraa 2 pomnoeno sa radiusom i sa
Pi.
*/
public double izracunajObimKruga(double radius) {
return 2 * radius * Math.PI;
}

public class Zadatak9 {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Zadatak9();
}

public Zadatak9() {
System.out.println("Povrsina pravougaonika je: " +
izracunajPovrsinuPravougaonika(4.5, 7.9));
}
/**
* Metoda koja prima sirinu i visinu i vraca ove dve
vrednosti pomnoene.
* @param sirina
* @param visina
* @return
*/
public double izracunajPovrsinuPravougaonika(double sirina,
double visina) {
return sirina * visina;
}
}

87
Lekcija 01: Osnove programiranja

Poglavlje 6 Zadaci za individualni


rad

ZADACI ZA INDIVIDUALNU VEBU- 1., 2.


I 3.

Definisanje 1., 2. i 3. zadatka

1. Zadatak:

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z1.


U njemu treba da postoji pokretaka klasa Zadatak1. Napraviti program
koji prikazuje aritmetiku sredinu tri uneta broja a, b, c ako su a=4, b=7,
c=1.

2. Zadatak:

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z2. U


njemu treba da postoji pokretaka klasa Zadatak2. Napisati program koji
prevodi iz 145 funti u kilograme (1 funta = 400 g)

3. Zadatak:

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z3.


U njemu treba da postoji pokretaka klasa Zadatak3. Ukoliko atletiar
za 45 minuta i 30 sekundi predje 14 kilometara, napisati program koji
rauna njegovu brzinu u jedinicama milja/sat ako se zna da je 1 milja 1,6
kilometara.

ZADACI ZA INDIVIDUALNU VEBU- 4. I


5.

Definisanje 4. i 5. zadatka

4. Zadatak:

88
Poglavlje 6: Zadaci za individualni rad

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z4.


U njemu treba da postoji pokretaka klasa Zadatak4. Aproksimacija Pi
moe da se izrauna korienjem sledee formule:

Pi=4(11/3+1/51/7+1/91/11)

4(11/3+1/51/7+1/91/11)

4(11/3+1/51/7+1/91/11+1/13)

Napisati program koji prikazuje rezultat izraza (1) i (2):

5. Zadatak :

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z5. U


njemu treba da postoji pokretaka klasa Zadatak5. Napisati program koji
dimenzije A4 formata papira zadat u centimetrima prevodi u ine. (A4
ima dimenzije 21.0cm x 29.7cm, a 1 in = 2.54cm

ZADACI ZA INDIVIDUALNU VEBU - 6.,


7. I 8.

Definisanje 6., 7. i 8. zadatka

6. Zadatak:

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z6.


U njemu treba da postoji pokretaka klasa Zadatak6. Napisati program
koji izraunava hipotenuzu pravouglog trougla ako su date dve njegove
katete.

7. Zadatak

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z7.


U njemu treba da postoji pokretaka klasa Zadatak7. Pretpostaviti da
atletiar tri 24 milja za vreme od 1 sata, 40 minuta i 35 sekundi. Napisati
program koji rauna prosenu brzinu u kilometrima po satu. ( 1 milja =
1.6 km)

8. Zadatak:

Kreirati novi paket unutar CS101-IV01 koji e se zvati CS101-IV01.Z8. U


njemu treba da postoji pokretaka klasa Zadatak8. U.S. Census Bureau
projects stanovnitva zasniva se na sledeim pretpostavkama:

Jedno roenje svakih 7 sekundi

89
Lekcija 01: Osnove programiranja

Jedna smrt svakih 13 sekundi


Jedan novi imigrant svakih 45 sekundi.

Napisati program koji prikazuje broj stanovnitva za svaku od narednih


5 godina. Pretpostavimo da je trenutna populacija 312 032 486, a jedna
godina ima 365 dana.

90
Poglavlje 7: Domai zadatak br.1

Poglavlje 7 Domai zadatak br.1

SPECIFIKACIJA DOMAEG ZADATKA BR.1

Definie se zadatak za pisanje programa


MojPrviJavaProgram.java

Na osnovu vebe potrebno je:

Preuzeti i instalirati Java Runtime Environment (JRE) i Java


Development Kit (JDK) i podesiti PATH promenljivu operativnog
sistema

Napisati program pod nazivom MojPrviJavaProgram koji prikazuje


poruku : "Zdravo, Ime Prezime BrojIndeksa!" (pri emu ime, prezime i
broj indeksa menjate Vaim konkretnim podacima)

Koristei naredbe javac i java kompajlirati i pokrenuti program

Snimak ekrana smestiti u folder CS101-DZ01-Ime-Prezime-


BrojIndeksa
Nakon uspene instalacije NetBeans IDE-a, potrebno je pokrenuti
NetBeans, a zatim opciju File -> New Project -> Java -> Java
Application

Project name treba postaviti na MojPrviProjekat, ime e biti kreiran


folder u folderu koji je postavljen u okviru opcije Project folder
(podrazumevano D:\Users\Admin\Documents\NetBeansProjects\)

U okviru opcije Create Main Class uneti MojPrviJavaProgram i kliknuti


na dugme Finish.

Pokrenuti program

Snimak ekrana i odgovarajui NetBeans projekat smestiti u folder


CS101-DZ01-Ime-Prezime-BrojIndeksa. Zipovani folder
CS101-DZ01-Ime-Prezime-BrojIndeksa poslati predmetnom
asistentu (aleksandra.arsic@metropolitan.ac.rs)(grupa 1 i 2 u Beogradu
I Internet studenti, i rados.pavicevic@metropolita.ac.rs - grupa 3 u
Beogradu, I jovana.jovic@metropolitan.ac.rs u Niu) u mejlu sa naslovom
(subject) CS101-DZ01, inae se nee raunati.

91
Lekcija 01: Osnove programiranja

Zakljucak

ZAKLJUAK

Rezime ta smo nauili u lekciji 01.

U predavanju smo se upoznali sa:

Osnovnim elementima raunarskog sistema


Hardverskim komponentama
Osnovnim jedinicama za predstavljanje podataka
Mainskim instrukcijama
Jezicima vieg nivoa
Kompajlerima, interpreterima i virtuelnom mainom
Istorijom programskih jezika
Sintaksom, semantikom i pragmatikom programskih jezika
Paradigmama programskih jezika

U vebi smo se upoznali sa:

Pojmom Java Runtime Environment(JRE), njegovim preuzimanjem i


instaliranjem
Pojmom Java Development Kit(JDK), njegovim preuzimanjem i
instaliranjem
Pojmom sintaksnih i logikih greaka
Pojmom integrisanog razvojnog okruenja (IDE)

Nauili smo:

Kreiranje i prevoenje prvog Java programa iz komandnog prompta


Kreiranje i prevoenje prvog Java programa iz razvojnog okruenja
NetBeans

92

You might also like