200 likes | 432 Views
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
E N D
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 selectedvalue="'.$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
JavaVirtualMachine (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
JavaVirtualMachine (JVM) • JVM sa vyvinie pre každú platformu:
JavaVirtualMachine (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/downloads/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: • Napísať program v nejakom textovom editore (napríklad SciTe), program v príkazovom riadku skompilovať a spustiť • 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 publicclassHello { publicstaticvoidmain(String[] args) { System.out.println("HelloWorld"); } }
Programovanie v Jave • Dátové typy premenných a základné príkazy sú zhodné s C++ publicclassSucet_radu { publicstaticvoidmain(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 Jediná zmena pri úprave C++ programu
Programovanie v Jave • Základné dátové typy premenných a základné príkazy sú prakticky zhodné s C++ (nie longdouble), matematické funkcie sú v triede Math: publicclassSucet_radu { publicstaticvoidmain(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++. publicclass Pi { publicstaticvoidmain(String[] args) { long n=100000; //celkovypocet pokusov long zasahy=0; //pocetzasahov long pokusy=0; //pocet pokusov for(long i=0; i<n;i++) { doublex,y; x = Math.random(); 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) Java nedovolí ukladať výsledok funkcie Math.random() do typu float – nekontrolovateľná strata presnosti Oveľa jednoduchšie, 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. publicclass Funkcia { publicstaticvoidmain(String[] args) { double f; int n=100; f=Faktorial(n); System.out.println("Faktorialcisla " + n + " je: " +f); } privatestaticdoubleFaktorial(int n) { int i; doublevysledok = 1; for(i=1;i<=n;i++) vysledok *= i; returnvysledok; } } Príklad3 (Funkcia.java) Môže byť až za main(), nepotrebuje deklaráciu
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. publicclass Funkcia { publicstaticvoidmain(String[] args) { double f; int n=100; f=Faktorial(n); System.out.println("Faktorialcisla " + n + " je: " +f); } privatestaticdoubleFaktorial(int n) { int i; doublevysledok = 1; for(i=1;i<=n;i++) vysledok *= i; returnvysledok; } } Príklad3 (Funkcia.java) Môže byť až za main(), nepotrebuje deklaráciu
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ú ibahodnoty 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: intmain() { floatx0=0,y0=0,r0=2,fi0=1.2; Polar2cart(x0,y0,r0,fi0); ... } void Polar2cart(float &x, float&y, float r, floatfi) { x=r*cos(fi); y=r*sin(fi); }