You are on page 1of 75

Primenjeno programiranje

mr Boban Vesin
Petak:
I as: 15:50 - 16:35
II as: 16:45 - 17:30
III 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
45 Pismeni ispit
45 poena Zavrni ispit
10 Praktian rad
10
Ostale aktivnosti i uee studenata u radu na
predavanjima i vebama
30 Provera znanja u toku nastave
5 Prisustvo na predavanjima i vebama
55 poena Predispitne obaveze
3
Sadraj 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 grafikog korisnikog
interfejsa
Veza programskog jezika i baze podataka
Kreiranje poslovnih programa
4
Literatura
Materijal sa predavanja i vebi za
predmet Primenjeno programiranje
na sajtu kole
Lemay L., Cadenhead R., Java
Nauite 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
6
NetBeans 6.5
7
Programski jezici i programiranje
Algoritmi i programiranje
Algoritam je konaan, ureen skup,
nedvosmislenih izvrnih koraka za reavanje
odreenog problema u konanom vremenskom
periodu sa konanom koliinom podataka
Programski jezici definiu skup instrukcija,
njihovu sintaksu (format instrukcije i pravila
kombinovanja instrukcija u vee celine) i
semantiku instrukcija (znaenje instrukcije i
akciju u programu koju izvrava)
Program predstavlja sekvencu instrukcija
napisanih u nekom programskom jeziku koje se
mogu prevesti u instrukcije koje raunar moe
direktno izvriti (mainske instrukcije)
8
Programski jezici
Generacije programskih jezika
Mainski jezik (u binarnom obliku)
Asemblerski (simboliki) jezik i
makroasemblerski jezici simboline oznake
Proceduralni programski jezici (jezici visokog
nivoa, tree 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 vetake 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 (logiki) 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 pomou grupe objekata koji
zajedno funkcioniu
objekti se kreiraju korienjem ablona - koji se
nazivaju klase.
programski jezik Java je u potpunosti objektno-
orijentisan.
11
Programski jezik Java
Platformska nezavisnost je mogunost
programa da se izvrava bez modifikacija u
okviru razliitih radnih okruenja.
java programi se prevode u format koji se
naziva bajtkod.
bajtkod - u okviru bilo kog operativnog sistema
moe da izvri bilo koji softver ili ureaj koji
sadri interpreter programskog jezika Java
Nekoliko popularnih razvojnih okruenja:
JBuilder, Eclipse, NetBeans
Java Development Kit - besplatan
(http://java.sun.com)
12
Programski jezik Java
Objektno-orijentisano programiranje je
pristup razvoju rauarskih programa koji
modeluje objekte iz realnog sveta.
Neophodno je prvo nauiti na koji nain
Java implementira principe objektno-
orijentisanog programiranja:
organizovanje programa pomou elemenata
koji se nazivaju klase i postupak kojim se
kreiraju objekti na osnovu klasa
definisanje klase: nain na koji treba da se
ponaa i atribute koje treba da sadri.
meusobno povezivanje klasa - nasleivanje i
povezivanje klasa korienjem 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 sadri kod razumljiv
procesoru, on sadri bajtkod
Bajtkod: mainski jezik Javine virtuelne
maine (Java Virtual Machine JVM)
Java programi se pokreu uz pomo JVM-e
14
Programski jezik Java
Opta 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 generie fajl:
HelloWorldApp.class
Pokretanje programa:
java HelloWorldApp
17
Osnovni elementi
Osnovni elementi Jave pomou kojih
se komponuju sloenije konstrukcije
jezika:
Identifikatori
Literali
Specijalni simboli
Rezervisane rei
18
Identifikatori
Koriste se za oznaavanje razliitih
konstrukcija programa: promenjivih,
metoda, klasa, interfejsa, metoda,...
Niz slova i/ili cifara koji poinje
slovom i razlikuje se od svake
rezervisane rei
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
logike 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 mnoenjem
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 /
mnoenje *
oduzimanje ili predznak -
sabiranje ili predznak +
smanjenje vrednosti za jedan --
poveanje vrednosti za jedan ++
uslovna disjunkcija ||
uslovna konjukcija &&
nejednako !=
vee ili jednako >=
manje ili jednako <=
jednako ==
uslovni operator ?
negacija nad bitovima ~
negacija !
manje <
vee >
21
Rezervisane rei
Koriste se za opis naredbi programa i
imaju tano odreeno znaenje
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
22
Pravila imenovanja:
Nazivi promenjivih: 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
Primer: Font.BOLD, Font.ITALIC
23
Komentari
Delovi programa koji ne utiu na
smisao i sutinu programa i
zenemaruju se prilikom prevoenja
Komentar za automatsko generisanje
dokumentacije programa
/** */
komentar na proizvoljnom mestu u kodu
/* */
Od simbola do kraja reda pretvara u komentar
//
Upotreba Simboli
24
Prosti tipovi podataka
Celobrojni
int
short
long
byte
Realni brojevi
float
double
Znakovni
char
Logiki
boolean
25
Prosti tipovi podataka
void
IEEE754 IEEE754 64-bit double
IEEE754 IEEE754 32-bit float
+2
63
1 -2
63
64-bit long
+2
31
1 - 2
31
32-bit int
+2
15
1 -2
15
16-bit short
+127 -128 8-bit byte
Unicode 2
16
- 1 Unicode 0 16-bit char
boolean
Maximum Minimum Veliina Prosti 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
greku
Java inicijalno postavlja vrednosti prostih
promenjivih na nulu ili na false u sluaju
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 promenjivih
int 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 tanou od 7 decimala
1.2 predstavlja double vrednost sa tanou od 15 decimala
Boolean prekinut = false;
naziv tipa
naziv promenjive
vrednost
29
Deklaracija promenjivih
int index = 1.2; // greka
boolean retOk = 1; // greka
double fiveFourths = 5 / 4; // nema greke
float ratio = 5.8f; // ispravno
double fiveFourths = 5.0 / 4.0; // ispravno
1.2f predstavlja float vrednost sa tanou od 7 decimala
1.2 predstavlja double vrednost sa tanou od 15 decimala
30
Konstante
U Javi promenljiva se moe uiniti
konstantnom pomou kljune rijei
final
Na primer:
final int X = 3;
final int MAX = 9;
final float PI = 3.14;
31
Naredba dodele
x = 1; // promenjivoj x dodeljujemo
vrednost 1
++a; // a = a + 1
b--; // b = b + 1
Pom = a + b;
d*=5; // d = d * 5
32
Razlika izmeu 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 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);
34
Naredba dodele
public class Demo {
public static void main (String[] arg) {
boolean b;
b = (2 + 2 == 4);
System.out.println(b);
}
}
35
Razlika izmeu i++ i ++i
public class AutoInc {
public static void main(String[] args) {
int i = 1;
prt("i : " + i);
prt("++i : " + ++i); // Pre-increment
prt("i++ : " + i++); // Post-increment
prt("i : " + i);
prt("--i : " + --i); // Pre-decrement
prt("i-- : " + i--); // Post-decrement
prt("i : " + i);
}
static void prt(String s) {
System.out.println(s);
}
}
Rezultat izvoenja programa je:
i : 1
++i : 2
i++ : 2
i : 3
--i : 2
36
Naredba dodele
class ArithmeticDemo {
public static void main (String[] args){
int result = 1 + 2; // rezultat je 3
System.out.println(result);
result = result - 1; // rezultat je 2
System.out.println(result);
result = result * 2; // rezultat je 4
System.out.println(result);
result = result / 2; // rezultat je 2
System.out.println(result);
result = result + 8; // rezultat je 10
result = result % 7; // rezultat je 3
System.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 zavrava sa ;:
ime = Fred;
Blok je niz izraza koji se nalaze izmeu vitiastih
zagrada:
{
ime1 = Fred; ime2 = Rale;
}
Blokovi mogu sadrati druge blokove
39
Primer 1
public class KonverzijaDaljina {
public static void main(String[] args) {
float duzinaMilje; // vrednost duzine u miljama
float duzinaKilometri; // vrednost duzine u kilometrima
// 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 rezultata
duzinaMilje = 5.0;
duzinaKilometri = duzinaMilje * 1.609;
System.out.println("5 milja = " + duzinaKilometri + " km");
}
}
40
Primer 2
import java.util.Scanner; // programu je potrebna Scanner klasa
public 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);
}
}
Primenjeno programiranje
Drugi deo
42
Kontrola toka programa
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
43
Kontrola toka programa
Kontrola toka programa:
if else
switch case
return
while
do while
for
break
continue
Naredbe:
try catch finally
throw
44
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 promenjive x manja od deset tada
se promenjivoj dodeljuje vrednost 10
Mogue je zapisati i:
if ( x < 10 )
x = 10;
Ili:
if ( x < 10 ) { x = 10; }
45
Relacioni operatori
== jednakost
!= nejednakost
>= vee ili jednako
<= manje ili jednako
> vee
< manje
46
If naredba
If...else izraz sintaksa:
if(uslov){
izrazi;
} else{
izrazi;
}
47
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);
}
48
Ugnjedeni 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 izmeu vie mogunosti:
if ( n == 1 ) {
// izvravanje prvog bloka naredbi
}
else if ( j == 2 ) {
// izvravanje drugog bloka naredbi
}
else {
//ako ni jedan od predhodnih uslova nije
//zadovoljen vri se izvravanje treeg
//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 naredbe
double 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 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
56
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 slova: Z
za zbir, R za razliku, P za proizvod, K za kolinik.
Potrebno je koristiti promenjivu tipa char 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.
57
switch naredba
Sintaksa switch naredbe:
switch(promenjiva){
case(vrednost1):
izrazi;
break;
case(vrednost2):
izrazi;
break;
...
default:
izrazi;
break;
}
58
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;
}
59
for petlja
Sintaksa for petlje:
for(inicijalizacija; uslov; inkrement){
izrazi;
}
60
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
}
}
61
Primer 1. for petlja
int i;
for( i = 0; i < 10; i++ ){
System.out.println(i);
}
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);
}
}
}
63
while petlja
Sintaksa while petlje
while(uslov){
izrazi;
}
64
while petlja
while(response == 1) {
System.out.print( ID = + userID[n]);
n++;
response = readInt( Enter);
}
Mogue je da se telo petlje ni jednom ne izvri!
65
Primer while naredbe
int x = 0;
while (x<10) {
System.out.println(x);
x++;
}
66
do while petlja
Sintaksa do...while petlje
do{
izrazi;
}while(uslov);
Primer:
int x = 1;
do {
System.out.println(x);
x++;
}while (x<10);
67
do while petlja
do {
System.out.print( ID = + userID[n] );
n++;
response = readInt( Enter );
}while (response == 1);
Telo petlje e se bar jednom izvriti!
68
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
69
Continue
Moe 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;
}
}
}
Java metode i klase
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)
Nasleivanje
Svaka podklasa
nasleuje sve
promenjive svoje
nadklase
Polimorfizam
Isti interfejs bez obzira
na tipove podataka
vozilo
auto
motor
Nadklasa
podklasa
nacrtaj()
nacrtaj()
75
Primer klase i metoda
Class voce{
int grami;
int kalorijePoGramu;
int ukupnoKalorija() {
return(grami* kalorijePoGramu);
}
}

You might also like