Úloha 2 – Dvourozměrné pole: přístup, změna a sčítání hodnot
| Website: | Moodle ZČU |
| Kurs: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Buch: | Úloha 2 – Dvourozměrné pole: přístup, změna a sčítání hodnot |
| Gedruckt von: | Nepřihlášený host |
| Datum: | Sonntag, 18. Oktober 2026, 15:27 |
Úvod do úlohy
Jednorozměrná pole jsme už zvládli – jsou to jednoduše seznamy hodnot za sebou. V praxi ale často potřebujeme pracovat s daty, která mají dvě rozměrové osy – například tabulku čísel, matici nebo mapu herního prostředí. K tomu se v JavaScriptu používají dvourozměrná pole, tedy pole, které obsahuje další pole. Každý prvek v „hlavním poli“ je tedy samostatný řádek, a uvnitř něj jsou hodnoty (sloupce).
Důležité je si uvědomit, že i u dvourozměrných polí platí pravidlo indexování od nuly – první řádek má index 0, první sloupec také 0. K přístupu ke konkrétní hodnotě proto musíme použít dva indexy: jeden pro řádek a druhý pro sloupec, ve tvaru pole[radek][sloupec].
Teorie a principy
-
Deklarace: dvourozměrné pole zapisujeme jako pole, jehož prvky jsou další pole.
-
Indexování: první index vybírá řádek, druhý index vybírá konkrétní prvek v daném řádku.
-
Přehlednost: pro čitelnost se často zapisují do více řádků s odsazením.
-
Porovnání s jednorozměrným polem: zatímco
pole[2]vrátí přímo prvek,pole2D[2]vrátí celý řádek (pole). Ke konkrétní hodnotě se dostaneme až přespole2D[2][sloupec].
Praktické příklady kódu
1. Deklarace dvourozměrného pole
2. Přístup k prvkům
3. Porovnání s jednorozměrným polem
Typické chyby / záludnosti
-
Záměna indexů: studenti často prohodí řádek a sloupec – zapisují
matice[sloupec][řádek]místo správného pořadí. -
Zapomenutí, že indexy začínají od nuly:
matice[1][1]není „první řádek a první sloupec“, ale druhý řádek a druhý sloupec. -
Neporozumění návratové hodnotě: když zavoláme jen
matice[1], dostaneme celé pole[4, 5, 6], nikoliv jednu hodnotu. -
Nesymetrická data: v JavaScriptu může mít každý řádek jiný počet prvků, proto musíme dávat pozor při přístupu na konkrétní index.
Shrnutí
-
Dvourozměrné pole = pole polí (tabulka).
-
Přístup k hodnotě probíhá přes dva indexy:
pole[řádek][sloupec]. -
Indexování vždy začíná od nuly – jak u řádků, tak u sloupců.
-
pole2D[řádek]vrátí celý řádek, zatímcopole2D[řádek][sloupec]konkrétní hodnotu. -
Tento princip se hodí pro maticové výpočty, tabulky dat i herní mapy.
Úloha
Zadání (kontext úlohy):
Představ si, že spravuješ malé kino. Sedadla v sále jsou uspořádána do řádků a sloupců – proto je vhodné je reprezentovat jako dvourozměrné pole. Každé sedadlo může být volné (O) nebo obsazené (X). Tvým úkolem je vypsat stav sálu, provést rezervace a zjistit, kolik volných míst ještě zbývá.
Cíl úlohy:
Procvičit práci s dvourozměrným polem na reálnějším příkladu: čtení konkrétní hodnoty, změna hodnot, výpis celé tabulky a sčítání obsazených/volných míst.
Vstupní podmínky:
Student pracuje pouze s nově vytvořeným souborem script.js.
Požadovaný výstup:
-
Vytvoř dvourozměrné pole
salavelikosti 3×4 (3 řádky, 4 sloupce). Vyplň ho znaky"O"(volné sedadlo). -
Vypiš celé pole po řádcích (pomocí
join(" ")), aby sál vypadal jako mřížka. -
Označ sedadlo ve druhém řádku a třetím sloupci jako obsazené (
"X"). -
Označ sedadlo v posledním řádku a prvním sloupci jako obsazené (
"X"). -
Opět vypiš celou mřížku, aby bylo vidět změny.
-
Pomocí vnořených cyklů spočítej, kolik je ještě volných míst (
"O") a vypiš:-
„Počet volných míst: X“.
-
Doplňující pokyny:
-
Přístup k prvku:
sala[radek][sloupec](indexy začínají od 0). -
Pro změnu stavu sedadla stačí přiřazení, např.
sala[1][2] = "X". -
Počítání proveď pomocí dvou vnořených
forcyklů.
Řešení úlohy
Co je zde splněno
-
Vytvořeno pole
salavelikosti 3×4, všechny prvky mají hodnotu"O". -
Vypsán původní stav sálu po řádcích pomocí
join(" "). -
Změněny dvě konkrétní pozice na
"X"(obsazené). -
Opět vypsán stav sálu po změnách.
-
Pomocí vnořených cyklů spočítán počet volných míst a vypsán do konzole.