Ú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:
switchvyhodnotí jeden výraz a poté porovnává jeho výsledek s hodnotami u jednotlivýchcase. Jakmile najde první shodu, provede kód v tomtocase. -
Shoda je přísná:
Porovnání vswitchje v JavaScriptu striktní (jako===), tedy porovnává hodnotu i typ. Řetězec"1"se neshoduje s číslem1. -
breakje klíčový:
Bezbreakby program pokračoval i do dalších větví („propadávání“ – fall-through).breakproto 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
ifvždy explicitně porovnáváme, např.if (podminka == true). Uswitchse 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. Bezbreakprogram pokračuje do další větve a provede i její kód. -
Neshoda typu:
switchporovnává přísně (jako===).case 1se 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ě,switchnení vhodný – použijteif – else if – elses 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ředswitch.
Shrnutí
-
switchvyhodnocuje 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“. -
defaultje 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é
prikazzapiš jeden z možných vstupů ("W","A","S","D","start","stop") a otestuj i neznámou hodnotu.
Požadovaný výstup:
-
"W"→ zobrazalert("Pohyb: nahoru") -
"S"→ zobrazalert("Pohyb: dolů") -
"A"→ zobrazalert("Pohyb: doleva") -
"D"→ zobrazalert("Pohyb: doprava") -
"start"→ zobrazalert("Hra spuštěna") -
"stop"→ zobrazalert("Hra zastavena") -
Pro jakoukoli jinou hodnotu →
alert("Neznámý příkaz")
Doplňující pokyny:
-
Každý
caseukonči klíčovým slovembreak, aby nedošlo k „propadávání“. -
switchporovná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ýmif. -
Nepoužívej šipkové funkce ani ternární operátor. Používej jen
let/const(nikdyvar).
Řešení úlohy
Co je zde splněno
-
Použit
switchs přísnou shodou (===). -
Každý
caseobsahuje 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
defaultpro 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.