Souhrnná úloha – Knihovní asistent

Sitio: Moodle ZČU
Curso: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Libro: Souhrnná úloha – Knihovní asistent
Imprimido por: Nepřihlášený host
Día: domingo, 18 de octubre de 2026, 05:55

Tabla de contenidos

Úloha

Zadání (kontext úlohy):

Vytvoř malý program „Knihovní asistent“, který umožní zpracovat údaje o knize. Pomocí několika funkcí ověří správnost dat, převede délku čtení na hodiny a minuty a vygeneruje krátké shrnutí pro uživatele.


Cíl úlohy:

Procvičit vytváření a volání funkcí, práci s parametry a návratovými hodnotami, přehledné rozdělení kódu do samostatných částí a pochopení rozdílu mezi deklarací a výrazem funkce.


Vstupní podmínky:
  • Student pracuje se soubory index.html a script.js.

  • Data se získávají z uživatelských vstupů pomocí prompt().

  • Program má obsahovat alespoň tři vlastní funkce:

    1. overitNazev(kniha) – zkontroluje, zda název knihy není prázdný.

    2. prevodCasu(minuty) – převede dobu čtení na hodiny a minuty.

    3. vytvorShrnuti(nazev, autor, hodiny, minuty) – vrátí formátovaný text s výsledkem.


Požadovaný výstup:
  1. Načti od uživatele název knihy, autora a odhadovaný čas čtení v minutách.

  2. Pomocí funkce overitNazev() ověř, že název není prázdný.

  3. Pomocí prevodCasu() vypočítej odpovídající hodiny a minuty.

  4. Pomocí vytvorShrnuti() sestav text ve tvaru např.:
    „Kniha Hobit od autora Tolkien zabere přibližně 6 hodin a 15 minut čtení.“

  5. Výsledek vypiš do konzole i do stránky do <div id="vystup">.


Doplňující pokyny:
  • Používej pouze let a const.

  • Nepoužívej šipkové funkce ani ternární operátory.

  • Funkce musí mít návratovou hodnotu (return).

  • Ošetři vstup: pokud uživatel nezadá čas nebo zadá neplatné číslo, použij výchozí hodnotu 0.

  • Funkce deklaruj i přiřaď pomocí výrazu, aby bylo vidět rozdíl v pořadí deklarací (hoisting).

Řešení úlohy

Co je zde splněno

  • Načtení názvu, autora a času v minutách přes prompt().

  • Ověření názvu funkcí overitNazev(nazev) (deklarace – demonstruje hoisting).

  • Převod minut na hodiny a minuty funkcí prevodCasu(minuty) (funkční výraz – nelze volat před přiřazením).

  • Sestavení výsledné věty funkcí vytvorShrnuti(nazev, autor, hodiny, minuty) (funkční výraz, return řetězce).

  • Ošetření neplatného času: při isNaN() se použije 0.

  • Výsledek je vypsán do konzole i do stránky do <div id="vystup">.

  • Dodržena pravidla: pouze let/const, bez šipkových funkcí, každá funkce má návratovou hodnotu.

Poznámky

  • Hoisting: funkce deklarovaná pomocí function overitNazev(...) {} je „zvednuta“ – lze ji volat i před místem definice.
    Funkční výraz const prevodCasu = function(...) {} je k dispozici až po přiřazení.

  • Převod času je zjednodušený; neřeší jazykové varianty (1 hodina / 2 hodiny / 5 hodin). Pokud je to požadováno, lze doplnit zvláštní funkci pro skloňování.