2.19k likes | 2.46k Views
Petak: I čas: 15:50 - 16:35 II čas: 16:45 - 17:30 III čas: 17:40 - 18:25. Primenjeno programiranje. m r Boban Vesin. Primenjeno programiranje. Fond časova: 3+2 Broj ESPB: 6 Ocena znanja (max. broj poena je 100) Minimum bodova za prolaz: 28+23. Sadržaj predmeta.
E N D
Petak: I čas: 15:50 - 16:35 II čas: 16:45 - 17:30 III čas: 17:40 - 18:25 Primenjeno programiranje mr Boban Vesin
Primenjeno programiranje • Fond časova: 3+2 • Broj ESPB: 6 • Ocena znanja (max. broj poena je 100) • Minimum bodova za prolaz: 28+23
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
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/
Tehnologije • Programski jezik: Java • Razvojni alat: NetBeans 6.5 • Sistem za upravljanje bazama podataka: MySql 5.0
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)
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
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
Programski jezik Java • U jesen 1995. godine Sun Microsystems prvi put je predstavio programskijezik Java • Java je objektno-orijentisani, nezavistan od platforme, bezbedanprogramski jezik, • • Objektno-orijentisano programiranje (OOP) je metodologija razvojasoftvera 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.
Programski jezik Java • Platformska nezavisnostje mogućnost programa da se izvršava bezmodifikacija 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 kojisoftver 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)
Programski jezik Java • Objektno-orijentisano programiranje je pristup razvoju račuarskihprograma koji modeluje objekteiz realnog sveta. • Neophodno je prvo naučiti na koji način Java implementira principeobjektno-orijentisanog programiranja: • organizovanje programa pomoću elemenata koji se nazivaju klase i postupak kojimse 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šćenjempaketa i interfejsa
Programski jezik Java • Sav izvorni kod je pisan u tekstualnim fajlovima sa ekstenizijom:.java • Izvorni fajlovi se kompajliranjem pretvaraju u fajlove sa extenzijom.class • .classfajl ne sadrži kod razumljiv procesoru, on sadržibajtkod • Bajtkod: mašinski jezik Javine virtuelne mašine (JavaVirtual Machine JVM) • Java programi se pokreću uz pomoć JVM-e
Programski jezik Java • Opšta sintaksa samostalne aplikacije u Javi: class <classname>{ public static void main(String args[]){ izrazi; ————————; ————————; } }
Primer Java programa • Program koji ispisuje “Hello World” class HelloWorldApp { public static void main(String[] args) { // ispis stringa. System.out.println("Hello World!"); } }
Programski jezik Java • Kompajliranje: javac HelloWorldApp.java • Kompajler generiše fajl: HelloWorldApp.class • Pokretanje programa: java HelloWorldApp
Osnovni elementi • Osnovni elementi Jave pomoću kojih se komponuju složenije konstrukcije jezika: • Identifikatori • Literali • Specijalni simboli • Rezervisane reči
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
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
Rezervisane reči • Koriste se za opis naredbi programa i imaju tačno određeno značenje 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
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
Komentari • Delovi programa koji ne utiču na smisao i suštinu programa i zenemaruju se prilikom prevođenja
Prosti tipovi podataka • Celobrojni • int • short • long • byte • Realni brojevi • float • double • Znakovni • char • Logički • boolean
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
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;
Boolean prekinut = false; naziv promenjive vrednost naziv tipa 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 tačnošću od 7 decimala • 1.2 predstavlja double vrednost sa tačnošću od 15 decimala
Deklaracija promenjivih int index = 1.2; // greška boolean retOk = 1; // greška double 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
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;
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
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" } }
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);
Naredba dodele public class Demo { public static void main (String[] arg) { boolean b; b = (2 + 2 == 4); System.out.println(b); } }
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-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 izvođenja programa je: i : 1 ++i : 2 i++ : 2 i : 3 --i : 2
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); } }
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()); } }
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
Primer 1 public class KonverzijaDaljina { public static void main(String[] args) { floatduzinaMilje; // vrednost duzine u miljama floatduzinaKilometri; // vrednost duzine u kilometrima // konverzija 5 km u miljei stampanje rezultata duzinaKilometri = 5.0; duzinaMilje = duzinaKilometri * 0.6214; System.out.println("5 km = " + duzinaMilje + " milja"); // Konverzija 5 milja u kilometrei stampanje rezultata duzinaMilje = 5.0; duzinaKilometri = duzinaMilje * 1.609; System.out.println("5 milja = " + duzinaKilometri + " km"); } }
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); } }
2. čas Grananje, petlje
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
Kontrola toka programa Kontrola toka programa: if – else switch – case return while do – while for break continue • Naredbe: try – catch – finally throw
If – naredba grananja • if naredba utvrđuje istinitost izraza u zagradi i ako je tačna izvršavaju se zadate akcije if ( 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; }
Relacioni operatori == jednakost != nejednakost >= veće ili jednako <= manje ili jednako > veće < manje
If naredba • If...else izraz sintaksa: if(uslov){ izrazi; } else{ izrazi; }
if… else • if … elseizraz ispituje tačnost izraza. Izvršava se jedan niz naredbi ako je vrednost trueili drugi niz naredbi ako je vrednost false. if (x != oldx) { System.out.print(“x je promenjena”); } else { System.out.print(“x nije promenjena”); }
Ugnježdeniif … else if ( myVal > 100 ) { if ( remainderOn == true) { myVal = mVal % 100; } else { myVal = myVal / 100.0; } }else{ System.out.print(“myVal is in range”); }
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 }
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”); } Upozorenje…