![]() |
Programování v jazyce JavaKurz programování v Javě - 9. díl |
|||||||||||||||||||||||||||||||||||||||||||||||||
Úvodem | Kurz programování v Javě | Kurz programování v Javě pro mobilní telefony | Soubory ke stažení | Otázky a odpovědi |
||||||||||||||||||||||||||||||||||||||||||||||||||
Úvod V dnešním devátém díle kurzu se budeme zabývat poli. Pole Pole je skupina proměnných stejného datového typu, na které se lze odkazovat jedním jménem. Jednotlivé proměnné v poli mají svoje číslo, tzv. index, pomocí kterého lze přesně určit se kterou proměnnou v poli chceme pracovat. Existují pole jednorozměrná, ale i více rozměrná, ukážeme si příklady obou typů. Možná nejsou výhody pole zatím zřejmé, ale například ukládat nějaký graf nebo tabulku do jednotlivých proměnných, které byste nejdříve museli deklarovat, potom inicializovat, by vás moc nebavilo. Na takové případy je pole ideální kandidát. Představte si, že potřebujete vypočítat vaši hrubou mzdu, ale na to je potřeba vědět kolik hodin máte odpracováno (je to sice trochu zjednodušené, ale budeme počítat s tím, že všechny hodiny budou honorovány stejně), právě odpracované hodiny za den by se daly zapisovat do jednotlivých prvků pole. Nejdříve deklarujeme pole a vytvoříme v něm 31 prvků typu byte, pro každý den jeden. Potom ho musíme ještě naplnit hodnotami. Už teď je pole výhodnější, než deklarování 31 proměnných, pro které byste navíc museli vymýšlet názvy. Ale hlavní výhody pole teprve přijdou. Například teď můžete v jednom cyklu vypočítat součet hodin všech dnů nebo součet hodin jednotlivých týdnů, zkrátka pokud pracujete s více proměnnými stejného typu vždy použijte pole. Ještě malá poznámka, zkuste si představit sčítání hodin, kdybyste nepoužili pole, třeba scítání jen lichých dnů, nebo každého pátého dne, to by byla hrůza a s polem to vyřešíte o dost jednodušeji. Jak se ale pole deklaruje? To vám ukáže následující příklad.
Ještě jsme si nepovídali o objektech, ale s poli se pracuje podobně jako s objekty. U objektů se nejdříve vytvoří odkaz, který má specifikovaný datový typ i název a ten odkazuje na nějaký objekt, který můžeme přiřadit později. Na předchozím příkladu na prvním řádku deklarujeme proměnnou typu pole, která bude obsahovat proměnné typu byte a název jsme zvolili dny, v podstatě je to jen odkaz na objekt. Hranaté závorky určují, že se deklaruje pole a ne proměnná jednoduchého datového typu, jeden pár závorek značí že jde o pole jednorozměrné. Na dalším řádku probíhá vytvoření pole, což je vlastně přiřazení objektu odkazu, který byl vytvořen na prvním řádku. V tomto příkladě je vytvářeno pole o velikosti 31 prvků. První prvek bude mít index 0, pozor na to, protože poslední prvek má index 30. Pole o n prvcích bude mít poslední prvek s indexem n - 1. Pole je sice vytvořeno, ale neobsahaju žádné prvky (pokud je pole celočíselného typu, měly by všechny prvky mít hodnotu 0). Inicializovat ho lze přímo při vytváření, nebo dodatečné, třeba pomocí cyklu. Pole může být jakéholiv typu, jak jednoduchécho, tak objektového. Teď už přibližně víte, jak vytvořit jednorozměrné pole, tak přejdeme k nějakému celému příkladu, na kterém si ukážeme věci, které lze s polem provádět.
Poznámka na začátek, všimněte si jaký argument očekává metoda main(), je to pole typu String s názvem args. Toto pole obsahuje řetězcové hodnoty, které se použili při spuštění vašeho programu. Pokud vám není přesně jasné co myslím, tak je to stejné jako když např. používáte nějaký příkaz v příkazové interpreteru, třeba příkaz cp (copy) očekává dva argumenty, např.: c:\>cp test.txt c:\documents, a právě tyto dva argumenty se předají jako pole obsahující dva řetězce metodě main(). Teď už by vám mohla být celá deklarace metody main() jasná, pokud ne, stejně si ji ještě budeme probírat při vysvětlování metod. Určitě jste se také všimli proměnné length. Tuto proměnnou vlastní každý odkaz a obsahuje počet prvku v poli na které odkazuje. U proměnné typu pole neříkáte při deklaraci, kolik má mít prvků, ale pouze ji pole přiřadíte, to znamená, že jednou ji přiřadíte pole o velikosti 10 prvků a hned jak ho využijete, můžete tomu stejnému odkazu přiřadit úplně nové pole třeba o 500 prvcích. Pro kompletní vysvětlení uvedu pár příkladů:
Teď se vrhněme na komplexnější příklad, který používá jak pole, tak i mnoho věcí co už umíte, takže ho pečlivě prozkoumejte a třeba nějak upravte.
Tento příklad je ukázkou využití všech věcí, co jste se doposud naučili. Úplně všechny věci sice neznáte, ale ty které neznáte myslím že z tohoto příkladu pochopíte. Na začátku je importován balík java.io, o balících si budeme povídat někdy příště. Statická metoda System.in.read() vrací jeden přečtený bajt z konzole. Tento příklad je určen k experimentování takže se toho nebojte. Pokud vám něco nebude fungovat, pošlete mi zdrojový kód a já se na něj podívám. Na začátku jsem říkal, že existují i vícerozměrná pole, ale zatím jsem o nich nic neřekl, teď to napravím. Začneme u polí dvourozměrných. Dvourozměrné pole si lze představit jako pole jednorozměrných polí.
Na první pohled je zřejmý rozdíl mezi deklarací jednorozměrného a dvourozměrného pole. Zkrátka pokud deklarujete jednorozměrné pole, napíšet jeden pár hranatých závorek a s každým dalším rozměrem počet párů závorek přibývá, u dvourozměrného samozřejmě dva páry. U vícerozměrných polí je ještě jedna zajímavost a to ta, že při vytváření pole stačí specifikovat pouze první index.
Následující příklad vytvoří pole, které bude mít dva prvky a těmi budou pole o třech prvcích.
V následující tabulce máte názornou ukázku předešlého pole v tabulce. Horizontální tučná čísla označují druhý index dvourozměrného pole a vertikální první index pole.
Pokud máte stále nemáte úplně jasno, jak dvourozměrné pole funguje, představte si školní rozvrh (nebo pracovní, ale rozvrh), ten by se dobře zapsal do dvourozměrného pole. Pokud by měli všechny dny stejný počet hodin, bylo by to pravidelné dvourozměrné pole, které by mělo jednotlivé dny jako první index a jednotlivé hodiny jako druhý index. Například pole pro rozvrh, který by byl od pondělí do pátku a každý den osm hodin, by vypadalo takto.
Do tohoto pole byste třeba mohli zaznamenávat navštívené hodiny :-). Závěr V tomto díle jsme probrali pole a různé věci s nimi, ale ještě nám něco zbylo na příště. |
||||||||||||||||||||||||||||||||||||||||||||||||||