8. hét    Tömbök

Tartalom:

    8.1. Tömbök deklarálása, kezdőértékük beállítása
    8.2.
Tömbelemek elérése      
    8.3. Tömb méretének meghatározása
    8.4. Objektumtömbök
    8.5. Tömbök tömbjei
    8.6. Tesztkérdések
    8.7. Feladatok

 

A tömb egy olyan változó, amely több azonos típusú adatot tartalmaz. A tömb hossza a létrehozáskor dől el, és attól kezdve a tömb egy állandó méretű adatszerkezet.

A tömböket egy fiókos szekrényhez lehetne hasonlítani, amelyekben az egyes fiókokban egy-egy adatot helyezünk el. A fiókokra a sorszámukkal (A tömbben elfoglalt helye.) hivatkozunk. A sorszámozást nullával kezdjük! Ha valamelyik fiók tartalmára szükségünk van, akkor megadjuk, hogy hányadik fiókról van szó és kiolvassuk a tartalmát.

Példa: (Ha szükségünk van a 100-as számra, akkor a 3-as indexű fiókot kell "kihúzni"!)

0 1 2 3 4 5 6 7 8 9
10 2 34 100 1 0 5 67 76 99

 

Lehetőségünk van arra is, hogy olyan tömböket hozzunk létre, amelyek tömböket tartalmaznak (tömbök tömbjei).

8.1.   Tömbök deklarálása, kezdőértékük beállítása

A tömb deklarálása a többi váltózóéhoz hasonlóan két részből áll: meg kell adni a tömb típusát és a tömb nevét.

Szintaktika:

<elemtípus>[] <tömbAzonosító>;        pl. int[] szamok;

A [] tömbképző operátort a tömbAzonosító után is tehetjük.

<elemtípus> <tömbAzonosító>[];   pl. int szamok[];

A deklarálás során nem hoztuk még létre a tömböt, egyelőre csak a referenciának (memóriacímnek) foglaltunk helyet. A tömböt a Javában külön létre kell hozzuk a new operátorral!

Szintaktika:

new elemtípus[<méret>];

pl. new int [10];//Itt egy olyan integer típusú adatelemeket tartalmazó tömböt hoztunk létre, amely 10 db elemet tartalmaz.

A deklarációt és a létrehozást egy lépésben is elvégezhetjük.

Például:

int szamok[]  = new int[10] ;

A deklarálás során (inicializáló blokkal) a tömb elemeinek kezdeti értékek is adhatók.

Szintaktika:

<elemtípus>[] <tömbAzonosító> = {<érték0>, <érték1>, ...};

pl. Készítsünk egy String típusú tömböt, amely a hét napjait tartalmazza!

String[] napok = {"Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat", "Vasárnap"};

 

8.2.   Tömbelemek elérése

A tömb egyes elemeire az indexükkel hivatkozhatunk.

Szintaktika:

<tömbAzonosító>[index];

 pl. szamok[3] = 2; // A 4. fiókba (3-as indexű) betettük a 2-es számot.

8.3  Tömb méretének meghatározása

Minden tömb objektumnak van egy length konstansa, amely megadja a tömb hosszát.
(Egyszerűen azt, hogy hány adat található meg benne?)

tömbAzonosító.length

pl. (A napok tömbnél, amely a hét napjait tartalmazza.)

System.out.println(napok.length); >> 7

 

8.4.   Objektumtömbök

A tömbökben tárolhatunk referencia típusú elemeket is. A létrehozásuk olyan mint a primitív típusú elemeket tartalmazó tömböké.

Nézzünk meg egy egyszerű példát, ahol a tömbben három String objektumot tárolunk:

 

A tömb elemeinek a bejárásához használhatunk egy speciális programozói eszközt, az un. for-each ciklust.

Szintaktika:

for(<típus> <változó> : <objektum>)
        <utasítás vagy blokk>

Példa:

 

8.5.   Tömbök tömbjei

A tömbök tartalmazhatnak tömböket, tetszőleges mélységben egymásba ágyazva.

Szintaktika:

Deklarálás: <elemtípus>[][] ... [] <tömbAzonosító>;

Létrehozás: new <elemtípus> [méret0][méret1]...[méretn-1];

Tömb elemeinek elérése: <tömbAzonosító> [index0][index1]...[indexn-1]

Példa: (Egy tömbben elhelyezünk másik 3 tömböt.)

Ezt úgy képzelhetjük el a legegyszerűbben, mintha egy "három soros két oszlopos táblázatban" helyeznénk el az adatokat:

Egy Megérett a meggy.
kettő Csipkebokor vessző.
Három Te leszel a párom.

Írjuk ki a konzolra a tömbből a "Te leszel a párom szöveget"!

A megadott szöveg a "táblázat" 3. sorának 2. oszlopában található, az indexelése pedig a következő lesz [2] [1].

Figyelem: Ne felejtsük el, hogy az indexelés 0-val kezdődik!

 

8.6.   Tesztkérdések

8.7.   Feladatok

8.7.1    Írjál programot, amely a következő tartalmú tömböt hozza létre, majd ki is írja a képernyőre!
        0    1    2
        3    4    4
        0    0    0 (megoldás)

8.7.2    Készíts programot, amely egy 20 elemű tömböt feltölt 'a' karakterekkel, majd a tömb minden 2. elemét kicseréli 'b' karakterre, majd kiírja egymásmellé az elemeket, szóközzel elválasztva! (megoldás)

8.7.3    Készíts programot, amely feltölt 1-től 10-ig véletlen valós számokkal egy 6x6-os tömböt, majd megjeleníti a tömb tartalmát! Írja ki a program a számok átlagát is! (megoldás)

8.7.4.    Írjál programot, amely az 5x5-ös egységmátrixot hozza létre!
(Az egységmátrixban a főátlóbeli elemek 1-t, míg az ezen kívüli elemek 0-t tartalmaznak.)
minta:

(megoldás)

8.7.5.    Készíts programot, amely bekér a billentyűzetről 5 db számot és elhelyezi egy megfelelő tömbben! A program írja is ki a tömb tartalmát a képernyőre, valamint jelenjen meg külön a legkisebb szám is. (megoldás)