Souhrnná úloha – Validace objednávky

Sitio: Moodle ZČU
Curso: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Libro: Souhrnná úloha – Validace objednávky
Imprimido por: Guest user
Día: domingo, 18 de octubre de 2026, 04:55

Úloha - Validace objednávky

Zadání (kontext úlohy)

Máš e-shop a potřebuješ ověřit, zda lze dokončit objednávku.
Při validaci je třeba porovnávat různé hodnoty (čísla, řetězce, booleany).
Původní kód je nepřehledný, místy špatně používá porovnávací operátory a ignoruje rozdíly mezi == a ===.
Tvým cílem je opravit a zpřehlednit podmínky.


Cíl úlohy

Procvičíš si:

  • základní porovnávání hodnot (===, !==),

  • práci s dynamickým typováním a rozdíly mezi == a ===,

  • relační operátory (<, >, <=, >=),

  • refaktoring složených podmínek,

  • dokumentaci a optimalizaci výrazů.


Vstupní podmínky
  • Pracuješ pouze se souborem script.js.

  • Platí tato pravidla pro dokončení objednávky:

    1. Košík musí obsahovat alespoň 1 položku (pocetPolozek > 0).

    2. Celková cena musí být větší než 0.

    3. Pokud je zákazník registrovaný (registrovany === true), stačí libovolná cena.

    4. Pokud není registrovaný, cena musí být alespoň 300 Kč.

    5. Věk zákazníka musí být alespoň 18 let.

    6. Globální nastavení nesmí obsahovat zakazObjednavky: true.


Požadovaný výstup
  • Oprav podmínku tak, aby respektovala všechna výše uvedená pravidla.

  • Používej === místo ==.

  • Rozděl složitý výraz do pojmenovaných mezivýsledků (např. maDostatekPolozek, maDostatecnouCenu).

  • Přidej komentáře vysvětlující účel jednotlivých částí.

  • Použij guard clauses, kde to dává smysl.


Doplňující pokyny
  • Zajisti, aby se správně vyhodnocovalo i v případě, že některé hodnoty jsou null nebo jiného typu.

  • Nepiš celé podmínky do jednoho řádku – dbej na čitelnost a srozumitelnou strukturu kódu.


Soubor

Odkaz na js soubor

Řešení úlohy - Validace objednávky

Co je zde splněno

  • Použito striktní porovnání (===, !==) a bezpečné konverze čísel (toNumber, Number.isFinite) pro správné vyhodnocení i při řetězcových vstupech.

  • Refaktor složené podmínky do pojmenovaných mezivýsledků: maDostatekPolozek, maKladnouCenu, splnujeCenovyLimitNereg, jePlnolety, neniZakazObjednavky.

  • Aplikovány guard clauses pro časné ukončení a vyšší čitelnost.

  • Respektována pravidla: počet položek > 0, cena > 0, neregistrovaný ≥ 300 Kč, věk ≥ 18, žádný globální zákaz.

  • Ošetřeny případy null/špatný typ (short-circuit a kontrola finiteness), aby se předešlo chybám při čtení vlastností a porovnávání typů.

Poznámky

  • Pravidlo „registrovanému stačí libovolná cena“ je interpretováno ve vazbě na základní podmínku „cena > 0“: registrovaný nepotřebuje limit 300 Kč, ale stále musí mít kladnou cenu (> 0).

  • Pokud by se měla připustit i nulová cena pro registrované (např. věrnostní 100% sleva), upravte maKladnouCenu na cena >= 0 pouze pro registrované.