Programozás III JAVA ALAPOK.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Programozási nyelvek II.
Programozás III KOLLEKCIÓK 2..
Adminisztratív kérdések
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Objective-C Készítette: Zsivics Sanel NL5LWN. Tartalom bevezető történeti háttér rangsor elterjedtsége / népszerűsége alapok felépítése (.h,.m, xcode,
Adatbányászati technikák (VISZM185)
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 2. rész – Vezérlő szerkezetek
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Csomagok.
Programozási technológia 1
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Vizuális és web programozás II.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Programozási technológiák
Programozási nyelvek II. Objektumorientált programozás a Java nyelv eszközeivel 2007/08.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás Az adatokról C# -ban.
Összetett adattípusok
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
III. Java környezet 9. A Java nyelvről 10. Java programfejlesztés, JDK.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Komoróczy Tamás 1 Java programozási nyelv Stringek.
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
Objektum orientált programozás
Programozás III KIVÉTEL – CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban.
Programozás III OOP ALAPOK.
A Visual Basic nyelvi elemei
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Excel programozás (makró)
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Utasítás és blokk. Elágazás típusai, alkalmazása Kovács.
Programozási alapismeretek
Programozási nyelvek típusossága.
Excel programozás (makró)
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás másolata:

Programozás III JAVA ALAPOK

A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás

A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség

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.

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/ http://shootout.alioth.debian.org/ http://stackoverflow.com/questions/1049004/java-vs-c-are-there-any- studies-that-compare-their-execution-speed Google

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.

JAVA PLATFORMOK Ezt tanuljuk

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

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.7, 25-ös 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: JCreator Egyszerűbb alkalmazásokhoz NetBeans Összetettebb alkalmazások, nagy gépigény Eclipse Szintén összetettebb alkalmazások Egyéb…

A JAVA TELEPÍTÉSE 1.lépés Szoftverek letöltése 2.lépés JDK telepítése (ez a JRE-t is telepíti) 3.lépés IDE telepítése: JCreator, 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.)

ELSŐ JAVA PROGRAM Fájlnév: Hajra.java FÁJLNÉV = OSZTÁLYNÉV!!!

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) Integrált fejlesztőkörnyezetben ezek egy gombnyomással elintézhetők 

ELSŐ (PRIMITÍV) PROGRAMJAINK VÁZLATA 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.

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 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.

KIFEJEZÉSEK, MŰVELETEK A SZOKÁSOS  Aritmetikai kifejezések (+, -, *, /, %) Inkrementálás, dekrementálás (prefix és postfix alakok egyaránt) Összehasonlító operátorok (==, <, >, !=…stb) Logikai operátotok (ÉS: && VAGY: || NEM: !) Stb…

PROGRAMSZERVEZŐ UTASÍTÁSOK Pontosan úgy, mint C-ben Szelekciók (if…else, switch…case…) Iterációk Elöltesztelő ciklus (while) Hátultesztelő ciklus (do…while) Növekményes ciklus (for) Egyebek break, continue Utasítás végén pontosvessző!

METÓDUSOK Javaban nem használatos kifejezés: eljárás függvény helyette METÓDUS Metódusok általános alakja: 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

Fájl neve == Osztály neve 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

Programírással kapcsolatos néhány alapfogalom: 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.

– élettartama a program egész működése idejére kiterjed PROGRAMOZÁSI ALAPOK • 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. pointer- rel lehet hivatkozni. – egyes nyelvek tartalmaznak utasítást a dinamikus területek felszabadítására is.

ÚJABB PÉLDA Mi hiányzik?

BEOLVASÁS BILLENTYŰZETRŐL Biztonságos, de kicsit bonyolult Egyszerű, de kevésbé biztonságos Bufferelt beolvasás kötelező kivételkezeléssel Scanner osztály, nem kötelező a kivételkezelés

BEOLVASÁS BILLENTYŰZETRŐL Bufferelt beolvasáshoz egyelőre egy előre elkészített osztályt használunk INPUT osztály Az Input.java és az Input.class megtalálható a witch-en, 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 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 )

SCANNER OSZTÁLY 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.

SCANNER OSZTÁLY 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 (1) 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;

A PÉLDA JAVÍTOTT VÁLTOZATA (2)

A PÉLDA JAVÍTOTT VÁLTOZATA (2) Ehhez nem kell bemásolni semmit, a JDK saját osztályait használja, de importálni kell: import java.util.Scanner;

APROPÓ: REKURZIÓVAL IS MEGOLDHATÓ 

TÖMBÖK Igazi referencia típusok Indexelés 0-tól Szintaktika: Deklarálás: int n = 10; int tomb[ ]=new int[n]; Hivatkozás: elem=tomb[i]; 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ó.)

MÁTRIXOK Nincs kétdimenziós tömb, csak tömbök tömbje. Pl.: int sor = 3; int oszlop = 5; float matrix [ ][ ]=new float[sor][oszlop]; (utolsó elem: matrix[2][4] )

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 Használata: veletlenszam = Math.random();

MEGJEGYZÉS Véletlenszám generátor 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.

FORMÁZOTT KIIRATÁS System.out.printf(…) pl.: System.out.printf("%d faktoriálisa: %15.0f", szam, fakt(szam)); vagy: Printf.java (ld. witch) További részletek: HELP

FONTOS!!! HELP! http://download.oracle.com/javase/7/docs/api/ vagy: google 

HÁZI FELADAT Fejlesző környezet létrehozása az otthoni gépen C nyelv átismétlése Beadandó: ld. a witch-en

Folyamatos otthoni munka nélkül nem lehet megtanulni! 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!

TUDNIVALÓK A folyamatos otthoni munka hatása: