dobré ráno s jazykom java uinf/paz1c
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 PresentationTRANSCRIPT
Dobré ráno s jazykom JavaUINF/PAZ1c
Róbert Novotný
21. septembra 20069.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
• 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
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í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
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...
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....
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)
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"
Š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“
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.
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!}
}
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é!
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ť: !=
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) ...
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"
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!
*/
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
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
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
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")
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
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]);
}
}
}
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
HelloWorld.java
public class...
HelloWorld.class010011001011javac java Hello World!
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