Úloha 3 – Cyklus s minimálně jedním průchodem
| Site: | Moodle ZČU |
| Course: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Book: | Úloha 3 – Cyklus s minimálně jedním průchodem |
| Printed by: | Nepřihlášený host |
| Date: | Sunday, 18 October 2026, 5:55 AM |
Úvod do úlohy
Vedle cyklu while, který kontroluje podmínku hned na začátku, existuje v JavaScriptu také do…while cyklus. Jeho hlavní rozdíl spočívá v tom, že blok kódu se vždy provede alespoň jednou, a teprve potom se vyhodnocuje podmínka pro pokračování. Tento přístup je užitečný v situacích, kdy určitý krok musí proběhnout minimálně jednou – typicky získání uživatelského vstupu, zobrazení nabídky nebo inicializace výchozí hodnoty.
Teorie a principy
-
Zápis cyklu
do…while:
-
Průběh:
-
Nejprve se provede blok uvnitř
{ }. -
Poté se vyhodnotí logická podmínka.
-
Pokud je podmínka
true, cyklus běží znovu. Pokud jefalse, cyklus končí.
-
-
Rozdíl oproti
while:-
whilemůže proběhnout 0×, pokud podmínka není splněna hned na začátku. -
do…whileproběhne alespoň 1×, bez ohledu na počáteční hodnotu podmínky.
-
-
Použití:
-
získání vstupu od uživatele (musí být dotázán alespoň jednou),
-
inicializace, která se musí provést vždy,
-
opakování činnosti, dokud uživatel nechce skončit.
-
Praktické příklady kódu
1. Jednoduchý čítač s do…while
Tento kód vypíše čísla 0 až 4, podobně jako while, ale i kdyby byl i rovnou větší než 5, blok by se spustil aspoň jednou.
2. Cyklus, který proběhne i při nesplněné podmínce
I když podmínka x < 5 je hned na začátku false, blok se přesto provede jednou.
3. Praktické použití – zadávání hesla
Uživatel je vyzván k zadání hesla minimálně jednou, a pokud se splete, cyklus se opakuje.
4. HTML příklad – dotaz na číslo
Zde se zaručí, že uživatel zadá číslo minimálně jednou, a cyklus se ukončí teprve při splnění podmínky.
Typické chyby / záludnosti
-
Zapomenutá změna podmínky – pokud se v těle cyklu neprovádí krok k jejímu splnění, vznikne nekonečná smyčka.
-
Nejasnost v rozdílu od
while– studenti si často neuvědomí, žedo…whileproběhne vždy aspoň jednou. -
Nevhodné použití – pokud má cyklus možnost neproběhnout vůbec, je lepší použít obyčejný
while. -
Práce s typy – pozor při vyhodnocování vstupů (řetězce vs. čísla).
Shrnutí
-
do…whilese liší odwhiletím, že blok proběhne vždy alespoň jednou. -
Po provedení bloku se vyhodnocuje podmínka, a podle ní cyklus buď pokračuje, nebo končí.
-
Hodí se pro situace, kdy akce musí nastat minimálně jednou (zadání vstupu, zobrazení nabídky).
-
Důležité je vždy zajistit, aby podmínka mohla přestat platit → jinak vznikne nekonečný cyklus.
Úloha
Zadání (kontext úlohy):
Napiš program, který zobrazí jednoduché textové menu s možnostmi:
1 – zobrazí pozdrav
2 – vypíše součet čísel od 1 do 5
3 – ukončí program
Menu se musí uživateli ukázat vždy minimálně jednou a opakuje se tak dlouho, dokud nezvolí možnost 3.
Cíl úlohy:
Procvičit cyklus do…while s minimálně jedním průchodem, práci s prompt, větvení pomocí if–else a ukončovací podmínku.
Vstupní podmínky:
-
Student pracuje pouze s nově vytvořeným souborem
script.js. -
Použij
prompt()pro výběr volby. -
Převáděj vstup na číslo pomocí
Number().
Požadovaný výstup:
-
Pokud uživatel zadá 1 →
alert("Ahoj! Vítej v programu.") -
Pokud zadá 2 →
alert("Součet 1+2+3+4+5 = 15") -
Pokud zadá 3 →
alert("Program ukončen.")a cyklus skončí -
Pokud zadá cokoli jiného →
alert("Neplatná volba, zkus to znovu.")
Doplňující pokyny:
-
Cyklus piš ve tvaru
do { ... } while (podminka). -
Podmínkou bude, že volba není 3.
-
Uvnitř bloku použij
if–else if–elsena větvení. -
Program se nikdy nezastaví „sám“ – zastaví se až volbou 3.
Řešení úlohy
Co je zde splněno
- Použit cyklus
do…while, který se spustí vždy minimálně jednou.
-
Použity šablonové řetězce (template literals) pro čistší zápis menu i výpisu výsledku.
-
Hodnota z
prompt()převedena na číslo pomocíNumber(). -
Větvení pomocí
if – else if – else. -
Cyklus se opakuje, dokud volba není rovna
3. -
Po volbě
3se zobrazí hláška a program končí.
Poznámky
Díky
do…whilese menu vždy ukáže alespoň jednou.Neplatná volba je ošetřena a uživatel se vrátí k menu.