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