Ú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řes pole2D[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ímco pole2D[řá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:
  1. Vytvoř dvourozměrné pole sala velikosti 3×4 (3 řádky, 4 sloupce). Vyplň ho znaky "O" (volné sedadlo).

  2. Vypiš celé pole po řádcích (pomocí join(" ")), aby sál vypadal jako mřížka.

  3. Označ sedadlo ve druhém řádku a třetím sloupci jako obsazené ("X").

  4. Označ sedadlo v posledním řádku a prvním sloupci jako obsazené ("X").

  5. Opět vypiš celou mřížku, aby bylo vidět změny.

  6. 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 for cyklů.

Řešení úlohy

Co je zde splněno

  • Vytvořeno pole sala velikosti 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.