1 / 22

Programozás I.

Programozás I. 3. gyakorlat. Primitív típusok. 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:

airlia
Download Presentation

Programozás I.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programozás I. 3. gyakorlat

  2. Primitív típusok Antal Gábor

  3. 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) Antal Gábor

  4. 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 Antal Gábor

  5. 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 Antal Gábor

  6. 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 (%) Antal Gábor

  7. 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) =, +=, -=, *=, /= Antal Gábor

  8. 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 • pl.: if( arg1==0 || arg2 == 1 || arg3 == 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 )

  9. 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 Antal Gábor

  10. 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) Antal Gábor

  11. 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 Antal Gábor

  12. 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); } } Antal Gábor

  13. 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>); Antal Gábor

  14. 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 Vezérlési szerkezetek Antal Gábor

  15. Vezérlési szerkezetek • If-else if - else, valamint switch

  16. Vezérlési szerkezetek • While, Do-While, For

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

  18. 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 Antal Gábor

  19. 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 Tömbök Antal Gábor

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

  21. 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 };

  22. 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 ];

More Related