dobré ráno s jazykom java uinf/paz1c

31
Dobré ráno s jazykom Java UINF/PAZ1c Róbert Novotný 21. septembra 2006 9.00, Live from P12

Upload: tahlia

Post on 08-Jan-2016

59 views

Category:

Documents


3 download

DESCRIPTION

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: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Dobré ráno s jazykom Java UINF/PAZ1c

Dobré ráno s jazykom JavaUINF/PAZ1c

Róbert Novotný

21. septembra 20069.00, Live from P12

Page 2: Dobré ráno s jazykom Java UINF/PAZ1c

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

Page 3: Dobré ráno s jazykom Java UINF/PAZ1c

Sylabus a požiadavky na zápočet

• Požiadavky:– Účasť na praktických cvičeniach– Domáce úlohy– Záverečný projekt

• Sylabus:– Objektovo orientované programovanie– Jeho použitie v Jave– oproti Popoludniam s jazykom Java viac dôraz

na jazyk a princípy OOP

Page 4: Dobré ráno s jazykom Java UINF/PAZ1c

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

Page 5: Dobré ráno s jazykom Java UINF/PAZ1c

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)

Page 6: Dobré ráno s jazykom Java UINF/PAZ1c

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.

Page 7: Dobré ráno s jazykom Java UINF/PAZ1c

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

Page 8: Dobré ráno s jazykom Java UINF/PAZ1c

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?"

Page 9: Dobré ráno s jazykom Java UINF/PAZ1c

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

Page 10: Dobré ráno s jazykom Java UINF/PAZ1c

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íva1. PHP: 1,152* 2. C# : 5,111 3. AJAX: 1,106 4. JavaScript: 4,406 5. Perl: 4,810 6. C: 6,1647. Ruby, Ruby on Rails: 210 a 548. Java: 14,408 9. Python: 811 10. Visual Basic .Net: 2,090

Page 11: Dobré ráno s jazykom Java UINF/PAZ1c

Prvý program

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

}

}

• 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...

Page 12: Dobré ráno s jazykom Java UINF/PAZ1c

Prvý program

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

}

}

• 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....

Page 13: Dobré ráno s jazykom Java UINF/PAZ1c

Prvý programhello.pas

program hello;begin

writeln(‘Hello World’);end;

HelloWorld.java

public class HelloWorld {public static void main(String[] args) {

System.out.println(“Hello World”);

}}

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

Page 14: Dobré ráno s jazykom Java UINF/PAZ1c

Prvý program

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

}

}

• 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"

Page 15: Dobré ráno s jazykom Java UINF/PAZ1c

Štábna kultúraChaos.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]);}}}

Nadhera.javapublic 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“

Page 16: Dobré ráno s jazykom Java UINF/PAZ1c

Dátové typy

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

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.

Page 17: Dobré ráno s jazykom Java UINF/PAZ1c

Používanie premennýchHelloWorld.java

public class HelloWorld {public static void main(String[] args) {int i = 0;boolean b = true;boolean c = false;// toto je komentárfloat f = 3.14f; // f znamená, že konštanta je reálne číslo typu floatString s = "Mám vznášadlo plné úhorov";// String s veľkým S!}

}

Page 18: Dobré ráno s jazykom Java UINF/PAZ1c

Podmienky (nie na zápočet)

if uplatok < 10000 then begin

writeln('Nedam zapocet');

end

else begin

writeln('Dajte index');

end;

if (uplatok < 10000) {

System.out.println("Nedám");

} else {

System.out.println("Dajte index");

}

Zátvorky okolo podmienky sú povinné!

Page 19: Dobré ráno s jazykom Java UINF/PAZ1c

Horšie podmienky (ešte stále nie na zápočet)

if (vek > 18) and (vek <=24) then beginwriteln('Pravdepodobne vysokoskolak');

end;

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ť: !=

Page 20: Dobré ráno s jazykom Java UINF/PAZ1c

Horšie podmienky (ešte stále nie na zápočet)

if (vek == 15) {

System.out.println("Vydajte mu obciansky");

}

• 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) ...

Page 21: Dobré ráno s jazykom Java UINF/PAZ1c

Dva druhy porovnaní

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

,,Abandon sanity, ye who enter"

Page 22: Dobré ráno s jazykom Java UINF/PAZ1c

Cykly(sti)

while i > 0 do begini = i - 1;

end;

while (i > 0) {

i = i – 1;

}

Zátvorky okolo podmienky sú povinné!

,,Fór fór bol to cyklus for, zacyklí sa každý tvor" (Tanečnodlažobná skupina Ctrl+Alt+Del)

• 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..."

repeat i = i - 1;

until i <= 0;

/* repeat v Jave neexistuje!

*/

Page 23: Dobré ráno s jazykom Java UINF/PAZ1c

Cykly(sti) var i:integer;

{…}

for i:=1 to 5 do begin

{…}

end;

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

Page 24: Dobré ráno s jazykom Java UINF/PAZ1c

Cykly(sti) int i;

for (i = 1; i <= 100; i = i + 1) {

System.out.println("Nebudem pozerať telenovely");

}

int i = 1;

while (i <= 100) {

System.out.println("Nebudem pozerať telenovely");

i = i + 1;

}

To isté ako

Page 25: Dobré ráno s jazykom Java UINF/PAZ1c

Cykly(sti) int i;

for (i = 1; i <= 5; i = i + 1) {

System.out.println(i);

}

Praví programátori píšu:

for (int i = 1; i <= 5; i = i + 1) {

System.out.println(i);

}

for (int i = 0; i < 5; i++) {

System.out.println(i);

}

Javáci zvyčajne indexujú od nuly

Čísla od 1 po 5

Čísla od 0 po 4

i = i + 1

Page 26: Dobré ráno s jazykom Java UINF/PAZ1c

Poliavar p:array[1..10] of

integer;

{…}

p[1] := 25;

p[2] := 12;

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

Page 27: Dobré ráno s jazykom Java UINF/PAZ1c

Poliafloat[] priemery; //deklarácia

priemery[0] = 25.0f; //chyba, pole nebolo inicializované!

boolean[] hodnoty = new boolean[2];

hodnoty[0] = true;

hodnoty[1] = false;

Inicializácia desaťprvkového poľa

boolean[] hodnoty = new boolean[] {true, false};

Inicializácia a naplnenie dvojprvkového poľa pre pokročilých

Page 28: Dobré ráno s jazykom Java UINF/PAZ1c

PríkladObsadenie.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]);

}

}

}

Page 29: Dobré ráno s jazykom Java UINF/PAZ1c

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

Page 30: Dobré ráno s jazykom Java UINF/PAZ1c

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

HelloWorld.java

public class...

HelloWorld.class010011001011javac java Hello World!

Page 31: Dobré ráno s jazykom Java UINF/PAZ1c

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