Úloha 1 – Validace číselného vstupu

Website: Moodle ZČU
Kurs: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Buch: Úloha 1 – Validace číselného vstupu
Gedruckt von: Nepřihlášený host
Datum: Sonntag, 18. Oktober 2026, 07:34

Úvod do úlohy

Úvodní část této kapitoly představuje základní vestavěné funkce JavaScriptu, které se používají při práci s čísly, texty a uživatelskými vstupy. Jsou to nástroje, které máme k dispozici bez nutnosti importu jakékoliv knihovny – jsou součástí samotného jazyka. Pomáhají nám převádět datové typy, ověřovat hodnoty a vytvářet náhodná čísla.

Díky nim dokážeme například:

  • převádět texty na čísla a čísla na text,

  • kontrolovat, zda hodnota je nebo není číslo,

  • generovat náhodné hodnoty,

  • nebo zaokrouhlovat výsledky výpočtů.

Znalost těchto funkcí je nezbytná, protože tvoří základ pro všechny výpočty, validace a komunikaci s uživatelem.


Teorie a principy

Převody datových typů

JavaScript je dynamicky typovaný jazyk, což znamená, že proměnná může během programu měnit svůj typ. Při práci s uživatelskými vstupy (např. z funkce prompt()) obvykle získáme hodnotu jako text, i když potřebujeme číslo. Proto používáme převodní funkce:

Funkce Účel Příklad Výsledek
Number() Převede hodnotu na číslo Number("25") 25
String() Převede hodnotu na text (řetězec) String(123) "123"
Boolean() Převede hodnotu na logickou hodnotu Boolean(0) false

Poznámka: Při převodu se používají interní pravidla jazyka. Například prázdný řetězec "" se při převodu na číslo změní na 0, ale při převodu na logickou hodnotu se změní na false.


Kontrola hodnot

Když pracujeme s výpočty, je vhodné ověřit, zda daná hodnota je skutečně číslo a zda dává smysl. JavaScript k tomu poskytuje kontrolní funkce:

Funkce Popis Příklad Výsledek
isNaN() Vrátí true, pokud hodnota není číslo isNaN("text") true
isFinite() Vrátí true, pokud hodnota je konečné číslo isFinite(10/0) false

Tyto funkce chrání kód před neplatnými hodnotami, které by mohly způsobit chybu nebo nesmyslný výsledek.


Generování náhodných čísel

Objekt Math poskytuje mnoho matematických funkcí. Pro náhodná čísla se používají zejména dvě:

  • Math.random() – vrátí náhodné desetinné číslo mezi 0 (včetně) a 1 (ne včetně).

  • Math.floor() – zaokrouhlí číslo dolů na nejbližší celé číslo.

Spojením těchto funkcí získáme náhodné celé číslo v určitém rozsahu:


Praktické příklady kódu

Příklad 1: Převody typů

Tento příklad ukazuje, jak snadno lze měnit typy hodnot a jaký výsledek má jejich převod. To je nezbytné například při výpočtech s daty z formulářů.


Příklad 2: Kontrola platnosti vstupu

Funkce isNaN() zde slouží k ověření, zda lze vstup převést na číslo. Pokud ne, zobrazí se varování.


Příklad 3: Generování náhodného čísla

Tento kód simuluje hod kostkou – vygeneruje celé číslo mezi 1 a 6.


Typické chyby a záludnosti

  1. Zapomenutý převod typu
    Funkce prompt() vrací text. Pokud s ním chceme počítat, musíme použít Number().

  2. Záměna == a ===
    Trojité rovná se (===) porovnává i typ, což je bezpečnější a přesnější.

  3. Špatně spočítaný rozsah Math.random()
    Funkce nikdy nevrací hodnotu 1, proto je nutné přičíst +1, pokud chceme horní hranici zahrnout.

  4. Nedorozumění u isNaN()
    Funkce před kontrolou převádí hodnotu na číslo. Například isNaN(" ") vrátí false, protože prázdný řetězec se převede na 0.


Shrnutí

  • Number(), String(), Boolean() – převádějí mezi základními datovými typy.

  • isNaN(), isFinite() – kontrolují platnost číselných hodnot.

  • Math.random() a Math.floor() – vytvářejí a zaokrouhlují náhodná čísla.

  • Při práci s uživatelskými vstupy je nutné ověřovat typ a hodnotu, aby nedocházelo k chybám.

  • Tyto funkce patří k základní výbavě JavaScriptu a jsou nezbytné pro bezpečné a čitelné programování.

Úlohy

Zadání (kontext úlohy):

Uživatel zadá svůj věk do dialogového okna. Program ověří, zda je zadaná hodnota platné číslo a zároveň zda má smysl (např. není záporná nebo příliš vysoká). Poté zobrazí odpovídající zprávu – například „Věk přijat.“ nebo „Neplatný vstup!“.


Cíl úlohy:

Procvičit základní vestavěné funkce JavaScriptu: Number(), isNaN(), isFinite() a jednoduché podmínky if.


Vstupní podmínky:

Student pracuje pouze s jedním souborem script.js.
Vstup se získává pomocí prompt(), výsledek se vypisuje pomocí alert().


Požadovaný výstup:
  • Program se zeptá: „Zadej svůj věk:“

  • Pokud uživatel zadá platné číslo (např. 25), zobrazí se: „Tvůj věk byl přijat: 25 let.“

  • Pokud zadá neplatnou hodnotu (např. text, prázdný vstup, nebo záporné číslo), zobrazí se: „Neplatný vstup! Zadej celé kladné číslo.“

  • Program musí ošetřit i hodnoty jako Infinity nebo NaN.


Doplňující pokyny:
  • Použij Number() pro převod vstupu na číslo.

  • Ověř platnost pomocí isNaN() a isFinite().

  • Zkontroluj, že věk je větší než 0 a menší než 120.

  • Nepoužívej přímé výrazy jako if (!isNaN()), ale piš if (isNaN(...) == false) kvůli čitelnosti.

Řešení úlohy

Co je zde splněno

  • prompt() pro vstup uživatele.

  • Number() pro převod textu na číslo.

  • Ověření pomocí isNaN() a isFinite().

  • Kontrola rozumného rozsahu věku (> 0 a < 120).

  • Použití srozumitelných podmínek if (isNaN(...) == true) místo zkrácených zápisů.

  • alert() pro zobrazení výsledku.

Vylepšení oproti začátečnické verzi
  • Použití Number.isFinite(), které je přísnější než globální isFinite().

  • Ternární operátor pro kratší a přehlednější rozhodování.

  • Využití řetězcové interpolace (template literals).

  • Moderní, ale stále snadno čitelný zápis pro pokročilejší studenty.

 

Poznámky

  • isFinite() zajišťuje, že hodnota není Infinity nebo -Infinity.

  • Při prázdném vstupu prompt() vrátí prázdný řetězec, který se po převodu stane 0, proto je kontrola vek <= 0 nutná.