Úloha 5 – Kombinace for, while a do…while v jedné aplikaci
| Stránky: | Moodle ZČU |
| Kurz: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Kniha: | Úloha 5 – Kombinace for, while a do…while v jedné aplikaci |
| Vytiskl(a): | Nepřihlášený host |
| Datum: | pondělí, 19. října 2026, 03.23 |
Úvod do úlohy
V závěrečné fázi práce s cykly je důležité nejen umět napsat jednotlivé konstrukce (for, while, do…while), ale také zvolit ten správný typ cyklu pro konkrétní úlohu. V praxi totiž nejde o to použít „jakýkoli cyklus, který funguje“, ale napsat kód tak, aby byl čistý, čitelný a efektivní. Správná volba cyklu usnadňuje orientaci v kódu, zabraňuje chybám a zajišťuje, že program dělá přesně to, co má.
Teorie a principy
-
forcyklus-
Nejvhodnější, když dopředu víme počet opakování (např. průchod přes pole, 10 opakování výpočtu, vykreslení 5 řádků tabulky).
-
Jasně ukazuje inicializaci, podmínku a krok na jednom místě.
-
-
whilecyklus-
Používá se, když neznáme počet opakování předem a potřebujeme opakovat, dokud platí určitá podmínka.
-
Může proběhnout i 0×, pokud podmínka není splněna hned od začátku.
-
-
do…whilecyklus-
Vždy proběhne alespoň jednou, protože podmínka se testuje až po prvním průchodu.
-
Ideální pro úlohy, kde se akce musí provést minimálně jednou (např. vyžádání vstupu od uživatele).
-
-
Refaktoring cyklů:
-
while → for: Pokud je počet průchodů známý předem, je kód sforpřehlednější. -
for → while: Pokud průchody závisejí na podmínce, kterou nelze předem odhadnout, je lepšíwhile. -
while → do…while: Pokud potřebujeme, aby se blok provedl aspoň jednou, i kdyby podmínka hned neseděla.
-
Praktické příklady kódu
1. While nahrazený forem (počet opakování je známý)
2. For nahrazený while (neznáme počet opakování)
3. While nahrazený do…while (potřebujeme aspoň jeden průchod)
4. Kombinace s vnořeným cyklem (refaktor na čitelnější zápis)
Typické chyby / záludnosti
-
Použití nevhodného cyklu – např.
whilepro pevně známý počet opakování → kód je zbytečně dlouhý a hůře se čte. -
Zapomenutá změna podmínky v
whileado…while→ vznikne nekonečný cyklus. -
For s nelogickými částmi – studenti někdy nechají inicializaci nebo krok prázdný a píšou vše do těla smyčky → horší čitelnost.
-
Nevyužití síly
do…while– studenti často používajíwhile, i když je potřeba minimálně jeden průchod.
Shrnutí
-
For: když víme počet opakování předem.
-
While: když opakování závisí na podmínce a není jasné, kolikrát proběhne.
-
Do…while: když potřebujeme aspoň jeden průchod, podmínka se testuje až na konci.
-
Refaktoring: vyberte cyklus podle povahy problému, tím zvýšíte čitelnost a udržovatelnost kódu.
-
Správná volba cyklu je znakem dobré praxe – kód je kratší, srozumitelnější a méně náchylný k chybám.
Úloha
Zadání (kontext úlohy):
Vytvoř jednoduchou konzolovou hru s číselným menu. Uživatel si vždy vybere jednu z možností:
1 – vypíše do konzole násobilku čísla 5 (for cyklus)
2 – bude se házet „kostkou“, dokud nepadne 6 (while cyklus)
3 – zeptá se uživatele na heslo „tajne“ a bude se ptát, dokud ho nezadá (do…while cyklus)
4 – ukončí hru
Menu se zobrazí alespoň jednou a poté znovu, dokud uživatel nezvolí možnost 4.
Cíl úlohy:
-
Procvičit volbu vhodného cyklu (
for,while,do…while) v různých situacích. -
Naučit se kombinovat cykly do jednoho programu.
-
Zvládnout ovládání programu přes opakující se menu.
Vstupní podmínky:
-
Student pracuje s novým souborem
script.js. -
Používej pouze
letaconst. -
Pro volbu použij
prompt(). -
Každou volbu obsluž pomocí
if–elseneboswitch.
Požadovaný výstup:
-
Po spuštění se zobrazí menu s možnostmi 1–4.
-
Volba 1 → do konzole se vypíše
5×1=5 ... 5×10=50. -
Volba 2 → do konzole se hází náhodná čísla 1–6, dokud nepadne 6.
-
Volba 3 → program se ptá na heslo, dokud uživatel nezadá „tajne“.
-
Volba 4 → program skončí a vypíše
alert("Konec hry."). -
Pokud uživatel zadá jinou hodnotu →
alert("Neplatná volba.").
Doplňující pokyny:
-
Menu se musí zobrazit alespoň jednou a pak opakovat, dokud není zvolena možnost 4 → použij
do…while. -
Vysvětli si v kódu komentáři, proč jsi použil konkrétní cyklus.
-
Nezapomeň, že
promptvrací řetězec → při porovnávání použi=== "1","2", atd.
Řešení úlohy
Co je zde splněno
-
Použit cyklus
do…while, aby se menu zobrazilo alespoň jednou a opakovalo se až do volby 4. -
Volba 1 → použit
for, protože známe pevný počet opakování (10). -
Volba 2 → použit
while, protože nevíme, kolikrát padne číslo, dokud se neobjeví 6. -
Volba 3 → použit
do…while, protože se musíme zeptat minimálně jednou a opakovat, dokud nezadá „tajne“. -
Volba 4 → ukončí program s hláškou.
-
Neplatná volba → program upozorní uživatele.
Poznámky
prompt()vždy vrací řetězec, proto porovnáváme=== "1",=== "2", …Výsledky (násobilka, kostka) jdou do konzole (
console.log), aby bylo dobře vidět více hodnot.Heslo „tajne“ se kontroluje přesnou shodou.