You are on page 1of 105

Java za mlade programere (1)

ta je Java? Java je raunarski programski jezik koji je razvila firma Sun Microsystems. Programski jezik se koristi za izdavanje instrukcija raunaru da obavi konkretne poslove. Java, mada relativno novi jezik, nastao 1995. godine, izuzetno je popularna. Prvi razlog za popularnost je njena cena potpuno je besplatna!. Mnogi drugi programski jezici prodaju ce po ceni od vie stotina ili hiljada dolara, to je za veinu ljudi glavna prepreka da ponu da ue programiranje. Drugi razlog za popularnost Jave je to to je Java programi mogu da se izvravaju na skoro svakom tipu raunara. Kaemo da su Java programi nezavisni od platforme na kojoj se izvravaju. Java moe da se koristi za razvoj raznovrsnih aplikacija. Postoje jednostavni tekstualno-zasnovani programi koji se nazivaju konzolnim aplikacijama. Takvi programi podravaju samo tekstualni unos i ispis na monitoru vaeg rauanara. Takoe, moete da pravite aplikacije sa grafikim korisnikim interfejsom (engl. Graphical User Interface GUI). Ove aplikacije raspolau sa menijima, paletama alatki, dugmadima, trakama za pomeranje sadraja drugim kontrolama koje reaguju na mia. Primeri GUI aplikacija koje ste u svom radu na raunaru ve koristili su programi za obradu teksta, programi za rad sa tabelama i raunarske igrice. Takoe, moete praviti i aplikacije koje se nazivaju apleti (engl. Applets). To su male GUI aplikacije koje mogu da se izvravaju unutar web stranice. Apleti daju dinaminost web stranicama. Mislim da ste ve uvideli univerzalnost programskog jezika Java. Na ovom kursu krenuemo od prostih konzolnih aplikacija. To e nam omoguiti da se koncentriemo na uenje osnova Jave bez uputanja u svet grafikog korisnikog interfejsa. Drugo popularno svojstvo Jave je to to je ona objektno orijentisana. To je fini nain da se kae da su Java programi sainjeni od vie osnovnih delova (komponenti) koji mogu da se vie puta koriste. To za vas kao Java programera znai da moete da pravite i menjate velike

programe bez veih komplikacija. Tokom ovog kursa vie puta ete se sresti sa terminom objekt (engl. Object), a tokom izlaganja kursa taj koncept e vam postati jasan. Poslednja prednost Jave je to to je ona prost jezik,u poreenju sa drugim programskim jezicima i zbog toga se relativno lako ui. Ta jednostavnost je neophodna da bi se podrala nezavisnost Java aplikacija od tipa platforme (sposobnost da se izvrava na svakom tipu raunara). Meutim, ta jednostavnost ne znai da Java nije moan programski jezik. Moete pomou Jave da uradite sve ono to moete da uradite sa bilo kojim mnogo sloenijim programskim jezikom. Zato uiti Javu? Moemo postaviti i pitanje Zato uiti programski jezik? Postoji vie razloga za to. Prvo, ukoliko znate da programirate, razumeete bolje kako raunari rade. Drugo, pisanje programa je dobra veba za razvijanje vetine razmiljanja morate dobro logiki da razmiljate da biste napisali raunarske programe.. Takoe, morate pomalo biti i perfekcionista, raunari nisu toliko pametni i zato zahtevaju strogo precizne instrukcije da bi obavili svoje poslove. Tree, raunarski programeri su veoma traeni i zarauju mnogo novca. Na kraju, pisanje raunarskih programa je zabavno. Posebno je zadovoljstvo kada vidite svoju ideju kako ivi na ekranu raunara. Zbog jednostavnosti Jave, brzo ete nauiti kako se piu Java programi. Meutim, to to ete brzo napisati svoj prvi Java program ne znai da ste nauili sve to treba da znate o Javi. Ovaj kurs je samo kratak uvod u Javu, stoga smatrajte ga kao prvi korak na putu koji vodi do zvanja Java programera. Potrebni resursi Da biste pisali i izvravali Java programe, potreban vam je Java Software Development Kit (Java SDK). To je besplatan proizvod koji moete preuzeti preko Interneta. To jednostavno znai da ete iskopirati tzv. instalacionu datoteku na svoj raunar, pokrenuti instalaciju i zatim poeti sa radom. Ovaj proizvod moete nai na adresi http://java.sun.com. U sledeem nastavku bie opisano kako da preuzmete i instalirate ovaj softver.

Java za mlade programere (2)


Preuzimanje i instaliranje programa Da biste pisali i izvravali Java programe, potreban vam je Java Software Development Kit (SDK). Radi se o besplatnom proizvodu koji moete preuzeti preko Interneta. To jednostavno znai da moete da kopirate tu datoteku na svoj raunar i zatim instalirate taj paket. Potrebno je zato da uradite sledee: Pokrenite svoj pretraiva weba (Internet Explorer, Netscape ili neki drugi) i odete na web sajt firme Sun Microsystems: http://java.sun.com Taj sajt sadri obilje korisnih informacija o Javi. to vie budete programirali u Javi, to ete sve ee poseivati ovaj sajt u potrazi za reenjima svojih problema. Na Sunovom sajtu treba da potraite link koji omoguava preuzimanje paketa koji se naziva J2SE SDK (Java 2 Standard Edition Software Development Kit). Za nae potrebe treba da preuzmete verziju J2SE 1.4.1. Kada pronaete stranicu sa linkovima odaberite onu koja odgovara za instaliranje na vau raunarsku platformu (Windows). Poto aktivirate link, pojavie se sporazum o licenci (Licence Agreement). Potrebno je da kliknete na Accept ukoliko elite da preuzmete paket. Kliknite miem na link za preuzimanje datoteke J2SDK i na ekranu e se pojaviti sledei prozor:

Kliknite miem na dugme Save i izaberite lokaciju na kojoj elite da snimite preuzetu datoteku. Potom ete na ekranu videti kako preuzimanje napreduje.

Java SDK je veoma velika datoteka (j2sdk-1_4_1_02-windowsi586.exe), veliine oko 36 MB, stoga e preuzimanje preko modema i komutirane veze potrajati. Kada ste preuzeli SDK, spremni ste za instaliranje paketa na svoj raunar. Izaberite dugme Start na paleti poslova a zatim Run. Pronaite direktorijum (folder) gde ste snimili datoteku i selektujte datoteku. Kliknite na Open. Java SDK instalacioni program e raspakovati neke datoteke iuvodni ekran sa sporazumom o licenci e se pojaviti na ekranu. Po prihvatanju licence, instalacioni program e vas pitati gde elite da se obavi instalacija.

Predlaem da instalaciju Java SDK obavite u podrazumevanom direktorijumu (c:\j2sdk1.4.1_02 u ovom sluaju), stoga kliknite miem na dugme Next.

Nemojte ovde nita menjati. elimo da instaliramo sve komponente. Kliknite miem na Next da biste videli ekran koji vam omoguava izbor podrazumevanog Internet pretraivaa.

Kliknite miem na Next i instalacija poinje. Kada se zavri videete sledei prozor:

(Moda e vam biti postavljeno pitanje da ponovo pokrenete raunar, a moda se to pitanje i nee pojaviti.) Kliknite miem na dugme Finish i time ste okonali instalaciju. JCreator integrisano razvojno okruenje Proces pravljenja i izvravanja Java programa ima tri jasno razdvojene etape: Pisanje programa Kompajliranje (prevoenje) programa (generie se datoteka koju raunar moe da razume) Izvravanje programa. Za sada, ne brinite se mnogo oko toga ta se tano deava u svakoj od ovih etapa. Jedan od naina da kompletirate ove tri etape je da prvo piete program koristei neki osnovni editor teksta i snimite dobijeni tekst u datoteku. Potom, etape kompajliranja i izvravanja mogu se obaviti kucajui u komandnoj liniji posebnih komandi predvienih za te etape. Mali broj Java programera pie programe na taj nain. Skoro svi programeri razvijaju svoje programe koristei tzv. Integrisano razvojno okruenje (Integrated Development Environment IDE). Postoji vie IDE proizvoda za razvoj Java programa., neki su veoma sloeni, a neki veoma prosti. Mi emo koristiti verziju koja je besplatna. Radi se o okruenju koje se naziva JCreator. Radi se o

interfejsu koji se lako koristi a moe besplatno (verzija Lite) da se preuzme preko Interneta. Preporuujem da koristite ovaj softver zato to e vam olakati programerski deo posla i omoguiti da se koncentriete na uenje elemenata Java jezika. Pre nego to preuzmete i instalirate JCreator, moram da vas upoznam sa jednom injenicom. JCreator radi samo u Windows okruenju, to znai da korisnici Linuxa i Mac OS moraju da pronau drugo reenje. Ukoliko koristite Windows i izaberete da koristite JCreator, pristupite preuzimanju tog okruenja. JCreator je razvila firma Xinox Software. Postoje dve verzije ovog proizvoda, JCreator LE (Light Edition) I Pro (Professional Edition). Mi emo koristiti LE zato to je besplatan. Da biste preuzeli ovaj softver uradite sledee: Idite na JCreator web sajt: http://www.jcreator.com Potraite link za preuzimanje Jcreatora LE (Freeware). Na web stranici za preuzimanje kliknite miem na link i na ekranu e se pojaviti sledei prozor:

Kliknite miem na dugme Save i izaberite lokaciju na kojoj elite da sauvate preuzetu datoteku. Pojavie se na ekranu prozor koji prikazuje kako preuzimanje napreduje.

Ovog puta radi se o datoteci relativno male veliine (manje od 2 MB), tako da preuzimanje nee dugo trajati. Po preuzimanju komprimovane datoteke, raspakujte je pomou WinZipa. Dvo-kliknite na datoteku Setup.exe da bi zapoeli instalaciju. Na ekranu e se pojaviti prozor sledeeg izgleda:

Kliknite miem na dugme Next i videete sporazum o licenci (naravno, treba da se saglasite da bi se instalacija nastavila). Na ekranu e se pojaviti za redom nekoliko prozora posredstvom kojih e vas instalacioni program pitati za odredite za neke datoteke i da li elite da se ikona programa pojavi na radnoj povrini (Desktopu).

Kliknite miem na Install i poinje instalacija. Kada se zavri videete sledei prozor.

Kliknite miem na dugme Finish (potvrdite opciju Launch JCreator LE). JCreator e se aktivirati i postaviti vam jo nekoliko pitanja. Prvo, pitae vas za pridruivanje datoteka:

Prihvatite ponueno klikom mia na Next. Sada e se pojaviti jedan veoma vaan prozor:

JCreator od vas trai informaciju o instaliranoj verziji Java SDK (odnosno JDK Java Development Kit). Kliknite miem na dugme Browse (ako je potrebno) da biste definisali putanju do Java direktorijuma (verovatno, c:\j2sdk1.4.1_02), a zatim kliknite na Next. Na ekranu se pojavljuje prozor

JCreator eli da zna gde se nalazi Java SDK dokumentacija. Za potrebe ovog kursa dokumentacija nije neophodna, zato nisam ni naveo da je preuzmete sa Sunovog sajta. Na kraju, kliknite miem na dugme Finish i potom e se JCreator pokrenuti. U sledeem nastavku upoznaemo se sa interfejsom programa JCreator i nastaviti dalje uenje Jave.

Java za mlade programere (3) Pokretanje JCreatora Kada je instaliran, JCreator se pokree sledeom procedurom: Kliknite miem na dugme Start na Windows paleti poslova. Izaberite u meniju Programs stavku JCreator LE. Kliknite miem na JCreator LE. Ukoliko ste izvukli preicu na radnu povrinu, tada ete JCreator pokrenuti tako to ete dvo-kliknuti miem na ikonu ovog programa. JCreator je pokrenut i na ekranu se pojavljuje nekoliko prozora.

Radni prostor Oblast datoteke

Ovaj ekran prikazuje JCreatorovo integrisano razvojno okruenje (engl. Integrated Development Environment IDE). O integrisanom razvojnom okruenju emo nauiti neto vie u nekom od sledeih nastavaka. Za sada,

koristiemo ga da iztestiramo Java instalaciju i da vidimo kako se uitava i pokree neki program. Obratite panju na lokacije radnog prostora, oblast datoteke i glavni meni. Radni prostor nam prikazuje koji Java programi su nam na raspolaganju. Oblast datoteke se koristi za prikaz aktuelnog koda, a glavni meni za kontrolu pristupa datoteci i funkcije ureivanja datoteke. Meni se takoe koristi za kompajliranje i izvravanje programa. Otvaranja Java projekta Ono to elimo sada da uradimo je da otvorimo projekat. Raunarski programi (aplikacije) napisani u Javi esto se nazivaju projektima. Projekti ukljuuju sve informacije u datotekama koje su potrebne naem programu. Java projekti su grupisani u radnim prostorima. Neka je JCreator pokrenut. Prvi korak kod otvaranja projekta je otvaranje radnog prostora koji sadri projekat koji nas interesuje. Sledite ove korake: Izaberite u meniju File opciju Open Workspace. Na ekranu se pojavljuje prozor Open:

Svi projekti u sluaju koji emo razmatrati su sauvani u radnom prostoru pod nazivom \JavaKids\JK Code. Preimo u taj direktorijum i izaberimo JK Code radni prostor. Kliknimo Open. Bie prikazano vie projekata u radnom prostoru. Pronaimo projekat WelcomeProject. Uradimo desni klik miem na nazivu tog projekta i iz pomonog

menijanizaberimo stavku Sets as Active Project. Klikom mia na znak + pored naziva projekta razvimo vorite projekta. Sada emo videti da u njemu postoji jedna datoteka pod nazivom Welcome.java. Ako se sadraj fajla ne pojavi u oblasti prikaza datoteke, dvo-kliknite na tu datoteku da bi se otvorila.

Konano imate priliku da vidite svoj prvi Java program; kasnije emo objasniti ta tih nekoliko redova koda radi. Za sada, elimo samo da vidimo da li moemo da pokrenemo taj program. Kompajliranje i izvravanje Java projekta Poto razvijete Java projekat, prirodno je da elite da pokrenet ili izvrite taj program. To se ostvaruje u dva koraka: kompajliranjem i izvravanjem. Ponovo, o tome ete vie saznati u nekom od sledeih nastavaka. Za sada, proveravamo da li je sve instalirano kako treba. Da biste kompajlirali projekat Welcome, izaberite u glavnom meniju stavku Build, a zatim Compile Project. Druga varijanta je da pritisnete samo taster F7 na tastaturi. Na ekranu treba da se pojavi novi prozor koji je prikazan na sledeoj slici.

Ako je sve instalirano kako treba, u donjem prozoru treba da vidite rei Process completed. Time nas JCreator obavetava da je projekat uspeno kompajliran. Ako program nije kompajliran, najverovatnije da JCreator nije mogao da pronae Java SDK. Da biste proverili da li JCreator zna gde je Java SDK, pokuajte sledee: U glavnom meniju izaberite stavku Configure. Izaberite stavku Options. U okviru za dijalog Open kliknite miem na JDK Profiles. U prozoru treba da bude direktorijum gde je Java instalirana. Ako ga nema, izaberite stavku New i sledite instrukcije kako biste pronali direktorijum. Ako je direktorijum naveden ali to nije odgovarajui direktorijum, oznaite navedeni direktorijum i izaberite Edit. Uradite potrebnu korekciju nazivva i lokacije direktorijuma. Da li ste sada spremni da pokrenete svoj prvi projekat? Da biste to uradili, izaberite u glavnom meniju Build, a zatim stavku Execute Project (a moete isto dejstvo

proizvesti i pritiskom na taster F5 na tastaturi). Na ekranu treba da se pojavi prozor sa Welcome porukom, kao na sledeoj slici.

Ako se to desilo, sve je instalirano kako treba. Ako nije tako, neto nije instalirano kako treba i moraete kompletno da proverite instalaciju Jave i JCreatora kao biste bili sigurni da je sve uraeno na odgovarajui nain. Pre nego to zaustavimo izvravanje programa, napravimo jednu malu izmenu na izlaznom prozoru. Inicijalna postavka okruenja je da izlazni prozor prikazuje (tampa) beli tekst na crnoj pozadini. To je u redu, ali nije ba racionalno. Naime, ako nastavimo tako da radimo, prilikom tampanja ovih prozora potroili bi mnogo tonera. Moemo promeniti boje i to vrlo lako. Kliknimo miem na malu ikonu u gornjem levom uglu izlaznog prozora. Izaberimo u pomonom meniju stavku Properties. Kada se na ekranu pojavi okvir za dijalog, izaberimo karticu Colors.

Na ovoj kartici moemo definisati mnogo stvari, izmeu ostalog i novi Screen Background (pozadina ekrana) i novu boju za Screen Text (ekranski teksta). Izbor se obavlja tako to prvo oznaite odgovarajue radio dugme pored tih naziva a zatim izaberete boju sa ponuene palete. Izaberite boje koje elite, a ja preporuujem svetlu pozadinu sa tamnim tekstom. Kada ste obavili izbor kliknite na dugme OK. Na ekranu se pojavljuje sledei okvir za dijalog:

Navedite gde elite da snimite ova svojstva koja e JCreator koristiti za sve vae projekte i potom kliknite na OK. Izlazni prozor e sada biti obojen novim bojama.

Da biste zaustavili izvravanje projekta, pritisnite bilo koji taster ili kliknite miem na dugme X u gornjem desnom uglu prozora. Naputanje JCreatora Kada ste zavrili rad sa Java projektom, preostalo je jo da napustite JCreator razvojno okruenje. To je ista procedura kao i kod svih drugih Windows aplikacija: U glavnom meniju izaberete stavku File. Izaberete sada stavku Exit (na dnu menija File). JCreator e zatvoriti sve otvorene prozore i biete vraeni na radnu povrinu Windowsa. Moete koristiti i alternativni nain, tj. kliknuti miem na dugme X u gornjem desnom uglu glavnog prozora JCreatora.

Java za mlade programere (4) Osnove Java programa U prethodnim nastavcima opisali smo kako da se pripremi raunar za kreiranje i izvravanje Java programa. U ovom nastavku nauiete kako izgleda osnovna struktura Java programa, zatim ete nauiti neka osnovna pravila za pisanje Java programa. Kreiraemo i snimiti projekat pomou Jcreatora, razvojnog okruenja koje smo upoznali u prethodnom nastavku. Na kraju, nauiete ta se deava kada kompajlirate (prevodite) i izvravate Java program. Ovime ete stei neophodna znanja da napravite svoj prvi Java program. Struktura Java programa Java, kao i svaki drugi jezik (raunarski ili govorni), ima svoju terminologiju. Pogledajmo zato strukturu Java programa i nauimo tu novu terminologiju. Java program (ili projekt) ini nekoliko datoteka. Ove datoteke se nazivaju klasama. Svaka od tih datoteka ima Java kd koji obavlja neki specifian zadatak (zadatke). Svaka datoteka klase ima oznaku tipa datoteke (tzv. Ekstenziju) .java. Naziv datoteke koji se koristi za snimanje klase mora da odgovara

nazivu klase. Jedna klasa u svakom projektu e imati neto to se nekad zove glavni metod (engl. main method). Kagdog izvravate Java program, va raunar e prvo potraiti glavni metod da bi neto poelo da se deava. Prema tome, da biste izvrili program, direktno navodite klasu koja sadri glavni metod. Pogledajmo kako to izgleda u primeru Welcome Project, koji smo imali prilike ranije da vidimo. Pokrenimo prvo JCreator. Welcome Project bi trebalo da je jo aktivan projekt. Ako nije tako, uradite desni klik miem na folder WelcomeProject u radnoj oblasti i izaberite stavku Sets as Active Project. Trebalo bi da vidite:

Ovaj projekt ima jednu datoteku koja se naziva Welcome.java. Uoite da, kao to je zahtevano, naziv Welcome odgovara nazivu klase koji se vidi u kodu (public class Welcome). Ako se kd ne vidi, uradite dvo-klik miem na datoteku koja ima naziv Welcome.java. Ako projekt ima jo klasa, one bi trebalo da budu izlistane ispod foldera WelcomeProject. Takoe, uoite u kodu oblast koja ima re main. To je glavni metod koji nam je potreban u jednoj od klasa projekta. To je zaista sve to je potrebno da znamo o strukturi Java programa. Samo da vas podsetim da program (ili projekt, koristiemo oba termina) sainjava vie datoteka koje se nazivaju klasama, a koje sadre aktuelni Java kd. Ona klasa od koje sve poinje je glavna klasa. Jo jedna stvar, projekti se grupiu u radne oblasti (engl. Workspaces). Sa ovim znanjem moemo da ponemo sa razmatranjem Welcome programa red po red kako bi shvatili ta je Java program uopte. Welcome Project - ponovo Trebalo bi da je jo uvek aktivan JCreator u kome se izvrava Welcome program. Ako nije tako, pokrenite JCreator, otvorite WelcomeProject (desni klik na naziv

projekta i izbor stavke Set as Active Project) i dvo-kliknite miem na datoteku Welcome.java. Trebalo bi da vidite sledei kd: /* * Welcome Project * Java for Kids * KIDware (206) 721-2556 * www.KIDwareSoftware.com */ public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java for Kids!"); } } Proimo kroz ovaj kd red po red kako bi objasnili njegovu strukturu. Prvih est redova programa su: /* * Welcome Project * Java for Kids * KIDware (206) 721-2556 * www.KIDwareSoftware.com */ U tim redovima je komentar (engl. Comment). Ti redovi obezbeuju neke informacije o programu, tj. O kom

programu se radi i informaciju za kontakt. Komentar poinje sa simbolom /* i zavrava se sa simbolom */. Ovi redovi su poznati i kao zaglavlje programa (engl. program header). Dobro je da uvek stavite zaglavlje u svoje Java programe u kojima je informacija ta rade i ko ih je napisao. Java kompajler ignorie svaki komentar njihova uloga je samo da prue objanjenje. Prvi red posle komentara sadri sledee: public class Welcome { Taj red sadri definiciju nae klase nazvane Welcome. Kljuna (slubena; engl. keyword) re public odreuje da li drugi delovi programa mogu da pristupaju ovoj klasi. Kljune rei su deo svakog programskog jezika to su rezervisane rei i ne mogu se koristiti u regularnim Java izrazima. Leva vitiasta zagrada ({) se koristi da oznai poetak definicije klase. Uoiete brzo da se mnogo vitiastih zagrada koristi u Java programima! Sledei red je: public static void main(String[] args) {

U ovom redu se kreira glavni metod koji smo ranije pominjali. Nemojte se za sada brinuti ta sve te rei znae. Bitno je da uoite da tako poinje glavni metod u kome piemo Java kd koji elimo da se izvri kada se program pokrene. U ovom kursu uglavnom emo stavljati sav na kd u glavni metod. Uoite da se druga leva vitiasta zagrada koristi za poetak definisanja glavnog metoda. Jedini Java iskaz (naredba; engl. statement) u glavnom metodu je: System.out.println("Welcome to Java for Kids!"); Podsetite se kako je izgledalo izvravanje Welcome projekta u prethodnom nastavku. Kada ste ga pokrenuli, videli ste u izlaznom prozoru poruku koja je glasila - Welcome to Java for Kids! Prethodni red koda je ispisao tu poruku. U tom redu System je klasa ugraena u Javu, out je objekat klase (koji se odnosi na izlazni prozor (engl. output window)). Re println (izgovara se print line) prikazuje jedan red teksta. Tekst koji se prikazuje je pod navodnicima. Uoite da se iskaz zavrava sa (;) u Javi, takoe, postoji mnogo takazareza! U ovom prostom primeru, glavni metod ima samo jedan iskaz. Naravno, naredni primeri e imati mnogo vie iskaza. Metodi su mesto gde Java programi obavljaju zadatke. Pored pisanja sopstvenih metoda, moete koristiti

bilo koji od mnogobrojnih metoda koji su ugraeni u Java jezik. Uiete o tim metodima kako bude kurs odmicao. Posle tog reda slede dva reda od kojih svaki ima desnu vitiastu zagradu (}). Prva zagrada okonava glavni metod, dok druga okonava definiciju klase. Bie potrebno da uvek pazite da imate u Java programima vitiaste zagrade uparene, tj. da svakoj levoj odgovara jedna desna. Mada je ovo veoma kratak i prost program, on ilustruje koje su glavne komponente u Java programu. Potrebno vam je zaglavlje programa, definicija klase i glavni metod. Takoe, potrebno je da vodite rauna i snimite datoteku klase pod istim nazivom pod kojim je klasa definisana. Ta datoteka ima oznaku tipa (tzv. ekstenziju) .java. Neka pravila Java programiranja Pogledajmo jo jednom kd Welcome projekta kako bismo ukazali na neka osnovna pravila Java programiranja. Evo tog koda: /* * Welcome Project * Java for Kids * KIDware (206) 721-2556 */

public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java for Kids!"); } } A evo i pravila: Java kd zahteva perfekciju. Sve kljune rei moraju biti korektno zapisane. Ako napiete printline umesto println, ovek moe da zna na ta ste mislili, ali raunar ne. Java razlikuje mala i velika slova (engl. case-sensitive), to znai da se velika i mala slova smatraju razliitim znakovima. Kada piete kd, vodite rauna kako koristite slova. U Javi rei Main i main su potpuno razliite. Java ignorie beline (engl. white space; blankove). esto ete koristiti beline da bi va kd izgledao itljivije. Vitiaste zagrade se koriste za grupisanje. One markiraju poetak i zavretak programskih sekcija. Vodite rauna da vai Java programi imaju jednak broj levih i desnih vitiastih zagrada. Sekcija koda izmeu dve odgovarajue vitiaste zagrade naziva se blok.

Dobra praksa je da uvlaite kd bloka prilikom pisanja programa. To olakava praenje koda. Uoite da je u datom primeru svaki blok uvuen tri blanka (beline). Ako koristite JCreator, on e automatski umesto vas uvlaiti kd u blokovima. Svaki Java iskaz se zavrava taka-zarezom. Iskaz je programski izraz koji proizvodi neku akciju (na primer, ranije pomenuti iskaz Println). Uoite da nisu svi Java izrazi iskazi (na primer, red koji definie glavni metod nema taku-zarez). Nauiete jo o Java programiranju ako nastavite da pratite ovaj kurs.

Pripremio Dragan Markovi

Java za mlade programere (5)

Kreiranje Java projekata pomou JCreatora Na ovom asu poeemo da uimo programski jezik Java i da piemo svoje Java programe. Da bi ste mogli da to uradite potrebno je da znate kako se kreira novi projekat pomou JCreatora. Takoe, potrebno je da znate kako da dodate datoteke svom projektu. Sada u pokazati kako se to radi. Ponovo emo kreirati projekt Welcome u vaem radnom prostoru. Ako Jcreator nije pokrenut, pokrenite ga. Radni prostor koji sadri projekt Welcome trebalo bi da je jo uvek tu. Ukloniemo ovaj radni prostor i kreirati novi. (Treba samo da koristite radni prostor JK Code kada elite da referencirate kd vezan za ovo uputstvo. Za sve svoje projekte, koristiete sopstveni radni prostor). Da biste uklonili radni prostor, o oblasti za prikaz radnog prostora oznaite tekui radni prostor (JK Code). U glavnom meniju izaberite File a zatim Close Workspace. Sada, kreirajte svoj radni prostor dodelite mu naziv MyJavaWorkspace. U glavnom meniju izaberite File a zatim New. Kada se pojavi prozor New, kliknite na jeziak Workspaces :

Kliknite na () pored okvira Location i izaberite c:\ disk (ili neku drugu lokaciju). Upiite MyJavaWorkspace u polje Workspace name. Kliknite miem na dugme OK i kreirae se prazan radni prostor u folderu pod nazivom MyJavaWorkspace na vaem disku c: . Ovaj novi radni prostor pojavljuje se u prikazu radnog prostora programa JCreator:

Moemo sada da dodamo projekt u radni prostor. Obratite panju na ove korake poto ete ovo ponavljati svaki put kada je potrebno da kreirate novi Java projekt. Uradite desni klik u prikazu radnog prostora i izaberite Add new Project :

Izaberite jeziak kartice Projects, zatim Empty Project i upiite WelcomeProject u polje Project name (kao to je prikazano). Kliknite na OK da biste dodali projekt. Prozor za prikaz radnog prostora trebalo bi sada da prikae projekt (WelcomeProject) u radnom prostoru:

Po proceduri, sada treba da dodamo datoteku (nau datoteku sa Java programom) projektu. Oznaite WelcomeProject levim klikom na naziv u prikazu radnog prostora. Odaberite File iz glavnog menija JCreatora a zatim stavku New. Pojavljuje se sledei prozor:

Kao to je prikazano, izaberite karticu Files, izaberite Java File i upiite Welcome u polje Filename (dobro je da steknete naviku da nazivi vaih datoteka imaju drugaije nazive od foldera projekta i radnog prostora). Kliknite na OK. Razvite WelcomeProject (kliknite na znak +) i videete datoteku Welcome.java koja je dodata projektu. U oblasti za prikaz datoteke desno od prikaza radnog prostora je editor gde ete upisivati Welcome.java kd:
Oblast prikaza datoteke

Piite liniju po liniju koda i obratite panju da piete sve kako je ovde dato (imajui u vidu pravila koja ste ranije nauili). Evo koda jo jednom: /* * Java for Kids Welcome Program */ public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java for Kids!"); } } Kako piete uoiete da posle pisanja svake leve vitiaste zagrade ({), JCreator editor automatski uvlai sledei red, a im upiete odgovarajuu desnu vitiastu zagradu (}), uvlaenje se povlai nazad za jedan nivo. To znai da editor potuje pravilo uvlaenja svakog bloka koda. Inicijalno, JCreator uvlai za 4 znaka (mesta) na svakom nivou. Da biste promenili ovu vrednost, izaberite u glavnom meniju stavku Configure a zatim Options. Odaberite Java Editor i upiite novu vrednost za Tabs Size. Mi emo na ovom kursu koristiti vrednost 2 a ne 4 (stvar linog ukusa). Druga stvar koju treba da uoite je da editor koristi razliite boje za razliite stvari u kodu. Zeleni tekst predstavlja komentare. Kd je u crnoj boji a kljune (rezervisane) rei u plavoj. Ova ema boja ponekda moe da vam pomogne da otkrijete greke koje ste moda napravili prilikom kucanja.

Kada zavrite kucanje, trebalo bi da vidite:

Pokuajte da kompajlirate (prevedete) svoj program (izaberite Build, zatim Compile Project, ili samo pritisnite taster <F7>). Trebalo bi ubrzo da vidite rei Process completed. Ako nije tako, proverite da li ste sve upisali kako je navedeno u prethodnom listingu. Da vas podsetim, greke se ne toleriu. Kada je va program kompajliran, moete ga aktivirati biranjem opcije Build, zatim Execute Project (ili pritisnite taster <F5>). Trebalo bi ponovo da vidite poruku Welcome to Java for Kids! . Takoe, vidite i sami kako je zaista lako dobiti Java program pomou JCreatora. Snimanje Java projekata u JCreatoru Pre nego to napustimo JCreator, potrebno je da znamo kako se snimaju projekti koje smo napravili. Postoje dve stvari koje treba razmotriti: snimanje projekata i snimanje radnih

prostora (foldera koji sadre projekte). Kadgod kompajlirate i/ili izvravate Java projekt, JCreator automatiski snima i izvorne datoteke i datoteke kompajliranog koda. Prema tome, vei deo vremena ne morate brinuti o snimanju svojih projekata Jcreator je to preuzeo na sebe. Ako elite da snimite kd koji ste upravo napisali (pre kompajliranja), jednostavno izaberite u glavnom meniju File a zatim kliknite na Save All. Ili, samo kliknite na dugme Save All na paleti alatki:

Treba da snimite radni prostor svaki put kada napravite promenu, na primer, ako dodate/obriete datoteke projekta ili dodate/obriete projekte. Da snimite radni prostor odaberite u glavnom meniju File a zatim Save Workspace. Ako pokuate da napustite JCreator a niste snimili projekte ili radne prostore, JCreator e vas preko okvira za dijalog upozoriti na to i pruiti vam mogunost da snimite datoteke pre naputanja. Kompajliranje i izvravanje Java programa U primeru koji smo upravo zavrili, u tri koraka smo obavili kreiranje i izvravanje Java programa: Pisanje koda Kompajliranje koda Izvravanje koda

Vidimo da pisanje koda obuhvata potovanje uspostavljenih pravila (mada emo stvarno poeti sa pisanjem sopstvenog koda kasnije). Takoe, znamo kako da kompajliramo i izvravamo program, ali ta se stvarno deava kada mi radimo te dve stvari. Sada emo to razmotriti. Da vas podsetim, jedna od velikih prednosti Jave je to e Java programi raditi na raznorodnim mainama bez promena u kodu. Kaemo da je Java nezavisna od platforme. Ova nezavisnost je mogua zato to se Java program ne izvrava direktno na vaem raunaru, ve na virtuelnom raunaru koji je instaliran na vaem raunaru zajedno sa Java Software Development Kitom (SDK). Taj virtuelni raunar se naziva Java virtuelna maina. Pre nego to Java virtuelna maina moe da razume va Java program, on mora da bude pretvoren ili preveden u jezik koji ona razume. Ova konverzija se obavlja kada kompajlirate svoj Java program. Kompajliranje Java programa kreiradatoteku sa objektnim kodom koji Java virtuelne maina moe da razume. Ta datoteka e imati oznaku tipa datoteke (tzv. ekstenziju) .class. Na sledeoj slici je grafiki prikazan proces kompajliranja:
Java program (.java datoteka) Java kompajler Java objektni kd (.class datoteka)

Kada izvravate svoj Java program, ove .class datoteke obrauje neto to se naziva Java interpreter unutar virtuelne maine. Ovaj interpreter razgovara sa vaim

raunarom i prevodi vae Java naredbe u eljene rezulatate. To je kao magija! Na sledeoj slici je grafiki prikazan proces izvravanja programa:

Java objektni kd (.class datoteka)

Java virtuelna maina (Java Interpreter)

Program na vaem raunaru

Java za mlade programere (6) JCreator i Java datoteke Sada emo se upoznati kako su te sve informacije vezane za strukturu programa, datoteke, kompajliranje i izvravanje uklopljenje u JCreator, koji je nae razvojno okruenje. Ranije smo videli da su Java projekti grupisani u radne prostore. A projekti se sastoje od .java datoteka. Koristei My Computer ili Windows Explorer, preimo u folder koji sadri Welcome Project koji ste upravo napravili, kompajlirali i izvrili. Trebalo bi da vidite sledee datoteke: Welcome.java Welcome.class WelcomeProject.jcp src_welcomeproject.txt Welcome.java je izvorni kd koji se pojjavljuje u oblasti za prikaz datoteke JCreatora. Welcome.class je kompajlirana verzija tog izvornog koda (Welcome.java) to je datoteka koja je potrebna Java virtualnoj maini. WelcomeProject.jcp je projektna datoteka Jcreatora koja se koristi za evidenciju koje sve datoteke ine projekat a src_welcomeproject.txt je druga datoteka Jcreatora koja

je potrebna za organizaciju. Pored toga, u foldeu vaeg radnog prostora bie i datoteka: MyJavaWorkspace.jcw (Naravno, ovde se podrazumeva da ste radnom prostoru dodelili naziv MyJavaWorkspace). To je jo jedna datoteka Jcreatora koja se koristi za evidenciju projekata u radnom prostoru JK Code. Imajte na umu da su ovde prave Java datoteke samo one koje imaju oznaku tipa .java i .class. Ostale datoteke stvara i menja nae konkretno razvojno okruenje, u ovom sluaju JCreator. Ako elite da delite svoj Java program sa prijateljem ili da ga prebacite u neko drugo razvojno okruenje, jedine datoteke koje treba da prebacite su .java datoteke. Te datoteke moe da koristi svaki Java programer ili programsko okruenje da bi napravio program koji moe da se izvrava. Kreiranje Java programa Ranije sam rekao da Java naredba neto radi. U primeru Welcome videli smo da naredba tampa neku informaciju (Welcome to Java for Kids!). Svaki program

koji budemo pravili bie sainjen od vie Java naredbi koje raunar treba da obradi. Pravljenje raunarskog programa pomou Jave (ili bilo kog drugog jezika) je direktan proces. Imate konkretan zadatak koji elite da raunar obavi za vas. Saoptavate raunaru logian, proceduralan skup koraka koje treba da preduzme da bi obavio zadatak. Relativno je lako ispisati korake reenja na naem govornom jeziku. Meutim, za nas je malo tee to saoptiti raunaru na njegovom jeziku. Bilo bi zaista lepo kada bi mogli samo da napiemo Zdravo raunaru, evo dva broja saberi ih i kai mi koliki je zbir. ovek moe da razume ove instrukcije, ali raunar ne moe. Zato? Prvo, raunaru je potrebno da se kae na vrlo specifian nain kako da uradi zadatak, tj. razlaganjem na logike korake. Za ovaj prost primer sabiranja ti koraci bi bili: 1. Zadaj vrednost prvog broja. 2. Zadaj vrednost drugog broja. 3. Saberi prvi broj sa drugim, rezultat je zbir, tj. trei broj. 4. Saopti zbir. Sada je potrebno da to saoptimo raunaru na njegovom jeziku. Prevodimo svaki korak reenja u naredbu (ili

naredbe) raunarskog jezika. Na ovom kursu raunarski jezik je Java. Da bi mogli da kaete raunaru kako da uradi bilo koji zadatak, potrebno je dobro da znate Java programski jezik. Vae znanje Jave e vam omoguiti da prevedete programske korake u jezik koji raunar moe da razume. Druga stvar o kojoj treba da vodite rauna kada piete Java programe je logika i preciznost. Raunar e slediti vae instrukcije ak i kada su pogrene! Prema tome, kako budete napredovali u uenju Jave tako u vam objasniti potrebu da budete precizni. Kada jednom napiete precizan i logian Java kd, raunar e veoma brzo i dobro uraditi svoj posao. A on moe da uradi veoma zanimljive stvari. Pogledajmo par primera pisanja programerskih zadataka kao niz koraka za ilustraciju nekih stvari koje raunar moe da uradi. ta treba da uradite ako va ef zatrai od vas prosenu ocenu sa testa koji je radilo 352 uenika vae kole? Koraci koje treba da uradite su sledei: 1. Odredite ocenu svakog uenika. 2. Saberete svih 352 ocene da bi dobili sumu. 3. Podelite sumu sa 352 da biste dobili prosenu ocenu.

4. Saoptite efu prosenu ocenu. Nije tako teko, zar ne? Uoite da se drugi korak moe dalje razdeliti u manje korake. Da biste sabrali 352 ocene treba da: 1. Ponete sa prvom ocenom. 2. Dodate drugu ocenu, zatim treu, pa etvrtu itd. 3. Stanete kada su sve ocene dodate. U ovim koracima raunar bi trebalo da radi isti posao (dodavanje broja) 352 puta. Raunari su veoma dobri kod poslova koji se ponavljaju videete kasnije da se ovi poslovi ponavljanja nazivaju petlje (engl. looping). Kasnije ete pisati programski kd za ovaj primer. Raunari su veoma dobri kod igranja igara sa vama (zato su video igre toliko popularne). Da li ste ikada igrali neku akcionu igricu tipa War? Vi i drugi igra uzimate karte iz standardnog pila. Onak koji ima jau kartu nosi kartu drugog igraa. Zatim svaki uzima drugu kartu i nastavlja se proces uporeivanja sve dok u pilu ima karata. Ko sakupi vie karata kada se igra zavri je pobednik. Igranje ove igre zahteva sledee korake:

1. Promeati pil karata. 2. Dati kartu prvom igrau. 3. Dati kartu drugom igrau. 4. Odrediti ija karta je jaa i proglasiti pobednika. 5. Ponavljati proces davanja (deljenja) karata igraima sve dok ima karti u pilu. Stvari su sada neto komplikovanije ali raunar je sposoban da obavi taj zadatak. Prvi korak zahteva da raunar promea pil karata. Kako da saoptite raunaru da to uradi? Dobro, pre nego to se kurs zavri saznaete i to. Za sada, bitno je da znate da je u pitanju nekoliko programskih koraka. Smestiemo Java program za takav specijalan zadatak u sopstvenu oblast koja se naziva metod (slino glavnom metodu sa kojim smo se susreli u primeru Welcome). Ovo omoguava da neto lake pratimo program a takoe i da koristimo ovaj kd u drugim programima, to je prednost objektno orijentisanog programiranja. Uoite da korak 4 zahteva od raunara da donese odluku utvrivanje koja je karta jaa. Raunari su veoma dobri kod donoenja odluka. Na kraju, korak 5 trai ponavljanje deljenja karata sve dok ih ima u pilu drugi primer petlje. Ovaj program ete, takoe, praviti kasnije.

Ako svi ovi koncepti nisu u ovom trenutku jasni, to je u redu. Oni e postati jasniji kako kurs bude odmicao. eleo sam samo da vam dam neke ideje koje moete da realizujete kao Java programe. Da se ukratko podsetimo, za svaki Java program koji pravite, najbolje je prvo da napiete niz logikih koraka koje elite da raunar sledi kod obavljanja poslova koji su potrebni vaem programu. Zatim da pretvorite te korake u Java jezik to e dati va Java program to je zaista prosto. Sledei as e poeti sa osnovnim elementima Jave, a zatim ete uiti sve vie i vie o Javi. Poeemo polako ali ete na kraju kursa sasvim solidno govoriti Javu.

Java za mlade programere (7) Posle dueg vremena stigli smo i do sri Java projekta Java jezika. U ovoj lekciji bie rei o promenljivama (nazivu, tipu, deklarisanju), dodeljivanjima, aritmetikim operacijama i tehnikama za rad sa konkretnim tipom promenljive koja se naziva string. Promenljive Svi raunari rade sa nekom vrstom informacije. Brojevi, tekst, datumi i slike su uobiajeni tipovi informacija sa kojima oni rade. Raunarskim programima je potreban prostor da smeste informacije dok sa njima rade. ta ako nam je potrebno da znamo koliko kota deset banana ako je cena jedne 25 dinara? Nama je potreban prostor da smestimo broj banana, cenu banane i rezultat mnoenja ta dva broja. Da bismo smestili takve informacije, koristimo neto to se naziva promenljiva. Ona se naziva promenljiva zato to informacija tu smetena moe da se menja za vreme izvravanja programa. Promenljive su primarni metod za premetanje informacija u Java projektu. Prilikom korienja promenljivih odreena pravila se moraju potovati. Nazivi promenljivih

Svakoj promenljivoj koju koristite u svom projektu morate dodeliti naziv (ime). Pravila za imenovanje promenljivih su: Mogu se koristiti samo slova, brojevi i znak podvlake (_) (mada se on vrlo retko koristi). Prvi znak mora biti slovo. Ne mogu se koristiti slubene (rezervisane) rei Java programskog jezika (na primer, ne moete dodeliti promenljivoj naziv println ili System). Po konvenciji, nazivi promenljivih poinju sa malim slovom. Ako se naziv promenljive sastoji od vie rei, tada su rei spojene a svaka re posle prve poinje sa velikim slovom. Najvanije pravilo je da se koriste nazivi promenljivih koji neto znae. Trebalo bi da moete da identifikujete informaciju smetenu u promenljivoj po nazivu promenljive. Za na primer sa bananama, dobri nazivi bi bili: Koliina Jedinina cena banane Broj poruenih banana Cena svih banana Naziv promenljive bananaCost numberBananas totalBananaCost

Uoite konvenciju, tj. naziv svake promenljive poinje sa malim slovom a velikim slovom poinje svaka potonja re u nazivu promenljive.

Tipovi promenljivih Potrebno je da znamo tip informacije koju uva (dri) svaka promenljiva. Da li sadri broj? Da li broj ima decimalnu taku (zarez)? Da li sadri tekstualnu informaciju? Pogledajmo neke tipove promenljivih. Prva promenljiva je tipa int (integer). Ovaj tip promenljive se koristi za predstavljanje celih, ne-decimalnih, brojeva. Primeri tih brojeva su: 1 -20 4000

Uoite da piemo 4,000 (anglosaksonski oblik zapisivanja brojeva) kao 4000 u Javi ne moemo koristiti zareze kod velikih brojeva. U naem primeru sa bananama, numberBananas treba da bude promenljiva tipa int. ta ako promenljiva koju elimo da koristimo treba da uva broj koji ima decimalnu taku (tj. decimalni zarez). Na ovom kursu, takve promenljive e biti tipa double. U tehnikom argonu kaemo da su takve promenljive dvostruke preciznosti (double-precision), brojevi sa pokretnim zarezom (floating point numbers decimalna taka je stvar koja se pomera). Sve to vi treba da znate o promenljivama tipa

double je da one dre brojeve sa decimalnom takom. Primeri tih brojeva su: -1.25 3.14159 22.7

U naem primeru sa bananama, promenljive bananaCost i totalBananaCost treba da budu promenljive tipa double. U Java programiranju se koristi i bulov (boolean) tip promenljive. Taj tip je dobio naziv po poznatom matematiaru (Boole). Moe da ima jednu od dve vrednosti: true (tano) ili false (netano). Videemo da su promenljive tog tipa osnova raunarevih sposobnosti za donoenje odluka. Ako elite da znate da li je banana trula, moete imenovati bulovu promenljivu isBananaRotten. Ako je to tano, banana je zaista trula. Sledei tip promenljive koji koristimo nije uopte tip. Preciznije, to je Java klasa String klasa (injenica je da poinje sa velikim slovom). String promenljiva je upravo to ona uva string (nisku, listu) razliitih znakova. String moe biti ima, string brojeva, reenica, pasus, bilo koji znaci uoptel. esto, string nee sadrati bilo kakav znak (prazan string). Mi emo mnogo koristiti stringove u Javi, zato treba dobro da ih znate. Stringovi su uvek omeeni (ogranieni) navodnicima. Primeri za string su:

I am a Java programmer Author Deklarisanje promenljivih

012345

Title

Kada imenujete promenljivu i odredite kog tipa elite da bude, morate te informacije proslediti Java projektu. Potrebno je da deklariemo svoje promenljive. Java naredba koja se koristi za deklarisanje promenljive imenovane variableName a tipa type je: type variableName; Nemojte zaboraviti taku-zarez (;) svaka Java naredba se zavrava sa time. Potrebna nam je naredba deklaracije kao ova za svaku promenljivu u naem projektu. To izgleda mnogo zametno, ali vredi potruditi se. Odgovarajue deklarisanje promenljivih olakava programiranje, smanjuje mogunost pojavljivanja greaka i olakava menjanje programa. Gde treba da se stave deklaracije promenljivih? U prvih nekolikoa projekata, pisaemo samo kd unutar glavnog metoda (main method) Java projekta. Stoga e deklaracije promenljivih biti smetene posle reda u kome je definisan glavni metod. Usled toga promenljive imaju lokalni karakter (local scope), to znai da su na raspolaganju samo metodu u kome su definisane. Ovaj nivo oblasti definisanosti je sasvim

zadovoljavajui za nae poetne projekte. Primeri deklaracije promenljivih: int numberBananas; double bananaCost; double totalBananaCost; boolean isBananaRotten; String myBananaDescription; Uoite da su deklaracije int, double i boolean napisane malim slovima, a String velikim slovom. Java dozvoljava da deklariete vie promenljivih istog tipa u jednom redu razdvajajui nazive sa zarezom. Na primer, moemo kombinovati dve od prethodnih deklaracija (za double promenljive) u: double bananaCost, totalBananaCost;

U glavnom metodu Java programa, ove deklaracije promenljivih treba da se pojave na vrhu: public static void main(String[] args) { int numberBananas; double bananaCost, totalBananaCost; boolean isBananaRotten; String myBananaDescription; [Ostatak glavnog metoda]

} Sada emo razmotriti kako se dodeljuju promenljivama vrednosti. Naredba dodeljivanja Najprostija i najvie koriena naredba u Javi je naredba dodeljivanja (assignment statement). Ta naredba ima oblik: variableName = variableValue; Uoite da samo jedna promenljiva moe biti na levoj strani operatora dodeljivanja (=). Evo nekoliko prostih primera dodeljivanja korienjem nae banana promenljive: numberOfBananas = 22; bananaCost = 0.27; isBananaRotten = false; myBananaDescription = Yes, we have no bananas!; Stvarne vrednosti ovde dodeljene promenljivama nazivaju se literali, poto one literarno pokazuju svoje vrednosti. Operator dodeljivanja moete prepoznati kao znak jednako koji koristite u aritmetici, ali se on ne naziva tako u raunarskom programiranju. Zato? U stvari, desna strana (variableValue u naem primeru) operatora dodeljivanja nije ograniena na literale. Svaki ispravan Java izraz, sa bilo kojim

brojem promenljivih ili drugih vrednosti, moe biti sa desne strana operatora. U tom sluaju, Java prvo izraunava variableValue, a zatim dodeljuje rezultat variableName. Ovo je veoma vaan koncept programiranja i treba da ga zapamtite izraunajte desnu stranu, a zatim dodelite levoj strani. Takoe je vano da imate na umu da ako tip od variableValue ne odgovara tipu od variableName, Java e konvertovati (ako je to mogue) variableValue u odgovarajui tip. Na primer, ako je variableName tipa int (celobrojna) a variableValue je izraunato 25.6, variableName e imati vrednost 25 (uzima se celobrojna vrednost). Pogledajmo sada neke operatore koji mogu da pomognu kod izraunavanja Java izraza. Aritmetiki operatori Jedna od stvari u kojoj su raunarski programi jako dobri je aritmetika. Oni mogu veoma brzo da sabiraju, oduzimaju, mnoe i dele brojeve. Mi treba da nauimo kako da napravimo da na Java projekt radi aritmetiku. Postoji pet aritmetikih operatora koje emo koristiti iz Java jezika. Sabiranje se obavlja pomou znaka plus (+) a oduzimanje se obavlja pomou znaka minus (-). Evo nekoliko prostih primera: Operacija Sabiranje Primer 7+2 Rezultat 9

Sabiranje Oduzimanje Oduzimanje

3+8 6-4 11 - 7

11 2 4

Mnoenje se obavlja pomou znaka zvezdice (*) a deljenje se obavlja pomou znaka u vidu kose crte (/). Evo primera: Operacija Mnoenje Mnoenje Deljenje Deljenje Primer 8*4 2 * 12 12 / 2 42 / 6 Rezultat 32 24 6 7

Siguran sam da ste radili sabiranje, oduzimanje, mnoenje i deljenje i pre nego to ste razumeli kako svaka od tih operacija radi. Ovde emo koristiti jo jedan operator koji se naziva operator ostatka (%). Taj operator daje ostatak koji se dobija prilikom deljenja dva cela broja. Moda vam to sada nee biti jasno, ali taj operator se mnogo koristi u raunarskom programiranju. Evo primera: Primer 7%4 14 % 3 Rezultat deljenja 1 ostatak 3 4 ostatak 2 3 2 Ostatak - rezultat

25 % 5

5 ostatak 0

Prouite ove primere kako biste razumeli kako operator ostatka radi u Javi. ta se deava ako naredba dodeljivanja ima vie od jednog aritmetikog operatora? Da li to neto menja? Pogledajmo primer: 7+3*4 Koji je rezultat? Zavisi kako raunate. Ako krenete sa leva na desno i prvo saberete 7 i 3, zatim pomnoite sa 4, rezultat je 40. Ako prvo pomnoite 3 i 4, zatim saberete 7, rezultat je 19. Konfuzija? Meutim, Java spreava mogunost pojave konfuzije svojim pravilima prvenstva (prioriteta, engl. precedence). To znai da postoji odreeni redosled po kome se aritmetiki operatori primenjuju. Taj redosled je sledei: 1. Mnoenje (*) i deljenje (/) 2. Ostatak (%) 3. Sabiranje (+) i oduzimanje (-) Prema tome, kod naredbe dodeljivanja prvo se urade sva mnoenja i deljenja, zatim operacija ostatka i na kraju, sabiranja i oduzimanja. U naem primeru (7 + 3 * 4),

mnoenje e se uraditi pre sabiranja tako da e rezultat koji daje Java biti 19. Ako dva operatora imaju isti nivo prioriteta, na primer, mnoenje i deljenje, operacije se u naredbi dodeljivanja obavljaju sa leva na desno. Primer: 24 / 2 * 3 Prvo se obavlja deljenje (24 / 2) koje daje 12, zatim mnoenje (12 * 3), tako da je rezultat 36. A ta ako elimo da uradimo mnoenje pre deljenja da li je to mogue? Da - pomou Java operatora za grupisanje - zagrade (). Pomou zagrada u naredbi dodeljivanja dajemo prioritet operacijama u zagradama i one se prve obavljaju. Prema tome, ako napiemo na primer kao: 24 / (2 * 3) mnoenje (2 * 3) e biti prvo obavljeno, to daje 6, zatim deljenje (24 / 6), koje daje eljeni rezultat, 4. Moete koristiti zagrada koliko hoete, ali one se uvek moraju koristiti u paru svaka leva zagrada mora imati svoju desnu. Ako ugnjedavate zagrade, tj. imate jedan skup unutar drugog, izraunavanje poinje iz najdubljeg skupa i ide ka spolja. Evo primera: ((2 + 4) * 6) + 7

Prvo se radi sabiranje 2 i 4, to daje 6, koje se mnoi sa 6, i rezultat je 36. Taj rezultat se zatim sabira sa 7, tako da je konani rezultat 43. Moete koristiti zagrade ak i ako one ne menjaju prioritet. esto, one se koriste da bi izraz bio razumljiviji. Evo nekoliko primera Java naredbi dodeljivanja sa aritmetikim operatorima: totalBananaCost = numberBananas * bananaCost; numberOfWeeks = numberOfDays / 7; averageScore = (score1 + score2 + score3) / 3.0; Ovde treba da uoite nekoliko stvari. Prvo, uoite da zagrade kod averageScore izraunavanja primoravaju Javu da sabere tri rezultata pre deljenja sa 3. Takoe, uoite upotrebu belina, razmaka koji odvajaju operatore od promenljivih. To je uobiajena praksa u Javi koja pomae da kd bude itljiviji. Na ovom kursu imaete prilike da se susretnete sa mnotvom primera naredbi dodeljivanja.

Java za mlade programere (8) Nadovezivanje stringova Moemo da primenimo aritmetike operatore na numerike promenljive (tip int i tip double). Takoe, moe se operisati i sa string promenljivama. esto u Java projektima uzimate string promenljivu sa jednog mesta i dodajete je na kraj drugog stringa. Ovo se naziva nadovezivanje (engl. concatenation) stringova. Operator nadovezivanja je znak plus (+) i lako se koristi. Na primer: newString = Java for Kids + is Fun!; Posle ove naredbe, string promenljiva newString e imati vrednost Java for Kids is Fun!. Uoite da je operator nadovezivanja identian sa operatorom sabiranja. Potrebno je da uvek obezbedimo da ne doe do konfuzije kada koristimo oba operatora. String promenljive ine veliki deo Jave. Kako se budete razvijali kao programeri bie potrebno da postanete bliski sa stringovima i operacijama sa njima. Komentari

Poeljno je da uvek sledite odgovarajua pravila programiranja kada piete svoj Java kd. Jedno od tih pravila je da na odgovarajui nain komentariete svoj kd. Moete da stavite ne-izvrne naredbe (koje raunar ignorie) u svoj kd koje objanjavaju ta va program radi. Ovi komentari mogu biti od pomoi u razumevanju vaeg koda. Takoe, oni olakavaju budue promene vaeg koda. Da biste stavili komentar u svoj kd, koristite simbol za komentar, dve kose crte (//). Sve to je napisano posle simbola za komentar raunar e ignorisati. Moete imati kao komentar poseban ceo red Java koda, kao u ovom sluaju: // Postavi broj banana numberBananas = 14; Ili, moete staviti komentar u isti red sa naredbom dodeljivanja: numberBananas = 14; // Postavi broj banana Takoe, moete imati komentar koji zahvata vie redova. Ponite komentar sa simbolom (/*) i zavrite ga sa simbolom (*/):

/* Ovo je veoma dug komentar Zauzima dva cela reda!! */ Vi, kao programer, treba sami da odluite koliko elite da komentariete svoj kd. Pokuau u projektima koji se budu ovde razmatrali da obezbedim adekvatne komentare. Programski izlaz Skoro da ste spremni da napravite svoj prvi Java program. Ali, potrebna je jo jedna stvar. Upoznati smo sa kao se imenuju i deklariu promenljive i kako se radi matematika sa njima, ali kada dobijemo rezultate, kako ti rezultati mogu da budu prikazani? Na ovom asu koristiemo metod koji ste ve videli u naem malom programu Welcome, Java metod println (da vas podsetim, izgovara se print lajn). Ono to taj metod radi je tampanje stringa rezultata u jednom redu: System.out.println(stringValue); U ovom izrazu, stringValue mogla bi biti promenljiva tipa String koja se negde izraunava (moda pomou operatora nadovezivanja) ili literal (stvarna vrednost). U primeru Welcome, mi smo koristili literal:

System.out.println(Welcome to Java for Kids!); I videli da se kao izlaz na ekranu pojavilo Welcome to Java for Kids! ta ako elite da izlaz bude numerika informacija? To je sasvim lako. Metod println e automatski konvertovati numeriku vrednost u string za potrebe izlaza. Na primer, pogledajte ovaj mali segment koda: numberBananas = 45; System.out.println(numberBananas); Ako pokrenete izvravanje ovog segmenta, na ekranu e se kao izlaz pojaviti 45. Takoe, moete kombinovati tekstualnu informaciju sa numerikom informacijom pomou operatora nadovezivanja. Na primer: numberBananas = 45; System.out.println(Number of Bananas is + numberBananas);

tampae na ekranu kao izlaz Number of Bananas is 45. Numeriki podatak (numberOfBananas) konvertovan je u string pre nego to je nadovezan na tekstualni podatak. Prema tome, prilino je lako kao izlaz dobiti tekstualnu i numeriku informaciju. Budite spremni na to da se ponekad mogu pojaviti i izvesni problemi. Da vas podsetim na injenicu da je operator nadovezivanja identian sa aritmetikim operatororm sabiranja. Pogledajte sledei segment koda: numberBananas = 32; numberApples = 22; System.out.println(Pieces of fruit + numberBananas + numberApples); Moda mislite da sa ovom naredbom tampate ukupan broj voa (numberBananas + numberApples = 54). Meutim, ako izvrite ovaj kd, dobiete Pieces of fruit 3222. Ono to se desilo je da je Java konvertovala oba numerika podatka u string pre nego to je obavljeno sabiranje. Tada znak plus koji ih razdvaja ima ulogu operatora nadovezivanja i stoga se dobija 3222. Da biste tampali sumu, potrebno je da pomou zagrada izvedete prisilno numeriko sabiranje: numberBananas = 32;

numberApples = 22; System.out.println(Pieces of fruit + (numberBananas + numberApples)); U ovom sluaju, dve numerike vrednosti se sumiraju pre konvertovanja u string i dobija se eljeni izlaz Pieces of fruit 54. Prema tome, vidimo da metod println nudi pogodan nain za dobijanje izlaza i sa numerikom i sa tekstualnom informacijom, ali mora korektno da se koristi. Uoite jo jednu stvar u ovom primeru. Zadnji red koda izgleda kao da ima duinu za dva reda! Ovo je se pojavilo zbog osobine programa za obradu teksta da prelama red. U pravom Java programu taj red e se pojaviti kako je i ukucan, kao jedan red. Imajte to na umu dok itate tekstove ovog serrijala.

Java za mlade programere (9) Projekt Sendvi urka Va razred je odluio da napravi urku. Napravljena su dva veoma velika podmornica sendvia i va zadatak je da definiete koliko svaki gost (student) moe da pojede. Svakako, to moete da uradite pomou kalkulatora, ali ovoga puta emo koristiti Javu. Projekat emo snimiti pod nazivom FirstProject u folderu ovog kursa (\JavaKids\JK Code). Dizajniranje projekta Predpostavimo da znate duinu svakog podmornica sendvia. Da bismo olakali seenje, rei emo da e svaki gost dobiti celi broj ina (ili centimetara) od sendvia (bez decimala). Uz ovaj podatak, moete izraunati koliko gostiju se moe nahraniti od jednog sendvia. Ako je ukupni broj vei od broja gostiju, tj. aka u razredu, svi e jesti i sve je u redu. A ako nije tako, moraete da uradite podeavanje. Koraci u programu bi trebalo da budu sledei: 1. Postaviti vrednost za broj ina sendvia koje gost moe pojesti. 2. Odrediti duinu oba sendvia. 3. Odrediti koliko gostiju moe da se nahrani od svakog sendvia.

4. Poveati ili smanjiti broj ina sve dok se ne postigne da ceo razred, tj. svi gosti mogu da jedu. Prevedimo svaki od ovih koraka u Java kd i postepeno izgradimo na projekt. Poto je ovo va prvi projekt, razmotriemo svaki korak (kreiranje novog projekta i dodavanje datoteke (fajla)) i pisaemo i diskutovati kd. Razvoj projekta Pokrenite JCreator i proverite da li je va radni prostor (MyJavaWorkspace) otvoren. WelcomeProject bi trebalo da je tu. Ako nema vaeg radnog prostora, kliknite miem na File, zatim Open Workspace da bist ga otvorili. Kreirajte novi projekt: Kliknite miem na File Izaberite New Kliknite miem na jeziak Projects Selektujte Empty Project Dodelite naziv: FirstProject Prozor vaeg Jcreatora trebalo bi da ima sledei izgled:

Kliknite na dugme OK. Uradite desni klik nad projektom FirstProject u prikazu radnog prostora i selektujte Sets as Active Project.

Dodajte fajl projektu: Kliknite miem na File Izaberite New Kliknite na jeziak Files Selektujte Java File Dodelite naziv: SubSandwich Prozor vaeg Jcreatora trebalo bi da ima sledei izgled:

Kliknite na OK i prazan fajl bi trebalo da se pojavi u oblasti prikaza fajla. To je mesto gde ete upisivati svoj kd.

Prvo, upiite sledee zaglavlje kao vieredni komentar: /* * Sub Sandwich Project * Java for Kids */ Sada, upiite u red definiciju klase i levu vitiastu zagradu za otvaranje klase ({). Da vas podsetim, zagrade se koriste za definisanje blokova sa kodom: public class SubSandwich { Sada sledi definicija glavnog metoda i njegova pripadna zagrada: public static void main(String[] args) { Uoite, kako upisujete nove blokove koda, JCreator uvlai odgovarajue blokove. Proverite da piete svaki red tano kako je prikazano. Za raunarsko programiranje vezano je mnogo kucanja korisno je da pohaate kurs daktilografije kako biste usavrili kucaku vetinu. Dobra tehnika kucanja znai bre i bez greaka kucanje, a time i vai Java programi nee imati kucake greke. Spremni ste da ponete da piete Java kd. Koristiemo u ovom programu pet promenljivih: jednu za to koliko svaki student moe da pojede, dve za duine sendvia, i dve za to

koliko gostiju moe da se nahrani od jednog sendvia. Sve promenljive e biti celobrojnog (integer) tipa. Upiite sada njihove deklaracije (svaku deklaraciju zavrite sa znakom taka-zarez): int inchesPerStudent; int lengthSandwich1, lengthSandwich2; int students1, students2;

Postavite vrednosti za neke promenljive (takoe, stavite komentar za ono to radite): // set values inchesPerStudent = 5; lengthSandwich1 = 114; lengthSandwich2 = 93; Mi smo postavili navedene vrednosti, vi moete postaviti neke druge ako elite. Uoite da smo pretpostavili da svaki gost moe da pojede 5 ina od sendvia. Zatim, pomou obinog deljenja raunamo koliko gostiju moe da se hrani iz svakog sendvia: // odredite koliko gostiju moe da se hrani iz svakog --//sendvia students1 = lengthSandwich1 / inchesPerStudent; students2 = lengthSandwich2 / inchesPerStudent; Uoite da e students1 i students2 biti (kako smo eleli) celi (integer) brojevi. Prikaite rezultate pomou metoda println: // ispii rezulatet System.out.println("Letting each student eat " + inchesPerStudent + " inches"); System.out.println((students1 + students2) + " students can eat these two sandwiches!"); Uoite kako nadovezivanje stringova funkcionie. Takoe, uoite da sumiramo broj gostiju pre ispisivanja. Na kraju,

zavrite program sa dve desne zagrade (}), jednom za zatvaranje metoda i drugom za zatvaranje klase.

Konani kd u JCreatoru treba da ima sledei oblik: /* * Sub Sandwich Project * Java for Kids */ public class SubSandwich { public static void main(String[] args) { int inchesPerStudent; int lengthSandwich1, lengthSandwich2; int students1, students2; // set values inchesPerStudent = 5; lengthSandwich1 = 114; lengthSandwich2 = 93; // determine how many students can eat each sandwich students1 = lengthSandwich1 / inchesPerStudent; students2 = lengthSandwich2 / inchesPerStudent; // print results System.out.println("Letting each student eat " + inChesPerStudent + " inches"); System.out.println((students1 + students2) + " students can eat these two sandwiches!"); } } Dva puta proverite da ste svaki red upisali kako treba.

Java za mlade programere (10) Pokrenite projekt Snimite svoj projekt (kliknite miem na dugme Save All na paleti alatki). Kompajlirajte svoj kd tako to ete pritisnuti taster <F7>, ili izaberite opciju Build iz glavnog menija i kliknite na stavku Compile Project. Treba da dobijete poruku Process completed. Ako se to ne desi, bilo koja poruka o greci koja se pojavi verovatno e ukazivati na greku u kucanju koda. Jo jednom proverite svoj kd taka-zarez postoje na odgovarajuim mestima kao i znaci navoda, nema neslaganja kod imenovanja promenljivih i funkcija. Kada je kd kompajliran, pokrenite njegovo izvravanje pritiskom na taster <F5>, ili izaberite u glavnom meniju Build, zatim Execute Project. Na ekranu bi trebalo da se pojavi sadraj prikazan na sledeoj slici:

estitamo napisali ste svoj prvi Java program!! Probajte jo neke kombinacije Kod prethodnog izvravanja videli smo da 40 uenika (studenata) moe da jede. ta ako treba da nahranite vie ili manje osoba? Podesite promenljivu inchesPerStudent i odredite broj osoba koje mogu da se nahrane za tu novu vrednost. Posle svakog podeavanja (izmene), moraete da ponovo kompajlirate i izvravate program. Pretpostavimo da sendvii prilino kotaju po inu veliine. Izmenimo program tako da on izraunava i cenu sendvia. Odredite sa kolikom sumom novca svaki uenik treba da uestvuje da bi pokrio trokove svog jela. Moete koristiti double tip promenljive da bi mogli da koristite decimale. Pokuajte sami da to uradite! Poto smatramo da svaki uenik treba da pojede ceo broj sendvia, moe da se desi da kod raunanja imamo ostatke za svaki sendvi. Kako bi mogli da izraunamo tu koliinu? To bi bila mala primena operatora ostatka koga smo ranije upoznali. Treba samo malo kd prepraviti. Prvo, definiimo promenljivu koja izraunava veliinu ostatka: int inchesLeftOver; Sada je na redu kd koji izraunava vrednost:

// izracunava leftovers inchesLeftOver = lengthSandwich1 % inchesPerStudent + lengthSandwich2 % inchesPerStudent; System.out.println("Postoji " + inchesLeftOver + " inca ostatka."); Dodajte ovaj kd svom projektu, ponovo ga kompajlirajte i izvrite. Da li vidite ukupni ostatak u vrednosti od 7 ina? Da li znate zato kod raunanja inchesLeftOver nismo sabrali obe duine sendvia pre primene operatora ostatka? Zakljuak Jo jednom estitamo, zavrili ste svoj prvi Java projekt. Nauili ste dosta o Java naredbama i dodeljivanjima, pa i neto malo o aritmetici. Trebalo bi da ste sada spremni za novi poduhvat, tj. projekat. Sledei put emo uiti jo novih stvari i pozabaviti se detaljnije Java projektima.

Java za mlade programere (11) Dizajniranje projekta Spremni smo da zaponemo prilino detaljan projekat u Javi. Ovde e biti predloeni neki projekti a vi ete verovatni imati i svoje ideje koje ete moda realizovati. Meutim, pre ne go to ponemo projekat, nije loe da malo razmislimo o onome to emo da radimo. Dobro razraena ideja, tj. dobro dizajniran projekat, utedee kasnije mnogo vremana a i rezultati e biti bolji. Dobro dizajniranje projekta nije neto tako teko, to je vie stvar dobre prakse. Osnovna ideja je da se kreira projekat koji se lako koristi, lako razume i koji nema greaka. Morate priznati, to ima smisla, zar ne? Zato potroite neko vreme na razmiljanje o onome to elite da va projekat radi. Koje su informacije potrebne vaem projektu? Da li raunar neke informacije definie? Utvrdite koje programske korake treba da sledite da biste ostvarili eljene zadatke. Trudite se da Java kd u vaim metodima bude itljiv i lako razumljiv. Ovo e biti kasnije od velike koristi kada budete morali neto da menjate. Potujte opte prihvaena pravila programiranja ta pravila ete saznati kako budete dalje uili da programirate u Javi. Paljivo analaizirajte svoj kod kako bi

bio bez greaka. To moda zvui kao suvina opaska, ali verujte da veina programa ima greke. Jednostavnu ideju da program bude upotrebljiv, jasno napisan i bez greaka, kao i lako izmenljiv nije uvek lako postii. Paljivo planiranje i planiranje unapred pomae da se taj cilj ostvari. Ovde emo pokuati da vam kod svakog projekta koji ovde razmatramo damo potpun uvid u ono to se deava. Uvek emo pokuati da vam objasnimo zato neto radimo.

Druga bitna stvar kod dizajniranja projekta je da uvek treba raditi u etapama, postepeno. Nemojte pokuavati da izgradite ceo projekat odjednom i tek tada da ga testirate. Takav pristup poveava mogunost pojavljivanja velikog broja greaka. Zato radite po fazama, piite pomalo koda, kompajlirajte ga i testirajte kako biste se uverili da radi kako treba. Polako dodajte sve vie i vie koda. Posle svakog dodavanja koda obavezno sledi testiranje. Nastavite sa tim pristupom sve dok ne kompletirate svoj projekat. Brzo ete uvideti da ovaj pristup laganog hoda kod kreiranja Java projekta olakava programiranje. Java jo jedna lekcija Do sada smo nauili prilino toga o Javi. To je bilo neophodno kako biste nauili osnovne koncepte i mogli da ponete sa pisanjem svog prvog programa. Sada emo krenuti dalje, nauiemo kako se inicijalizuju promenljive i neto o matematikim funkcijama. Inicijalizacija promenljive Ranije smo razmatrali potrebu da se deklarie svaka promenljiva koja se koristi u Java programu. Opta naredba koja se koristi za deklarisanje promenljive je oblika: type variableName;

Ovde mi kaemo da se promenljiva variableName deklarie da je tipa type. Tipovi promenljivih sa kojima emo se susretati su int (celi brojevi), double (decimalni brojevi), boolean (vrednosti tano i netano) i String promenljive. Evo nekoliko primera deklaracije promenljivih: int numberLightBulbsPerPack; int numberPacks; double costOfPack; boolean anyBurnedOut; String myQuestion;

Kada deklariete promenljivu, njoj se dodeljuje neka lokacija u memoriji raunara u kojoj se nalazi neka nepredvidiva vrednost. esto, to je sasvim dovoljno, ukoliko ne zaboravite da promenljivoj dodelite neku korisnu vrednost negde u svom programskom kodu. Postoje sluajevi kada treba da dodelite inicijalnu vrednost promenljivoj kada je deklariete. To je prilino dobra programerska praksa da radite takvu inicijalizaciju, ako znate vrednost koju promenljiva treba da ima (esto to neete znati). Postoje i situacije kada e Java insistirati da inicijalizujete promenljive. U tim situacijama radi se o jednostavnom proirenju deklaracije: type variableName = variableValue; Naredaba deklaracije u ovom sluaju je i naredba inicijalizacije, kreira se promenljiva pod nazivom variableName tipa type i

dodeljuje joj se poetna (inicijalna) vrednost od variableValue. Vodite rauna da dodelite vrednost odgovarajueg tipa. Ne moete dodeliti decimalnu vrednost promenljivoj celobrojnog tipa! Ove naredbe se smetaju zajedno sa uobiajenim deklaracijama na vrhu metoda da bi se obezbedila lokalna definisanost. Evo nekoliko primera deklarisanja i inicijalizacije promenljivih u Java programu: int numberLightBulbsPerPack = 8; int numberPacks = 7; double costOfPack = 2.45; boolean anyBurnedOut = false; String myQuestion = How many Java programmers does it take to change a light bulb?; I sami vidite kako je lako koristiti takve naredbe. Kao programer, bie potrebno da odluite kada elite da inicijalizujete promenljive a kada ne. Matematike funkcije U jednom od prethodnih nastavaka, susreli smo se sa aritmetikim operatorima koji nam omoguuju da obavimo osnovno sabiranje, oduzimanje, mnoenje i deljenje. Kao i drugi raunarski jezici, Java ima mogunosti da obavlja veoma mona matematika izraunavanja. Ugraene Java

matematike funkcije (nazivaju se i metodi) vrlo esto se koriste u takvim izraunavanjima. Ne oekujem da ste matematiki genije i zato emo se pozabaviti samo sa tri matematike funkcije. Prvo, ta je to uopte funkcija? Funkcija je rutina koja izraunava neku vrednost za vas na osnovu date informacije. Funkcija se koristi u sledeem formatu: functionValue = functionName(argumentList); functionName je ime funkcije a argumentList je spisak (lista) vrednosti (argumenata, razdvojenih zarezima) koje su obezbeene funkciji kako bi mogla da radi. U ovoj naredbi dodeljivanja, functionName koristi vrednosti iz argumentList da izrauna rezultat I dodeli ga promenljivoj pod nazivom functionValue. Moramo se postarati da promenljiva functionValue bude istog tipa kao vrednost koju izraunava funkcija functionName. Kako da znate koje Java matematike funkcije postoje, koje tipove informacija obezbeuju i koje argumente koriste? Potraite informacije u Java referentnim prirunicima i na Sunovom Java websajtu. Kao to sam ve pomenuo, razmatraemo samo tri matematike funkcije. Metodi koji podravaju matematike funkcije implementirani su u Java klasi Math. Prema tome, da biste koristili konkretnu funkciju, piete Math, zatim taku i posle toga ime funkcije.

Prva funkcija koju emo razmatrati je funkcija apsolutne vrednosti. U matematici, apsolutna vrednost je pozitivni deo broja. Java funkcija je: Math.abs(argument) gde je argument broj iju apsolutnu vrednost izraunavamo. Argument moe biti ili int ili double tipa a vraena vrednost e biti istog tipa kao argument. Evo nekoliko primera: Primer Math.abs(7) Math.abs(-11) Math.abs(-3.14) Math.abs(72.1) Rezultat 7 11 3.14 72.1

Da li vam je ikada trebao kvadratni koren nekog broja? Kvadratni koren je broj koji pomnoen samim sobom daje originalni broj. Na primer, kvadratni koren od 4 je 2, poto je 2 puta 2 etiri. Na vaem kalkulatoru postoji dugme () koje e to da uradi za vas. U Javi,kvadratni koren je: Math.sqrt(argument)

gde je argument broj iji kvadratni koren izraunavamo. Argument mora da bude ne-negativan double broj i vraena vrednost je double. Evo nekoliko primera: Primer Math.sqrt(4.0) Math.abs(36.0) Math.abs(72.1) Rezultat 2.0 6.0 8.491

Trea funkcija koju emo ovde koristiti je stepenovanje. Kod stepenovanja, broj se mnoi samim sobom odreen broj puta. Ako mnoimo broj samim sobom etiri puta, kaemo da je broj dignut na 4-ti stepen. Java funkcija za stepenovanje je: Math.pow(argument1, argument2) Uoite da pow (skraenica za power) funkcija ima dva argumenta. argument1 je broj koji mnoimo samim sobom argument2 puta. Drugim reima, ova funkcija die argument1 na argument2 stepen. I argument i vraena vrednost su brojevi tipa double. Evo nekoliko primera: Primer Math.pow(4.0, 2.0) Math.pow(-3.0, 3.0) Math.pow(10.0, 4.0) Rezultat 16.0 -27.0 10000.0

U ovde datim primerima, argumenti nisu imali decimalne delove. To je namerno uraeno da bi primeri bili jasniji. Vi niste ogranieni na takve vrednosti. Moete, na primer da koristite ovu funkciju da izraunate 7.654 na 3.16!! (Uzgred, odgovor je 620.99) Za one koje matematika malo vie interesuje, reiu da postoji jo Java funkcija. Moete pokuati sami da ih koristite. Postoje trigonometrijske funkcije I inverzne trigonometrijske funkcije, funkcije koje pretvaraju radijane u stepene I obratno, funkcije koje nalaze ekstremne vrednosti, funkcije za zaokruivanje, logaritam itd..

Java za mlade programere (12) Ulazni metodi programa U primeru Sub Sandwich Project pravili smo klasu, zatim postavljali vrednosti promenljivih u kodu i izvrili program da bi videli rezultat. Rezultat je ispisao Javin izlazni metod println. Ako elimo da koristimo druge vrednosti, potrebno je da promenimo kd, ponovo kompajliramo program i ponovo izvrimo. To je prilino zametno! Bilo bi lepo ako bi omoguili korisniku da upie vrednosti dok se program izvrava i prepustimo raunaru da uradi raunanje na osnovu ulaznih vrednosti. Na taj nain nema promene koda i ponovnog kompajliranja da bi se dobio novi rezultat. Nama je potrebno da tako neto imamo u svojim programima. naalost, Java nema opti metod koji podrava upisivanje ulaznih vrednosti preko tastature. Da li treba da budemo nesreni zbog toga? Ne. Napisaemo sopstvenu ulaznu rutinu pomou Jave. Mada taj kd nije teko napisati, to je prilino van okvira ovog kursa. Zato e ovde biti dat taj kd. Vi zatim moete da koristite taj kd u bilo kom programu koji zahteva upis vrednosti preko tastature. Korienje tog koda je slino korienju matematikih funkcija iz prethodne lekcije. Kd ulaza je sadran u klasi pod nazivom Typeit (fajl Typeit.java). Klasa Typeit sadri tri metoda:

inInt(prompt)

prihvata ceo (int) broj

inDouble(prompt) prihvata decimalni (double) broj inString(prompt) prihvata string (String) vrednost Svaki metod ima odzivnik (prompt) u obliku string poruke koja se pojavljuje kada se metod izvrava. Kada se odzivnik pojavi, korisnik upisuje zahtevani ulaz i pritiska taster <Enter> kako bi raunar prihvatio vrednost. Pogledajte primer. Recimo da imate program gde elite da saznate koliko korisnik ima godina. Dva reda Java koda obavljaju taj posao: int userAge; userAge = Typeit.inInt(Koliko imate godina?); Uoite da kod korienja inInt metoda, prvo piete ime klase Typeit, zatim taku in a kraju ime metoda. Kada se ovaj kd izvri, korisnik e videti na ekranu odziv u sledeem obliku: Koliko imate godina? Korisnik upisuje celobrojnu vrednost i pritiska taster <Enter>. U ovom trenutku ulazna vrednost je dodeljena promenljivoj userAge. Metod inInt obezbeuje da korisnik moe da upie samo celobrojnu vrednost. Korienje druga dva metoda inDouble i inString je slino.

Postavlja se pitanje kako da na program zna da su ovi ulazni metodi za tastaturu na raspolaganju? Va program treba da pristupi klasi Typeit. Najlaki nain da se ovo postigne je da fajl Typeit.java bude deo vaeg projekta. Da vas podsetim projekat je sastavljen od fajlova (klasa). Do sada, nai projekti su imali samo po jedan fajl (klasu). Sa te take gledita, veina naih projekata e imati dva fajla na programski fajl (fajl sa metodom main gde piemo Java kd) i fajl Typeit.java koji sadri nae ulazne metode. Kako da ubacimo ovaj drugi fajl? Pogledajmo jedan primer kako bi pokazali kako se dodaje Typeit.java u project i kako se koristi svaki od ulaznih metoda. Primer ulaznih metoda Pokrenite JCreator, otvorite MyJavaWorkspace i sledite uobiajene korake za kreiranje novog projekta pod nazivom InputProject. Aktivirajte InputProject. Ako je potrebno podsetite se kako se kreira projekt. Dodajte fajl InputTest u projekt. To je fajl u kome emo pisati na kd za testiranje ulaznih rutina. Sada moemo da dodamo drugi fajl (klasu), Typeit.java. Kao prvi korak, napustite na trenutak JCreator i kopirajte Typeit.java u svoj radni proctor, tj. folder

(MyJavaWorkspace). Time dobijate sopstvenu kopiju klase. Vratite se u JCreator. Sledite navedene korake: U pregledu radnog prostora uradite desni klik na InputProject Izaberite Add Files Prebacite se u folder MyJavaWorkspace i izaberite Typeit.java. Pojavljuje se prozor Open:

Kliknite na Open i fajl se dodaje vaem projektu.

Sada bi va projekt (InputProject) trebalo da sadri dva fajla (InputTest.java and Typeit.java). Podsetimo se bitnog koraka. Dodavaete Typeit.java skoro svim projektima koje budemo pravili ubudue na ovom kursu. A sada otvorite fajl Typeit.java (dvoklik na fajl u pregledu radnog prostota) i pogledajte ta se u njemu nalazi. Trebalo bi da vidite mnoto Java koda: /* * Program: Typeit * Class that provides keyboard input * Java for Kids * KIDware (206) 721-2556 */ import java.io.*; public class Typeit { public static void printPrompt(String prompt) { // print the prompt System.out.print(prompt + " "); System.out.flush(); } public static void inputFlush() { int dummy; int bAvail; // flush the data stream try { while((System.in.available()) != 0) {

dummy = System.in.read(); } } catch(java.io.IOException e) { System.out.println("Input error"); } } public static String inString(String prompt) { // returns input string inputFlush(); printPrompt(prompt); return inString(); } public static String inString() { int aChar; String s = ""; boolean finished = false; while(!finished) { try { aChar = System.in.read(); if (aChar < 0 || (char)aChar == '\n') { finished = true; } else if ((char)aChar != '\r') { s = s + (char) aChar; } } catch(java.io.IOException e) { System.out.println("Input error");

finished = true; } } return s; } public static int inInt(String prompt) { // returns input int while(true) { inputFlush(); printPrompt(prompt); try { return Integer.valueOf(inString().trim()).intValue(); } catch(NumberFormatException e) { System.out.println("Invalid input. Not an integer"); } } } public static double inDouble(String prompt) { // return input double while(true) { inputFlush(); printPrompt(prompt); try { return Double.valueOf(inString().trim()).doubleValue(); } catch(NumberFormatException e) {

System.out.println("Invalid input. Not a floating point number"); } } } } Ne oekuje se od vas da u ovom trenutku razumete taj kd. Ali ipak emo ga proanalizirati. Bez obzira na va nivo znanja, Ipak ete neke delove prepoznati. Bitno je jednu stvar uoiti a to je da glavni metod ne postoji nigde u klasi Typeit. To znai da taj kd ne moe da radi samostalno. On zahteva neku klasu za podrku da bi bio korien sa glavnim metodom. Taj kd e biti napisan u naoj glavnoj klasi, InputTest.java. Uradimo to sada. Otvorimo fajl InputTest.java. On treba da je prazan. Koristiemo taj program da testiramo korienje ulaznih metoda. Probaemo sistemom metod po metod, sledei preporuke koje smo ranije naveli da je najbolje postepeno stvarati kd. Upiite uobiajene informacije u zaglavlje, definiciju klase i definiciju glavnog metoda: /* * Input Project * Java for Kids */ public class InputTest { public static void main(String[] args) {

Upiite neki kd da biste dobili korisnikovu starosnu do bi dodajte dva para zagrada: int ageUser; ageUser = Typeit.inInt("What is your age?"); System.out.println("You typed " + ageUser); Zavreni kd u JCreatoru bi trebalo da ima sledei oblik: /* * Input Project * Java for Kids */ public class InputTest { public static void main(String[] args) { int ageUser; ageUser = Typeit.inInt("What is your age?"); } }

Kompajlirajte projekt (pritisnite <F7>). Ako se program ne kompajlira, proverite da ste ukljuili klasu Typeit id a ste kd upisali tano kako je pokazano. Izvrite projekt (pritisnite <F5>). Treba da vidite sledee:

Uoite kako se prompt (komandni odzivnik) pojavljuje. Upiite vrednost i pritisnite <Enter>. Treba da vidite:

Rutina inInt radi!! Testirajmo sada metod inDouble. Dodajmo deklaraciju nove promenljive: double myDouble;

Poto kd pita za korisnikovu starosnu dob, dodajte sledea dva reda: myDouble = Typeit.inDouble("Type in a decimal number"); System.out.println("You entered " + myDouble); Ponovo kompajlirajte i izvrite kd. Upiite neke godine i videete:

Upiite vrednost i pritisnite <Enter>. Videete va unos preslikan kao u ogledalu:

Na kraju, testirajmo inString. Dodajmo sledeu deklaraciju promenljive: String myString;

A zatim dodajte seldea dva reda koda: myString = Typeit.inString("Type in some string"); System.out.println("You entered " + myString); Ponovo kompajlirajte i izvrite program. Upiite svoje godine, upiite decimalni broj i videete prompt koji vas pita za string:

Upiite string i pritisnite <Enter>. Evo primera ekrana:

Izgleda da svi ulazni metodi fino rade. Da li ste uoili kako je gradnja projekta u etapama (postepeno dodavanje po malo koda) dobra? Uvek sledite takvu proceduru. Kao to sam naveo, koristiemo klasu Typeit i njene ulazne metode u skoro

svim narednim aplikacijama. Ako vam neto kasnije ne bude jasno uvek se moete vratiti na ovaj primer. Projekt je sauvan pod imenom InputProject. Pre nego to napustite ovaj primer i preete na gradnju nekog drugog primera, pogledajte druge korisne Java koncepte. U prethodno datom izlaznom prozoru bilo bi lepo ako bi postojao prazan red izmeu svih ulaznih zahteva za upisivanje. To e uticati da izlaz bude itljiviji. Jedna od mogunosti da ubacite prazan red u izlaz je da koristite metod println bez argumenata: System.out.println(); Ovo moe biti zametno ako vam je potrebno vie praznih redova. Laki nain je da se koristi Java escape sekvenca za novi red (\n). Jednostavno umetnete sekvencu od ova dva znaka u bilo koji string koji prosleujete na izlaz sa println. Kada se to pojavi novi red se zapoinje. Na primer, System.out.println(This is a line\n); e tampati na ekranu prazan red posle iskaza This is a line. Dok e, System.out.println(\nThis is a line);

tampati prazan red pre ispisivanja iskaza This is a line na ekranu. Uveriete se i sami da je escape sekkvenca za novi red veoma korisna.

Java za mlade programere (13) Projekt Savings Calculator U ovom projektu, praviemo kalkulator za tedie. Scenario rada kalkulatora je sledei: svake sedmice stavljamo novac na raun, banka daje odreenu kamatu i mi moemo pomou ovog kalkulatora da izraunamo koliko emo novca imati na raunu posle odreenog broja sedmica. Ovaj projekt je snimljen pod nazivom SavingsProject u folderu (\JavaKids\JK Code). Dizajn projekta Po koracima, kalkulator treba da uradi sledee: 1. Dobije iznos sedminog depozita. 2. Dobije broj sedmica. 3. Pomnoi ta dva broja. 4. Kao izlaz prikae dobijeni proizvod. Koristiemo ulazni metod Typeit za prihvat korisnikovog unosa. Metod println e se koristiti za ispis iznosa izlaza. Dodaemo jo jedan korak, tj. pitaemo korisnika za njegovo ime (primer korienja metoda inString). Razvoj projekta

Pokrenite JCreator, otvorite radni prostor i kreirajte novi projekt pod nazivom SavingsProject. Dodajte prazan fajl pod nazivom Savings (.java ekstenzija e biti po automatizmu dodata) a zatim fajl Typeit.java (trebalo bi da se nalazi u vaem radnom folderu).. Podsetite se primera iz prolog broja i dodavanja klase Typeit.java svom projektu. Otvorite prazan fajl Savings.java. Prvo, upiite sledee informacije u zaglavlje, definiciju klase i definiciju glavnog metoda (sa svim potrebnim levim zagradama: /* * Savings Project * Java for Kids */ public class Savings { public static void main(String[] args) { Koristiemo etiri promenljive u ovom programu: jednu za korisnikovo ime, jednu za iznos depozita, jednu za broj sedmica i jednu za iznos ukupne sume (totala). Upiite sada njihove deklaracije: // deklarisanje i inicijalizacija promenljivih String yourName; double deposit = 0.0; int weeks = 0; double total = 0.0;

Sada pristupamo kodiranju prema koracima navedenim u dizajnu projekta. Svaki put kada upiemo neki kd, moemo da se zaustavimo, kompajliramo i izvrimo program da bi videli da li je sve u redu. To je dobra praksa i trebalo bi da vam pree u naviku. Prvo, pitamo korisnika za ime koristei sledei kd: // pitamo korisnika za ime yourName = Typeit.inString("Hello, what is your name?"); Uoite da je yourName tipa string. Zatim, utvrdite koliki e biti sedmini depozit: // dobijanje iznosa depozita deposit = Typeit.inDouble("\nHow much will you deposit each week?"); Iznos za depozit je tipa double. Uoite korienje tzv. escape sekvence za prelazak u novi red pre pojavljivanja ispisa komandnog prompta (\n). Na kraju, dobijamo broj sedmica, vrednost tipa int: // dobijanje broja sedmica weeks = Typeit.inInt("For how many weeks?"); Korienjem ovh informacija moe se izraunati ukupni depozit i prikazati korienjem metoda println (nemojte zaboraviti desne zagrade): // izraunavanje i prikazivanje ukupne sume

total = deposit * weeks; System.out.println("\n" + yourName + ", after " + weeks + " weeks, you will have $" + total + " in your savings.\n"); Snimite projekt klikom mia na dugme Save All. Konaan kd u prozoru Jcreatora trebalo bi da ima sledei oblik: /* * Savings Project * Java for Kids */ public class Savings { public static void main(String[] args) { // declare and initialize variables String yourName; double deposit = 0.0; int weeks = 0; double total = 0.0; // ask user name yourName = Typeit.inString("Hello, what is your name?"); // get deposit amount deposit = Typeit.inDouble("\nHow much will you deposit each week?"); // get number of weeks weeks = Typeit.inInt("For how many weeks?"); // compute and display total total = deposit * weeks;

System.out.println("\n" + yourName + ", after " + weeks + " weeks, you will have $" + total + " in your savings.\n"); } } Izvravanje projekta Kompajlirajte i izvrite projekt. Ako se projekt ne izkompajlira uspeno, pokuajte da pronaete gde su greke pomou poruka o grekama koje e se pojaviti ukoliko ima greaka. Jedna mogua greka da program ne moe resolve the symbol Typeit. Ta greka e se pojaviti ukoliko ste zaboravili da dodate fajl Typeit.java svom projektu. Zato jo jednom proverite da li ste dodali taj fajl svom projektu. Kada program radi kako treba vi treba na svom ekranu da dobijete prikaz dat na sledeoj slici:

Upiite svoje ime, iznos depozita i broj sedmica. Vaa ukupna suma bie prikazana u obliku lepo formatiranog string. Uoite kako su ime, depozit, sedmice i ukupna suma stavljeni zajedno

(nadovezani) u jednu reenicu, zajedno sa znakom za dolar ($). Proverite da li je odgovor taan. Da vas podsetim, veliki korak u programiranju je proveravanje da li sve radi kako treba! Ako ste naveli da tedite 10 dolara nedeljno u narednih 10 nedelja i va program kae da ete tada imati milion dolara, znate da negde neto nije u redu! Kada sam probao program dobio sam:

Uoite da je depozit 40.52 (znak za dolar se ne unosi) u toku 10 sedmica, a program saoptava da u imati $405.20000000000005 na raunu!! Ovde se pojavljuje mnogo nula zato to raunar nije sposoban da precizno izvri aritmetiku dobili smo ono to se naziva greka zaokruivanja (round-off error). Rezultat moe biti korektnije prikazan korienjem samo dve decimale ($405.20). To je lako uraditi u Javi, ali je u ovom trenutku van naeg interesovanja. ini se da ovaj projekt nije komplikovan. I nije. Mi smo samo mnoili dva broja. Meutim, projekt demonstrira korake koji se koriste u svakom Java projektu. Vredno iskustvo se stie

saznavanjem kako se itaju ulazne vrednosti, proverava da su vrednosti odgovarajueg tipa, rade matematiku tako da se dobijaju tani rezultati i prikazuju ih korisniku. Pokuajmo jo neke stvari Uobiajeno je da se na tednju zaraunava i neka kamata, tj. Banka vam plaa zato to ste joj omoguili da radi sa vaim novcem. Na projekt je ignorisao kamatu. Meutim, izuzetno je lako prepraviti ovaj program i omoguiti izraunavanje kamate. Ovde e vam biti reeno kako da prepravite projekt, ali nee biti to i pokazano. Pokuajte samo da to uradite: Definiite promenljivu interest da biste memorisali godinju stopu kamate. Kamatne stope su decimalni brojevi, tako da ova promenljiva treba da bude tipa double. Dodajte jo jednu naredbu za ulaz da biste omoguili korisniku da upie kamatnu stopu. Prepravite kd tako da koristi kamatnu stopu prilikom izraunavanja ukupne sume (total). Kd za to izraunavanje je: total = 5200 * (deposit * (Math.pow((1 + interest / 5200), weeks) - 1) / interest); Upiite sve u jedan red kao to moda ve znate, programi za obradu teksta izmene oblik koda zbog

preloma reda, pa je to i ovde sluaj. Ovo je ujedno veba za korienje zagrada i matematike funkcije (pow). Broj 5200 se koristi za konvertovanje kamatne stope sa godinje na sedminu stopu. Sada kompajlirajte i izvrite prepravljenu verziju programa. Upiite vrednosti za depozit, sedmice i kamatnu stopu. Proverite runo da li vam raunar daje taan rezultat. (Ako ste za depozit upisali vrednost 10, za 20 sedmica, a kamatna stopa je 6.5, ukupna suma trebalo bi da bude $202.39 (sa zaokruivanjem, inae se dobija $202.3929075). Snimite svoj projekt. Pripremio Dragan Markovi

You might also like