42
1 PANEVROPSKI UNIVERZITET APEIRON FAKULTET INFORMACIONIH TEHNOLOGIJA Vanredne studije Smer Informatički inženjeringJAVA (Principi programiranja) Predmetni nastavnik Prof. dr Zoran Ž. Avramović, dipl.inž.elek. Student Vladimir Kežić Index br. 108-08 / VIT Banja Luka, Jun 2010.

Seminarski rad principi programiranja kroz Java programski jezik - Vladimir Kezic

Embed Size (px)

DESCRIPTION

PANEVROPSKI UNIVERZITET APEIRON FAKULTET INFORMACIONIH TEHNOLOGIJAVanredne studije Smer „Informatički inženjering”JAVA(Principi programiranja)Predmetni nastavnik Prof. dr Zoran Ž. Avramović, dipl.inž.elek.StudentVladimir KežićIndex br. 108-08 / VITBanja Luka, Jun 2010.1Naslovna strana Sadržaj 1. Uvod u Javu 2. Java rezervisane rječi 3. Tipovi podataka i deklarisanje promjenjivih 4. Operatori 5. Boolean logika 6. Nizovi 7. Izrazi 8. Petlje 9. Sortiranja 10. Primjer kompletnog pro

Citation preview

Page 1: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

1

PANEVROPSKI UNIVERZITET APEIRONFAKULTET INFORMACIONIH TEHNOLOGIJA

Vanredne studijeSmer „Informatički inženjering”

JAVA(Principi programiranja)

Predmetni nastavnikProf. dr Zoran Ž. Avramović, dipl.inž.elek.

Student

Vladimir KežićIndex br. 108-08 / VIT

Banja Luka, Jun 2010.

Page 2: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Naslovna strana 1

Sadržaj 2

1. Uvod u Javu 3

2. Java rezervisane rječi 5

3. Tipovi podataka i deklarisanje promjenjivih 6

4. Operatori 10

5. Boolean logika 12

6. Nizovi 13

7. Izrazi 15

8. Petlje 18

9. Sortiranja 22

10. Primjer kompletnog programa sa grafičkim elementima 28

Literatura 31

2

Page 3: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Uvod u Javu

Šta je Java?Java je računarski programski jezik koji je razvila firma Sun Microsystems. Programski jezik se koristi za izdavanje instrukcija računaru 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 više stotina ili hiljada dolara, što je za većinu ljudi glavna prepreka da počnu da uče programiranje.Drugi razlog za popularnost Jave je to što je Java programi mogu da se izvršavaju na skoro svakom tipu računara. Kažemo da su Java programi nezavisni od platforme na kojoj se izvršavaju.

Java može da se koristi za razvoj raznovrsnih aplikacija. Postoje jednostavni tekstualno-zasnovani programi koji se nazivaju konzolnim aplikacijama. Takvi programi podržavaju samo tekstualni unos i ispis na monitoru vašeg račuanara. Takođe, možete da pravite aplikacije sa grafičkim korisničkim interfejsom (engl. Graphical User Interface – GUI). Ove aplikacije raspolažu sa menijima, paletama alatki, dugmadima, trakama za pomeranje sadržaja drugim kontrolama koje reaguju na miša. Primeri GUI aplikacija koje ste u svom radu na računaru već koristili su programi za obradu teksta, programi za rad sa tabelama i računarske igrice. Takođe, možete praviti i aplikacije koje se nazivaju apleti (engl. Applets). To su male GUI aplikacije koje mogu da se izvršavaju unutar web stranice. Apleti daju dinamičnost web stranicama. Mislim da ste već uvideli univerzalnost programskog jezika Java. Na ovom kursu krenućemo od prostih konzolnih aplikacija. To će nam omogućiti da se koncentrišemo na učenje osnova Jave bez upuštanja u svet grafičkog korisničkog interfejsa.Drugo popularno svojstvo Jave je to što je ona objektno orijentisana. To je fini način da se kaže da su Java programi sačinjeni od više osnovnih delova (komponenti) koji mogu da se više puta koriste. To za vas kao Java programera znači da možete da pravite i menjate velikeprograme bez većih komplikacija. Tokom ovog kursa više 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 poređenju sa drugim programskim jezicima i zbog toga se relativno lako uči. Ta jednostavnost je neophodna da bi se podržala nezavisnost Java aplikacija od tipa platforme (sposobnost da se izvršava na svakom tipu računara). Međutim, ta jednostavnost ne znači da Java nije moćan programski jezik. Možete pomoću Jave da uradite sve ono što možete da uradite sa bilo kojim mnogo složenijim programskim jezikom.

Zašto učiti Javu?Možemo postaviti i pitanje Zašto učiti programski jezik? Postoji više razloga za to. Prvo, ukoliko znate da programirate, razumećete bolje kako računari rade. Drugo, pisanje programa je dobra vežba za razvijanje veštine razmišljanja – morate dobro logički da razmišljate da biste napisali računarske programe.. Takođe, morate pomalo biti i perfekcionista, računari nisu toliko pametni i zato zahtevaju strogo precizne instrukcije da bi obavili svoje poslove.

3

Page 4: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Treće, računarski programeri su veoma traženi i zarađuju mnogo novca. Na kraju, pisanje računarskih programa je zabavno. Posebno je zadovoljstvo kada vidite svoju ideju kako „živi” na ekranu računara.Zbog jednostavnosti Jave, brzo ćete naučiti kako se pišu Java programi. Međutim, to što ćete brzo napisati svoj prvi Java program ne znači da ste naučili 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 resursiDa biste pisali i izvršavali Java programe, potreban vam je Java Software Development Kit (Java SDK). To je besplatan proizvod koji možete preuzeti preko Interneta. To jednostavno znači da ćete iskopirati tzv. instalacionu datoteku na svoj računar, pokrenuti instalaciju i zatim početi sa radom. Ovaj proizvod možete naći na adresi http://java.sun.com.

4

Page 5: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Java rezervisane rječi

Ključne riječi programskog jezika su riječi koje definišu jezik,imaju posebno značenje za kompajler, i ne mogu se koristiti kao identifikatori.Sljedeća tabela prikazuje sve Java ključne riječi:

abstract default if private thisboolean do implements protected throwbreak double import public throwsbyte else instanceof return transientcase extends int short trycatch final interface static voidchar finally long strictfp volatileclass float native super whileconst for new switchcontinue goto package synchronized assert

Ključne riječi goto i const ne mogu da se koriste u Javi. One su dodate nalistu ključnih reči kako kompajleri ne bi generisali greške za programerekoji pretvaraju C i C++ kod u Javu. Ključna reč assert je nova Java ključna reč dodata u verziji J2SE 1.4.

Postoje još tri zadržaneključne rječi: true, false i null. Tehnički, one su doslovno vrednosti, a ne riječi. Međutim, oni ne mogu da se koriste kao identifikatori, i one imaju posebno značenje za Java kompajler.

U kasnijem djelu semiranskog rada vidjećete da su sve ključne rječi vezane za odredjeni bitan dio jave kao što su izrazi, petlje i sl.

5

Page 6: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Tipovi podataka i deklarisanje promjenjivih

Identifikatori

U Javi, kao i u većini programskih jezika moraćemo imenovati mnoge elemente u kodu, kao što su recimo klase, metode, polja, varijable, pakete. Imena koja izaberemo nazivaju se identifikatori i moraju se pridržavati sljedećih pravila:- identifikator ne može biti ključna rječ, ne može biti »true« ili »false« i ne može biti »null« ili prazna.- identifikator može se sastojati od slova, brojeva od 0-9, podvučene crte iliznaka za dolar.- identifikator mora počinjati slovom, podvučenom crteom odnosno znakom za dolar.

Takođe moramo obratiti pažnju na to da je java »case sensitive« to jest da je osjetljiva na velika i mala slova. To znači da je Identifikator različita rječ od identifikator pa tako za varijablu možemo izabrati rječ »Public« jer je ona različita od ključne rječi »public«.

Tipovi podatakaJava ima osam tipova podataka koji su ugrađeni u jezik. Ovih osam vrsta podataka,često se nazivaju primitivni tipovi.U tabeli ispod ću navesti osam vrsta podataka, broj bitova kojekonzumiraju, i raspon vrijednosti koje mogu biti pohranjene u svakom tipu.Strogo vodite pažnju o tome da je veličina svake vrste podataka (osim za boolean) definisana.Na primjer, int je 32-bitni tip podataka. Razlog Java može definisatitačnu veličinu svojih primitivnih tipova podataka, nezavisno o platformi na kojojprogram radi, jer je Java programi pokreću na Java virtualnoj mašini.

Tip podatka Veličina Minimalna vrijednost Maksimalna vrijednostbyte 8 bita -128 127short 16 bita -32768 32767int 32 bita –2147483648 2147483647long 64 bita –9223372036854775808 –9223372036854775807float 32 bita ±1.40239846E-45 ±3.40282347E+8double 64 bita ±4.94065645841246544E-324 ±1.79769313486231570E +308char 16 bita \u0000 \uFFFFBoolean neam “true” (tačno) i “false” (netačno)

Java komentari

6

Page 7: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Možda je ovdje pravo vrijeme da objasnim šta su java komentari prije nego počnem da ih koristim u objašnjavanju koda kojeg buden pisao.

Komentari su neizostavan dio svakog programskog jezika, oni prvenstveno služe za za upisivanje odredjenih informacija ili za objašnjavanje pojedinog dijela koda.

Ja poznajem dva načina pisanja komentara u Javi a to su:- Komentar za jednu liniju koda koji se otvara sa dvije uzastopne kose crte »//« i nema

potreba da se zatvara jer važi samo za jednu liniju- Komentar za duži tekst – on se otavar sa »/*« a zatvara sa »*/« sve izmedju ove

kombinacije karaktera kompajler će smatrati komentarom

Kako to konkretno izgleda može se vidjeti u nekim od primjera koji slijede u narednim naslovima.

Promjenjive

Promjenjive(varijable) se koriste za pohranu podataka. U Java, promjenjiva treba biti proglašena(deklarisana).Deklarisanje promjenjive se sastoji iz dva koraka: davanje imena promjenjivoj i definisanjakoju vrstu podaci biti pohranjeni u promjenjivu.

Na primjer sljedeće izjave su deklarisanje promjenjivih:

short x;int y;float z;

Ovim smo definisali promjenjivu x koja je tipa »short«, promjenjivu y koja je tipa »int« i promjenjivu z koja je tipa »float«.

Predpostavljam da se pojam varijabla(promjenjiva) koristi jer podaci pohranjeni u varijable mogu varirati. Drugim riječima, možete promijeniti vrijednost promjenjive. U Javi se koristi operator dodjele ili kako mi to zovemo jest jednako »=« da se dodijeli promjenjivoj određena vrijednost.Na primjer

int x;x = 12;

Ovim smo definisali promjenjivu x tipa »int« i kojoj smo dodjelili vrijednost »12«.

Ovo isto smo mogli napisati i na ovaj način:

7

Page 8: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

int x=12;

Java je stroga u tome da dozvoljava dodijelu vrijednosti promjenjivim isključivo ako one odgovaraju tipu podataka u kojem je promjenjiva deklarisana.

int x;double d = 4.8;x = d; //Ovaj kod neće moći da se kompajlira!

Primjer programa sa int tipom podataka:

public class IntegerPrimjer { // Ova komanda deklariše javnu klasu “IntegerPrimjer”public static void main(String [] args) { // ova komanda definiše metodu “main”// Odavde počinjete pisati vaš kod

int x = 250;System.out.println(“x sadrzi: “ + x); // Ova komanda ispisuje vrijednost x!

// Ovdje završava vaš kod za klasu “IntegerPrimjer”}}// Kraj klase “IntegerPrimjer”

Primjer programa sa boolean tipom podataka:

public class Booleanprimjer {public static void main(String [] args) {

boolean t = true; // Dodjeljujemo promjenjivoj t vrijednost “true”System.out.println(“t sadrzi: “ + t); /* ispisujemo string “t sadrzi:” I vrijednost koja se nalazi unutar vrijednosti “t” */}}

StringoviString je niz znakova. Treba imati na umu da string nije primitivni tip podataka i zbog toga je potrebno da bude prezentovan klasom.Zbog toga java sadrži klasu “String” koja reprezentuje objekat string.Ono što je dobro kod stringa je to da se string objekat kreira automatski prema potrebi.

Na primjer:System.out.println(“Pozdrav!”); //Komanda ispisuje “Pozdrav!” na ekranu

U ovom slučaju automatski se kreira novi string I njemu se dodjeljuje vrijednost niza znakova “Pozdrav” I nakon toga se sve proslijedi metodi “println()”.

8

Page 9: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Konstante

Konstante su vrste promjenjivih koje služe za one vrijednosti koje se do kraja programa neće mjenjati.Znači da ako promjenjivoj x dodjelimo vrijednost 12 I nakon odredjenog broja linija pokušamo da toj promjenjivoj dodjelimo novu vrijednost 13 kompajler će izbaciti grešku.

Primjer definisanja konstante:

public class KonstantaPrimjer {public static void main(String [] args) {

final int t = 12; // t definišemo kao konstantu tipa int i dodjeljujemo joj vrijednost 12x = 13; // Ovu liniju kompajler neće izvršiti!}}

Operatori

9

Page 10: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

U sljedećoj tabeli ću prikazati operatore koji se koriste u Java programskom jeziku.U tabeli ću prikazati operatore prema prednosti koju imaju, znači najveću prednost u izvršavanju ima operator koji je prvi u tabeli a najmanju ima posljednji.

Operator Sintaksa(kako se piše u kodu)Pred i post inkrementacija ++,--Unarni operatori +,-,~,!,(cast)Množenje, djeljenje, mod *, / , %Sabiranje, oduzimanje, konkatenacija +, -, +Shift operatori <<, >>, >>>Manje, manje ili jednako, veće, veće ili jednako, instanca od

<,<=, >,>=, instanceof

Jest jednako, Različito ==, !=i, ili, XOR &, |, ^kondicionalno i, kondicionalno ili &&, ||Operator dodjele =Operatori dodjeljivanja *=, /=, %=, +=, –=, <<=, >> =, >>>

=,&=, ^=, |=

U narednim redovima ću napisaoti primjer programa sa osnovnim operatorima dok ću naprednije operatore posebno objasniti u podnaslovima:

public class Operatori {public static void main(String [] args) {

int x,y,z,d,g; // Deklarišemo više promjenjivih tipa intx=5; // Koristimo operator dodjeljivanja da promjenjivoj x dodjelimo vrijednost 5y=7;z=8;d=9;g=10;

x = g – y; // Promjenjivoj x dodjeljujemo vrijednost koja se dobije oduzimanjem vrijednosti promjenjive y od promjenjive g.

x = g * (d+y/z) /* Vrijednost koja se dodaje promjenjivoj x je jednaka matematičkoj formuli naravno uzimajući u obzir red operacija */

}}

Operatori uvećavanja i umanjivanja

10

Page 11: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Operator uvećavanja dodaje jedan na trenutnu vrijednost operatora dok operator umanjenja oduzima jedan sa vrijednosti operatora.Oba mogu biti korištena i kao prefiks i kao sufiks promjenjivoj.

Razliku izmedju korištenja operatora uvećavanja ili umanjivanja kao prefiks ili sufiks objasniću u sljedećim primjerima:

int x = 5;int y = 7;

y = x++;

U ovom slučaju kada je operator uvećavanja iskorišten kao sufiks x će biti uvečan za 1 nakon što njegova vrijednost bude dodana promjenjivoj y. Dakle, nakon izvršavanja ovog koda x će imati vrijednost 6 a y će imati vrijednost 5. Ovaj slučaj se često koristi kod pisanja brojača u kodu.

int x = 5;int y = 7;

y = ++x;

U slučaju kada je operator uvećavanja iskorišten kao prefiks, x će biti uvečan za 1 nakon čega će njegova vrijednost biti dodana promjenjivoj y. Dakle, nakon izvršavanja ovog koda x će imati vrijednost 6 a y će imati vrijednost 6.

Operatori dodjeljivanja

Java sadrži kolakciju operatora kojima nam umanjuje potrebu za pisanjem koda i koji nam služe, recimo, da uradimo dvije operacije u jednoj izjavi.

int d = 5;d * = 4;

Ovim kodom smo naredili kompajleru da pomnoži vrijednost promjenjive d sa 4 i da dobijenu vrijednost nakon operacije smjesti nazad u promjenjivu d. Nakon izvršavanja ovog koda promjenjiva d će imati vrijednost 20.

11

Page 12: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Boolean logika

Boolean logika se odnosi na kombinaciju dva ili više boolean izraza u jedan boolean izraz. Boolean logika je skoro neizostavan dio pri pisanju petlji.

Operator “i” i operator “Minimalno i” U sintaksi programa i se piše “&” a minimalno i “&&”. Razlika izmedju ova dva operatora je u tome što, recimo kad imamo dva ili više uslova, operator “&&” će prekinuti dalje izvršavanje uslova ukoliko je rezultat prvog uslova “false”, dok će “&”operator provjeriti i ostale uslove.

Primjer:(a > 0) && (a < 1);(a > 0) & (a < 1);

U ovom primjeru u prvoj stavci ukoliko je a manje od 0 vrijednost uslova če biti false već nakon prvog uslova i drugi uslov a manje od 1 se neće ni provjeravati. Dok u drugoj stavci oba uslova će biti provjerena.

Operator sa & će biti tačan samo ako su oba sulova povezana njime tačna. U drugim slučajevima je netačan.

Operator “ili” i operator ”minimalno ili”U sintaksi programa ili se označava sa “ | ” a minimalno ili sa “ || ”. Razlika je slična kako i kod “i” operatora, “ minimalno ili” će prekinuti dalje izvršavanje uslova ukoliko je rezultat prvog uslova “true”, dok će “ | ” operator provjeriti i ostale uslove.

Operator sa “ | ” će biti netačan samo ako su oba sulova povezana njime netačna. U drugim slučajevima je tačan.

Operator “ekslkutivno ili”U sintaksi programa “^”. “Ekskluzivno ili” se koristi ukoliko želimo da kombinujemo dva boolean izraza tako da će kjombinacija biti tačna samo ukoliko je samo jedan od uslova tačan.

Operator “nije” U sintaksi programa “!”. On služi samo za negaciju jednog boolean operatora.

(x !< 0) // Ovaj uslov znači “x nije veće od 0”

12

Page 13: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Nizovi

Niz je kolekcija elemenata pohranjena u granični blok memorije.Svaki element polja moraju biti istog tipa podataka, a svaki od njih ima svoj indeks tj. Redni broj.

Stvaranje niza uključuje dva koraka:1. Deklaracija reference za niz.2. Instanciranje niza korišćenjem novog naziva i definisanjem dužine niza.

Primjer:

int niz[]; // deklaracija niz = new int[100]; // instanciranje niza pod imenom “niz” i sa dužinom 100.

Ovo smo mogli napisati i ovako:

int niz[] = new int[100];

Takodje smo umjesto int tipa podataka mogli iskoristiti bilo koji drugi tip podatka.Primjer sa tipom double:

double [] dupli = new dupli[31]; /* kreira niz sa imenom “dupli” dužine 32 i sa tipom podataka “double” */

Pristupanje nizovima

Elementima u nizu se pristupa putem njihovih indeksa. Prvi element u nizu ima indeks 0, drugi ima indeks 1 itd. tako da recimo šesti element ima indeks 5. Prema njihovom indeksu može ste dodjeljivati vrijednost elementima u nizu, čitati vrijednost kao i vršiti operacije.

Primjer deklarisanja niza i dodjele vrijednosti pojedinim elementima:

int test[] = new int[20]; // Kreiramo niz “test” sa dužinom 20test[0] = 1; // Prvi element u nizu dobija vrijednost 1test[1] = 2; // Drugi element u nizu dobija vrijednost 2test[19] = 20; // Posljednji element u nizu dobija vrijednost 20

Gornji primjer će imati dužinu 20 ali će samo tri elementa biti popunjena, ako zatražimo vrijednost drugih elemenata dobićemo »null« tj. informaciju da je element prazan.

Takodje je moguće kreirati niz, dati mu ime i dodjeliti elemente sve u jednoj liniji koda:

int [] test = {1, 3, 5, 7, 9};

13

Page 14: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Dužina nizaPri kreiranju niza moramo posebno obratiti pažnju na dužinu niza koji definišemo jer kada je niz kreiran dužina mu se ne može mjenjati.

Takodje dužina niza se može koristiti kao uslov pri kreiranju petlji ali to ću detaljnije objasniti kada budem obradjivao petlje i sortiranja.Za sada smatram da je dovoljno da kažem da se za to koristi izraz “.length” kao sufiks imenu niza.

Primjer ispisivanja vrijednosti dužine niza:

int [] test = {1, 3, 5, 7, 9};System.out.println(“Dužina niza test je:” + test.length);

Ovaj kod će kreirati niz od 5 elemenata dati im vrijednosti 1,3,7,9 i nakon toga će ispisati tekst “Dužina niza test je:” a zatim i vrijednost dužine niza koja iznosi 5.Rezultat će biti: “Dužina niza test je: 5”

14

Page 15: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Izrazi

“if” izraz

“If” ili u prevodu “ako?” sadrži uslov čiji je ishod tipa boolean, to znači da može biti tačan i netačan i izraza koji će biti izvršeni ukoliko je uslov tačan.

Primjer:

int x = 1;If ( x > 0 ){//Izmedju vitičastih zagrada idu komande koje će se izvršavati ako je uslov tačan

X = 2;

}

Ukoliko je uslov netačan izrazi unutar vitičastih zagrada će biti preskočeni. Pošto u ovom slučaju promjenjiva x ima vrijednost 1 što je veće od 0 (uslov u if izrazu) i time je uslov ispunjen tako da će kod nastaviti da se izvršava i promjenjivoj x će biti dodjeljena vrijednost 2.

“if / else” izraz

If izraz može biti praćen izrazom “else” koji se izvršava ukoliko je uslov u “if” izrazu nije ispunjen.

Primjer:

if ( x > 0 ){// Izmedju vitičastih zagrada idu komande koje će se izvršavati ukoliko je x veće od 0

X = 2;

}

else {/* Naredni dio koda će se izvršavati ukoliko uslov u If izrazu nije ispunjen a ukoliko je uslov u if izrazu ispunjen ovaj dio koda će biti preskočen */

X = 4;

}

15

Page 16: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Else nlok takodje može sadržavati još jedan if izraz i tako kreirati seriju if/else izraza gdje će se samo jedan if izraz izvršiti.

Primjer:

if ( x < 1 ){

Y = 2;

}

else if ( x = 1 )

{

Y = 4;

}

else if ( x = 2 )

{

Y = 5;

}

else if ( x = 3 )

{

Y = 7;

}

else if ( x > 3 )

{

Y = 9;

}

16

Page 17: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

“Switch” izraz

Swich izraz omogućava da se testira vrijednost odredjene promjenjive.Svaka moguća vrijednost ze naziva “case”(u prevodu “slučaj”).

Što se tiče Switch izraza postoji nekoliko pravila koja se moraju poštovati:- U swich Izrazu mogu koristiti samo tipovi podataka byte, short, int i char.- Vrijednost case-a mora biti istog tipa podataka kao i varijabla u switch izrazu i

takodje može biti konstanta i literal.- Kada vrijednost vrarijable u switch-u odgovara vrijednosti case-a izvršavaće se blok

komandi koji odgovara datom caseu dok se na naidje na “break;” .- Kada se naidje na “break;” u tom slučaju Switch se gasi i kompajler prelazi na prvu

sledeću liniju koda nakon switch-a.- Nije nužno da svaki case ima “break;” naredbu. “break;” se koristi u slučaju da

nećemo da provjeravamo dalje slučajeve nakon što jedan cvase odgovara switch-u.- Switch izraz može sadržavati opciono “default case”(standardni case) koji treba da se

nalazi na kraju switcha kao posljednji case. Default case se izvršava ukoliko ni jedan od njemu predhodnik slučajeva nije tačan.

Pokazaću primjenu swich izraza primjeru ispisivanja komentara na ovjene studenata:

public class StudentskeOcjene {public static void main(String [] args) {

Int ocjena = 8; // Kreiramo promjenjivu ocjena int tipa i dodajemo joj vrijednost

switch(ocjena) { // Početak switch izrazacase ‘10’ : // u slučaju da varijabla ocjene ima vrijednost 10System.out.println(“Izvrstan uspjeh!”); // ispisujemo ovaj kodbreak; // Služi da ako je ocjena jednaka 10 iskoči iz switcha jer nam ne treba daljecase ‘9’ : // u slučaju da varijabla ocjene ima vrijednost 9System.out.println(“Vrlodobro!”);break; // Služi da ako je ocjena jednaka 9 iskoči iz switcha jer nam ne treba daljecase ‘8’ : // u slučaju da varijabla ocjene ima vrijednost 8System.out.println(“Jako dobro. ”);break; // Služi da ako je ocjena jednaka 8 iskoči iz switcha jer nam ne treba daljecase ‘7’ : // u slučaju da varijabla ocjene ima vrijednost 7System.out.println(“Nije loše”);break; // Služi da ako je ocjena jednaka 7 iskoči iz switcha jer nam ne treba daljecase ‘6’ : // u slučaju da varijabla ocjene ima vrijednost 6System.out.println(“Dobro je, prošao si”);break; // Služi da ako je ocjena jednaka 6 iskoči iz switcha jer nam ne treba daljecase ‘5’ : // u slučaju da varijabla ocjene ima vrijednost 5System.out.println(“Bolje pokušaj ponovo”);break; // Služi da ako je ocjena jednaka 5 iskoči iz switcha jer nam ne treba daljedefault : // u slučaju da ni jedan od gore navedenih slučajeva nije ispunjenSystem.out.println(“Vrijednost ocjene nije odgovarajući”);} // Kraj switch izrazaSystem.out.println(“Vaša ocjena je “ + ocjena + “. ”);

}}

Rezultat ovog programa će biti: “Jako dobro. Vaša ocjena je 8. ”

17

Page 18: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Petlje

“While” petlja

While petlja nam omogućava da ponovimo provjeru uslova i i zvršavanje komandi odredjeni broj puta dok je uslov ispunjen.Sintaksa je sljedeća:

while(uslov) // ponavljaće se blok komandi ispod dok je god uslov ispunjen{// Blok komandi}

Primjer:

int x = 1;while(x <= 5) // Uslov je da se komande ponavljaju dok je god x manji ili jednak 10{

System.out.print(x + “, ”); // Ispisujemo vrijednost promjenjive x uz zarezx++; // Povećavamo vrijednost promjenive x za 1.

}

U ovom primjeru bitno je naglasiti da x počinje od 1 i povećava se za jedan svaki put unutar petlje tako da je x nakon prve provjere uslova jednak 2, nakon druge 3 i tako dalje.

Rezultat primjera će biti: “1, 2, 3, 4, 5”

Bitno za while petlju je i to da je moguće da se ona nikada ne izvrši ukoliko je uslov netačan.

Primjer:

int i = -10;while( i > 0 ){System.out.println(“Ovaj kod neće biti izvršen!.”); // petlja će se izvršiti samo jednom}

Takodje moguće je napisati while petlji koja će se beskonačno izvršavati.

Primjer:

int i = 1; // vrijednost promjenjive x je veći od 0while( i > 0 ) // uslov je ispunjen{System.out.println(i++); // ispisujemo vrijednost x i odmah ga uvećavamo za 1}

18

Page 19: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

“Do/While” petlja

“Do/While” petlja je veoma slična petlji “While” osim toga što je kod “Do/While” petlje zagarantovano da će se ona barem jedan put izvršiti.

Primjer:

int y = 10;do{System.out.print (y + “, ”);y += 10; } while ( y <= 30 );

Primjetićemo da jeuslov u ovoj petlji na kraju tako da će se kod unutar vitičastih zagrada izvršiti prije nego se uslov provjeri. Rezultat programa iznad biće: “10, 20, 30”.

“for” petlja

“For” petlja nam omogućava da efikasno napišemo petlju koja treba da se izvrši tačno odredjen broj puta.

Sintaksa za “for” petlju je:

For (inicijalizacija; bulean uslov; promjena){// Kod koji se izvršava ako se uslov nije ispunio}

“Inicijalizacija” – izvršava se samo jedanput i to na početku petlje, omogućava nam da deklarišemo bilo koju promjenjivu za petlju. Ovdje ne možemo pisati izraz.

“bulean uslov” – Kao što smo već objašnjavali ovo je uslov za izvršavanje petlje. Ako je uslov tačan petlja će se izvršiti a ako je netačan neće se izvršiti i program skače na sljedeći izraz nakon petlje.

“promjena” – Ukoliko je bulean uslov bio tačan petlja će izvršiti kod unutar vitičastih zagrada i zatim skočiti na ovaj dio “promjene” i izvršiti ono što u njemu piše. Ovaj dio nam omogućava da izvršimo promjenu na nekoj kontrolnoj promjenjivoj unutar petlje, najčešće se koristi za brojač. Takodje ovaj dio se može ostaviti prazan.

19

Page 20: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Primjer:

For (i=1; i <= 3; i++) // i =1, dok god je manje ili jednako 3 ispiši “i” i “i” povećaj za 1{System.out.print (i + “, ”);}

Rezultat ovog programa je: “1, 2, 3”.

Ključna riječ “break;”

Ovu ključnu rječ je moguće iskorisiti u bilo kojoj petlji i ona će istog momenta prekunuti petlju. Bez obzira na sulov u petlji nako break; dalji dio se preskače i ide na kod nakon petlje.

Primjer:

For (i=1; i <= 3; i++) {System.out.print (i + “, ”);break;}

Uzimam isti primjer kao za for petlju i rezultat će u ovom slučaju biti: ”1, ”

Ključna riječ “continue;”

Ovu ljučnu rječ je kao i break moguće iskoristiti u bilo kojoj petlji. Rezutat korištenja ove rječi je to da ukoliko je to “for” petlja program će odmah skočiti na “promjena” dio petlje a ukoliko su “while” i “do/while” program skače na bulean uslov u toj petlji.

Primjer:

For (i=1; i <= 3; i++) {continue;System.out.print (i + “, ”);}

U primjeru iznad petlja će se izvršiti ali izraz “ System.out.print (i + “, ”);” nikada neće biti izvršen a samim tim ni varijabla i neće biti ispisana.

20

Page 21: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Ugnježdene petlje

Ugnježdene petlje su u stvari petlje koje se nalaze unutar neke druge petlje.

Primjer:

public class UgnjezdenePetlje{public static void main(String [] args){

int y = 10;

For (i=1; i <= 3; i++) {

while( i > 0 ) {System.out.println(“Rezultat ugnježdene petlje!.”);

}}

}}

Više primjera sa samim petljama napisaću dok budem obradjivao posljednje poglavle ovog seminarskog rada “Sortiranja”.

21

Page 22: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Sortiranja

Sortiranje umetanjem (Insertion sort)

Za vrijeme rada algoritma, početni komad polja(prvi element) je već sortiran, a ostatak polja nije sortiran. U jednom prolasku algoritam uzima prvi element iz nesortiranog dijela, te ga umetne na “pravo mjesto” (u smislu sortiranog redoslijeda) u sortirani dio, pri čemu dolazi do pomicanja nekih elemenata za jedno mjesto dalje. Dakle, jednim prolaskom dužina početnog sortiranog dijela se poveća za 1, a dužina nesortiranog dijela se smanji za 1.

Napisaću primjer program koji sortira zadati niz plata od najveće prema najmanjoj i ispisuje na kraju najveću:

public class PlateInsertionSort { public static void main(String[] args) {

//Ovo je recimo zadati niz sa platama int plate[] = {1000,700,800,750,850,950,900,650,1}; int j = 1; for (int d = 1; d < plate.length; d++){

for (j = d; j > 0; j--){ if (plate[j] < plate[j-1]) { // Ovo je swap int g = plate[j]; plate[j]=plate[j-1];

22

Page 23: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

plate[j-1]=g; } } }

// Ispisujem plate

System.out.println("Sortirane plate su:"); for ( int g=0; g < plate.length; g++) {

System.out.print(plate[g] + ", ");

} }

}

23

Page 24: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Sortiranje izborom najmanjeg elementa (Select sort)

Algoritam radi na sljedeći način. Prođe poljem i pronađe najmanji element. Zatim se najmanji element zamijeni s početnim. Dalje se promatra ostatak polja (bez početnog elementa) i ponavlja isti postupak. Da bi se cijelo polje sortiralo potrebno je n − 1 prolazaka.

Napisaću primjer program koji sortira zadati niz plata od najveće prema najmanjoj i ispisuje na kraju najveću:

public class PlateSelectSort { public static void main(String[] args) {

//Ovo je recimo zadati niz sa platama int plate[] = {9,8,7,6,5,4,3,2,1};

int swap = 0; // Ova varijabla će služiti samo za trenutno držanje vrijednosti za zamjenu elemenata

for (int i=0; i<plate.length-1; i++) { for (int j=i+1; j<plate.length; j++) { if (plate[i] > plate[j]) { swap = plate[i]; plate[i] = plate[j]; plate[j] = swap; } } }

24

Page 25: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

// Ispisujem plate

System.out.println("Sortirane plate su:"); for ( int g=0; g < plate.length; g++) {

System.out.print(plate[g] + ", ");

}

}}

25

Page 26: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Sortiranje zamjenom susjednih elemenata (Bubble sort)

Opis algoritma ide ovako. Prolazimo poljem od početka prema kraju i uspoređujemo susjedne elemente.Ako je neki element veći od sljedećeg elementa, zamijenimo im vrijednosti. Kad na taj način dođemo do kraja polja, najveća vrijednost doći će na posljednje mjesto. Nakon toga ponavljamo postupak na skraćenom polju (bez zadnjeg elementa). Algoritam se smije zaustaviti čim on u nekom prolazu ustanovi da nema parova elemenata koje bi trebalo zamijeniti.Primjer sortiranja zamjenom susjednih elemenata (bubble sort) vidi se na sljedećoj slici. U svakom koraku dva susjedna elementa koji trebaju zamijeniti vrijednosti označeni su sjenčanjem. Promatrani dio polja nalazi se s lijeve strane dvostruke okomite crte. Šesti prolaz služi zato da se ustanovi da više nema parova susjednih elemenata koje bi trebalo zamijeniti.

26

Page 27: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Napisaću primjer program koji sortira zadati niz plata od najveće prema najmanjoj i ispisuje na kraju najveću:

ublic class PlateBubbleSort { public static void main(String[] args) {

int plate[] = {1000,700,800,750,850,950,900,650,1100}; // Niz plata

// pocetak Bubblesortafor (int d = 1; d < plate.length; d++) {

for ( int a=0; a < plate.length-d; a++) { if (plate[a] < plate[a+1]) { // Ovo je swap int g = plate[a]; plate[a]=plate[a+1]; plate[a+1]=g; } }

} // kraj Bubblesorta

System.out.println("Najveća plata je:" + plate[0] + “!”);}

}

27

Page 28: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Primjer kompletnog programa sa grafičkim elementima

Sljedeći primjer je moj prvi grafički program koji sam napisao u programskom jeziku Java.Program radi tako što unesete u polje niz brojeva odvojenih zarezom i zatim kliknete “Sortiraj”, program zatim sortira brojeve unutar polja pomoću algoritma “Sortiranje zamjenom susjednih elemenata” i rezultat ispiše nazad u polje.

// Importujem Java klase koje će mi pomoći da realizujem program:import java.awt.EventQueue;

import javax.swing.JFrame;import javax.swing.JTextField;import java.awt.BorderLayout;import javax.swing.JButton;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.Font;

public class BubbleSort {

JFrame frame;private JTextField textField_1;private JTextField txtUnesiNizBrojeva;

/** * Alikacija krece */public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {public void run() {

try {Probavam window = new Probavam();window.frame.setVisible(true);

} catch (Exception e) {e.printStackTrace();

}}

});}

/** * Kreiram app */public Probavam() {

initialize();}

28

Page 29: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

/** * */private void initialize() {

frame = new JFrame();frame.setBounds(100, 100, 389, 111);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setTitle("BubbleSort");

textField_1 = new JTextField();frame.getContentPane().add(textField_1, BorderLayout.CENTER);textField_1.setColumns(10);

JButton button = new JButton("Sortiraj");button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) { String[] niz = new String[50]; String[] probin = new String[50]; int[] test = new int[50];

// Parsiram uneseni niz koristeci zarez kao delimiter niz = textField_1.getText().split("," ); // Parsiram i pretvaram String niz to integer // kroz petlju element po element for (int c=0; c < niz.length; c++) { test[c] = Integer.parseInt(niz[c]); } //bubble sortira niz:

for (int d = 1; d < niz.length; d++) { for ( int a=0; a<niz.length-d; a++) { if (test[a] > test[a+1]) { // Slijedi zamjena elemenata int g = test[a]; test[a]=test[a+1]; test[a+1]=g; }

}

} //kraj bubbleSorta

String result = "";

29

Page 30: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

for (int i=0; i<niz.length; i++) { result = result + test[i] + ", "; }

textField_1.setText(result);}

});frame.getContentPane().add(button, BorderLayout.SOUTH);

txtUnesiNizBrojeva = new JTextField();txtUnesiNizBrojeva.setFont(new Font("Tahoma", Font.BOLD, 11));txtUnesiNizBrojeva.setText("Unesi niz brojeva razdvojenih zarezom:");txtUnesiNizBrojeva.setEditable(false);frame.getContentPane().add(txtUnesiNizBrojeva, BorderLayout.NORTH);txtUnesiNizBrojeva.setColumns(5);

}

}

Kompajliran kod ću ponijeti na ispit tako da će te biti u mogućnosti da vidite kako radi u realnom vremenu.

30

Page 31: Seminarski rad principi programiranja kroz Java programski jezik -  Vladimir Kezic

Literatura

1. “Strukture podataka i algoritmi” – Robert Manger, Miljenko Marušić – Zagreb 2007

2. “Java in 60 minutes a day” - Richard F. Raposa – Wiley Publishing 2003

3. “Beginning programming with Java” - Barry Burd - Wiley Publishing 2005

31