Úloha 1 – Konstrukce switch a větve case pro různé příkazy

Website: Moodle ZČU
Kurs: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Buch: Úloha 1 – Konstrukce switch a větve case pro různé příkazy
Gedruckt von: Nepřihlášený host
Datum: Sonntag, 18. Oktober 2026, 15:27

Úvod do úlohy

Přepínač switch je elegantní alternativa k vícenásobnému větvení pomocí if – else if – else. Hodí se tehdy, když rozhodujeme podle jedné jediné hodnoty (např. podle názvu dne, kódu stavu, typu akce). Díky switch je kód přehlednější: výraz vyhodnotíme jednou a podle první odpovídající větve (case) spustíme konkrétní blok kódu.

Teorie a principy

  • Základní tvar:
    switch (vyraz) { case hodnotaA: /* kód */ break; case hodnotaB: /* kód */ break; default: /* kód */ }

  • Jak to funguje:
    switch vyhodnotí jeden výraz a poté porovnává jeho výsledek s hodnotami u jednotlivých case. Jakmile najde první shodu, provede kód v tomto case.

  • Shoda je přísná:
    Porovnání v switch je v JavaScriptu striktní (jako ===), tedy porovnává hodnotu i typ. Řetězec "1" se neshoduje s číslem 1.

  • break je klíčový:
    Bez break by program pokračoval i do dalších větví („propadávání“ – fall-through). break proto téměř vždy na konci každé větve musí být.

  • default:
    Volitelná „záchytná“ větev, která se spustí, když se neshodí žádný case.

Poznámka k našemu stylu v kurzu: V příkladech s if vždy explicitně porovnáváme, např. if (podminka == true). U switch se o porovnání stará samotná konstrukce (přísná shoda jako ===).

Praktické příklady kódu

1) Základní switch nad hodnotou řetězce

2) Switch v jednoduché stránce (výběr a zobrazení stavu)

3) Ukázka propadávání (fall-through) – záměrně bez break

Typické chyby / záludnosti

  • Zapomenuté break: Nejčastější chyba. Bez break program pokračuje do další větve a provede i její kód.

  • Neshoda typu: switch porovnává přísně (jako ===). case 1 se neshoduje s "1". Pokud čtete hodnotu z formuláře, je často typu string.

  • Duplicitní kód v každé větvi: Společné kroky (např. nastavení textu nebo třídy) proveďte jednou až po switch.

  • Nevhodné použití switch: Pokud se rozhodujete podle více výrazů současně, switch není vhodný – použijte if – else if – else s logickými operátory a explicitními porovnáními (== true, == false).

  • Nejasné hodnoty case: Dávejte srozumitelné konstanty (řetězce, čísla). Pokud je potřeba vstup sjednotit (např. malá/velká písmena), udělejte to před switch.

Shrnutí

  • switch vyhodnocuje jeden výraz a spouští první odpovídající case.

  • Porovnání je striktní (jako ===), pozor na typy.

  • Každou větev zakončete break, pokud nechcete záměrně „propadávat“.

  • default je záchytná větev pro všechny ostatní případy.

  • Společné kroky provádějte mimo větvení – kód bude čistší a snadno udržovatelný.

Úloha

Zadání (kontext úlohy):

Napiš program, který podle textového příkazu určí směr pohybu (nahoru, dolů, doleva, doprava). Příkazem bude jeden znak ("W", "S", "A", "D") nebo slovo ("start", "stop"). Konstrukcí switch rozhodni, co se má stát.


Cíl úlohy:

Procvičit přepínač switch (přísná shoda jako ===), větve case, break a větev default bez zbytečných duplicit.


Vstupní podmínky:
  • Student pracuje pouze s nově vytvořeným souborem script.js.

  • Do proměnné prikaz zapiš jeden z možných vstupů ("W", "A", "S", "D", "start", "stop") a otestuj i neznámou hodnotu.


Požadovaný výstup:
  • "W" → zobraz alert("Pohyb: nahoru")

  • "S" → zobraz alert("Pohyb: dolů")

  • "A" → zobraz alert("Pohyb: doleva")

  • "D" → zobraz alert("Pohyb: doprava")

  • "start" → zobraz alert("Hra spuštěna")

  • "stop" → zobraz alert("Hra zastavena")

  • Pro jakoukoli jinou hodnotu → alert("Neznámý příkaz")


Doplňující pokyny:
  • Každý case ukonči klíčovým slovem break, aby nedošlo k „propadávání“.

  • switch porovnává přísně (jako ===), proto rozlišuje malá/velká písmena a typy.

  • Společný krok (zde alert) prováděj přímo ve větvi; vyhni se vnořeným if.

  • Nepoužívej šipkové funkce ani ternární operátor. Používej jen let/const (nikdy var).

Řešení úlohy

Co je zde splněno

  • Použit switch s přísnou shodou (===).

  • Každý case obsahuje přesně jednu akci (alert).

  • Všechny větve končí break, takže nedochází k „propadávání“ do další větve.

  • Přidána větev default pro neznámý příkaz.

Vylepšení oproti začátečnické verzi

  • Vstup je převeden na jednotný formát (toUpperCase()), takže uživatel může zadat příkaz malým nebo velkým písmenem.

  • Kód je robustnější a uživatelsky přívětivější, aniž by se musely zdvojovat větve case.