Ú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

  • for cyklus

    • 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ě.

  • while cyklus

    • 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…while cyklus

    • 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 s for př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ř. while pro pevně známý počet opakování → kód je zbytečně dlouhý a hůře se čte.

  • Zapomenutá změna podmínky v while a do…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 let a const.

  • Pro volbu použij prompt().

  • Každou volbu obsluž pomocí if–else nebo switch.


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 prompt vrací ř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.