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

Petak: I čas: 15:50 -16:35 II čas: 16:45 -17:30 III čas ... · 4 Literatura Materijal sa predavanja i vežbi za predmet Primenjeno programiranje na sajtu Škole Lemay L., Cadenhead

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

6

NetBeans 6.5

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);

}}

Primenjeno programiranjeDrugi deo

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

46

If naredba

� If...else izraz sintaksa:

if(uslov){

izrazi;

} else{

izrazi;

}

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;}

59

for petlja

� Sintaksa for petlje:

for(inicijalizacija; uslov; inkrement){

izrazi;

}

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

}

}

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 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!

65

Primer while naredbe

int x = 0;

while (x<10) {

System.out.println(x);

x++;

}

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;

}

}

}

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)

� Nasleñivanje� Svaka podklasa

nasleñuje sve promenjive svoje nadklase

� Polimorfizam� Isti interfejs bez obzira

na tipove podataka

vozilo

automotor

Nadklasa

podklasa

nacrtaj() nacrtaj()

75

Primer klase i metoda

Class voce{

int grami;

int kalorijePoGramu;

int ukupnoKalorija() {

return(grami* kalorijePoGramu);

}

}