Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség



Hasonló dokumentumok
1. Egyszerű (primitív) típusok. 2. Referencia típusok

Programozási nyelvek JAVA EA+GY 1. gyakolat

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

I. Bevezetés. 1. ábra A Java "logója"

Java I. A Java programozási nyelv

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Informatika terméktervezőknek

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Szoftvertechnológia alapjai Java előadások

A Java programozási nyelv

Programozási nyelv Java

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Adatszerkezetek és algoritmusok

JAVA ALKALMAZÁSOK 1. ELŐADÁS 2/22/2017 1

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozási technológia I.

Osztályok. 4. gyakorlat

Java programozási nyelv

3. Gyakorlat Ismerkedés a Java nyelvvel

OOP: Java 1.Gy: Java alapok

A C# programozási nyelv alapjai

Programozási nyelvek Java

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége

Python tanfolyam Python bevezető I. rész

1. Jelölje meg az összes igaz állítást a következők közül!

Java I. A Java programozási nyelv

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Szoftvertervezés és -fejlesztés I.

Mintavételes szabályozás mikrovezérlő segítségével

Programozási nyelvek Java

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Adatbázis és szoftverfejlesztés elmélet

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

és az instanceof operátor

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

8. gyakorlat Pointerek, dinamikus memóriakezelés

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Bevezetés a Java programozási nyelvbe

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Pénzügyi algoritmusok

7. fejezet: Mutatók és tömbök

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Bevezetés a Java programozási nyelvbe

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Programozási nyelvek Java

Programozási technológia

Java programozási nyelv

Java Programozás 1. Gy: Java alapok. Ismétlés ++

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

1. Alapok. Programozás II

Algoritmizálás és adatmodellezés tanítása 1. előadás

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Java programozási nyelv 6. rész Java a gyakorlatban

JAVA PROGRAMOZÁS 1.ELŐADÁS

OOP #14 (referencia-elv)

OOP: Java 8.Gy: Abstract osztályok, interfészek

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Objektumorientált Programozás VI.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Programozás I. Első ZH segédlet

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Objektumorientált Programozás III.

Programozási nyelvek (ADA)

JAVA PROGRAMOZÁS 2.ELŐADÁS

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Abstract osztályok és interface-ek. 7-dik gyakorlat

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

III. OOP (objektumok, osztályok)

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

A JavaScript főbb tulajdonságai

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Programozás C és C++ -ban

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 4. rész Osztályok II.

Mobil Informatikai Rendszerek

C++ programozási nyelv

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozási nyelvek Java

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Programozás alapjai. 10. előadás

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

C programozási nyelv Pointerek, tömbök, pointer aritmetika

A C programozási nyelv II. Utasítások. A függvény.

Átírás:

A JAVA TECHNOLÓGIA LÉNYEGE Programozás III Többlépcsős fordítás JAVA ALAPOK Platformfüggetlenség A JAVA TECHNOLÓGIA LÉNYEGE JAVA PLATFORM Két komponense: Java Virtual Machine (JVM) Java Application Programming Interface (API) Kicsit lassúbb, mint a natív kód futtatása. 1

KITÉRŐ: JAVA vs C++ vs C# http://www.developer.com/java/article.php/3856906/java-vs-c-the- Performance-Showdown.htm http://www.25hoursaday.com/csharpvsjava.html http://www.harding.edu/fmccown/java_csharp_comparison.html http://slashdot.org/topic/cloud/java-vs-c-which-performs-better-in-the-real-world/ A JAVA TECHNOLÓGIA LÉNYEGE Néhány tutoriál: http://docs.oracle.com/javase/tutorial/ http://www.oracle.com/technetwork/java/langenv-140151.html http://www.java2s.com/tutorial/java/catalogjava.htm + Google és Java fórumok. http://shootout.alioth.debian.org/ http://stackoverflow.com/questions/1049004/java-vs-c-are-there-anystudies-that-compare-their-execution-speed Google JAVA PLATFORMOK KÖRNYEZETEK Java Futtató Környezet JRE: Java Runtime Environment (tartalmazza a JVM-et (java parancs)) Ezt töltjük le a gépünkre otthon, és ez fut a mobiltelefonon is 2

KÖRNYEZETEK Java Fejlesztő Környezet JDK: Java Development Kit ez fejlesztő eszköz, de tartalmazza a JRE-t is! (Ebben található a javac parancs) Verzió: 1.8, 20-as update. (Java SDK (Software Development Kit) ) FEJLESZTŐESZKÖZÖK A JDK fapados módszert biztosít (notepad + parancsmód) Ezért IDE-ket használunk Integrated Development Kit Fordítók, grafikus szövegszerkesztők, syntax highlighting stb Javasolt fejlesztőeszközök: NetBeans Eclipse Egyéb 1.lépés Szoftverek letöltése A JAVA TELEPÍTÉSE 2.lépés JDK telepítése (ez a JRE-t is telepíti) 3.lépés IDE telepítése: Eclipse, NetBeans, stb (A NetBeans + JDK egyben is letölthető, telepíthető) OTTHONI GÉPEN Figyelni kell a környezeti változók beállításaira: PATH JDK bin könyvtára CLASSPATH az a könyvtár, ahol dolgozunk (. az aktuális könyvtár) (Ez csak a fapados változatnál érdekes, a fejlesztőkörnyezetek helyes telepítés esetén tudják kezelni a környezeti változókat.) 3

ELSŐ JAVA PROGRAM FORDÍTÁS ÉS FUTTATÁS Fordítás: javac Hajra.java Hajra.class (bájtkód) Futtatás: java Hajra (a bájtkódot futtatjuk) Fájlnév: Hajra.java FÁJLNÉV = OSZTÁLYNÉV!!! Integrált fejlesztőkörnyezetben ezek egy gombnyomással elintézhetők ELSŐ (PRIMITÍV) PROGRAMJAINK VÁZLATA TÍPUSOK, VÁLTOZÓK, DEKLARÁLÁSOK Erősen típusos nyelv: Deklarálni kell a változókat a használat előtt Típusok int, float, char, double, boolean egyszerű és String típus (fontos a nagy S ) referencia Ez még nem objektumorientált gondolkozás, hiszen egyetlen osztály alkotja a teljes programot. Az utasítások csak metóduson belül lehetnek egyszerűbb feladatoknál csak a main metódus létezik, ezen belül vannak az utasítások. Az osztályon belül több metódus is lehet. Egyszerű típus: azonosítójával közvetlenül hivatkozunk a változó memóriahelyére. Ezt a helyet a rendszer a deklaráló utasítás végrehajtásakor foglalja le. Referencia típus: A referencia típusú változók objektumokra mutatnak. Egy referencia típusú változó azonosítójával közvetve hivatkozunk az objektum memóriahelyére. (Maga a hivatkozás rejtve marad.) Deklaráláskor csak a referencia részére foglalunk tárterületet, maga az objektum a példányosítás során jön létre. 4

A SZOKÁSOS KIFEJEZÉSEK, MŰVELETEK PROGRAMSZERVEZŐ UTASÍTÁSOK Pontosan úgy, mint C-ben Aritmetikai kifejezések (+, -, *, /, %) Szelekciók (if else, switch case ) Inkrementálás, dekrementálás (prefix és postfix alakok egyaránt) Összehasonlító operátorok (==, <, >,!= stb) Iterációk Elöltesztelő ciklus (while) Hátultesztelő ciklus (do while) Növekményes ciklus (for) Logikai operátotok (ÉS: && VAGY: NEM:!) Stb Egyebek break, continue Utasítás végén pontosvessző! Javaban nem használatos kifejezés: eljárás függvény helyette METÓDUS Metódusok általános alakja: METÓDUSOK visszatérési_érték metódusnév (paraméterlista) { } // törzs PARAMÉTEREK HASZNÁLATA A main metódus String tömbje args[] A konzolról Stringeket vesz át!!! args[0] első paraméter args[n] n. paraméter Például: java ElsoProgram egy 2 3.7 args[0]=egy ; args[1]=2 ; args[2]=3.7 5

FONTOS!!! Fájl neve == Osztály neve A fájl nevének pontosan meg kell egyeznie a főosztály (publikus osztály) nevével!!! (case sensitive módon!!) Még egy: mit jelent a main metódus fejében a static kulcsszó? public static void main PROGRAMOZÁSI ALAPOK Programírással kapcsolatos néhány alapfogalom: Memóriakezelés A változóhoz a memóriaterület hozzárendelése (allokálás-a) automatikus, a definíció kiértékelésekor a programozó rendelkezik róla a változó által lefoglalt terület felszabadítása automatikus, a programozó hatáskörébe tartozik. Élettartam A változókhoz a szükséges memóriaterület lefoglalása (allokálása) és annak felszabadítása közötti időt a változó élettartamának nevezzük. PROGRAMOZÁSI ALAPOK ÚJABB PÉLDA statikus változó: élettartama a program egész működése idejére kiterjed mindig az ún. statikus (main) memória-területen helyezkedik el a statikus terület egyszer, a program betöltésekor kerül lefoglalásra dinamikus változó: a program explicit módon foglal le területet, a dinamikus (heap) memória-területen, amire a címével, ún. pointerrel lehet hivatkozni. egyes nyelvek tartalmaznak utasítást a dinamikus területek felszabadítására is. Mi hiányzik? 6

BEOLVASÁS BILLENTYŰZETRŐL BEOLVASÁS BILLENTYŰZETRŐL Biztonságos, de kicsit bonyolult Bufferelt beolvasás kötelező kivételkezeléssel Egyszerű, de kevésbé biztonságos Scanner osztály, nem kötelező a kivételkezelés Bufferelt beolvasáshoz egyelőre egy előre elkészített osztályt használhatunk (de nem kötelező ) INPUT osztály Az Input.java és az Input.class megtalálható a witchen, de lehet, hogy újra kell fordítani. Az Input.class bájtkód mindig elérhető legyen, ha használni akarjuk!! (Jelenleg: legyen közös könyvtárban a programfájllal.) INPUT OSZTÁLY SCANNER OSZTÁLY Metódusok: Input.readln() String beolvasása Input.readInt() integer beolvasása Input.readFloat() float beolvasása Input.readTipus() tipus beolvasása (de ellenőrizze a fájlban, hogy milyen típusok vannak nincs minden ) Használata: Példányosítani kell: Scanner scan = new Scanner(System.in); Ehhez importálni kell a java.util.scanner osztályt: import java.util.scanner; (automatikusan generálható) A scan példány metódusai segítségével olvashatunk. 7

SCANNER OSZTÁLY A PÉLDA JAVÍTOTT VÁLTOZATA (1) Metódusok: scan.next() (vagy nextline()) String beolvasása scan.nextint() integer beolvasása scan.nextfloat() float beolvasása stb. A PÉLDA JAVÍTOTT VÁLTOZATA (1) A PÉLDA JAVÍTOTT VÁLTOZATA (2) (ez a jobb) Ehhez be kell másolni a java fájl mellé az Input.java fájlt, és figyelni rá, hogy a fájl elején ugyanaz a package deklaráció legyen, mint ami a java fájl elején: package elnevezes; 8

A PÉLDA JAVÍTOTT VÁLTOZATA (2) APROPÓ: REKURZIÓVAL IS MEGOLDHATÓ Ehhez nem kell bemásolni semmit, a JDK saját osztályait használja, de importálni kell: import java.util.scanner; Igazi referencia típusok Indexelés 0-tól TÖMBÖK Szintaktika: Deklarálás: int n = 10; int tomb[ ]=new int[n]; Hivatkozás: elem=tomb[i]; Nincs kétdimenziós tömb, csak tömbök tömbje. Pl.: MÁTRIXOK int sor = 3; int oszlop = 5; float matrix [ ][ ]=new float[sor][oszlop]; (utolsó elem: matrix[2][4] ) Hossz: tomb.length; (A deklarált méretet jelenti, nem a feltöltött elemek számát! A tömb létrehozásától (deklarálásától) kezdve állandó.) 9

NÉHÁNY EGYSZERŰ METÓDUS A Math osztály sok gyakran használatos metódust tartalmaz. Például: Négyzetgyök művelet Math.sqrt( ) Használata: int szam; int gyoke = Math.sqrt(szam); Véletlenszám generátor A Math osztály random() metódusa egy 0 és 1 közé eső double értéket ad (0 veletlenszam < 1) Használata: veletlenszam = Math.random(); Véletlenszám generátor MEGJEGYZÉS az (alsó,felső) intervallumba eső véletlen egész szám: (int)((felső-alsó)*math.random()) + alsó + 1; az [alsó, felső] intervallumba eső: (int)((felső+1-alsó)*math.random()) + alsó; DE pl. a (0,10) intervallumba eső véletlen szám NEM (10-0)*Math.random() + 0 + 1 HANEM 10*Math.random() + 1!!! NÉHÁNY EGYSZERŰ METÓDUS: KONVERZIÓK String integer konverzió Integer (csomagoló) osztály parseint metódusa pl.: String szam= 5 ; int ertek=integer.parseint(szam); Egyéb konverziók, pl.: String szam = 5 ; float fertek = Float.parseFloat(szam); double dertek = Double.parseDouble(szam); String vissza = Double.toString(dertek); float d_to_f = (float) dertek; MEGJEGYZÉS Mindegyik típus esetén létezik egy valueof metódus is: String szam = 5 ; int iertek = Integer.valueOf(szam); float fertek = Float. valueof(szam); double dertek = Double. valueof(szam); String visszad = String.valueOf(dertek); String visszai = String.valueOf(iertek); A két módszer között van elvi eltérés, de gyakorlatilag egyformán használhatóak. 10

FORMÁZOTT KIIRATÁS System.out.printf( ) pl.: System.out.printf("%d faktoriálisa: %15.0f", szam, fakt(szam)); HELP! FONTOS!!! http://download.oracle.com/javase/7/docs/api/ vagy http://download.oracle.com/javase/8/docs/api/ vagy: Printf.java (ld. witch) vagy: google További részletek: HELP HÁZI FELADAT Fejlesző környezet létrehozása az otthoni gépen C nyelv átismétlése TUDNIVALÓK Bár a Java dokumentáció szerint a Java egyik tulajdonsága az egyszerűsége, mégis ez egy nehéz nyelv! Folyamatos otthoni munka nélkül nem lehet megtanulni! Beadandó: ld. a witch-en 11

TUDNIVALÓK A folyamatos otthoni munka hatása: 12