Úloha 2 – Použití cyklu while s podmínkou ukončení
Úvod do úlohy
Vedle klasického for cyklu je dalším základním nástrojem v JavaScriptu while cyklus. Ten se používá tehdy, když nevíme přesně, kolikrát se bude blok opakovat, ale máme nějakou podmínku, která rozhoduje o pokračování. while testuje logický výraz na začátku každého průchodu. Díky tomu se může stát, že smyčka se vůbec nespustí, pokud podmínka hned na začátku není splněná. Typickým příkladem je opakované čtení vstupu, čekání na událost nebo postupné procházení dat, dokud je co zpracovávat.
Teorie a principy
-
Tvar zápisu:
-
Vyhodnocování:
-
Před každým průchodem se zkontroluje logický výraz v závorce.
-
Pokud je
true, provede se blok uvnitř{ }. -
Pokud je
false, cyklus se ukončí.
-
-
Nemusí proběhnout ani jednou: Pokud podmínka není splněná už na začátku, kód uvnitř se vůbec nespustí.
-
Prevence nekonečné smyčky: V těle cyklu musí být krok, který časem způsobí, že podmínka přestane platit (např. inkrementace čítače). Bez toho by cyklus běžel donekonečna.
Praktické příklady kódu
1. Jednoduchý čítač s while
Vypíše čísla 0 až 4.
2. Cyklus, který nemusí proběhnout ani jednou
Podmínka start < 5 není splněna, takže tělo cyklu se neprovede ani jednou.
3. Praktické použití – dokud uživatel nezadá správné heslo
Smyčka se opakuje, dokud není splněna podmínka heslo !== spravne.
4. HTML příklad – snižování hodnoty do nuly
Typické chyby / záludnosti
-
Zapomenutý krok v těle cyklu – pokud nezměníte proměnnou z podmínky, cyklus nikdy neskončí (nekonečná smyčka).
-
Špatně zvolená podmínka – pokud je hned
false, kód se vůbec nespustí (někdy úmysl, někdy chyba). -
„O jedno“ chyba – nesprávně nastavené hranice (např.
i <= 5místoi < 5) způsobí jeden průchod navíc. -
Nevhodné použití – pokud dopředu víte přesný počet opakování, je vhodnější
for.whileje ideální pro neznámý počet.
Shrnutí
-
whiletestuje podmínku na začátku každého průchodu. -
Smyčka se spustí pouze, pokud je podmínka
true. Jinak se neprovede vůbec. -
Je nutné zajistit, aby podmínka časem přestala platit → jinak vznikne nekonečná smyčka.
-
Hodí se pro případy, kdy neznáme dopředu počet opakování.
-
Pro pevný počet průchodů je přehlednější použít
for.