Algoritmusok. Matematika BSc, 2. félév. Dr. Szikszai Márton

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Algoritmusok. Matematika BSc, 2. félév. Dr. Szikszai Márton"

Átírás

1 Algoritmusok Matematika BSc, 2. félév Dr. Szikszai Márton Debreceni Egyetem Természettudományi és Technológiai Kar Matematika Intézet Algebra és Számelmélet Tanszék Debreceni Egyetem 2018/19/II. félév

2 Kurzus információk Oktató elérhetőségei fogadóóra: péntek 9:00-11:00 ( ben egyeztetni) Oktatási segédanyagok oktató honlapja (diasor, mintakódok, stb...) ajánlott irodalom Allen B. Downey, Chris Mayfield, Think Java: How to Think like a Computer Scientist, Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser, Data Structures and Algorithms in Java, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Introduction to Algorithms, Java, IntelliJ IDEA, Codingground vagy Trinket (órai használat) Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 2 / 100

3 Kurzus információk Órai munka a gyakorlaton való részvétel kötelező (maximálisan 3 hiányzás) a példaprogramok és példafeladatok otthoni megírása elvárt a csoportos feladatmegoldásba bekapcsolódás ajánlott az előadáson való részvétel nem kötelező, de a gyakorlat megértését nagyban segíti Számonkérés Értékelés félévközi írásbeli tesztek (5 darab, egyenként maximálisan 4 pont) félév végi írásbeli dolgozat (maximálisan 20 pont) összpontszám = tesztek + dolgozat érdemjegy: 0-19 elégtelen (1); elégséges (2); közepes (3); jó (4); jeles (5). Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 3 / 100

4 Témakörök 1 Bevezető 2 Változók és kifejezések 3 Feltételes végrehajtás 4 Ciklikus végrehajtás 5 Metódusok 6 Primitív adatszerkezetek 7 Objektum-orientált programozás 8 Algoritmusok analízise 9 Algoritmusok tervezése 10 Rekurziók 11 Rendezési algoritmusok

5 1 Bevezető Miért algoritmusok és adatszerkezetek? Objektum-orientált programozás Java progamozási nyelv Első program Kommentelés és dokumentáció Megjegyzések

6 Miért algoritmusok és adatszerkezetek? Algoritmus - informális definíció Egy probléma- vagy problémaosztály megoldására adott, egyértelműen definiált számítási lépések véges sorozata. Absztrakt adattípus - informális definíció Adatok tárolásának, rendszerezésének és manipulációjának matematikai modellje. Adatszerkezet - informális definíció Egy absztrakt adattípus fizikai megvalósítása. Az algoritmusok és adatszerkezetek elsajátításának előnyei magas szintű absztrakciót igénylő, nem intuitív problémamegoldás platform- és nyelvfüggetlen problémamegoldási minták idő- és memóriahatékony számítások Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 6 / 100

7 Objektum-orientált programozás Az objektum-orientált programozás (OOP) központi szereplői az objektumok. Minden objektum egy osztály esete. Az osztály sablonként szolgál, definiálja az objektum által tárolt osztályszintű adatokat és metódusokat ezek elérésére és módosítására. Ezen túlmenően minden objektumnak lehetnek példányszintű adatai és metódusai. Az OOP tervezése során megkövetelt célok robosztusság hordozhatóság újrahasznosíthatóság Az OOP megvalósítása során követett elvek absztrakció egységbezárás modularitás Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 7 / 100

8 Java progamozási nyelv Az algoritmusok és adatstruktúrák az OO paradigmát támogató magas szintű programozási nyelvek alapvető eszközei. A Java nyelv eredendően objektum-orientált osztály-alapú szintaxist használ magas szintű További jellemzői hibrid értelmezésű (fordítással generált bájtkód interpretációja) automatikus memóriakezelés A kurzus során a Java alapszintű elsajátítása szükséges. A tárgyalás bevezető szintű a nyelvi elemeket a kurzushoz elégséges szinten vezeti be lehetőség szerint kapcsolódik a párhuzamosan hallgatott Programnyelvek kurzushoz Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 8 / 100

9 Java progamozási nyelv A Java program egy azonos elnevezésű osztály, amely minden más kódot tartalmaz. class <fájlnév> { <programkód> A Java osztályai jellemzően nem önálló programok. A futás során végrehajtásra kerülő utasítások egy speciális main metódus törzsében állnak. public static void main(string[] args) { <törzs> A String[] argumentum a felhasználói inputok sorozata (parancssor argumentum). Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 9 / 100

10 Java progamozási nyelv A public, void szavak módosítók. Módosítókat helyezhetünk változók, metódusok és osztályok elé is. Hozzáférés módosítók public: tetszőleges osztály hozzáférhet protected: az osztály alosztályai és az őt tartalmazó csomag osztályai férhetnek hozzá private: kizárólag az osztályon belül engedélyezett hozzáférés További módosítók static: osztályszintű értékek és metódusok abstract: implementáció nélküli, de hozzáférhető final: változók értékének zárolása, osztály felülírásának és öröklésének blokkolása A kurzus során szinte kivétel nélkül public és static módosítókat használunk. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 10 / 100

11 Első program A System.out osztály print és println metódusa a standard output stream felületen (kimenetfolyam) jeleníti meg az argumentumot. class PrintDemo { public static void main(string[] args) { System.out.print("My first Java program!"); class PrintDemo { public static void main(string[] args) { System.out.println("My second Java program!"); System.out.println("My second line!"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 11 / 100

12 Kommentelés és dokumentáció Programok írása során megjegyzéseket fűzhetünk a kódhoz komment formájában. A komment // jelet követően, azzal egy sorban áll. //This is an inline comment. A komment nem kerül végrehajtásra a tárgykód futtatása során. Ha többsoros megjegyzést akarunk írni (blokkoment), akkor / elválasztók közé, minden sort * jellel kezdve van lehetőség. /* *This is a block comment. */ A blokkoment speciálisan /** módon is kezdődhet. Az így írt kommentekből a JavaDoc alkalmazás automatikus dokumentációt képes előállítani. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 12 / 100

13 Megjegyzések Az OOP során számos további cél és elv megfogalmazható. A Java neve eredetileg Oak volt. A Java számos eleme korábbi nyelvek problémáinak kiküszöbölését célozza, azok ismerete nélkül nem tűnik indokoltnak. A main metódust a java.exe nevű indító olvassa be. Lehetséges egyedi indító implementálása, ahol a main metódus más nevet kap. Java kód írása során a bekezdések, sorközök és egyéb stilisztikai eszközök használata nem kötelező, de ajánlott. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 13 / 100

14 2 Változók és kifejezések Literálok és konstansok Aritmetikai operátorok Típuskonverzió Változók Kifejezések Csomagoló osztályok Megjegyzések

15 Literálok és konstansok A literál a nyelv önálló jelentéssel bíró értéke. egész szám: 2 lebegőpontos szám: 3.14, logikai érték: true, false A Java a következő primitív adattípusokat kínálja. üres: null logikai: boolean karakter: char egész szám: byte, short, int, long lebegőpontos szám: float, double Az egész, illetve lebegőpontos számok esetén az int és a double az alapértelmezett. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 15 / 100

16 Aritmetikai operátorok Alapműveletek összeadás: + kivonás: - szorzás: * osztás: / További aritmetikai operátorok modulus: % Zárójelezés van, a műveleti sorrend standard (PEMDAS). A Java az osztás operátort maradékos osztásként értelmezi egész értékű operandusokon. Az aritmetikai operátorok értelmezettek különböző numerikus típusok között. Az eredmény típusa minden esetben a bővebb osztály. System.out.print( * 6 / 7 % 4); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 16 / 100

17 Típuskonverzió A Java statikus és erős típusrendszert használ a típus fordítási időben kerül deklarálásra az utasítások típus-dependensek (általában) Bizonyos esetekben lehetséges típuskonverzió. A típuskonverzió implicit, ha a típusváltozás automatikus. int x = 2; double y = x; System.out.print(y); A típuskonverzió explicit, ha a típusváltást újradeklarálással végezzük int x = 2; System.out.print((double) x); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 17 / 100

18 Változók A változó értékre való hivatkozás. A változó típusát deklarálni kell, érték a hozzárendelés utasítással adható meg. <típus> <változónév> = <érték> A deklarált típus meg kell egyezzen az érték típusával. int x = 2; Változót lehetséges érték megadása (inicializálás) nélkül is deklarálni. int x; A változónév Unicode karaktereket tartalmaz, betűvel (kis- és nagybetű megkülönböztetett), $, _ jellel kezdődik (utóbbiak kerülendők) nem lehet kulcsszó Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 18 / 100

19 Változók Java kulcsszavak abstract assert booelan break byte case catch char class const continue default do double else enum extends false final finally float for goto if implements import isinstanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 19 / 100

20 Kifejezések A kifejezés literálok, változók és operátorok kompozíciója. int x = 3; int y = 4; System.out.print(x + 2 * y - 1); A literál és a változó önmagában is kifejezés, melyet atomnak mondunk. Atomnak tekinthető minden zárójeles kifejezés is. Kifejezések és utasítások között elvi különbséget teszünk. Előbbiek értékeket reprezentálnak, utóbbiak értékekkel hajtanak végre cselekvéseket. int x = 2; System.out.print(x); Itt a hozzárendelés (=) és a print utasítás, de valójában x is felfogható kifejezés utasításként is. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 20 / 100

21 Csomagoló osztályok A Java adatszerkezetei és metódusai többnyire objektumokkal manipulálnak, nem értelmezettek a primitív adattípusok esetén. Minden primitív adattípus rendelkezik csomagoló osztállyal, amelynek eseti változójaként objektumként kezelhető. Boolean Character Byte, Short, Integer, Long Float, Double int x = new Integer(0); System.out.print(x); A new utasítás létrehozza az osztály új eseti változóját. Az Integer argumentuma az inicializált érték. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 21 / 100

22 Megjegyzések A Java kizárólag a felsorolt primitív adattípusokat kínálja. Minden további adattípus vagy adatszerkezet ezekből képzett. A byte, short, int és long típusok rendre 8, 16, 32, illetve 64 biten kerülnek tárolásra. A float és double típusok 32 és 64 biten kerülnek tárolásra. Egész számokat lehet float vagy double típusként deklarálni, de kerülendő (kerekítés). A Java nem támogatja a szimultán hozzárendelést. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 22 / 100

23 3 Feltételes végrehajtás Logikai értékű operátorok Feltételes végrehajtás Alternatív végrehajtás Láncolt feltételek Egymásba ágyazott feltételek Esetváltás Kivételkezelés Megjegyzések

24 Logikai értékű operátorok Logikai operátorok és: && vagy: tagadás:! Reláció (összehasonlító) operátorok kisebb: < nagyobb: > egyenlő: == nem egyenlő:!= kisebb vagy egyenlő: <= nagyobb vagy egyenlő: >= A reláció operátorokat teljes biztonsággal csak primitív típusok esetén lehet alkalmazni. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 24 / 100

25 Feltételes végrehajtás Az if (összetett) utasítás a törzsében lévő kód végrehajtását adott feltétel teljesülésétől teszi függővé. if (<feltétel>) <törzs> A törzs kiértékelésre kerül, ha a fejlécben szereplő feltétel logikai értéke igaz. if (1 < 2) { System.out.print("OK"); A Java feltételes szerkezeteiben a { elválasztók használata opcionális. if (1 < 2) System.out.print("OK"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 25 / 100

26 Alternatív végrehajtás Az if-else utasítás fejlécében szereplő feltétel hamis logikai értéke esetén a kiértékelés az else ág törzsében történik. if (<feltétel>) <törzs1> else <törzs2> Ha a feltétel értéke igaz, az else ág nem kerül végrehajtásra. if (2 < 1) { System.out.print("OK"); else { System.out.print("KO"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 26 / 100

27 Láncolt feltételek Az if-else if utasítás során több, egymást nem szükségképpen kizáró, feltételtől tehető függővé a végrehajtás. if (<feltétel1>) <törzs1> else if (<feltétel2>) <törzs2> A kiértékelés sorfolytonos, az első igaz feltétel ágában történik. if (2 < 1) { System.out.print("OK"); else if (1 < 2) { System.out.print("KO"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 27 / 100

28 Láncolt feltételek Az if-else if utasításban tetszőleges számú feltétel megjelenhet. A láncolt feltételes szerkezet kombinálható az alternatív végrehajtással is, az else ág a legutolsó. if (1 == 3) { System.out.print("branch1"); else if (2 == 3) { System.out.print("branch2"); else { System.out.print("branch3"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 28 / 100

29 Egymásba ágyazott feltételek A feltételes szerkezetek egymásba is ágyazhatók. if (1 < 2) { System.out.print("if"); if (2 < 3) { System.out.print("ifnested"); Az egymásba ágyazott feltételes szerkezetek kerülendők. if (1 < 2 && 2 < 3) { System.out.print("OK"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 29 / 100

30 Esetváltás A switch utasítás egy kifejezés értékétől függően hajtja végre egy ágát. switch (<kifejezés>) case <érték1>: <törzs1> break;. int semester = 2; switch (semester) { case 1: System.out.println("First semester"); break; case 2: System.out.println("Second semester"); break; Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 30 / 100

31 Kivételkezelés A try-catch utasítás lehetővé teszi, hogy a kód végrehajtását megtörő nem szintaktikai hibákat futási időben kiszűrjük. try <törzs1> catch (Exception <kivételnév>) <törzs2> try { String[] inp = {; System.out.print(inp[10]); catch (Exception myexpection) { System.out.print("error"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 31 / 100

32 Megjegyzések A Java csak a boolean típusnak tulajdonít logikai értéket. A Java nem támogatja a láncolt összehasonlítást. A Java alkalmazza a rövidzárlatos kiértékelést. Egy egymásba ágyazott feltételes szerkezet mindig átírható láncolt feltételes szerkezetté. A Java fordító az esetválasztó szerkezetből 18 eset alatt láncolt feltételes szerkezetet generál bájtkódként. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 32 / 100

33 4 Ciklikus végrehajtás Határozott lépésszámú ciklus Határozatlan lépésszámú ciklus Poszt-teszt ciklus Ciklusvezérlők Megjegyzések

34 Határozott lépésszámú ciklus A for utasítás a fejlécében definiált ciklusváltozó értéktartományának minden elemére végrehajtja a törzsében szereplő kódot. for (<inicializáció>;<feltétel>;<növekmény>) <törzs> for (int i = 1; i < 10; i++) { System.out.println(i); A Java alkalmazza a prefix és postfix inkrementálás (++) és dekrementálás (--) operátorokat. int i = 5; System.out.println(++i); System.out.print(i++); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 34 / 100

35 Határozott lépésszámú ciklus A ciklusban definiált változók lokálisak. for (int i = 1; i < 10; i++) { int x = i; System.out.print(x); Későbbi felhasználás esetén még a ciklus előtt deklarálni kell. int x = 0; for (int i = 1; i < 10; i++) { x = i; System.out.print(x); A ciklusváltozó mindig lokális. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 35 / 100

36 Határozatlan lépésszámú ciklus A while utasítás végrehajtja a törzsben szereplő kódot mindaddig, amíg a fejlécben szereplő feltétel logikai értéke igaz. while (<feltétel>) <törzs> int i = 5; while (i > 0) { System.out.println(i); i--; Ha a feltétel mindig igaz, akkor a törzs folytonos iterálásra kerül, végtelen ciklust eredményezve. A feltétel teljesülését a ciklus előtt deklarált változóval kontrollálhatjuk. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 36 / 100

37 Poszt-teszt ciklus Amennyiben legalább egy végrehajtást megkövetelünk, úgy a feltétel tesztelését a fejlécből a törzs után mozgathatjuk. A do-while utasítás ezt a poszttesztelést valósítja meg. do <törzs> while (<feltétel>) int i = 1; do { System.out.println(i); i++; while (i < 5); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 37 / 100

38 Ciklusvezérlők A ciklusok végrehajtása megállítható a break utasítás használatával. while (true) { System.out.print("That s enough!"); break; Egy adott iteráció végrehajtása megállítható a continue utasítás használatával. for (int i = 1; i < 5; i++) { if (i == 3) { continue; System.out.println(i); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 38 / 100

39 Megjegyzések A Java speciális határozott lépésszámú ciklust kínál tároló adatszerkezetek bejárására. A for ciklus a ciklusváltozót inkrementáló és dekrementáló while ciklus, jellemzően fordított sorrendben kerülnek bevezetésre. A posztteszt ciklust számos programozási nyelv támogatja. A continue utasítás poszttesztelés esetén a feltétel ellenőrzésére ugrik. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 39 / 100

40 5 Metódusok Függvény vagy metódus? Importálás Felhasználói input Metódusok definiálása Megjegyzések

41 Függvény vagy metódus? A függvény utasítások előre definiált sorozata, mely a függvény hívása során végrehajtásra kerül a megadott argumentumok felhasználásával. A metódus olyan függvény, amely egy adott osztály objektumaira hívható. A Java kizárólag metódust értelmez, általános függvényfogalmat nem. A Java számos beépített metódust tartalmaz. numerikus: constructor, toexponential, toprecision,... logikai: tosource, tostring, valueof,... string: replace, search, split,... tömb: pop, push, reserve,... dátum: Date, getday, todatestring,... matematikai: abs, cos, log,... A fenti lista nem kimerítő. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 41 / 100

42 Importálás További metódusok érhetők el az azokat tartalmazó osztályok importálásával. Azonos típusú osztályok általában egy csomag részei. import <osztálynév> Az import utasítás mindig az osztálydefiníció előtt helyezkedik el. import java.util.scanner; class.... Itt a java egy csomag, a java.util ennek egy alcsomagja, a Scanner pedig a java.util egy osztálya. További hasznos csomagok: java.lang, java.io, java.awt, java.swing, java.net, java.applet, etc... Hasznos osztályok: java.lang.math, java.util.scanner, java.util.arrays. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 42 / 100

43 Itt az input objektumon alkalmazva a nextint metódust, a következő felhasználói bemenetet int típusként értelmezve (ha lehetséges), az hozzárendelésre kerül a number változóhoz. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 43 / 100 Felhasználói input A System.in osztály használatával elérhető a standard input stream. Ennek olvasását a java.util csomag Scanner osztálya teszi lehetővé. import java.util.scanner; class InputDemo { public static void main(string[] args) { Scanner input = new Scanner(System.in); System.out.print("Write your favorite number"); int number = input.nextint(); System.out.print(number);

44 Metódusok definiálása Metódus definiálása a main metódus mintájára, egy szinten történik. <módosítók> <érték> <metódusév>(<paraméterek>) { <törzs> Az érték void amennyiben a metódusnak nincs visszatérési értéke. public static void myprint() { System.out.println("myPrint works") Egyéb esetben az érték típusa, melyet a return utasítás előz meg. public static int mynumber() { return 2; Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 44 / 100

45 Metódusok definiálása A paraméterek a metódus argumentumait hivatkozó lokális változók. A metódus hívását követően a hozzárendelés automatikus. A paraméter típusát deklarálni kell a metódus definiálása során. public static int mynumber(int favorite) { return favorite; Tetszőleges számú paraméter megadható. public static int myadd(int a, int b) { return a + b; Különböző típusú paraméterek megadása lehetséges. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 45 / 100

46 Megjegyzések A visszatérési értékkel rendelkező metódusokat produktívnak mondjuk. Metódusok definiálása során a törzs mindenképpen { jelek között áll. A Java támogatja a metódus túltöltést (overloading), amennyiben a paraméterek megkülönböztetik az egyébként egyező elnevezésű metódusokat. A Java nem használ kulcsszó argumentumokat, amelyek már a függvény hívása előtt hozzárendelésre kerülnek a paraméterekhez. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 46 / 100

47 6 Primitív adatszerkezetek Tartalmazó típusok Tömbök Stringek Megjegyzések

48 Tartalmazó típusok A tartalmazó típus értékek egy kollekciója. Minimális modelljét alábbi tulajdonságai írják le. tárolás: elemek hozzáadása és törlése hozzáférés: elemek elérése bejárás: elemeken való iteráció Általában elvárás, hogy a következő függvények rendelkezésre álljanak. konstruktor: üres tároló létrehozása hozzáadás: egy vagy több elem hozzáadása törlés: egy vagy több elem törlése tartalmazás: tagság ellenőrzése rákövetkezés: iteráció lehetővé tétele hossz: elemek száma Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 48 / 100

49 Tartalmazó típusok A Java tartalmazó típusok bejárására értelmez egy speciális for ciklust. for (<változó>:<tartalmazó>) törzs Az alkalmazás feltétele, hogy a típus iterálható legyen. int[] container = {1,2,3,4,5; for (int i : container) { System.out.println(i); A ciklusváltozó típusát minden esetben deklarálni kell és egyeznie kell a tároló típusban található elemek típusával. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 49 / 100

50 Tömbök A tömb azonos típusú értékek egy sorozata. Deklarálása a típust követő [] jelekkel történik. <típus>[] <név>; Értékeket a new utasítással inicializálhatunk. int[] myarray = new int[3]; Itt a tömb elemei mind 0 értéket vesznek fel, csak a hossz kerül egyértelműsítésre. A tömb megadható elemeivel is { jelek között,,-vel elválasztva. int[] myarray = {1,2,3; Egy tömb tetszőleges, nem feltétlen primitív, típus esetén értelmezett. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 50 / 100

51 Tömbök A tömb megjelenítése nem lehetséges közvetlenül. int[] myarray = {1,2,3; System.out.print(myArray); A java.util.arrays osztály tostring metódusa a kívánt eredményt adja. import java.util.arrays;. int[] myarray = {1,2,3; System.out.print(Arrays.toString(myArray)); Itt a megjelenítés [] határolókkal történik, nem { jelekkel. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 51 / 100

52 Tömbök A tömb elemeihez indexeik segítségével férhetünk. A Java null-indexelt. int[] myarray = {1,2,3; System.out.print(myArray[1]); A tömb mutábilis, elemeit újradefiniálhatjuk. int[] myarray = {1,2,3; myarray[0] = 0; System.out.print(myArray[0]); A tömb hosszát annak length attribútumával kérhetjük le. int[] myarray = {1,2,3; System.out.print(myArray.length); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 52 / 100

53 Tömbök Egy tömb bejárható mindkét for és a while ciklus használatával is. int[] data = {1,2,3; for (int i = 0; i < data.length; i++) { System.out.println(data[i]); for (int item : data) { System.out.println(item); int i = 0; while (i < data.length) { System.out.println(data[i]); i++; Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 53 / 100

54 Stringek A string karakterek "" jelek közé írt elválasztók nélküli sorozata. Deklarálása a String kulcsszóval lehetséges. String <név> = "<karakterek>"; A string elemeit a charat metódussal érthetjük el, indexelése a tömbökével egyező. String word = "bird"; System.out.println(word.charAt(0)); A Java Unicode karakterkészletet használ, így nem-alfabetikus nyelvek szimbólumait is képes megjeleníteni. System.out.print((char) 915); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 54 / 100

55 Stringek Tetszőleges részstring lekérhető a substring metódus használatával. String word = "bird"; System.out.print(word.substring(1,2)); A string támogatja a konkatenáció műveletet + operátor formájában. System.out.print("first" + "second"); A string immutábilis, nem változtatható meg karakterei újradefiniálásával. Az immutábilis tulajdonság megkerülhető a substring és a + használatával. String word = "bird"; System.out.print(word.substring(0,2) + "th"); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 55 / 100

56 Stringek Egy string bejárható mindkét for és a while ciklus használatával is. String mystring = "bird"; for (int i = 0; i < word.length(); i++) { System.out.println(word.charAt(i)); A második típusú for közvetlenül nem alkalmazható. A string objektum tochararray metódusával karakterekből álló tömbbé konvertáljuk. String word = "bird"; for (char letter : word.tochararray()) { System.out.println(letter); Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 56 / 100

57 Megjegyzések A Java számos tároló típust kínál a java.util.collections osztály részeként. A Java közvetlenül nem értelmezi a { jelek közé írt,-vel elválasztott azonos típusú elemeket tömbként. A string nem karakterek egy tömbje. Az egy elemű string nem karakter, karakterek megadása során határolókat használunk. Dr. Szikszai Márton (DE-TTK MI) Algoritmusok 2018/19/II. félév 57 / 100

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

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

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

1. Egyszerű (primitív) típusok. 2. Referencia típusok II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget

Részletesebben

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

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Programozás I. Első ZH segédlet

Programozás I. Első ZH segédlet Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett

Részletesebben

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

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

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

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

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

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract

Részletesebben

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

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás

Részletesebben

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

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

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási

Részletesebben

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

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás

Részletesebben

Programozási nyelvek II.: JAVA, 4. gyakorlat

Programozási nyelvek II.: JAVA, 4. gyakorlat Programozási nyelvek II.: JAVA, 4. gyakorlat 2017. október 2-6. Programozási nyelvek II.: JAVA, 4. gyakorlat 1 / 32 A 4. gyakorlat tematikája Tömbök A java.util.arrays osztály A String osztály A StringBuffer

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

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

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,

Részletesebben

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva! A PL/SQL alapelemei Karakterkészlet Az angol ABC kis- és nagybetűi: a-z, A-Z Számjegyek: 0-9 Egyéb karakterek: ( ) + - * / < > =! ~ ^ ; :. ' @ %, " # $ & _ { }? [ ] Szóköz, tabulátor, kocsivissza A kis-

Részletesebben

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

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3) Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,

Részletesebben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

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

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség 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

Részletesebben

OOP: Java 1.Gy: Java alapok

OOP: Java 1.Gy: Java alapok OOP: Java 1.Gy: Java alapok Eclipse alapok O O P Objektum Orientált Programozás 31/1 B ITv: MAN 2019.02.25 Feladat Írja meg a 4 alapműveletet megvalósító Kalkulátor programot Java nyelven. Az elvégzendő

Részletesebben

Szoftvertervezés és -fejlesztés I.

Szoftvertervezés és -fejlesztés I. Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik.

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:

Részletesebben

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error Generics Egyszerűbb példák (java.util csomagból): public interface List { void add(e x); Iterator iterator(); public interface Iterator { E next(); boolean hasnext(); E - formális típusparaméter,

Részletesebben

GYAKORLATIAS JAVA MINTA

GYAKORLATIAS JAVA MINTA Java SE programozási alapok - alapelemek viszont a Javadoc-ban nem fog megjelenni. */ 4.2. Egyszerű és összetett típusok A programozás során az adatainkat (legyen az csak átmeneti is) ún. változókban tárolunk.

Részletesebben

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs

Részletesebben

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

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Java programozási nyelv

Java programozási nyelv Szoftvertechnológia sáv Java programozási nyelv Dirk Louis-Peter Müller: Java (Belépés az internet világába) Panem kiadó, Budapest, 2002. Webvilág sorozat Készítette: Gregorics Tibor Vázlatos áttekintés

Részletesebben

Apple Swift kurzus 3. gyakorlat

Apple Swift kurzus 3. gyakorlat Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()

Részletesebben

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

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char

Részletesebben

A Java nyelv. Bevezetés, alapok Elek Tibor

A Java nyelv. Bevezetés, alapok Elek Tibor A Java nyelv Bevezetés, alapok Elek Tibor A Java nyelv jellemzıi Interpreteres Forrás file fordítás Bytekódú file-ok (class fileok, nem gépikód, nem futtatható, egy új forrásnyelv) Interpreter: betölti,

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

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

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

Részletesebben

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

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

A C# PROGRAMOZÁSI NYELV

A C# PROGRAMOZÁSI NYELV A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

C# gyorstalpaló. Készítette: Major Péter

C# gyorstalpaló. Készítette: Major Péter C# gyorstalpaló Készítette: Major Péter Adattípusok Logikai változó Egész szám (*: előjel nélküli) Lebegőponto s szám Típus Típusnév másképpen (egyenértékű) Helyigény (bit) Példa bool Boolean 8 (!) true,

Részletesebben

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

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

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

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

Részletesebben

Magas szintű programozási nyelvek 2 Előadás jegyzet

Magas szintű programozási nyelvek 2 Előadás jegyzet Magas szintű programozási nyelvek 2 Előadás jegyzet 1. Rendszerfejlesztés 0. lépés: Elemzés (analízis) 1. lépés: Tervezés a, technológia független rész b, technológia függő rész 2. lépés: Megvalósítás

Részletesebben

A programozás alapjai

A programozás alapjai A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 6. gyakorlat 2017. október 16-20. 6. gyakorlat Programozási nyelvek II.: JAVA 1 / 1 Az 6. gyakorlat tematikája Túlterhelés - összefoglalás statikus adattagok és metódusok

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

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

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. Programozás III CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van a fejlesztő környezet és az osztálykönyvtárak is: rt.jar fájl

Részletesebben

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

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:

Részletesebben

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés) Java III. I I. Osztálydefiníció (Bevezetés) Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 02. 27. Java III.: Osztály definíció JAVA3 / 1 Szintaktikai jelölések A továbbiakban

Részletesebben

Imperatív és procedurális programozás a Javában

Imperatív és procedurális programozás a Javában Imperatív és procedurális programozás a Javában Kozsik Tamás kto@elte.hu http://kto.web.elte.hu/ Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék 2008. Kozsik Tamás (ELTE)

Részletesebben

Programozási nyelvek II.: JAVA, 4. gyakorlat

Programozási nyelvek II.: JAVA, 4. gyakorlat Programozási nyelvek II.: JAVA, 4. gyakorlat 2017. október 2-6. Programozási nyelvek II.: JAVA, 4. gyakorlat 1 / 29 A 4. gyakorlat tematikája Tömbök A java.util.arrays osztály A String osztály StringBuilder

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 6. gyakorlat 2017. október 16-20. 6. gyakorlat Programozási nyelvek II.: JAVA 1 / 24 Az 6. gyakorlat tematikája túlterhelés - összefoglalás statikus adattagok és metódusok

Részletesebben

OOP: Java 8.Gy: Gyakorlás

OOP: Java 8.Gy: Gyakorlás OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét

Részletesebben

3. Gyakorlat Ismerkedés a Java nyelvvel

3. Gyakorlat Ismerkedés a Java nyelvvel 3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az

Részletesebben

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 2. előadás Console I/O bővebben Lásd mintaprogram 2015.09.21. Számítástechnika I. 2. Előadás 2 Számábrázolásról

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István Operátorok Műveletek Egy (vagy több) műveleti jellel írhatók le A műveletet operandusaikkal végzik Operátorok fajtái operandusok száma szerint: egyoperandusú operátorok (pl.:

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Generikus osztályok Gyűjtemények Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Generikus osztályok Javaban az UML paraméteres osztályainak a generikus (sablon) osztályok felelnek

Részletesebben

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18 C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

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

Java programozási nyelv 6. rész Java a gyakorlatban Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék

Részletesebben

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

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

Generikus osztályok, gyűjtemények és algoritmusok

Generikus osztályok, gyűjtemények és algoritmusok Programozási, gyűjtemények és algoritmusok bejárása Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 bejárása 2 bejárása 2 Java-ban és UML-ben bejárása Az UML-beli paraméteres osztályok a Java

Részletesebben

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

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet Eötvös Loránd Tudományegyetem Informatikai Kar Programozási technológia I 1. gyakorlat A Java nyelvi alapjai, a NetBeans környezet 2012.02.16. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Globális operátor overloading

Globális operátor overloading Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal

Részletesebben

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

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

A JavaScript főbb tulajdonságai

A JavaScript főbb tulajdonságai JavaScript alapok A JavaScript főbb tulajdonságai Script nyelv azaz futás közben értelmezett, interpretált nyelv Legfőbb alkalmazási területe: a HTML dokumentumok dinamikussá, interaktívvá tétele Gyengén

Részletesebben

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

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

Felhasználó által definiált adattípus

Felhasználó által definiált adattípus Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési

Részletesebben

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

Széchenyi István Egyetem. Programozás III. Varjasi Norbert Programozás III. Varjasi Norbert varjasin@sze.hu 1 A Java nyelv fő jellemzői Egyszerű Objektumorientált Elosztott Robusztus (hibatűrő, megbízható): Biztonságos Hordozható Architektúra-független (gépfüggetlen):

Részletesebben

Kifejezések. Kozsik Tamás. December 11, 2016

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},

Részletesebben

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

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS 2.ELŐADÁS A VB programozási nyelv Az Excel programozása 2 A VB programozási nyelv Adattípusok Adatok kezelése Vezérlőszerkezetek Adattípusok és műveletek Egész adattípusok

Részletesebben

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

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

A Java és a C++ összehasonlítása

A Java és a C++ összehasonlítása A Java és a C++ összehasonlítása Kozsik Tamás kto@elte.hu http://kto.web.elte.hu/ Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék 2008. Kozsik Tamás (ELTE) A Java és a C++

Részletesebben

Occam 1. Készítette: Szabó Éva

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon 1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (

Részletesebben

7. K: JAVA alapok Konzultáció

7. K: JAVA alapok Konzultáció Objektum Orientált Programozás 7. K: JAVA alapok Konzultáció 35/1B IT MAN B IT v: 2017.05.03 MAN Hiba, biztonságos program 01. Szintaktikai hiba imt i = 0; system.out.println( alma ); for (int i = 0, i

Részletesebben

Java adattípusok Java programozás alapjai Egyszerű adattípusok (int, float) Osztályokkal objektumok Nincs külön mutató, referencia, címe operátor, helyette: objektumok csak dinamikusan hozhatok létre és

Részletesebben

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

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1 Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Vezérlési szerkezetek

Vezérlési szerkezetek Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64

Részletesebben

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani Mi a legabsztraktabb típus a JAVA-ban? Object Mikor preferált interface-ek használata a konkrét típusok helyett? Ha egy osztály több interfacet is használhasson, vagy ha fvek implementálását a az osztályra

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2012. október 18. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek Adatok ábrázolása a memóriában Vezérlési szerkezetek Függvények Osztályok, objektumok Paraméterátadás

Részletesebben