Práce s poli

Deklarace pole

Deklarace pole se skládá ze dvou částí z typu pole a jeho jména. Při deklaraci pole se neudává jeho velikost, důvodem je jeho dynamická alokace. Pole se deklaruje jako referenční proměnná

int [] poleCisel; // deklarace pole
Protože se při deklaraci nepřiděluje paměť je nutné před prvním použitím pole paměť přidělit pomocí operátoru new.
…
poleCisel = new int [20];  // pole delky 20

Často se přidělení paměti provádí přímo při deklaraci pole:

int [] poleCisel = new int [30];  // pole delky 30

Pole není nutné vytvářet pomocí operátoru new, pokud víme jaké hodnoty bude pole obsahovat. Pole lze inicializovat přímo při jeho deklaraci. Práce s tímto polem je stejná jako s kterýmkoliv jiným, tzn. má všechny vlastnosti pole.

int [] poleCisel = {1,2,3,4,5,6};  // pole delky 6 s hodnotami 1,2,3,4,5,6

Délku pole zadanou při jeho vytvoření si není nutné pamatovat (např. v některé proměnné). Lze ji kdykoliv zjistit pomocí proměnné length. Při průchodu polem v cyklu se používání této proměnné doporučuje. Důvodem je dynamičnost délky pole.

int delkaPole;
int [] poleCisel = {1,2,3,4,5,6};  
…..
delkaPole = poleCisel.length;  // zjisteni delky pole s nazvem poleCisel

Práce s poli

Přístup k jednotlivým prvkům pole je pomocí názvu pole a indexu pořadí prvku v poli. Indexy začínají vždy od nuly!

int prvekPole;
int [] poleCisel = {1,2,3,4,5,6};  
…
prvekPole = poleCisel[2];  // prvek z poleCisel s indexem 2 (treti pozice)

Pokud potřebujeme zpracovávat všechny, lze využít upravenou variantu cyklu for. Tato konstrukce nevyžaduje pro přístup k jednotlivým prvkům pole indexy. Příkaz for má v tomto případě tři parametry: datový typ prvků pole, jméno proměnné, do které jsou postupně ukládány jednotlivé prvky pole a jméno zpracovávaného pole.

int [] poleCisel = {1,2,3,4,5,6};for (int hodnotaPrvkuPole : poleCisel ) {
   příkazy;
}

Dvourozměrná pole

Jedná se vlastně o pole polí a pracuje se s nimi jako s jednorozměrnými poli. Rozdíl je při deklaraci, kde je třeba uvést všechny rozměry. Řádky ovšem nemusí mít nutně stejnou délku sloupce.

...
int [][] dvouRozmernePole = new int [5][4];
...
Přístup k jednotlivým prvkům pole je opět stejný, přes indexy řádků a sloupců.
...
int hodnotaPrvkuPole;
...
hodnotaPrvkuPole = dvouRozmernePole[indexRadku] [indexSloupcu];
...
I dvourozměrné pole lze vytvořit statické inicializace.
...
int [][] dvouRozmernePoleStatickyInicializovane = {{1,2,3},{11,12},{21,22,23,24}};
...
Pokud potřebujeme v programu vícerozměrné pole (3, 4, 5, ….) postupuje se analogicky. Pokud je takové pole vytvářeno po částech nelze přeskakovat rozměry.
...
int [][][] triRozmernePoleStatickyInicializovane = {{{ 1, 2, 3},{11,12,13},{21,22,23}},
                                                    {{31,32,33},{41,42,43},{51,52,53}}};
...

courses/b0b36pjv/tutorials/02/pole.txt · Last modified: 2018/02/26 13:54 by mudromar