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

Hasonló dokumentumok
3. Gyakorlat Ismerkedés a Java nyelvvel

Szoftvertechnológia alapjai Java előadások

Programozási nyelvek Java

Java II. I A Java programozási nyelv alapelemei

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

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

Programozás I. Első ZH segédlet

Java II. I A Java programozási nyelv alapelemei

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

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István

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

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

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

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

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

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

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

Informatika terméktervezőknek

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

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

A C# programozási nyelv alapjai

OOP: Java 1.Gy: Java alapok

Szoftvertervezés és -fejlesztés I.

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

Programozási nyelvek Java

A C programozási nyelv III. Pointerek és tömbök.

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

A Java programozási nyelv

A C programozási nyelv III. Pointerek és tömbök.

A C# PROGRAMOZÁSI NYELV

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

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

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

GYAKORLATIAS JAVA MINTA

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

Programozási technológia I.

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

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

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

Java programozási nyelv

Programozási nyelv Java

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

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

Információs Technológia

Programozás I gyakorlat

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

OOP #14 (referencia-elv)

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás módszertan

Java programozási nyelv

Apple Swift kurzus 3. gyakorlat

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Programozás II. 4. Dr. Iványi Péter

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

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

Pénzügyi algoritmusok

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

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

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

Globális operátor overloading

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

Programozási nyelvek Java

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Programozás I. C# bevezető. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 17.

Python tanfolyam Python bevezető I. rész

Objektumorientált Programozás II.

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

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

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

Pénzügyi algoritmusok

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

Programozási Nyelvek (C++) Összefoglaló

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

Stack Vezérlés szerkezet Adat 2.

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozási nyelvek II.: JAVA

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

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

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


és az instanceof operátor

A Java nyelv. II. rész - alapok, osztályok /2 53

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

Adatszerkezetek és algoritmusok

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

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozási Nyelvek: C++

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

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?

Szkriptnyelvek. 1. UNIX shell

Átírás:

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 -128 127 short Előjeles egész 0 16 bit -32768 32767 int Előjeles egész 0 32 bit -2147483648-2147483647 long Előjeles egész 0 64 bit -9223372036854775808-9223372036854775807 float IEEE 754 lebegőpontos 0.0 32 bit +/-1.4E-45 - +/-3.40E+38, +/-infinity, +/-0, NaN double IEEE 754 lebegőpontos 0.0 64 bit +/-4.9E-324 - +/-1.8E+308, +/-infinity, +/-0, NaN char Unicode \u0000 16 bit \u0000 - \uffff boolean true, false false 1 bit (32 true, false Szegedi Tudományegyetem Természettudományi és Informatikai bitből) Kar Antal Gábor 2

Primitív típusok jellemzői Stack-en jönnek létre Mindig érték szerint tárolódnak minden más (objektumok) referencia szerint Csak előjeles típusok vannak pl.: nincs unsigned int, csak int Speciális osztályok: BigInteger - Akármekkora egész tárolására BigDecimal - Akármekkora szám tárolására Példaprogram: PrimitivTipusok.java (pub) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 3

Csomagoló/Wrapper osztályok A primitív típusokat becsomagolhatjuk objektumokká, erre szolgálnak a wrapper osztályok Primitív típusokat objektumokként tudjuk kezelni stack helyett a heapen lesznek tárolva Implicit konverzió a wrapper osztály és a primitív típus között Minden primitív típusnak van csomagoló osztálya pl.: int a; primitív típus, stacken Integer a = new Integer(4); objektum, heapen http://en.wikipedia.org/wiki/primitive_wrapper_class Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 4

Csomagoló/Wrapper osztályok Integer a = new Integer(5); Integer b = new Integer(3); a = b; az a ugyanoda mutat, mint a b a = b.clone(); a b értéke a -ba másolódik Ha az a és b primitív típusú: int a = 5; int b = 3; a=b értékadás, a értéke b lesz Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 5

Operátorok Értékadás primitív típusoknál értékmásolás objektumoknál referenciamásolás tényleges másolás a clone() metódussal Unáris aritmetikai Előjelváltás (+, -) Növelés/Csökkentés (++, --) Bináris aritmetikai Összeadás (+), kivonás (-), szorzás (*), osztás (/), maradékképzés (%) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 6

Operátorok Bitműveletek: Bitenkénti És (&), Bitenkénti Vagy ( ), Kizáró Vagy (^), Komplementer képzés (~) &=, =, ^= Háromoperandusú if-else (?: ) feltetel? ertek_ha_igaz : ertek_ha_hamis Értékadás, összevont értékadás (balhoz a jobb oldalit) =, +=, -=, *=, /= Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 7

Operátorok Logikai És (&&), Vagy ( ), Negálás (!), Csak boolean értékekre használhatóak! Összetett kifejezések addig értékelődnek ki, amíg egyértelműen ki nem derül a kifejezés értéke: lusta kiértékelés Relációk: pl.: if( arg1==0 arg2 == 1 arg3 == 0 )!=, ==, >=, <=, <, > logikai értékkel térnek vissza primitív típusoknál érték szerint hasonlít objektumoknál referencia összehasonlítás ( objektum összehasonlításra a.equals() metódus használatos ) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 8

Operátorok Bitléptető operátorok Előjeltartó (>>,<<), Előjelléptető (>>>) balra (<<) : 2 n-edik hatványával szorozzuk a számot jobbra ( >>) : 2 n-edik hatványával osztjuk a számot Vessző csak for ciklusban használható (,) Típuskonverzió: (type) value primitívek között korlátozás nélkül engedélyezett objektumok között csak az öröklődési fán belül pl.: double c; c = 5/2; (c értéke 2.0 lesz) c = ((double)5/2); (c értéke 2.5 lesz) Nincs sizeof() operátor Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 9

Inkrementálás/dekrementálás int a = 5; b = ++a; (prefix operátor) a növelése, majd értékadás (b értéke 6) c = a++; (postfix operátor) c értéke 5 lesz, majd az értékadás után növelődik a Ugyanez a helyzet a --a, és a--" -nál is Példaprogram: Operatorok.java (pub) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 10

Parancssori argumentumok minden parancssorból indított Java alkalmazásnak átadhatunk argumentumokat is ezeket a main függvény args nevezetű String tömbjében érjük el public static void main(string[] args) a tömbindexelés 0-tól kezdődik a 0. indexen lévő argumentum nem a program neve! De ez könnyen kideríthető a paraméterek darabszáma: args.length, egy egész értéket (int) ad vissza Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 11

Parancssori argumentumok int argumentum; if (args.length!= 0) { try { argumentum = Integer.parseInt(args[0]); } catch (NumberFormatException e) { System.err.println("Can t parse to int"); System.exit(1); } } Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 12

Parancssori argumentumok Integer.parseInt(args[0]); az args tömb első elemét számmá alakítjuk az args tömb egy String tömb, nekünk viszont int-re van szükségünk, ezért át kell alakítani (Ez csak akkor működik, ha tényleg számokat adunk át paraméternek) általános alak: <Típus>.parse*( string ); <Típus> lehet: Integer, Double, Float, stb.. Integer.parseInt( 5 ); Double.parseDouble( 6.15 ); Viszont: String.valueOf(<bármi>); Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 13

Vezérlési szerkezetek Minden C-beli vezérlési szerkezetet támogat a Java Kivéve a goto-t a kulccszó létezik, de nincs implementálva soha ne használjuk! if, for, while, switch Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 14

Vezérlési szerkezetek If-else if - else, valamint switch Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 15

Vezérlési szerkezetek While, Do-While, For Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 16

Feladatok Írd ki a parancssori paramétereket a konzolra Írd ki a parancssori paramétereket a konzolra, fordított sorrendben Írd ki a parancssori paramétereket úgy, hogy az első sorba csak az elsőt, a másodikba az első kettőt szóközzel elválasztva, a harmadikba az első hármat, stb.. Írd ki a parancssori paraméterek közül a legnagyobbat, legkisebbet, valamint az értékek átlagát. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 17

Szorgalmi feladat Számítsd ki a parancssoron kapott két időpont (óra perc óra perc) között eltelt időt, és írasd ki a konzolra (óra perc formában) A program elkészítése során ügyelj az adatok helyességére bemenő paraméterek száma az órák 0-23 intervallumba kell, hogy essenek a percek 0-59 intervallumba kell, hogy essenek Beadás: CooSpace, 2014.03.05 20:00-ig Beadásnál csak egy darab Java fájlt kell feltölteni, Main.java néven Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 18

Tömbök Egynél több érték tárolására vannak kitalálva, de az elemek száma rögzített. Adott számú, azonos típust tartalmazó adattípus Az indexelés 0-val kezdődik Tömböket dinamikusan, a new operátorral lehet létrehozni, mérete a length adatmezővel lekérdezhető A Java teljes körű indexhatár-ellenőrzést végez, kivétellel jelzi, ha alul- vagy túlindexelés történik Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 19

Egydimenziós tömbök Az egyetlen kiterjedéssel rendelkező tömböket szokás vektornak is nevezni Definíció: típus tömbnév[ ]; típus[ ] tömbnév; A tömböt futás során a new operátorral hozzuk létre new típus[ méret ]; a méret egy nemnegatív egész szám, értéke nem lehet nagyobb, mint az Integer.MAX_VALUE pl.: int[ ] x = new int[5]; elemei: x[0], x[1], x[2], x[3], x[4] Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 20

Egydimenziós tömbök A Java lehetővé teszi, hogy a tömböket a definiálás során konstans értékekkel töltsük fel. Ilyenkor a tömböt a fordító hozza létre típus[ ] tömbnév = { konstans1, konstans2 } int[ ] arr = { 1, 2, 3, 4, 5 }; Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 21

Többdimenziós tömbök Tömbhivatkozás definíciója: típus[ ] [ ]... [ ] tömbnév; típus tömbnév[ ][ ]... [ ]; 2D-s tömb létrehozása: new típus[ méret1 ][ méret2 ] Inicializálás konstans értékekkel: int[ ] matrix = { { 1, 2 }, { 3, 4 } }; Dinamikusan: int[ ] matrix = new int[ 2 ][ 2 ]; Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 22