Primenjeno programiranje mr Boban Vesin Petak: I čas: 15:50 - 16:35 II čas: 16:45 - 17:30 III čas: 17:40 - 18:25
Primenjeno programiranjemr Boban Vesin
Petak: I čas: 15:50 - 16:35II čas: 16:45 - 17:30III čas: 17:40 - 18:25
2
Primenjeno programiranje� Fond časova: 3+2� Broj ESPB: 6� Ocena znanja (max. broj poena je 100)� Minimum bodova za prolaz: 28+23
45Pismeni ispit
45 poenaZavršni ispit
10Praktičan rad
10Ostale aktivnosti i učešće studenata u radu na predavanjima i vežbama
30Provera znanja u toku nastave
5Prisustvo na predavanjima i vežbama
55 poenaPredispitne obaveze
3
Sadržaj predmeta� Razvoj i podele programskih jezika� Metode projektovanja programa� Klasifikacija tipova podataka� Osnovni koncepti sintakse programskog jezika
� Tipovi podataka programskog jezika� Kontrola programskog toka� Objektni koncepti programskog jezika� Programiranje grafičkog korisničkog interfejsa
� Veza programskog jezika i baze podataka� Kreiranje poslovnih programa
4
Literatura
� Materijal sa predavanja i vežbi za predmet Primenjeno programiranje na sajtu Škole
� Lemay L., Cadenhead R., Java Naučite za 21 dan, Kompjuter biblioteka
� Eckel B., Mislite na Javi, Mikro knjiga� Dokumentacija sa sajta http://www.netbeans.org/
5
Tehnologije
� Programski jezik: Java
� Razvojni alat: NetBeans 6.5
� Sistem za upravljanje bazama
podataka: MySql 5.0
7
Programski jezici i programiranje
� Algoritmi i programiranje� Algoritam je konačan, ureñen skup, nedvosmislenih izvršnih koraka za rešavanje odreñenog problema u konačnom vremenskom periodu sa konačnom količinom podataka
� Programski jezici definišu skup instrukcija, njihovu sintaksu (format instrukcije i pravila kombinovanja instrukcija u veće celine) i semantiku instrukcija (značenje instrukcije i akciju u programu koju izvršava)
� Program predstavlja sekvencu instrukcija napisanih u nekom programskom jeziku koje se mogu prevesti u instrukcije koje računar može direktno izvršiti (mašinske instrukcije)
8
Programski jezici� Generacije programskih jezika
� Mašinski jezik (u binarnom obliku)� Asemblerski (simbolički) jezik i makroasemblerski jezici – simbolične oznake
� Proceduralni programski jezici (jezici visokog nivoa, treće generacije): Pascal, c, c++, Java, Basic, C#
� Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog nivoa, 4. generacije): Prolog, SQL, generatori programa, itd
� Jezici veštačke inteligencije i prirodni programski jezici
9
Programski jezici
� Imperativni ili proceduralni programski jezici� FORTRAN, COBOL, Basic, Pascal, Ada
� Objektno-orijentisani programski jezici� SIMULA, Smaltalk, C++, Java, C#
� Deklarativni (logički) programski jezici� Prolog
� Funkcionalni programski jezici� LISP, Scheme, ML
10
Programski jezik Java� U jesen 1995. godine Sun Microsystems prvi put je predstavio programski jezik Java
� Java je objektno-orijentisani, nezavistan od platforme, bezbedan programski jezik,
� • Objektno-orijentisano programiranje (OOP) je metodologija razvoja softvera u kojoj se program:� konceptualizuje pomoću grupe objekata koji zajedno funkcionišu
� objekti se kreiraju korišćenjem šablona - koji se nazivaju klase.
� programski jezik Java je u potpunosti objektno-orijentisan.
11
Programski jezik Java
� Platformska nezavisnost je mogućnost programa da se izvršava bez modifikacija u okviru različitih radnih okruženja.� java programi se prevode u format koji se naziva bajtkod.
� bajtkod - u okviru bilo kog operativnog sistema može da izvrši bilo koji softver ili ureñaj koji sadrži interpreter programskog jezika Java
� Nekoliko popularnih razvojnih okruženja: JBuilder, Eclipse, NetBeans
� Java Development Kit - besplatan (http://java.sun.com)
12
Programski jezik Java� Objektno-orijentisano programiranje je pristup razvoju račuarskih programa koji modeluje objekte iz realnog sveta.
� Neophodno je prvo naučiti na koji način Java implementira principe objektno-orijentisanog programiranja:� organizovanje programa pomoću elemenata koji se nazivaju klase i postupak kojim se kreiraju objekti na osnovu klasa
� definisanje klase: način na koji treba da se ponaša i atribute koje treba da sadrži.
� meñusobno povezivanje klasa - nasleñivanje i povezivanje klasa korišćenjem paketa i interfejsa
13
Programski jezik Java� Sav izvorni kod je pisan u tekstualnim fajlovima sa ekstenizijom: .java
� Izvorni fajlovi se kompajliranjem pretvaraju u fajlove sa extenzijom .class
� .class fajl ne sadrži kod razumljiv procesoru, on sadrži bajtkod
� Bajtkod: mašinski jezik Javine virtuelne mašine (Java Virtual Machine JVM)
� Java programi se pokreću uz pomoć JVM-e
14
Programski jezik Java
� Opšta sintaksa samostalne aplikacije u Javi:
class <classname> {
public static void main(String args[]){izrazi;————————;————————;
}
}
15
Primer Java programa
class HelloWorldApp {
public static void main(String[] args) {
// ispis stringa.System.out.println("Hello World!");
}
}
� Program koji ispisuje “Hello World”
16
Programski jezik Java
� Kompajliranje:javac HelloWorldApp.java
� Kompajler generiše fajl:HelloWorldApp.class
� Pokretanje programa:java HelloWorldApp
17
Osnovni elementi
� Osnovni elementi Jave pomoću kojih se komponuju složenije konstrukcije jezika:� Identifikatori� Literali� Specijalni simboli� Rezervisane reči
18
Identifikatori
� Koriste se za označavanje različitih konstrukcija programa: promenjivih, metoda, klasa, interfejsa, metoda,...
� Niz slova i/ili cifara koji počinje slovom i razlikuje se od svake rezervisane reči� Slova su sva slova, “$” i “_”� Cifre su 0,1,2,...,9
� Primeri:� ime_i_prezime, temp, var2sp, upisiBroj
19
Literali
� Literale u Javi čine:� Brojevi
� 234� 3.14� 4.0E-74
� znakovne konstante� ‘h’
� stringovske konstante� “Novi Sad”
� logičke konstante true i false
� konstanta null
20
Specijalni simboli
dodela sa prethodnom primenom >>>
dodela sa prethodnom primenom >>
dodela sa prethodnom primenom <<
dodela sa prethodnom primenom %
dodela sa prethodnom primenom ^
dodela sa prethodnom primenom |
dodela sa prethodnom primenom &
dodela sa prethodnim deljenjem
dodela sa prethodnim množenjem
dodela sa prethodnim oduzimanjem
dodela sa prethodnim sabiranjem
operator dodele
pomeranje bitova u desno
pomeranje bitova u desno
pomeranje bitova u levo
ostatak pri deljenju
eksluzivna disjunkcija
disjunkcija i disjunkcija nad bitovima
>>>=
>>=
<<=
%=
^=
|=
&=
/=
*=
-=
+=
=
>>>
>>
<<
%
^
|
konjunkcija i konjunkcija nad bitovima&
deljenje/
množenje*
oduzimanje ili predznak-
sabiranje ili predznak+
smanjenje vrednosti za jedan--
povećanje vrednosti za jedan++
uslovna disjunkcija||
uslovna konjukcija&&
nejednako!=
veće ili jednako>=
manje ili jednako<=
jednako==
uslovni operator?
negacija nad bitovima~
negacija!
manje<
veće>
21
Rezervisane reči
� Koriste se za opis naredbi programa i imaju tačno odreñeno značenje
abstract default if package thisboolean do implements private throwbreak double import protected throwsbyte else instanceof public transientcase extends int return nulltry const for new switch strictfpcontinue while goto synchronized supercatch final interface short voidchar finally long static volatileclass float native assert
22
Pravila imenovanja:
� Nazivi promenjivih: sadrže slova, brojeve, ‘$’ (simbolom dolara), ili ‘_’ (donjom crtom); ne smeju početi sa cifrom
� Nazivi metoda: glagoli zapisani sa malim početnim slovom, svaka naredna reč naziva se piše velikim početnim slovom� Primer: promeniBojuOkvira()
� Nazivi klasa i interfejsa: Opisni nazivi sa velikim početnim slovom
� Nazivi konstanti: Velikim slovim� Primer: Font.BOLD, Font.ITALIC
23
Komentari
� Delovi programa koji ne utiču na smisao i suštinu programa i zenemaruju se prilikom prevoñenja
Komentar za automatsko generisanje dokumentacije programa
/** —————*/
komentar na proizvoljnom mestu u kodu/* ————— */
Od simbola do kraja reda pretvara u komentar//
UpotrebaSimboli
24
Prosti tipovi podataka� Celobrojni
� int� short� long� byte
� Realni brojevi� float � double
� Znakovni� char
� Logički� boolean
25
Prosti tipovi podataka
———void
IEEE754IEEE75464-bitdouble
IEEE754IEEE75432-bitfloat
+263—1-26364-bitlong
+231—1- 23132-bitint
+215—1-21516-bitshort
+127-1288-bitbyte
Unicode 216- 1Unicode 016-bitchar
———boolean
MaximumMinimumVeličinaProsti tip
26
Prosti tipovi i promenjive
� Jedini tipovi podataka koji nisu objekti� Nije potrebno kreirati novu promenjivu sa operatorom new
� Ostali objekti se moraju kreirati uz pomoćoperatora new
� Ako promenjivoj nije dodeljena vrednost pre njene upotrebe, kompajler će javiti grešku
� Java inicijalno postavlja vrednosti prostih promenjivih na nulu ili na false u slučaju promenjive tipa boolean
27
Deklaracija promenjivih
Deklaracija promenjivih:<tip podataka> <naziv promenjive>Primer: int num1;
Inicijalizacija promenjivih:< tip podataka > < naziv promenjive > = vrednost
Primer: double num2 = 3.1419;
float initVal;
int pom, index = 2;
double gamma = 1.2, brightness;
boolean valueOk = false;
28
Deklaracija promenjivihint index = 1.2;
boolean retOk = 1;double fiveFourths = 5 / 4;
float ratio = 5.8f;
double fiveFourths = 5.0 / 4.0;
� 1.2f predstavlja float vrednost sa tačnošću od 7 decimala� 1.2 predstavlja double vrednost sa tačnošću od 15 decimala
Boolean prekinut = false;
naziv tipanaziv promenjive
vrednost
29
Deklaracija promenjivihint index = 1.2; // greška
boolean retOk = 1; // greškadouble fiveFourths = 5 / 4; // nema greške
float ratio = 5.8f; // ispravno
double fiveFourths = 5.0 / 4.0; // ispravno
� 1.2f predstavlja float vrednost sa tačnošću od 7 decimala� 1.2 predstavlja double vrednost sa tačnošću od 15 decimala
30
Konstante
� U Javi promenljiva se može učiniti konstantnom pomoću ključne riječifinal
� Na primer: final int X = 3;
final int MAX = 9;
final float PI = 3.14;
31
Naredba dodelex = 1; // promenjivoj x dodeljujemo
vrednost 1
++a; // a = a + 1
b--; // b = b + 1
Pom = a + b;
d*=5; // d = d * 5
32
Razlika izmeñu i++ i ++i
class PrePostDemo {public static void main(String[] args){
int i = 3;i++;System.out.println(i); // "4"++i;System.out.println(i); // "5"System.out.println(++i); // "6"System.out.println(i++); // "6"System.out.println(i); // "7"
}}
33
Naredba dodeleint 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);
34
Naredba dodelepublic class Demo {
public static void main (String[] arg) {
boolean b;
b = (2 + 2 == 4);
System.out.println(b);
}
}
35
Razlika izmeñu i++ i ++i
public class AutoInc {public static void main(String[] args) {
int i = 1;prt("i : " + i);prt("++i : " + ++i); // Pre-incrementprt("i++ : " + i++); // Post-incrementprt("i : " + i);prt("--i : " + --i); // Pre-decrementprt("i-- : " + i--); // Post-decrementprt("i : " + i);
}static void prt(String s) {
System.out.println(s);}
}
Rezultat izvoñenja programa je:i : 1++i : 2i++ : 2i : 3--i : 2
36
Naredba dodele
class ArithmeticDemo {public static void main (String[] args){
int result = 1 + 2; // rezultat je 3System.out.println(result);result = result - 1; // rezultat je 2System.out.println(result);result = result * 2; // rezultat je 4System.out.println(result);result = result / 2; // rezultat je 2System.out.println(result);result = result + 8; // rezultat je 10result = result % 7; // rezultat je 3System.out.println(result);
}}
37
Primer programa
import java.util.*;
public class HelloDate {
public static void main(String[] args) {
System.out.println(“Pozdrav, sad je: ");
System.out.println(new Date());
}}
38
Izrazi & Blokovi� Izraz je komanda koja se završava sa “;”:
ime = “Fred”;
� Blok je niz izraza koji se nalaze izmeñu vitičastih zagrada:{
ime1 = “Fred”; ime2 = “Rale”;
}
� Blokovi mogu sadržati druge blokove
39
Primer 1
public class KonverzijaDaljina {
public static void main(String[] args) {
float duzinaMilje; // vrednost duzine u miljamafloat duzinaKilometri; // vrednost duzine u kilometri ma
// konverzija 5 km u milje i stampanje rezultata
duzinaKilometri = 5.0;duzinaMilje = duzinaKilometri * 0.6214;System.out.println("5 km = " + duzinaMilje + " milja" );
// Konverzija 5 milja u kilometre i stampanje rezultat a
duzinaMilje = 5.0;duzinaKilometri = duzinaMilje * 1.609;System.out.println("5 milja = " + duzinaKilometri + " km");
}
}
40
Primer 2import java.util.Scanner; // programu je potrebna Sc anner klasapublic class AddTwoInts {
public static void main(String[] args) {
int prviBroj;int drugiBroj;int suma;
Scanner consoleIn;consoleIn = new Scanner( System.in );
System.out.print(“Unesite prvi broj: ");prviBroj = consoleIn.nextInt();
System.out.print(“Unesite drugi broj: ");drugiBroj = consoleIn.nextInt();
sum = prviBroj + drugiBroj;System.out.println(“Zbri je: " + suma);
}}
42
Kontrola toka programa
� Java izvršava izraz za izrazom u redu u kojem su zapisani
� Postoji više Java naredbi koje služe sa kontrolu toka programa:
Naredbe grananja: if, if else, switch
Petlje: for, while, do while
Naredbe prekida: break, continue, return
43
Kontrola toka programa
Kontrola toka programa:if – elseswitch – casereturnwhiledo – whileforbreakcontinue
• Naredbe:try – catch – finallythrow
44
If – naredba grananja� if naredba utvrñuje istinitost izraza u zagradi i
ako je tačna izvršavaju se zadate akcijeif ( x < 10 ) x = 10;
� Ako je vrednost promenjive x manja od deset tada se promenjivoj dodeljuje vrednost 10
� Moguće je zapisati i:if ( x < 10 )
x = 10;
� Ili:if ( x < 10 ) { x = 10; }
45
Relacioni operatori== jednakost!= nejednakost>= veće ili jednako<= manje ili jednako> veće< manje
47
if… else
� if … else izraz ispituje tačnost izraza. Izvršava 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”);
}
48
Ugnježdeni if … else
if ( myVal > 100 ) {if ( remainderOn == true) {
myVal = mVal % 100;}else {
myVal = myVal / 100.0;}
}else{System.out.print(“myVal is in range”);
}
49
else if
� Koristan za izbor izmeñu više mogućnosti:if ( n == 1 ) {
// izvršavanje prvog bloka naredbi
}else if ( j == 2 ) {
// izvršavanje drugog bloka naredbi
}
else {//ako ni jedan od predhodnih uslova nije //zadovoljen vrši se izvršavanje tre ćeg //bloka naredbi
}
50
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”);}
51
Primer if naredbe
if (prodaja > 75000){
bonus = 1000;
System.out.println(“Bonus iznosi $1000");
}
System.out.println(“cilj za naredni mesec iznosi: $75000");
52
Primer 2 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);
}
53
Primer 3 if naredbedouble vrednostProdaje = 0.0;
int brojProdaja = 0;
if (vrednostProdaje >= 85000 || brojProdaja > 10){
System.out.println(“Vas bonus je: $2,000.");
}
if ( brGodina < 19 && ocena >= 3.0 ){
System.out.println(“primljeni ste");
}
54
Primer 4 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");
}
55
Zadaci if� Napisati program koji traži od korisnika da unese
iznos svoje mesečne plate. Ako je plata veća od 75000, program treba da ispiše poruku o bonusu u iznosu od 1000 dinara. Ako je plata manja od 75000, program treba da ispiše poruku o bonusu od 2000 dinara
� Napisati program koji traži od korisnika da unese dva broja i kao rezultat ispisuje manji od ta dva.
� Napisati program koji traži od korisnika da unese ime i godine starosti deteta kao i rezultat testa. Ako je ili broj godina veće od šest ili rezultat testa veći ili jednak od 85, program treba da ispiše poruku da je dete spremno za prvi razred. Inače, treba ispisati poruku da dete treba da pokusa naredne godine
56
Zadaci Switch� Napisati program koji od korisnika traži unos dva
realna broja a zatim obavlja operaciju u zavisnosti od izbora korisnika. Od korisnika se traži izbor jedne od narednih opcija: zbir, razlika, proizvod, količnik. Pomoć: od korisnika se traži unos slova: Z za zbir, R za razliku, P za proizvod, K za količnik. Potrebno je koristiti promenjivu tipa char koja će primiti odgovarajuću vrednost
� Napisati program koji učitava godinu studija studenta u obliku celog broja i zatim štampa da li je student brucoš, student druge godine, student treće godine ili apsolvent u zavisnosti da li je unet broj 1, 2, 3 ili 4. ponuditi rešenje uz pomoć if naredbe kao i uz switch.
57
switch naredba� Sintaksa switch naredbe:
switch(promenjiva){case(vrednost1):
izrazi;break;
case(vrednost2):izrazi;break;
...default:
izrazi;break;
}
58
switch naredbaswitch ( n ) {
case 1: // izvršavanje prvog bloka naredbibreak;
case 2:// izvršavanje drugog bloka naredbibreak;
default:// ako ni jedan od predhodnih uslova //nije zadovoljen vrši se izvršavanje //tre ćeg bloka naredbi
break;}
60
for petlja� Izvršavanje n puta
for ( i = 0; i < n; i++ ) {
// ovaj deo petlje će se izvršiti n puta
// i ide od 0 do n-1}
� Ugnježdeni for:
for ( j = 0; j < 10; j++ ) {for ( i = 0; i < 20; i++ ){
// ovaj deo petlje će se izvršiti 200 puta
}
}
62
Primer 2 for petlja
� Napisati program u koji ispisuje sve parne brojeve od 1 do 30
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);
}
}
}
64
while petljawhile(response == 1) {
System.out.print( “ID =” + userID[n]);
n++;
response = readInt( “Enter“);
}
Moguće je da se telo petlje ni jednom ne izvrši!
66
do while petlja
� Sintaksa do...while petljedo{
izrazi;
}while(uslov);
� Primer:int x = 1;
do {
System.out.println(x);
x++;
}while (x<10);
67
do while petljado {
System.out.print( “ID =” + userID[n] );
n++;
response = readInt( “Enter ” );
}while (response == 1);
Telo petlje će se bar jednom izvršiti!
68
break naredba
� break naredba izvršava bezuslovni izlazak iz while , do, for ili switchpetlje
for ( int i = 0; i < maxID, i++ ) {
if ( userID[i] == targetID ) {
index = i;
break;
}
} // program jumps here after break
69
Continue� Može se koristiti samo uz while , do ili for .� Uzrokuje da petlja bezuslovno pokrene narednu
iteraciju
for ( int i = 0; i < maxID; i++ ) {
if ( userID[i] != -1 ) continue;
System.out.print( “UserID ” + i + “ :” + userID);
}
70
Primer while naredbe
Fibonacci:class Fibonacci {
public static void main(String[] arg) {
int lo = 1;
int hi = 1;
System.out.println(lo);
while (hi < 50) {
System.out.println(hi);
hi = lo + hi;
lo = hi – lo;
}
}
}
72
Klase su definicije objekata
� OOP – objektno orijentisano programiranje
� Kod se formira u obliku definicija klasa
� Java ih naziva klasama class
� Svaka definicija klase se nalazi u posebnom .java fajlu
� Naziv objekta mora biti isti kao i naziv fajla
73
Klase class Employee{
public Employee (String n, double s){
name = n;salary = s;
}public Employee (String n){
name = n;salary = 0;
}public void raiseSalary(double byPercent){
salary *= 1 + byPercent / 100;}public double getSalary(){
return salary;}private String name;private double salary;
}
Deklaracija klase
Definicija promenjivih
Konstruktor
Overloaded konstruktor
Metod
74
Tri proncipa OOP-a� Enkapsulacija
� Objekti skrivaju svoje funkcije (metode) i podatke (promenjive klase)
� Nasleñivanje� Svaka podklasa
nasleñuje sve promenjive svoje nadklase
� Polimorfizam� Isti interfejs bez obzira
na tipove podataka
vozilo
automotor
Nadklasa
podklasa
nacrtaj() nacrtaj()