Transcript Java

JAZYKY SO SYNTAXOU
PRÍBUZNOU K C++
PROGRAMOVACÍ JAZYK
JAVA
Príbuzné jazyky
Jazyk C++ bol vo svojej dobe natoľko revolučný, že
mnohé novšie jazyky prebrali jeho základnú syntax,
dokonca aj názvy niektorých funkcií.
 Príklad 1 – skriptovací jazyk PHP
 „Personal Home Pages Tools“ je jazyk na
programovanie HTML stánok. Výstupom PHP
programov sú HTML stránky.
 PHP je vlastne „preprocesor“ (v zmysle C++) –
pomocou programu PHP sa vyrába iný „program“ v
HTML, ktorý vedia zobrazovať WEB-prehliadače

Príbuzné jazyky
Ukážky z programov v PHP:
for($i=1; $i<=$kategoria_pocet; $i++)
{
if($kategoria[$i]==$item_selected)
$kategoria_selected = $i;
}

for($i=0;$i<=$divizia_pocet;$i++)
if($i==$divizia_selected)
{
echo('<OPTION selected
value="'.$divizia[$i].'">‚
.$divizia_meno[$i].'</OPTION>');
}
else
{
echo('<OPTION
value="'.$divizia[$i].'">‚
.$divizia_meno[$i].'</OPTION>');
}
Príbuzné jazyky
Ukážky z programov v PHP:
for($i=0; $i<$pocet; $i++)
{
switch(mysql_Result($result, $i, 'divizia'))
{
case $divizia[1]: echo('<TR
BGCOLOR=LIGHTYELLOW>'); break;
case $divizia[2]: echo('<TR B
GCOLOR=PINK>'); break;
case $divizia[3]: echo('<TR
BGCOLOR=LIGHTBLUE>'); break;
case $divizia[4]: echo('<TR
BGCOLOR=LIGHTGREEN>'); break;
default: echo('<TR BGCOLOR=WHITE>'); break;
}

Java
Java je v súčasnosti jedným z najrozšírenejších
jazykov používaným v priemysle
 Je to moderný jazyk „priemyselného štandardu“ –
t.j. skompilovaný kód je natoľko spoľahlivý, že sa
môže používať na riadenie priemyselných procesov
 V Jave boli naprogramované aj roboty Spirit a
Oportunity, ktoré skúmali Mars

Java
Syntax Javy je navrhnutá tak, že priamo bráni
programátorom „byť lenivými“ a ignorovať možné
chyby, ktoré môžu počas behu programu nastať.
 Napríklad vstup z klávesnice sa MUSÍ ošetriť na
možné zadané nezmysly – inak sa program ani
neskompiluje.
 Z toho vyplýva, že majú problém úplní začiatočníci v
programovaní, nie je možné naprogramovať
extrémne jednoduché programy, ktoré nie sú
„ošetrené proti nezmyslom“
 FMFI – v Jave je predmet „Počítačové praktikum 1“

Prečo Java?
Asi najväčšou výhodou (okrem modernosti a
spoľahlivosti) je nezávislosť na operačnom systéme
a hardvérovej platforme
 Ten istý skompilovaný program beží na PC s MS
Windows, na PC s Linuxom, na MacBooku s iOS aj
na Sun-workstation s OS Solaris
 C++ - program sa musí skompilovať na každom z
uvedených systémoch zvlášť – nepríjemnosť pre
užívateľa aj vývojárov

Java Virtual Machine (JVM)
Ako je to možné, že ten istý skompilovaný program
beží na rôznych systémoch?
 Medzi skompilovaným programom a hardvérovou
platformou je JVM

Java Virtual Machine (JVM)

JVM sa vyvinie pre každú platformu:
Java Virtual Machine (JVM)
Má to aj nevýhodu: program bežiaci vo „virtuálnom
stroji“ beží z princípu pomalšie, než program
skompilovaný priamo pre danú platformu
 Na moderných výkonných počítačoch je však toto
zdržanie obvykle nepodstatné
 Neplatí celkom pre programy extrémne náročné na
výkon počítača

Ako programovať v Jave
Nainštalovať si na danú platformu (počítač) nástroje
pre vývoj - „Java Development Kit (JDK)“
 http://www.oracle.com/technetwork/java/javase/dow
nloads/index.html
 Sú 3 verzie:

◦ Standard Edition (SE) – bežné použitie
◦ Enterprise Edition (EE) – priemyselný štandard
◦ Mini Edition (ME) – pre mobily a tablety

Na púšťanie Java-programov stačí mať nainštalované
iba „Java Runtime Environment (JRE)“ – býva bežne
nainštalované na väčšine počítačov
Ako programovať v Jave

Podobne ako v C++, aj tu sú možné dve úrovne
komfortu programovania:
1. Napísať program v nejakom textovom editore (napríklad
SciTe), program v príkazovom riadku skompilovať a
spustiť
2. Nainštalovať si vývojové prostredie, napríklad NetBeans

Pre naše potreby úplne postačí textový editor
SciTe
Prvý program v Jave





Prípona súboru s programom má byť .java
Jeden súbor .java obsahuje kód (program) jednej triedy
(class)
Meno triedy musí byť zhodné s menom súboru
Pri spustení programu (triedy) sa spustí funkcia main()
Príklad – program Hello.java
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
Programovanie v Jave
Dátové typy premenných a základné príkazy sú zhodné s C++
public class Sucet_radu
{
public static void main(String[] args)
{
Jediná zmena pri úprave
double sucet=0;
C++ programu
for(long i=1;i<10000000;i++)
{
double clen=Math.pow(-1,i+1)/i;
sucet +=clen;
}
System.out.println(sucet);
System.out.print("ln(2) = ");
System.out.println(Math.log(2));
}
}

Príklad1
Programovanie v Jave

Základné dátové typy premenných a základné príkazy sú prakticky
zhodné s C++ (nie long double), matematické funkcie sú v triede
Math:
public class Sucet_radu
{
public static void main(String[] args)
{
double sucet=0;
for(long i=1;i<10000000;i++)
{
double clen=Math.pow(-1,i+1)/i;
sucet +=clen;
}
System.out.println(sucet);
System.out.print("ln(2) = ");
System.out.println(Math.log(2));
}
}
Príklad1 (Sucet_radu.java)
Programovanie v Jave
Niektoré funkcie sú už zmodernizované na základe potrieb, napríklad Math.random()
vráti náhodné desatinné číslo (double) z intervalu <0,1>, na rozdiel od celočíselnej
varianty rand() v C++.

public class Pi
{
public static void main(String[] args)
{
long n=100000; //celkovy pocet pokusov
long zasahy=0; //pocet zasahov
long pokusy=0; //pocet pokusov
for(long i=0; i<n;i++)
{
Java nedovolí ukladať výsledok
funkcie Math.random() do typu
float – nekontrolovateľná strata
presnosti
double x,y;
x = Math.random();
Oveľa jednoduchšie,
y = Math.random();
pokusy++;
if( (x*x + y*y) < 1) zasahy++;
double pi = 4*(double)zasahy/(double)pokusy;
System.out.print(pi);
System.out.print("\r");
}
}
}
Príklad2 (Pi.java)
než v C++
Programovanie v Jave
Volanie funkcií – podobné ako v C++. Rozdiel – ak je to „štandardná“ funkcia (nie je
to metóda triedy na manipuláciu s objektami) – označuje sa ako static.

public class Funkcia
{
public static void main(String[] args)
{
double f;
int n=100;
f=Faktorial(n);
System.out.println("Faktorial cisla " + n + " je: " +f);
Môže byť až za main(), nepotrebuje deklaráciu
}
private static double Faktorial(int n)
{
int i;
double vysledok = 1;
for(i=1;i<=n;i++) vysledok *= i;
return vysledok;
}
}
Príklad3 (Funkcia.java)
Programovanie v Jave
Volanie funkcií – podobné ako v C++. Rozdiel – ak je to „štandardná“ funkcia (nie je
to metóda triedy na manipuláciu s objektami) – označuje sa ako static.

public class Funkcia
{
public static void main(String[] args)
{
double f;
int n=100;
f=Faktorial(n);
System.out.println("Faktorial cisla " + n + " je: " +f);
Môže byť až za main(), nepotrebuje deklaráciu
}
private static double Faktorial(int n)
{
int i;
double vysledok = 1;
for(i=1;i<=n;i++) vysledok *= i;
return vysledok;
}
}
Príklad3 (Funkcia.java)
Programovanie v Jave
Sú však aj podstatné odlišnosti medzi Java a
C++
 Jeden z najväčších rozdielov – v Jave do funkcie
vchádzajú iba hodnoty parametrov, nie referencie
 Java pozná referencie na objekty (nie ale na
obyčajné premenné), do funkcie možno poslať
referenciu na objekt ale nikdy nie tak ako v C++,
kde do funkcie posielame „hodnotu“ premennej,
ale funkcia ju prijme ako referenciu
 Java má teda úplne inú filozofiu referencií – je to
problém pre začiatočníkov v Jave
prechádzajúcich z C++

Programovanie v Jave

Nie je možné toto:
int main()
{
float x0=0,y0=0,r0=2,fi0=1.2;
Polar2cart(x0,y0,r0,fi0);
...
}
void Polar2cart(float &x, float &y, float r,
float fi)
{
x=r*cos(fi);
y=r*sin(fi);
}