310 likes | 491 Views
Dobré ráno s jazykom Java UINF/PAZ1c. Róbert Novotný 21. septembra 2006 9.00, Live from P12. Formality a byrokracie. Teoretické cvičenie štvrtok, 9.00, P12 prednáškové zameranie Praktické cvičenia piatok, 7.00, P2/P3 piatok, 9.00, P2/P3. Sylabus a požiadavky na zápočet. Sylabus:
E N D
Dobré ráno s jazykom JavaUINF/PAZ1c Róbert Novotný 21. septembra 2006 9.00, Live from P12
Formality a byrokracie • Teoretické cvičenie • štvrtok, 9.00, P12 • prednáškové zameranie • Praktické cvičenia • piatok, 7.00, P2/P3 • piatok, 9.00, P2/P3
Sylabus a požiadavky na zápočet • Sylabus: • Objektovo orientované programovanie • Jeho použitie v Jave • oproti Popoludniam s jazykom Java viac dôraz na jazyk a princípy OOP • Požiadavky: • Účasť na praktických cvičeniach • Domáce úlohy • Záverečný projekt
Java • Java • výslovnosť • džova (Gosling a iní zakladatelia) • džava ,,To sú tí Američania, čo čítajú body ako báádíí" • java (Poliaci a Rusi;-)) • objektovo orientovaný programovací jazyk • základný softvér týkajúci sa Javy
História • 1990: Sun prorokuje konvergenciu spotrebiteľských zariadení a počítačov • 1991: James Gosling plodí programovací jazyk Oak • 1994: HotJava – prvý webový prehliadač s dynamickým obsahom ,,Točila sa tam molekula" • 1995: Oak premenovaný na Javu • Netscape ohlasuje podporu vo svojom prehliadači • Microsoft tiež (a neskôr si vyrába vlastnú Javu)
História • 1996: Vypustený Java Development Kit 1.0 ,,svižný ako dvestoročná korytnačka po porážke" • 1998: JDK 1.1 – kopa nových vlastností • 1997: JDK 1.2 alias Java 2 Standard Edition 1.2 2000: J2SE 1.3, 2002: J2SE 1.4 • 2004: JDK 1.5 alias Java 2 Standard Edition 1.5 alias Java 5 alias Java Standard Edition 5 alias Tiger ,,Chápete, nie?" • o chvíľu vo vašich kinách: Java SE 6 • všetko pod palcom Sun Microsystems.
Výhody Javy • WORA: write once, run anywhere (Napíš raz, spusti hocikde) • kódenie na Windowse • nasadenie na Solaris • platformová nezávislosť • Windows • Linux • mobil • sonda Mars Spirit • tony kvalitných knižníc a nástrojov • väčšina zadarmo
Výhody a nevýhody Javy • malé spustiteľné súbory ,,Heh. Až na to osemmegové JRE" • žiadne smerníky • syntax prebratá z Ccka ,,To je výhoda?"
Výhody a nevýhody Javy • užívateľ sa často stretáva s tými najhoršími stránkami Javy • applety: hrozné, pomalé, nepoužiteľné • applety tvorili veľmi malý podiel programov v Jave • historicky na odchode • bežné aplikácie: hrozné, pomalé, nepoužiteľné • situácia sa zo dňa na deň zlepšuje ,,Porovnaj Together a Eclipse" • pozri JAlbum, či Azureus
Prečo by som mal ovládať Javu • komerčné spoločnosti => množstvo pracovných ponúk • Java je v súčasnosti na čele medzi požiadavkami (plece pri pleci s C++) • Ness, Siemens, VSL, CAI • veľká perspektíva 1. PHP: 1,152* 2. C# : 5,111 3. AJAX: 1,106 4. JavaScript: 4,406 5. Perl: 4,810 6. C: 6,164 7. Ruby, Ruby on Rails: 210 a 54 8. Java: 14,408 9. Python: 811 10. Visual Basic .Net: 2,090
hello.pas program hello; begin writeln(‘Hello World’); end; HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”); } } Prvý program • Java je case-sensitive: rozlišujú sa veľké a malé písmená. • pokracuj a POKRACUJ sú dve rôzne premenné • Zdrojové súbory majú príponu .java. • V jednom súbore typicky jedna trieda. • Trieda HelloWorld v súbore HelloWorld.java (aj na Windowse). Nie HELLOWORLD.JAVA, nie hello.jav. Inak trhanie vlasov...
hello.pas program hello; begin writeln(‘Hello World’); end; HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”); } } Prvý program • public class znamená deklaráciu triedy. Všetok kód musí prináležať nejakej triede. • Žiadne voľne pohodené funkcie a procedúry. • public static void main(String[] args) je metóda, ktorá sa zavolá pri spustení triedy z príkazového riadku • ,,Dôvod, prečo sa Java neučí v prvom semestri.“ • krvavé detaily neskôr....
hello.pas program hello; begin writeln(‘Hello World’); end; HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”); } } Prvý program • Kučeravé zátvorky sú približnou analógiou begin a end • Ohraničujú blok príkazov • ,,Chlpaté zátvorky“ (M. Schmotzer) • Príkazy v zátvorkách sú odsadené. • ,,Štábna kultúra musí byť“ (Herout: Učebnice jazyka C) • Riadky sú ukončené bodkočiarkou. (Spomni Pascal)
hello.pas program hello; begin writeln(‘Hello World’); end; HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World”); } } Prvý program • Výpis textu na obrazovku cez System.out.println(); • println() je metóda triedy out, ktorá je vnútornou triedou triedy System. • žiadne voľne pohodené funkcie a procedúry! • ,,O tom potom“ • Reťazce v Jave písané do dvojitých úvodzoviek • "Ja som Fero Taraba"
Chaos.java public class chaos{public static void main(String[] args){System.out.println(“Hello”);for(int i=0;i<args.length;i++){System.out.println(args[i]);}}} Štábna kultúra Nadhera.java public class Nadhera { public static void main(String[] args) { System.out.println(“Hello”); for(int i = 0; i < args.length;i++) { System.out.println(args[i]); } } } Dodržiavame mnoho konvencií: odsadzujeme, kučeravé zátvorky na správne miesta, veľkosť písmen v názvoch premenných ,,Ešte horšie, než na cvičeniach S. Krajčiho“
Pascal integer (celé čísla) -32768 - 32767 real (reálne čísla) string (reťazce) boolean (pravd. hod.) Java int -2147483648 - 2147483647 float String (veľké S!) boolean Dátové typy Java je silne typovaný jazyk. Premenná má názov a typ. (Spomni Pascal) ,,Nech javáci trpia pri pohľade na “1 opica“ + 1 = "2 opica“ v PHP.“ Existujú aj ďalšie, ale o tom potom.
HelloWorld.java public class HelloWorld { public static void main(String[] args) { int i = 0; boolean b = true; boolean c = false; // toto je komentár float f = 3.14f; // f znamená, že konštanta je reálne číslo typu float String s = "Mám vznášadlo plné úhorov"; // String s veľkým S! } } Používanie premenných
if uplatok< 10000 then begin writeln('Nedam zapocet'); end else begin writeln('Dajte index'); end; Podmienky (nie na zápočet) if (uplatok < 10000) { System.out.println("Nedám"); } else { System.out.println("Dajte index"); } Zátvorky okolo podmienky sú povinné!
if (vek > 18) and (vek <=24) then begin writeln('Pravdepodobne vysokoskolak'); end; Horšie podmienky (ešte stále nie na zápočet) if (vek > 18 && vek <=24) { System.out.println("Pravdepodobne vysokoskolak"); } Logické spojky: logické a: && logické alebo: ||(,,dve pajpy") negácia: ! if(!jeStudent) Operátory: menšie: < väčšie: > rovnosť: == nerovnosť: !=
kučeravé zátvorky píšeme aj v prípade jediného príkazu (štábna kultúra!) porovnanie dvoch premenných cez dvojité rovná sa. Pascal: i := 0, ale if a = b then... Java: int a = 0, ale if (a == b) ... nerovnosť dvoch premenných: Pascal: if a <> b then... Java: if (a != b) ... Horšie podmienky (ešte stále nie na zápočet) if (vek == 15) { System.out.println("Vydajte mu obciansky"); }
Dva druhy porovnaní ,,Abandon sanity, ye who enter" int pocetDeti = 25; if (pocetDeti == 0)... String meno = "Fero"; if (meno.equals("Taraba")) • Primitívy (int, float, boolean...) porovnávame cez == Pomôcka: primitívy sa začínajú malým písmenom • Objekty (String) porovnávame cez equals() Pomôcka: typ sa začína veľkým písmenom Zmätok v použití spôsobuje trhanie vlasov! • == na objektoch funguje, ale nie tak ako zvyčajne očakávame • equals() na primitívoch nefunguje
while i > 0 do begin i = i - 1; end; Cykly(sti) ,,Fór fór bol to cyklus for, zacyklí sa každý tvor" (Tanečnodlažobná skupina Ctrl+Alt+Del) repeat i = i - 1; until i <= 0; while (i > 0) { i = i – 1; } Zátvorky okolo podmienky sú povinné! /* repeat v Jave neexistuje! */ • Spomni Pascal: • podmienka sa overuje pred začiatkom každej iterácie • telo cyklu sa nemusí vykonať • repeat nemá v Jave kamaráta • repeat vieme transformovať na while ,,pozorný čitateľ ľahko ukáže..."
var i:integer; {…} for i:=1 to 5 do begin {…} end; Cykly(sti) int i; for (i = 1; i <= 5; i++) { //… } • for cyklus je komplikovanejší, ale zato flexibilnejší • ,,vykrádačka z Cčka" • for (inicializácia; podmienka; príkazy po iterácii) • inicializácia: príkazy, ktoré sa vykonajú pred spustením cyklu • podmienka: booleovská podmienka, overuje sa pred iteráciou • príkazy po iterácii: vykonané po skončení iterácie
Cykly(sti) int i; for (i = 1; i <= 100; i = i + 1){ System.out.println("Nebudem pozerať telenovely"); } To isté ako int i = 1; while (i <= 100) { System.out.println("Nebudem pozerať telenovely"); i = i + 1; }
Cykly(sti) int i; for (i = 1; i <= 5; i = i + 1){ System.out.println(i); } Praví programátori píšu: Čísla od 1 po 5 for (int i = 1; i <= 5; i = i + 1){ System.out.println(i); } Javáci zvyčajne indexujú od nuly Čísla od 0 po 4 for (int i = 0; i < 5; i++){ System.out.println(i); } i = i + 1
var p:array[1..10] of integer; {…} p[1] := 25; p[2] := 12; Polia int[] p; //deklarácia p = new int[10]; //priradenie {…} p[0] = 25; p[1] = 12; • polia v Jave sú zásadne indexované od nuly. • deklaráciu a priradenie možno spojiť • int[] p= new int[10]; • máme 10prvkové pole. Prvky majú indexy od 0 po 9. • priradenie do p[10] je chyba! Hrozí plač a škrípanie zubami! (,,Chyba plus jedna")
Polia float[] priemery; //deklarácia priemery[0] = 25.0f; //chyba, pole nebolo inicializované! Inicializácia desaťprvkového poľa boolean[] hodnoty = new boolean[2]; hodnoty[0] = true; hodnoty[1] = false; Inicializácia a naplnenie dvojprvkového poľa pre pokročilých boolean[] hodnoty = new boolean[] {true, false};
Príklad Obsadenie.java public class Obsadenie { public static main(String[] args) { String[] s = new String[] {"Ganjalf", "Aragorn", "Gimli", "Legolas", "Kirk"}; for (int i = 0; i < s.length; i++) { System.out.print("Hra: "); System.out.println(s[i]); } } }
Ako spustím zázračný program v Pascale • Spomni Pascal: • F9 kompiluje a zároveň spúšťa. Všetko sa deje na pozadí F9
Ako spustím zázračný program v Jave • Pravý programátor používa príkazový riadok a notepad/vi. • Kompilácia • javac HelloWorld.java • Spustenie • java HelloWorld Hello World! HelloWorld.java public class... HelloWorld.class 010011001011 javac java
Ako spustím zázračný program v Jave • Prostý ľud používa integrované vývojové prostredie • Eclipse od IBM (zadarmo) • NetBeans od Sunu (zadarmo) ,,začínali ako softvérový projekt na MFF UK v Prahe" • IntelliJ IDEA • najlepšie • za ťažké peniaze