Programozs I 3 gyakorlat Szegedi Tudomnyegyetem Termszettudomnyi s

  • Slides: 19
Download presentation
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1

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

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. 4 E-45 - +/-3. 40 E+38, +/-infinity, +/-0, Na. N double IEEE 754 lebegőpontos 0. 0 64 bit +/-4. 9 E-324 +/-1. 8 E+308, +/-infinity, +/-0, Na. N char Unicode u 0000 16 bit u 0000 - u. FFFF boolean true, false 1 bit (32 bitből) Szegedi Tudományegyetem Természettudományi és Informatikai Kar true, false Antal Gábor 2

Primitív típusok jellemzői • Stack-en jönnek létre • Mindig érték szerint tárolódnak – minden

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: – Big. Integer - Akármekkora egész tárolására – Big. Decimal - Akármekkora szám tárolására Példaprogram: Primitiv. Tipusok. 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 •

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

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

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 (+ , -) – Inkrementálás/dekrementálá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

Operátorok • Bitműveletek: – Bitenkénti És (&), Bitenkénti Vagy (|), Kizáró Vagy (^), Komplementer képzés (~) – &=, |=, ^= • Háromoperandusú if-else ( ? : ) – feltetel ? muvelet_ha_igaz : muvelet_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 http: //en. wikipedia. org/wiki/Short-circuit_evaluation – És (&&), Vagy (||), Negálás (!),

Operátorok • Logikai http: //en. wikipedia. org/wiki/Short-circuit_evaluation – É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 • pl. : if( arg 1==0 || arg 2 == 1 || arg 3 == 0 ) • Relációk: !=, ==, >=, <, > – 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

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ő – for ciklusban (, ) – adott típusból több változó definiálásakor • 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) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 9

Inkrementálás/dekrementálás int a = 5; • int b = ++a; (prefix operátor) – a

Inkrementálás/dekrementálás int a = 5; • int b = ++a; (prefix operátor) – a növelése, majd értékadás (b értéke 6) • int 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 arg. (ism) • minden parancssorból indított Java alkalmazásnak átadhatunk argumentumokat is – ezeket

Parancssori arg. (ism) • 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! – 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 arg. (ism) • Integer. parse. Int(args[0]); • az args tömb első elemét számmá

Parancssori arg. (ism) • Integer. parse. Int(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. parse. Int(“ 5”); – Double. parse. Double(“ 6. 15”); – Viszont: String. value. Of(<bármi>); Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 12

Vezérlési szerkezetek • Minden C-beli vezérlési szerkezetet támogat a Java • Kivéve a goto-t

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 13

Vezérlési szerkezetek • If-else if - else, valamint switch Szegedi Tudományegyetem Természettudományi és Informatikai

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

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

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

Feladat • Írd ki a parancssori paramétereket úgy, hogy az első sorba csak az

Feladat • Í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. . >java Main egy ketto kutya cica fagyi egy ketto kutya cica egy ketto kutya cica fagyi Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 16

Feladat • Számítsd ki a parancssoron kapott két időpont (óra perc) között eltelt időt,

Feladat • Számítsd ki a parancssoron kapott két időpont (ó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 Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 17

Feladat • A parancssori paraméterek alapján döntsd el, hogy egy a bemenő számok: –

Feladat • A parancssori paraméterek alapján döntsd el, hogy egy a bemenő számok: – számtani (an = a 1 + (n – 1) * d ) – mértani (an = a 1 * q n – 1 ) – egyik sem • Feltehetjük, hogy mindegyik egész szám, és legalább 3 db paraméterünk van. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 18

Házi feladat • Írd ki a parancssori paramétereket a konzolra, fordított sorrendben • Írd

Házi feladat • Írd ki a parancssori paramétereket a konzolra, fordított sorrendben • Írd ki a parancssori paraméterek közül a legnagyobbat, legkisebbet, valamint az értékek átlagát. (korábban zh-n volt ilyen feladat!) Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 19