Professional Documents
Culture Documents
Mat 11497
Mat 11497
Fond asova: 3+3 Broj ESPB: 7 Ocena znanja (max. broj poena je 100) Minimum bodova za prolaz: 35+15
Predispitne obaveze Projekat 55 (minimum 35)
5 5
5
Ispit
30 (minimum 15)
2
Literatura
Materijal sa predavanja i vebi na sajtu kole Lemay L., Cadenhead R., Java Nauite za 21 dan, Kompjuter, biblioteka Eckel B., Thinking in Java Dokumentacija (tutoriali) sa sajta http://www.netbeans.org/
Tehnologije
Programski jezik: Java Razvojni alat: NetBeans 7.0 XAMPP paket koji u sebi ima MySql server
U jesen 1995. godine Sun Microsystems prvi put je predstavio programski jezik Java Java je objektno-orijentisani, nezavistan od platforme (mogunost programa da se izvrava bez modifikacija u okviru razliitih radnih okruenja) Nekoliko popularnih razvojnih okruenja: JBuilder, Eclipse, NetBeans
5
class <classname> {
class HelloWorldApp {
public static void main(String[] args) { // ispis stringa. System.out.println("Hello World!"); } }
Osnovni elementi
Identifikatori
Koriste se za oznaavanje razliitih konstrukcija programa: promenljivih, metoda, klasa, interfejsa, metoda,... Niz slova i/ili cifara koji poinje slovom i razlikuje se od svake rezervisane rei
Primeri:
Literali
Brojevi
234 3.14 4.0E-74
znakovne konstante
h
stringovske konstante
Novi
Sad
Specijalni simboli
> < ! ~ ? == <= >= != && || ++ -+ vee manje negacija negacija nad bitovima uslovni operator jednako manje ili jednako vee ili jednako nejednako uslovna konjukcija uslovna disjunkcija poveanje vrednosti za jedan smanjenje vrednosti za jedan sabiranje ili predznak oduzimanje ili predznak | ^ % << >> >>> = += -= *= /= &= |= ^= %= disjunkcija i disjunkcija nad bitovima eksluzivna disjunkcija ostatak pri deljenju pomeranje bitova u levo pomeranje bitova u desno pomeranje bitova u desno operator dodele dodela sa prethodnim sabiranjem dodela sa prethodnim oduzimanjem dodela sa prethodnim mnoenjem dodela sa prethodnim deljenjem dodela sa prethodnom primenom & dodela sa prethodnom primenom | dodela sa prethodnom primenom ^ dodela sa prethodnom primenom %
*
/ &
mnoenje
deljenje konjunkcija i konjunkcija nad bitovima
<<=
>>= >>>=
abstract default if package this boolean do implements private throw break double import protected throws byte else instanceof public transient case extends int return null try const for new switch strictfp continue while goto synchronized super catch final interface short void char finally long static volatile class float native assert
12
Pravila imenovanja:
Nazivi promenljivih: sadre slova, brojeve, $ (simbolom dolara), ili _ (donjom crtom); ne smeju poeti sa cifrom Nazivi metoda: glagoli zapisani sa malim poetnim slovom, svaka naredna re naziva se pie velikim poetnim slovom
Primer: promeniBojuOkvira()
Nazivi klasa i interfejsa: Opisni nazivi sa velikim poetnim slovom Nazivi konstanti: Velikim slovim
Komentari
Delovi programa koji ne utiu na smisao i sutinu programa i zenemaruju se prilikom prevoenja
Upotreba Od simbola do kraja reda pretvara u komentar komentar na proizvoljnom mestu u kodu Komentar za automatsko generisanje dokumentacije programa
Simboli // /* */ /** */
14
Celobrojni
Realni brojevi
Znakovni
Logiki
15
boolean
char
16-bit
Unicode 0
Unicode 216- 1
byte
short int long float double void
8-bit
16-bit 32-bit 64-bit 32-bit 64-bit
-128
-215 - 231 -263 IEEE754 IEEE754
+127
+2151 +2311 +2631 IEEE754 IEEE754
16
Deklaracija promenljivih
Deklaracija promenljivih:
<tip podataka> <naziv promenljive> Primer: int num1;
Inicijalizacija promenljivih:
< tip podataka > < naziv promenljive > = vrednost
Deklaracija promenljivih
int index = 2; double fiveFourths = 5 / 4;
naziv tipa
naziv promenljive
vrednost
18
Deklaracija promenljivih
int index = 1.2; // boolean retOk = 6; // double fiveFourths = 5 / 4; // float ratio = 5.8f; // double fiveFourths = 5.0 / 4.0;
1.2f predstavlja float vrednost sa tanou od 7 decimala 1.2 predstavlja double vrednost sa tanou od 15 decimala
19
Naredba dodele
int x = 5; int y = 2; int z = 4; z = z/y; x = x*y + z; y = x*(y + z); System.out.println(z); System.out.println(x); System.out.println(y);
20
Primer
Napisati program koji izraunava zbir dva broja
public class AddTwoInts { public static void main(String[] args) { int prviBroj = 7; int drugiBroj = 8; int suma; suma = prviBroj + drugiBroj;
Naredba dodele
Napisati program koji tampa istinitosnu vrednost izraza: 2+2=4
boolean b;
b = (2 + 2 == 4); System.out.println(b);
}
}
22
Primer programa
Napisati program koji ispisuje trenutni datum i vreme import java.util.*; public class HelloDate { public static void main(String[] args) { System.out.println(Pozdrav, sad je: "); System.out.println(new Date()); } }
23
25
2. as
Grananje, petlje
Java izvrava izraz za izrazom u redu u kojem su zapisani Postoji vie Java naredbi koje slue sa kontrolu toka programa:
Naredbe grananja: if, if else, switch Petlje: for, while, do while Naredbe prekida: break, continue, return
27
if naredba grananja
if naredba utvruje istinitost izraza u zagradi i ako je tana izvravaju se zadate akcije
if ( x < 10 ) x = 10;
Ako je vrednost promenljive x manja od deset tada se promenljivoj dodeljuje vrednost 10 Mogue je zapisati i:
if ( x < 10 ) x = 10;
Ili:
if ( x < 10 ) { x = 10; }
29
Relacioni operatori
== != >= <= > < jednakost nejednakost vee ili jednako manje ili jednako vee manje
30
if naredba
31
if else
if else izraz ispituje tanost izraza. Izvrava se jedan niz naredbi ako je vrednost true ili drugi niz naredbi ako je vrednost false.
if (x != oldx) { System.out.print(x je promenjena); } else { System.out.print(x nije promenjena); }
32
Ugnjedeni if else
if ( value1 > 100 ) { if ( value2 == true) { value1 = value1 % 100; } else { value1 = value1 / 100.0; } }else{ System.out.print(value1 is in range); }
33
else if
34
Upozorenje
Neispravno!
if( i == j ) if ( j == k ) System.out.print(i je jednako k); else System.out.print( i nije jednako j);
Ispravno!
if( i == j ) { if ( j == k ) System.out.print(i jednako k); } else{ System.out.print(i nije jednako j); }
35
Primer if naredbe
int x = 5; int y = 7; if (x > y){ System.out.println(x + " je veci od " + y); }else{ System.out.println(x + " nije veci od " + y); }
36
Primer if naredbe
double vrednostProdaje = 0.0; int brojProdaja = 0;
if (vrednostProdaje >= 85000 || brojProdaja > 10){ System.out.println(Vas bonus je: $2,000."); }
Primer if naredbe
if( grade > 90 ){ System.out.println(Odlicno!"); }else if( grade > 60 ){ System.out.println(Vrlo dobro!"); }else{ System.out.println(Zao nam je, pali ste"); }
38
39
switch naredba
switch(promenljiva){ // promenljiva ima celobrojnu ili logicku //vrednost case(vrednost1): izrazi; break; case(vrednost2): izrazi; break; ... default: izrazi; break; }
40
switch naredba
switch ( n ) { case 1: // izvravanje prvog bloka naredbi break; case 2: // izvravanje drugog bloka naredbi break; default: // ako ni jedan od predhodnih uslova //nije zadovoljen vri se izvravanje //treeg bloka naredbi break; }
41
Primer switch
class SwitchDemo { public static void main(String[] args) { int month = 8; switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; default: System.out.println("Invalid month."); } }
42
for petlja
43
for petlja
Izvravanje n puta for ( i = 0; i < n; i++ ) { // ovaj deo petlje e se izvriti n puta // i ide od 0 do n-1 }
Ugnjedeni for: for ( j = 0; j < 10; j++ ) { for ( i = 0; i < 20; i++ ){ // ovaj deo petlje e se izvriti 200 puta } }
44
Primer for
class ForDemo { public static void main(String[] args){ for(int i=1; i<11; i++){ System.out.println(i); } } } 1 2 3 4 5 6 7 8 9 10
45
public class parniDo30{ public static void main(String[] args){ System.out.println(Parni od 1 do 30 su:"); for (int i = 2 ; i <= 30 ; i += 2){ System.out.println(i); } } }
46
while petlja
while(uslov){ izrazi; }
47
Primer while
class Count {
public static void main(String[] args){ int count = 1; while (count < 11) { System.out.println(count); count++; } }
}
48
do while petlja
Primer:
int x = 1; do { System.out.println(x); x++; }while (x<10);
49
break naredba
break naredba izvrava bezuslovni izlazak iz while, do, for ili switch petlje
for ( int i = 0; i < maxID, i++ ) { if ( userID[i] == targetID ) { index = i; break; } } // program jumps here after break
50
Trei as
Metodi i nizovi
Metodi
Metod predstavlja imenovani segment koda koji se moe pokrenuti u drugom delu koda. Metod preuzima neke parametre, izvrava neka izraunavanja ili akcije i opciono vraa neku povratnu vrednost Pozivi metoda se mogu koristiti kao deo izraza
53
Metod - sintaksa
Deklaracija metoda: <kvantifikator pristupa> <static/final> <povratni tip> <naziv metoda> <lista argumenata> { telo metoda; }
54
primer:
void prikazi (){ telo metoda; }
55
Modifikatori - public, private Povratni tip tip vrednosti koju metod vraa kao svoj rezultat ili void ako ne vraa nikakvu vrednost Naziv metoda koje e jasno objasniti funkciju metoda Lista parametara u obinim zagradama, razdvojenih zarezom, predstavljenih tipom i imenom. Ako metod nema parametara ostavljaju se prazne zagrade Lista izuzetaka Telo metode, ogranieno vitiastim zagradama. Sadri kod metoda zajedno sa deklaracijom lokalnih promenljivih
56
Zaglavlje metoda
Naziv metoda. Tip i naziv svakog argumenta. Tip promenljive (ili objekta) koju metod vraa kao povratnu vrednost. Izuzetke koje metod obrauje. Modifikatore za odreivanje vidljivosti metoda.
57
Public/private
Metode moemo deklarisati kao public ili private u zavisnosti da li elimo da omoguimo njihovo pozivanje u drugim klasama. Preporuka je:
58
59
Definisanje metoda
Svaki se metod definie unutar definicije klase:
public class Film { public static int ocenaFilma(int s, int g, int r) { return s+g+r; } }
public class Demo { public static void main (String argv[]) { int scenario = 6, gluma = 9, rezija = 8; prikaziOcenu(scenario, gluma, rezija); } public static void prikaziOcenu(int s, int g, int r){ System.out.print(Ocena filma je: ); System.out.println(Film.ocenaFilma(s, g, r)); } }
60
Primer 1
// definicija metoda public int mult(int x, int y) { return x * y; } // deo koda sa pozivom metoda int duzina = 10; int sirina = 5; int area = mult(duzina, sirina);
61
Primer 2
class Bicikl { int godiste = 0; int brzina = 5; int stepenPrenosa = 1; void postaviGodiste(int novaVrednost) { godiste = novaVrednost; } void promenaStepenaprenosa(int novaVrednost) { stepenPrenosa = novaVrednost; } void povecajBrzinu(int increment) { brzina = brzina + increment; } void smanjiBrzinu(int decrement) { brzina = brzina - decrement; } void stampajStanja() { System.out.println("godiste: "+godiste); System.out.println("brzina je: "+brzina); System.out.println("stepen prenosa je: "+stepenPrenosa); } }
62
Primer 3
public int stepen(int a, int b){ int i; int total = 1; for(i = 0; i < b; i++) total = total * a; return total; } int number = 2; int exponent = 4; number = stepen(number, exponent); System.out.println(nova vrednost je " + number);
63
Primer 4
public class calculation{ int first, answer; public void paint (){ first = 34; calculation(); } public void calculation (){ answer = first * 2; } }
64
Primer 5
public class Area{ public int izracunajPovrsinu(){ int p = duzina * sirina; return p; }
public static void main(String[] args){ int duzina = 10; int sirina = 5; // poziv metoda int povrsina = izracunajPovrsinu(); System.out.println(povrsina); } }
}
65
Zadatak
Dat je metod: public int tryPrimitives(int x, int y) { x = x + 10; y = y + 10; return x; } Koje su vrednosti promenljivih p, q i r nakon izvoenja narednog koda? int p = 1; int q = 2; int r = 5; r = tryPrimitives(p, q);
66
Nizovi - array
Niz je lista slinih elemenata Niz ima fiksirani: naziv tip duinu Ove tri stvari se deklariu prilikom kreiranja niza Veliina nizova se ne moe menjati tokom izvoenja koda
67
Nizovi
mojNiz =
3
0
6
1
3
2
1
3
6
4
3
5
4
6
1
7
mojNiz ima mesta za 8 elemenata Elementima se pristupa uz pomo indeksa niza U Javi, prvi element niza je na nultoj poziciji
68
Deklaracija nizova
int mojNiz[];
Deklaracija niza: mojNiz kao niz celih brojeva mojNiz = new int[8]; Rezervie u memoriji 8 mesta za cele brojeve kojima pristupamo sa: mojNiz[0] do mojNiz[7] Mogue je i kombinovati prethodna dva izraza u jednom:
int mojNiz[] = new int[8];
69
Dodeljivanje vrednosti
Pristupamo elementima niza uz pomo indeksa da bi im dodelili vrednosti: mojNiz[0] = 3; mojNiz[1] = 6; mojNiz[2] = 3; ...
70
71
Primer niza
class ArrayDemo { public static void main(String[] args) { int[] niz; // deklarise niz integera niz = new int[10]; // zauzima memoriju duzine 10 niz[0] = 100; niz[9] = 1000; System.out.println("Nulti element niza je: " + niz[0]); System.out.println("1. element niza je: " + niz[1]); System.out.println("2. element niza je: " + niz[2]); System.out.println("3. element niza je: " + niz[3]); System.out.println("4. element niza je: " + niz[4]); System.out.println("5. element niza je: " + niz[6]); System.out.println("6. element niza je: " + niz[7]); System.out.println("7. element niza je: " + niz[8]); System.out.println("8. element niza je: " + niz[9]); System.out.println("5. element niza je: " + niz[5]); } } 72
Nizovi objekata
Elementi nizova ne moraju biti samo prosti tipovi Integer, double, float, char Mogue je definisati i nizove objekata: studenata, knjiga, iznajmljivanja Potrebno je uraditi tri koraka
73
Ovim se obezbeuje 10 mesta u memoriji koji e uvati reference ka objektima tipa Student
Jednostavno itanje podataka sa konzole moe se obaviti korienjem klase Scanner Konstruktor klase Scanner koji se koristi u ovu svrhu ima opti oblik:
Scanner(InputStream is)
Kojim se pravi objekat tipa Scanner koji tok is koristi kao izvor podataka. Sledei iskaz pravi objekat tipa Scanner koji podatke ita sa standardnog ulaza, to je podrazumevano tastatura:
Scanner consoleIn = new Scanner(System.in);
Primer
import java.util.*; class UnosBroja{ public static void main(String args[]){ Scanner konzUlaz=new Scanner(System.in); int broj=0; System.out.println("Unesite broj: "); broj = konzUlaz.nextInt(); System.out.println(Unet je broj: "+ broj); } }
76
Zadatak
Zadatak 1. Napisati program koji izraunava zbir dva broja koje unosi korisnik
public class Zbir{ public static void main (String[] args) { int br1, br2, suma; Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite prvi broj: " ); br1 = consoleIn.nextInt(); System.out.println("Unesite drugi broj:" ); br2 = consoleIn.nextInt(); suma = br1+br2; System.out.println("Zbir je: " +suma); } }
77
Zadaci
Zadatak 2. Napisati program koji izraunava obim i povrinu kruga pri emu korisnik unosi poluprenik kruga
import java.util.Scanner; public class Krug { public static void main (String[] vpar) { double poluprecnik; double obim, povrsina; Scanner consoleIn = new Scanner( System.in ); System.out.print("Unesite poluprecnik kruga: "); poluprecnik = consoleIn.nextDouble(); povrsina = poluprecnik * poluprecnik * Math.PI; obim = 2 * poluprecnik * Math.PI; System.out.println ("Obim kruga iznosi: " + obim); System.out.println("Povrsina kruga iznosi:" + povrsina); } }
78
Dodatak
NetBeans IDE 6.5
Pokrenite NetBeans IDE 7.0. Odaberite opciju File > New Project kao na slici 1.
Kreiranje aplikacije
U dijalogu New Project wizard, otvorite kategoriju Java i odaberite Java Application i pritisnite Next
81
Kreiranje aplikacije
U polje Project Name unesite HelloWorldApp. Ostavite Use Dedicated Folder for Storing Libraries checkbox neselektovan. U polje Create Main Class unesite
helloworldapp.HelloWorldApp.
4. 5.
82
Kreiranje aplikacije
Kreiranje aplikacije
Nakon toga projekat je kreiran i otvoren. Prozor NetBens IDE bi trebao da prikazuje sledee komponente:
Listu projekata u prozoru Projects, koji sadri stablo svih komponenti projekta, kao to su fajlovi sa kodom, biblioteke koje se koriste Editor koda - Source Editor sa otvorenim fajlom pod nazivom HelloWorldApp. Prozor za navigaciju - Navigator, za brzu navigaciju izmeu elemenata selektovane klase Lista sa rezultatima - Tasks, koji lista greke prilikom kompajliranja i druge komentare. (ako se prikazuje mogue je odabrati sa Window>Tasks)
84
Kreiranje aplikacije
85
Kreiranje aplikacije
Poto smo ekirali prethodno opciju Create Main Class, IDE je kreirao main klasu umesto nas. Na mesto komenatara:
// TODO code application logic here Mogue je uneti proizvoljan kod, na primer: System.out.println("Hello World!"); Izmene se uvaju sa opcijom File > Save. IDE ima opciju: Compile on Save, te nije potrebno izriito kompajlirati projekat da bi se pokrenuo. Za pokretanje programa treba odabrati opciju: Run > Run Main Project (F6). Ako program ne sadri greke rezultat izvoenja ovog programa se prikazuje:
86
Zadaci if
Napisati program koji trai od korisnika da unese iznos svoje mesene plate. Ako je plata vea od 75000, program treba da ispie poruku o bonusu u iznosu od 1000 dinara. Ako je plata manja od 75000, program treba da ispie poruku o bonusu od 2000 dinara Napisati program koji trai od korisnika da unese dva broja i kao rezultat ispisuje manji od ta dva. Napisati program koji trai od korisnika da unese ime i godine starosti deteta kao i rezultat testa. Ako je ili broj godina vee od est ili rezultat testa vei ili jednak od 85, program treba da ispie poruku da je dete spremno za prvi razred. Inae, treba ispisati poruku da dete treba da pokusa naredne godine 87
Zadaci Switch
Napisati program koji od korisnika trai unos dva realna broja a zatim obavlja operaciju u zavisnosti od izbora korisnika. Od korisnika se trai izbor jedne od narednih opcija: zbir, razlika, proizvod, kolinik. Pomo: od korisnika se trai unos broja: 1 za zbir, 2 za razliku, 3 za proizvod, 4 za kolinik. Potrebno je koristiti promenljivu tipa int koja e primiti odgovarajuu vrednost Napisati program koji uitava godinu studija studenta u obliku celog broja i zatim tampa da li je student bruco, student druge godine, student tree godine ili apsolvent u zavisnosti da li je unet broj 1, 2, 3 ili 4. ponuditi reenje uz pomo if naredbe kao i uz switch.
88