Principi Programiranja Seminar Ski Rad - Dubravac Igor

Embed Size (px)

Citation preview

PANEVROPSKI UNIVERZITET APEIRON FAKULTET POSLOVNE INFORMATIKERedovne studije Smjer IT menadment

Predmet PRINCIPI PROGRAMIRANJA

Uvod u Java programiranje(seminarski rad)

Predmetni nastavnik Prof. dr Zoran Avramovi

Student

Igor Dubravac, studentIndex br. 029-08/RIT

Banja Luka, septembar 2011.

1

Sadraj Uvod Struktura Java programa Pravila Java programiranja Kompajliranje i izvravanje Java programa Kreiranje Java programa Promjenjive Nazivi promjenjivih Tipovi promjenjivih Deklarisanje promjenjivih Naredba dodjeljivanja Aritmetiki operatori Nadovezivanje stringova Komentari Programski izlaz Projekt programerska slava Dizajniranje projekta Inicijalizacija promjenjive Matematike funkcije Ulazni metodi programa Primjer ulaznih metoda Projekt kalkulator za tedie Zakljuak Literatura 3 4 6 6 7 8 9 9 10 11 12 13 13 14 15 17 17 18 20 20 23 25 26

Uvod2

Java je raunarski programski jezik koji je razvila firma Sun Microsystems. Programski jezik se koristi za izdavanje instrukcija raunaru da obavi konkretne poslove. Java kao programski jezik je nastala 1995. god. i izuzetno je popularna. Prvi razlog popularnosti je cijena, s obzirom da je potpuno besplatna. Mnogi programski jezici se prodaju po cijeni od vie stotina ili hiljada dolara, to je veini ljudi glavna prepreka da ponu da ue programiranje. Drugi razlog za popularnost je to to Java programi mogu da se izvravaju na skoro svakom tipu raunara jer su 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 raunara. Takoe, mogu se praviti aplikacije sa grafikim korisnikim interfejsom (engl. Graphical User Interface - GUI). Ove aplikacije raspolau sa menijima, paletama alatki, dugmadima, trakama za pomjeranje sadraja drugim kontrolama koje reaguju na mia. Primjeri GUI aplikacija su programi za obradu teksta, programi za rad sa tabelama i raunarske igrice. Takoe, mogu se 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. 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 onsovnih dijelova (komponenti) koji mogu da se vie puta koriste. To za Java programera znai da moe da pravi i mijenja velike programe bez veih komplikacija. 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. Meutim, ta jednostavnost ne znai da Java nije moan programski jezik. Sa Javom se moe uraditi sve ono to se moe uraditi i na nekom drugom, mnogo sloenijem jeziku.

Struktura Java programa

3

Java, kao i svaki drugi jezik (raunarski ili govorni), ima svoju terminologiju. Java program (ili projekt) ini nekoliko datoteka. Ove datoteke se nazivaju klasama. Svaka od tih datoteka ima Java kod koji obavlja neki specifian zadatak ili zadatke. Svaka datoteka klase ima oznaku tipa datoteke, takozvanu 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 naziva glavni metod (engl. main method). Kad god se izvrava Java program, raunar e prvo potraiti glavni metod da bi neto poelo da se deava. Prema tome, za izvrenje programa, mora se direktno navesti klasa koja sadri glavni metod.

Slika 1 Test projekt Welcome Na slici broj 1 vidimo kako to sve izgleda u radnom okruenju JCreatora LE, besplatnog programa u tzv. integrisanom razvojnom okruenju (engl. Integrated Development Environment - IDE). Ovaj projekt ima jednu datoteku koja se naziva Welcome.java. Uoljivo je, kao to je zahtjevano, naziv Welcome odgovara nazivu klase koji se vidi u kodu (public class Welcome). Takoe je uoljiva oblast u kodu koja ima rije main. To je glavni metod koji je potreban u jednoj od klasa projekta. Program (ili projekt) sainjava vie datoteka koje se nazivaju klasama, a koje sadre aktuelni Java kod. Ona klasa od koje sve poinje je glavna klasa. Projekti se grupiu u radne oblasti (engl. Workspaces). U daljnjem tekstu u razmatrati Welcome program red po red kako bih objasnio njegovu strukturu.4

Prvih pet redova su: /* * Test Projekat * Autor: Igor Dubravac * 2011. */ U tim redovima je komentar (engl. Comment). Ti redovi obezbjeuju 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 se uvijek stavlja zagljavlje u Java programe u kojima je informacija ta rade i ko ih je napisao. Java kompajler ignorie svaki komentar njihova uloga je samo da prua objanjenje. Prvi red posle komentara sadri sledee: public class Welcome { Ovaj red sadri definiciju klase nazvane Welcome. Kljuna (engl. keyword) rije public odreuje da li drugi dijelovi programa mogu da pristupaju ovoj klasi. Kljune rijei su dio svakog programskog jezika to su rezervisane rijei i ne mogu se koristiti u regularnim Java izrazima. Lijeva vitiasta zagrada ({) se koristi da oznai poetak definicije klase. Sledei red je: public static void main(String[] args) { U ovom redu se kreira glavni metod ranije pomenut. Ovako poinje glavni metod u kome se pie Java kod koji e se izvriti kada se program pokrene. Druga lijeva vitiasta zagrada koristi se za poetak definisanja glavnog metoda. Jedini Java iskaz (engl. statement) u glavnom metodu je: System.out.println("Dobrodosli u test projekat!"); System klasa je ugraena u Javu, out je objekat klase koji se odnosi na izlazni prozor (engl. output window). Rije println (print line) prikazuje jedan red teksta. Tekst koje se prikazuje je pod navodnicima (u JCreatoru je i u drugoj boji radi preglednosti). Iskaz se zavrava sa (;). U ovom prostom primjeru, glavni metod ima samo jedan iskaz, dok e naredni iskazi imati mnogo vie iskaza. Metodi su mjesto gdje Java

5

programi obavljaju zadatke, Pored pisanja sopstvenih metoda, moe se koristiti bilo koji od mnogobrojnih metoda koji su ugraeni u Java jezik. Posle ovog reda slijede dva reda od kojih svaki ima desnu vitiastu zagradu (}). Prva zagrada okonavaglavni metod, dok druga konava definiciju klase.Potrebno je uvijek paziti da su vitiaste zagrade uparene, tj. da svakoj lijevoj odgvara jedna desna. U sutini, ptrebno je zaglavlje programa, definicijaklase i glavni metod kao i voenje rauna o snimanju datoteke klase pod istim nazivom pod kojim je klasa definisana. Ta datoteka ima oznaku (tzv. ekstenziju) .java.

Pravila Java programiranja - Java kod zahtjeva perfekciju. Sve kljune rijei moraju biti korektno zapisane. - Java razlikuje mala i velika slova (engl. case-sensitive), to znai da se celika i mala slova smatraju razliitim znaokvima. - Java ignorie bijele linije (engl. white space), koriste se radi preglednosti. - Vitiaste zagrade se koriste za grupisanje. One markiraju poetak i zavretak programskih sekcija. Sekcija koda izmeu dvije odgovarajue vitiaste zagrade naziva se blok. - Dobra praksa je uvlaenje koda bloka prilikom pisanja programa. To olakava praenje kod. JCreator automatski uvlai kod u blokovima. - Svaki Java iskaz se zavrava taka-zaretom (;). Iskaz je programski izraz koji proizvodi neku akciju (npr. iskaz println). Potrebno je uoiti da nisu svi java izrazi iskazi (npr. red koji definie glavni metod nema taku-zarez).

Kompajliranje i izvravanje Java programa U primjeru iznad, u tri koraka je obavljeno kreiranje i izvravanje Java programa: - pisanje koda, - kompajliranje koda i - izvravanje koda. Java je nezavisna od platforme. Ova nezavisnost je mogua zato to se Java program ne izvrava direktno na raunaru, ve na virtuelnom raunaru koji je instaliran na raunaru zajedno sa Java Software Development Kitom (SDK). Taj virtuelni raunar se naziva Java virtuelna maina. Prije nego to SDK moe da razumije Java program, on mora da bude pretvoren ili preveden u jezik koji ona razumije. Ova konverzija se obavlja kada se kompajlira Java program. Kompajliranje Java programa kreira datoteku sa objektnim kodom koji SDK moe da razumije. Ta datoteka e imati oznaku tipa datoteke (ekstenziju) .class. Na sledeoj tabeli je grafiki prikazan proces6

kompajliranja: Java program (.java datoteka)

Java kompajler

Java objektni kod (.class datoteka)

Tabela 1 Grafiki prikaz procesa kompajliranja Pri izvravanju Java programa, ove .class datoteke obrauju neto to se zive Java Interpreter unutar virtuelne maine. Ovaj interpreter razgovara sa raunarom i prevodi Java naredbe u eljene rezuktate. Na sledeoj tabeli je grafiki prikazan proces izvravanja programa: Java objektni kod (.class datoteka)

Java virtuelna maina (Java Interpreter)

Program na raunaru

Tabela 2 Grafiki prikaz proces izvravanja programa

Kreiranje Java programa U primjeru Welcome smo vidjeli da naredba tampa neku informaciju (Dobrodosli u test projekat!). Svaki program je sainjen od vie Java naredbi koje raunar treba da obradi. Pravljenje raunarskog programa pomou Jave (ili bilo kog drugog jezika) je direktan proces. Relativno je lako ispisati korake rjeenja na naem govornom jeziku. Meutim, za nas je malo tee to saoptiti raunaru na njegovom jeziku. Za prost primjer sabiranja ti koraci bi bili: - zadaj vrijednost prvog broja, - zadaj vrijednost drugog broja, - saberi prvi broj sa drugim, rezultat je zbir, tj. trei broj, - saopti zbir. Sada je potrebno da to saoptimo raunaru na njegovom jeziku. Prevodimo svaki korak rjeenja u naredbu (ili naredbe) raunarskog jezika. Da bi mogli kazati raunaru kako da uradi bilo koji zadatak, potrebno je dobro poznavati programski jezik, u ovom sluaju Java programski jezik. Druga stvar o kojoj treba voditi rauna pisajui Java programe je logika i preciznost. Raunar e slijediti instrukcije ak i kada su pogrene. Ispod slijede par primjera pisanja programskih zadataka kao niz koraka za ilustraciju nekih stvari koje raunar moe da uradi. ta treba uraditi ako profesor zatrai prosjenu sa testa koji je radilo 352 uenika? Koraci su sledei:7

- odrediti ocjenu svakog studenta, - sabrati sve ocjene da bi dobili sumu, - podijeliti sumu sa 352 da bi dobili prosjenu ocjenu, - saoptiti profesoru prosjenu ocjenu. Drugi korak se moe dalje razdijeliti u manje korake. Da bi sabrali 352 ocjene treba: - poeti sa prvom ocjenom, - dodati drugu ocjenu, zatim treeu, pa etvrtu itd., - stati kada su sve ocjene dodate. U ovim koracima raunar bi trebalo da radi isti posao (dodavanje broja) 352 puta. Raunari su veoma dobro kod poslova koji se ponavljaju, nazivaju se petlje (engl. looping). Najjednostavniji primjer petlje bi bio algoritam za klasinu kartaku igru Rat u kojoj dva igraa uzimaju karte iz standardnog pila i onaj koji ima jau kartu nosi kartu drugog igraa. Proces se nastavlja sve dok u pilu ima karata. Ko sakupi vie karata kada se igra zavri je pobjednik. Igranje ove igre zahtijeva sledee korake: - promjeati pil karata, - dati kartu prvom igrau, - dati kartu drugom igrau, - odrediti ija karta je jaa i proglasiti pobjednika, - ponavljati proces davanja (dijeljenja) karata igraima sve dok ima karti u pilu. U etvrtom koraku se zahtjeva od raunara da donese odluku utvrivanje koja je karta jaa. Na kraju, korak 5 trai ponavljanje dijeljenja karata sve dok ih ima u pilu. Za svaki Java program koji se pravi, najbolje je prvo napisati niz logikih koraka koji e raunar slijediti kod obavljanja poslova koji su potrebni programu. Zatim slijedi pretvaranje tih koraka u Java jezik to e dati Java program.

Promjenjive 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 smjeste informacije dok sa njima rade. Promjenjive su primarni metod za premjetanje informacija u Java projektu. Prilikom korienja promjenjivih odreena pravila se moraju potovati. Nazivi promjenjivih Svakoj promjenjivoj u projektu se mora dodijeliti naziv (ime). Pravila za imenovanje promjenjivih su: - mogu se koristiti samo slova, brojevi i znak podvlake (_), - prvi znak mora biti slovo,

8

- ne mogu se koristiti slubene (rezervisane) rijei Java programskog jezika (npr. ne mgu se promjenjivoj dodijeliti naziv println ili System). Po konvenciji, nazivi promjenjivih poinju sa malim slovom. Ako se naziv promjenjive sastoji od vie rijei, tada su rijei spojene a svaka rije posle prve poinje sa velikim slovom. Najvanije pravilo je da se koriste nazivi promjenjivih koji neto znae. Trebalo bi moi identifikovati informaciju smjetenu u promjenjivoj po nazivu promjenjive. Primjer proizvoda i njihovih cijena: Koliina Jedinina cijena proizvoda Broj poruenih proizvoda Cijena svih proizvoda Naziv promjenjive itemCost numberItems totalItemCost

Naziv svake promjenjive poinje sa malim slovom a velikim slovom poinje svaka potonja rije u nazivu promjenjive.

Tipovi promjenjivih Potrebno je znati tip informacije koju uva (dri) svaka promjenjiva. Da li sadri broj? Da li broj ima decimalnu taku (zarez)? Da li sadri tekstualnu informaciju? Prva promjenjiva je tipa int (integer). Ovaj tip promjenjive se koristi za predstavljanje cijelih, ne-decimalnih brojeva. Primjer: 1 -20 4000

4,000 (anglosaksonski oblik zapisivanja brojeva) u Javi se pie kao 4000 ne koriste se zarezi kod velikih brojeva. U primjeru iznad, numberItems treba da bude promjenjiva tipa int. Ako promjenjiva treba da uva broj koji ima decimalnu taku, tj. zarez, takve promjenjive e biti tipa double. Takve promjenjive su dvostruke preciznosti (doubleprecision), brojevi sa pokretnim zarezom (floating point numbers decimalna taka je stvar koja se pomjera). Primjer: -1.25 3.14159 22.7

U primjeru iznad, promjenjiva itemCost i totalItemCost treba da budu promjenjive tipa double.

9

U Java programiranju se koristi i bulov (boolean) tip promjenjive. Ovaj tip je dobio naziv po poznatom matematiaru, Boole-u. Moe da ima jednu od dvije vrijednosti: true (tano) ili false (netano). Promjenjive ovog tipa su osnova raunarevih sposobnosti za donoenje odluka. Primjena bulovog tipa promjenjive na primjer iznad bi bio u sluaju da elimo zunati da li je proizvod u redu ili nije i glasio bi isItemOk. Ako je tano (true), onda je u redu, u protivnom, logino, nije. Sledei tip koji se koristi nije uopte tip. Preciznije, to je Java klasa String klasa (injenica je da poinje sa velikim slovom). String promjenjia je upravo to ona uva string (nisku, listu) razliitih znakova. String moe biti string brojeva, reenica, pasus, bilo koji znaci uopte. esto, string nee sadrati bilo kakav znak (razan string). Stringovi su uvijek odreeni navodnicima. Primjer: Ja sam Java programer 0123456789 Komentar

Deklarisanje promjenjivih Kod imenovanja promjenjivih i odreivanja tipa, te informacije se moraju proslijediti Java projektu. Potrebno je da deklariemo svoje promjenjive. Java naredba koja se koristi za deklarisanje promjenjive imenovane variableName a tipa type je: type variableName; Potrebna je naredba deklaracija kao ova za svaku preomjenjivu u projektu. Odgovarajue deklarisanje promjenjivih olakava programiranje, smanjuje mogunost pojavljivanja greaka i olakava mijenjanje programa. Pisajui kod samo unutar glavnog metoda (main method) promjenjive imaju lokalni karakter (local scope), to znai da su na raspolaganju samo metodu u kome su definisane. Primjeri deklaracije promjenjivih: int numberItems; double itemCost; double totalItemCost; boolean isItemOk; String myItemDescription; Java dozvoljava deklarisanje vie promjenjivih istog tipa u jednom redu razdvajajui nazive zarezom. Na primjer, moemo kombinovati dvije od prethodnih deklaracija (za double promjenjive) u: double itemCost, totalItemCost;

10

U glavnom metodu Java programa, ove deklaracije promjenjivih treba da se pojave na vrhu: public static void main(String[]) args) { int numberItems; double itemCost, totalItemCost; boolean isItemOk; String myItemDescription; /* Ostatak glavnog metoda */ }

Naredba dodjeljivanja Najprostija i najvie koriena naredba u Javi je naredba dodjeljivanja (assignment statement). Ta naredba ima oblik: variableName = variableValue; Samo jedna promjenjiva moe biti na lijevoj stani operatora dodjeljivanja (=). Evo nekoliko prostih primjera dodjeljivanja korienjem item promjenjive: numberOfItems = 22; itemCost = 0.27; isItemOk= true; myItemDescription = Proizvodimo samo najbolje!; Stvarne vrijednosti dodijeljenje promjenjivama nazivaju se literali, poto one literalno pokazuju svoje vrijednosti. Operator dodjeljivanja se prepoznaje kao znak jednakosti ali se on ne naziva tako u raunarskom programiranju. Desna strana (variableValue u ovom primjeru) operatora dodjeljivanja nije ograniena na literale. Svaki ispravan Java izraz, sa bilo kojim brojem promjenjivih ili drugih vrijednosti, moe biti sa desne strane operatora. U tom sluaju, Java prvo izraunava variableValue, a zatim dodjeljuje rezultat variableName. Ovo je veoma vaan koncept programiranja izraunati desnu stranu, zatim dodijeliti lijevoj strani. Takoe je vano imati na umu da ako tip od variableValue ne odgovara tipu od variableName, Java e konvertovati (ako je to mogue) variableValue u odgovarajui tip. Na primjer, ako je variableName tipa int (cjelobrojna) a variableValue je

11

izraunato 25.6, variableName e imati vrijednost 25 (uzima se cjelobrojna vrijednost).

Aritmetiki operatori Jedna od stvari u kojoj su raunarski programi jako dobri je aritmetika. Oni mogu veoma brzo da sabiraju, oduzimaju, mnoe i dijele brojeve. Postoji pet aritmetikih operatora koji se koriste iz Java jezika a to su: - sabiranje (+), - oduzimanje (-), - mnoenje (*), - dijeljenje (/), - ostatak (%). Ako naredba dodjeljivanja ima vie od jednog aritmetikog operatora Java spreava mogunost pojave konfuzije svojim praviliman prvenstva (engl. precedence). To znai da postoji odreeni redoslijed po kome se aritmetiki operatori primjenjuju. Taj redoslijed je sledei: - mnoenje (*) i dijeljenje (/), - ostatak (%), - sabiranje (+) i oduzimanje (-). Ako dva operatora imaju isti nivo prioriteta (npr. mnoenje i dijeljenje), operacije se u naredbi dodjeljivanja obavljaju s lijeva na desno. Takoe, prioritet se moe staviti pomou operatora za grupisanje zagrade (). U sluaju jednog skupa unutar drugog, izraunavanje poinje iz najdubljeg skupa i ide ka spolja. Evo nekoliko primjera Java naredbi dodjeljivanja sa aritmetikim operatorima: totalItemCost = numberItems * itemCost; numberOfWeeks = numberOfDays / 7; averageScore = (score1 + score2 + score3) / 3.0;

Nadovezivanje stringova Aritmetiki operatori se mogu primjeniti na numerike promjenjive (tip int i tip double). Takoe, moe se operisati i sa string promjenjivama. esto se u Java projektima uzima string promjenjiva sa jednog mjesta i dodaje se na kraj drugog stringa. Ovo se naziva nadovezivanje (engl. concetenation) stringova. Operaor nadovezivanja je znak plus (+) i tako se koristi, na primjer:

12

newString = Ja sam + Java programer!; Posle ove naredbe, string promjenjiva newString e imati vrijednost Ja sam Java programer. Operator nadovezivanja je identian sa operatorom sabiranja. Potrebno je uvijek obezbjediti da ne doe do konfuzije kada koristimo oba opertora. String promjenjive ine veliki dio Jave.

Komentari Poeljno je uvijek slijediti odgovarajua pravila programiranja kada se pie Java kod. Jedno od tih pravila je da se na odgovarajui nain ostavljaju komentari na kod. Komentari mogu biti od pomoi u razumjevanju koda. Takoe, olakavaju budue promjene koda. Simbol za komentar su dvije kose crte (//). Sve to je napisano posle simbola za komentar raunar e ignorisati. Moe se imato kao komentar poseban cijeli red Java koda, kao u ovom sluaju: // Postavi broj proizvoda numberItems = 14; Takoe, komentar se moe staviti u isti red sa naredbom dodjeljivanja: numberItems = 14; // Postavi broj proizvoda Za komentar koji zahvata vie redova koristi se simbol (/*) za poetak, i zavrava simbolom (*/).

Programski izlaz U primjeru na slici broj 1 sam koristio kao izlaz na ekranu tekst Dobrodosli u tekst projekat . Sada u pokazati kako izgleda izlaz numerike informacije. Primjer: numberItems = 45; System.out.println(number Items);

13

Na ekranu e se kao izlaz pojaviti 45. Takoe, moe se kombinovati tekstualna informacija sa numerikom informacijom pomou operatora nadovezivanja, primjer: numberItems = 45; System.out.println(Broj proizvoda je + numberItems); Kao izlaz pisae Broj proizvoda je 45. Numeriki podatak (numberOfItmes) konvertovan je u string prije nego to je nadovezan na tekstualni podatak. Meutim, ponekad se mogu pojaviti i izvjesni problemi. Operator nadovezivanja je identian sa aritmetikom operacijom sabiranja, prema tome, primjer: numberItems = 32; numberServices = 22; System.out.println(Broj proizvoda i usluga je + numberItems + numberServices); Ovim kodom dobijamo izlaz Broj proizvoda i usluga je 32 22. Java je konvertovala oba numerika podatka u string prije nego to je obavljeno sabiranje. Tada znak plus koji ih razdvaja ima ulogu operatora nadovezivanja i stoga se dobija 32 22. Da bi dobili sumu kao izlaz (onako kako je prvobitno zamiljeno), potrebno je pomou zagrada izvesti prisilno numeriko sabiranje: numberItems = 32; numberServices = 22; System.out.println(Broj proizvoda i usluga je + (numberItems + numberServices)); U ovom sluaju, dvije numerike vrijednosti se sumiraju prije konvertovanja u string i dobija se eljeni izlaz Broj proizvoda i usluga je 54. Prema tome, metod println nudi pogodan nain za dobijanje izlaza i sa numerikom i sa tekstualnom informacijom, ali mora korektno da se koristi. Projekt Programerska slava Na slavi su ispeene dva velika rolata svinjetine i zadatak je definisati koliko svaki gost moe da pojede. Pretpostavlja se da je duina rolata poznata. Zbog lakeg sjeenja, svaki gost e dobiti cijeli broj ina (ili centimetara) od rolata (bez decimala). Uz ovaj podatak, moe se izraunati koliko gostiju se moe nahraniti od jednog rolata. Ako je ukupni broj vei od broja gostiju, svi e jesti i sve je u redu. A ako nije tako, morae se uraditi podeavanje. Koraci u programu bi trebali biti sledei: - postaviti vrijednost za broj ina koje gost moe pojesti, - odrediti duinu oba rolata,14

odrediti koliko gostiju moe da se nahrani od svakog rolata, - poveati ili smanjiti broj ina sve dok se ne postigne da svi gosti mogu da jedu. Prvo, piemo zaglavlje kao vieredni komentar: /* * Programerska slava * Autor: Igor Dubravac * Godina: 2011. */ Dalje se upisuje u red definicija klase i lijeva vitiasta zagrada za otvaranje klase (JCreator nam automatski postavlja i desnu zagradu koja zatvara klasu): public class Slava { Zatim slijedi definicija glavnog metoda i njegova pripadna zagrada: public static void main*(String[] args) { U ovom programu koristiemo pet promjenjivih: jednu za to koliko svaki gost moe da pojede, dvije za duinu rolata, i dvije za to koliko gostiju moe da se nahrani od jednog sendvia. Sve promjenjive e biti cjelobrojnog (integer) tipa. Sada treba upisati njihove deklaracije: int inchesPerGuest; int lengthRoll1, lengthRoll2; int guests1, guests2; Zatim postaviti vrijednosti za neke promjenjive (komentar poeljan): // Postaviti vrijednosti inchesPerGuest = 5; lengthRoll1 = 114; lengthRoll2 = 93; Postavljene su navedene vrijednost, svaki gost moe da pojede 5 ina rolata. Zatim, pomou obinog dijeljenja raunamo koliko gostiju moe da se hrani iz svakog rolata:-

// Odrediti koliko gostiju moze da se hrani iz svakog sendvica guests1 = lengthRoll1 / inchesPerGuest; guests2 = lengthRoll2 / inchesPerGuest; guests 1 i guests 2 e biti (kako je zadato) cijeli (integer) brojevi. U sledeem koraku je potrebno prikazati rezultate pomou metoda println: // Ispisi rezultat System.out.println("Svaki gost moze dobiti " + inchesPerGuest + " inca rolata"); System.out.println((guests1 + guests2) + " gostiju moze pojesti ova dva rolata!"); Na kraju sumiramo broj gostiju koji mogu pojesti ova dva rolata prije ispisa. Zavriti ptogram sa dvije desne vitiaste zagrade, jednom za zatvaranje metoda i drugom za zatvaranje klase.15

Konani kod u JCreatoru treba da ima oblik kao to je prikazano na slici 2.

Slika 2 Kompletan kod projekta Programerska slava Dizajniranje projekta Dobro razraena ideja, tj. dobro dizajniran projekat, utedie kasnije mnogo vremena a i rezultati e biti bolji. Osnovna ideja je da se kreira projekat koji se lako koristi, lako razumije i koji nema greaka. itljiv i lako razumljiv kod e biti kasnije od velike koristi uslijed mijenjanja istog. Treba paljivo analizirati kod kako bi bio bez greaka. Paljivo planiranje i planiranje unaprijed pomae da se cilj ostvari. Druga bitna stvar kod dizajniranja projekta je da uvijek treba raditi u etapama, postepeno. Posle svakog dodavanja koda obavezno slijedi testiranje.

16

Inicijalizacija promjenjive Opta naredba koja se koristi za deklarisanje promjenjive je oblika: type variableName; Ovdje se promjenjiva variableName deklarie da je tipa type. Tipovi promjenjivih su int (cijeli brojevi), double (decimalni brojevi), boolean (vrijednost tano i netano) i String promjenjive. Evo nekoliko primjera deklaracije promjenjivih: int numberLightBulbsPerPack; int numberPacks; double costOfPack; boolean anyBurnedOut; String myQuestion; Kada se deklarie promjenjiva, njoj se dodjeljuje neka lokacija u memoriji raunara u kojoj se nalazi neka nepredvidiva vrijednost. esto, to je sasvim dovoljno, ukoliko se ne zaboravi u promjenjivoj dodijeliti neku korisnu vrijednost negdje u svom programskom kodu. Postoje sluajevi kada treba dodijeliti inicijalnu vrijednost promjenjivoj kada se deklarie. Takva inicijalizacija je dobra programerska praksa ako se zna vrijednost koju promjenjiva treba da ima (esto se to nee znati). Postoje i situacije kada e Java insistirati da se inicijalizuju promjenjive. U tom situacijama radi se o jednostavnom proirenju deklaracije: type variableName = variableValue; Naredba deklaracije u ovom sluaju je i naredba inicijalizacije, kreira se promjenjiva pod nazivom variableName tipa type i dodjeljuje se poetna (inicijalna) vrijednost od variableValue. Treba se voditi rauna da se dodijeli vrijednost odgovarajueg tipa. Ne moe se dodijeliti decimalna vrijednost promjenjivoj cjelobrojnog tipa! Ove naredbe se smjetaju zajedno sa uobiajenim deklaracijama na vrhu metoda da bi se obezbjedila lokalna definisanost. Evo nekoliko primjera deklarisanja i inicijalizacije promjenjivih u Java programu: int numberLightBulbsPerPack = 8; int numberPacks = 7; double costOfPack = 2.45; boolea anyBurnedOut = false; String myQuestion =Koliko je progremera potrebno da zamjene sijalicu?;

17

Matematike funkcije Kao i drugi raunarski jezici, Java ima mogunosti da obavlja veoma mona matematika izraunavanja. Ugraene Java matematike funkvije (nazivaju se i metodi) vrlo esto se koriste u takvim izraunavanjima. Funkcija je rutina koja izraunava neku vrijednost na osnovu date informacije. Funkcija se koristi u sledeem formatu: functionValue = functionName(argumentList); functionName je ime funkcije a argumentList je spisak (lista) vrijednosti (argumenata, razdvojenih zarezima) koje su obezbjeene funkciji kako bi mogla da radi. U ovoj naredbi dodjeljivanja, functionName koristi vrijednosti iz argumentList da izrauna rezultat i dodjeli ga promjenjivoj pod nazivom functionValue. Promjenjiva functionValue mora biti istog tipa kao vrijednost koju izraunava funkcija functionName. Metodi koji podravaju matematike funkcije implementirani su u Java klasi Math. Prema tome, da bi se koristila konkretna funkcija, pie se Math, zatim taka i posle toga ime funkcije. Apsolutna vrijednost, u matematici, je pozitivni dio broja. Java funkcija je: Math.abs(argument) gdje je argument broj ija se apsolutna vrijednost izuava. Argument moe biti ili int ili double tipa a vraena vrijednost e biti istog tipa kao argument.

Evo nekoliko primjera: Primjer Math.abs(7) Math.abs(-11) Math.abs(-3.14) Rezultat 7 11 3.14

Kvadratni korijen je broj koji pomnoen samim sobom daje originalni broj. Na primjer, kvadratni korijen od 4 je 2, poto je 2 puta 2 etiri. U Javi, kvadratni korijen je: Math.sqrt(argument)

18

gdje je argument broj iji se kvadratni korijen izraunava. Argument mora da bude nenegativan double broj i vraena vrijednost je double. Evo nekoliko primjera: Primjer Math.sqrt(4.0) Math.sqrt(36.0) Math.sqrt(72.1) Rezultat 2.0 6.0 8.491

Kod stepenovanja, broj se mnoi samim sobom odreen broj puta. Ako se mnoi broj samim sobom etiri puta, kae se da je broj dignut na etvrti stepen. Java funkcija za stepenovanje je: Math.pow(argument1, argument2) pow (skr. power) funkcija ima dva argumenta. argument1 je broj koji mnoimo samim sobom argument2 puta. Drugim rijeima, ova funkcija die argument1 na argument2 stepen. I argument i vraena vrijednost su brodjevi tipa double. Evo nekoliko primjera: Primjer 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 ovdje datim primjerima, argumenti nisu imali decimalne dijelove. To je namjerno uraeno da bi primjeri bili jasniji. Postoji jo dosta matematikih Java funkcija kao to su trigometrijske funkcije i inverzne trigonometrijske funkcije, funkcije koje pretvaraju radijane u stepene i obratno, funkcije koje nalaze ekstremne vrijednosti, funkcije za zaokruivanje, logaritam itd... Ulazni metodi programa Java nema opti metod koji podrava upisivanje ulaznih vrijednosti preko tastature. Mogue je napisati sopstvenu ulaznu rutinu pomou jave. Korienje ovog koda je slino korienju matematikih funkcija gore navedenih. Svaki metod ima odzivnik (prompt) u obliku string poruke koja se pojavljuje kada se metod izvrava. Kada se odzivnik pojavi, korisnik upisuje zahtjevani ulaz i pritiska taster Enter kako bi raunar prihvatio vrijednost. Primjer: Program koji pita korisnika koliko ima godina. Dva reda Java koda obavljaju taj posao: int userAge; userAge = Typeit.inInt(Koliko imate godina?);19

Prvo se pie ime klase Typeit (ovo je prethodno napisana klasa za ulazni metod ije e pravljenje biti opisano u nastavku), zatim taku in i na kraju ime metoda. Kada se ovaj kod izvri, korisnik e vidjeti na ekranu odziv u sledeem obliku: Koliko imate godina? Korisnik upisuje cjelobrojnu vrijednost i pritiska Enter. U ovom trenutku ulazna vrijednost je dodijeljena promjenjivoj userAge. Metod inInt obezbjeuje da korisnik moe da upie samo cjelobrojnu vrijednost. Korienje druga dva metoda inDouble i inString je slino. Program treba da pristupi prethodno napravljenoj klasi Typeit. U primjerima iznad, projekti su imali samo po jedan fajl (klasu). U ovom primjeru projekat mora imati i drugi fajl Typeit.java koji sadri ulazne metode. Ubacivanje drugog fajla u fajl sa metodom main gdje piemo Java kod je objanjeno ispod.

Primjer ulaznih metoda Pri kreiranju programa za upisivanje ulaznih vrijednosti koji emo u ovom primjeru nazvati Typeit bitno je uoiti da glavni metod ne postoji nigdje u ovoj klasi. To znai da ovaj program ne moe da radi samostalno i zahtjeva neku klasu za podrku da bi bio korien sa glavnom metodom.

Kod za Typeit.java program je sledei:/* * Program: Typeit * Klasa koja omogucava upisivanje ulaznih vrijednosti * Autor: Igor Dubravac * Godina: 2011. */ import java.io.*; public class Typeit { public static void printPrompt(String prompt) { System.out.print(prompt + " "); System.out.flush(); } public static void inputFlush() {

20

int dummy; int bAvail; try { while((System.in.available()) != 0) { dummy = System.in.read(); } } catch(java.io.IOException e) { System.out.println("Greska u kucanju"); } } public static String inString(String prompt) { 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("Greska u kucanju"); finished = true; } } return s; } public static int inInt(String prompt) { while(true) { inputFlush(); printPrompt(prompt);

21

try { return Integer.valueOf(inString().trim()).intValue(); } catch(NumberFormatException e) { System.out.println("Greska u kucanju. Nije cijeli broj"); } } } public static double inDouble(String prompt) { while(true) { inputFlush(); printPrompt(prompt); try { return Double.valueOf(inString().trim()).doubleValue(); } catch(NumberFormatException e) { System.out.println("Greska u kucanju. Tacka nije plutajuci broj"); } } } }

Nakon to sam napravio Typeit.java program, vrijeme je da ga uvrstim u svoj projekat koji e pokazati koliko korisnik ima godina. Na slici broj 3 je prikazan program koji koristi dvije klase od kojih je jedna Typeit, klasa koja omoguava upisivanje ulaznih vrijednosti.

22

Slika 3 Koliko imate godina? program U primjeru je korien integer metod, takoe se moe koristiti double i string metod promjenom metoda na inDouble, odnosno inString. Vrijedi spomenuti i Java escape sekvencu za novi red (/n) koja je korisna zbog preglednosti ispisa. Jednostavno se umetne sekvenca od ova dva znaka u bilo koji string koji se prosleuje na izlaz sa println. Kada se to pojavi novi red se zapoinje.

Projekt - Kalkulator za tedie U ovom projektu napravit u kalkulator za tedie. Scenario rada kalkulatora je sledei: svake sedmice se stavlja novac na raun, banka daje odreenu kamatu i kalkulator izraunava koliko novca ostaje na raunu posle odreenog broja sedmica. Po koracima, kalkulator treba da uradi sledee: - dobije iznos sedminog depozita, - dobije broj sedmica, - pomnoi ta dva broja, - kao izlaz prikae dobijeni proizvod. Koristiu ulazni metod Typeit za prihvat korisnikovog unosa podataka. Metod println e se koristiti za ispis iznosa izlaza. Primjeniu i metod inString tako to u pitati korisnika za ime. Na slici 4 je prikazan kod i izvrenje datog programa.

23

Slika 4 Kalkulator za tedie program

Zakljuak Postoji mnogo drugih programskih jezika koji se koriste ili se tek razmatraju mogue upotrebe. Ono to daje veliku prednost Javi je njena podranost (postoji na svim operativnim sistemima koji imaju Netscape program, to znai mnogo operativnih sistema). Druga prednost je to to je potpuno besplatna (engl. freeware) za nekomercijalnu upotrebu, te prenosivost izvrnog, tj. bajtnog koda uz garantovano izvravanje bez obzira na arhitekuru ili operativni sistem raunara. Pria o razvoju programskog jezika Java je danas dosta poznata. James Gosling i drugi projektanti u kompaniji "Sun" su polovinom devedesetih godina prolog vijeka bili angaovani u realizaciji projekta posveenog razvoju interaktivne televizije. Tada je Gosling bio prilino frustriran to koriste C++, objektno-orijentisani programski jezik, koji je razvio Bjarne Stroustrup u AT&T Bell laboratorijama 10 godina ranije, kao proirenje programskog jezika C. Gosling je vrijedno radio i kreirao novi programski jezik, koji je bio pogodan za projekat na kome je radio i u okviru koga je eliminisao i neke elemente programskog jezika C++, koji su ga "izluivali". Pokuaj razvoja interaktivne televizije u kompaniji "Sun" je propao, ali je rezultat razvoja novog programskog jezika mogao da se primjeni na medijumu koji je postajao24

popularan u to doba - na Webu. "Sun" je objavio Javu u jesen 1995. godine. Iako je najvei broj funkcionalnosti ovog jezika bio mnogo jednostavniji nego u programskom jeziku C++ (to je sluaj i danas), Java programi, koji su se nazivali apleti, mogli su da se izvravaju kao dio web stranica u Netscape Navigator itau weba. Ova funkcionalnost (prvo interaktivno programiranje raspoloivo na Webu) pomoglo je u reklamiranju Jave i privuklo nekoliko stotina hiljada programera u prvih est mjeseci postojanja novog programskog jezika. ak i nakon to Java vie nije bila nov programski jezik, korist od primjene ovog programskog jezika je postala potpuno jasna, a programeri su i dalje bili privueni njome. Danas postoji vie profesionalnih programera koji koriste programski jezik Java nego onih koji koriste programski jezik C++.

Literatura1. Dragan Markovi: Java za mlade programere, CET, Beograd, 2004.

WEB: http://www.oracle.com/technetwork/java/index.html http://www.jcreator.com/ http://www.wrox.com/ http://fly.cc.fer.hr/~zox/diplomski/Programski_Jezik_JAVA.html http://download.tutoriali.org/Tutorials/JAVA/Java_6_naucite_za_21_dan.pdf

25