Úloha 3 – Použití objektů Date a Math v praxi

Stránky: Moodle ZČU
Kurz: Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný)
Kniha: Úloha 3 – Použití objektů Date a Math v praxi
Vytiskl(a): Nepřihlášený host
Datum: neděle, 18. října 2026, 07.34

Úvod do úlohy

Po zvládnutí základních funkcí, které pracují s čísly a texty, se studenti seznámí s dvojicí velmi důležitých vestavěných objektů – Math a Date. Tyto objekty patří k nejčastěji používaným v JavaScriptu, protože umožňují provádět výpočty, generovat náhodná čísla, získávat aktuální datum a čas nebo s nimi dále programově pracovat.

Díky nim dokáže JavaScript snadno zpracovávat různé matematické a časové operace, aniž by programátor musel psát vlastní složité algoritmy. Oba objekty jsou přístupné automaticky – není potřeba je nijak importovat ani vytvářet zvláštním způsobem.


Objekt Math – matematické operace a konstanty

Objekt Math obsahuje mnoho užitečných funkcí a konstant pro běžné i pokročilejší výpočty. Používá se pro zaokrouhlování, výpočty s mocninami, odmocninami, hodnotami sinusů či kosinů, a také pro generování náhodných čísel.

Na rozdíl od jiných objektů se Math nevytváří pomocí new – prostě se použije přímo:

Přehled nejpoužívanějších metod

Metoda Popis Příklad Výsledek
Math.round(x) Zaokrouhlí číslo na nejbližší celé číslo Math.round(4.6) 5
Math.floor(x) Zaokrouhlí dolů Math.floor(4.9) 4
Math.ceil(x) Zaokrouhlí nahoru Math.ceil(4.1) 5
Math.abs(x) Vrátí absolutní hodnotu čísla Math.abs(-7) 7
Math.pow(a, b) Umocní číslo a na exponent b Math.pow(2, 3) 8
Math.sqrt(x) Vrátí druhou odmocninu Math.sqrt(16) 4
Math.max(a, b, …) Vrátí největší číslo z výčtu Math.max(4, 8, 2) 8
Math.min(a, b, …) Vrátí nejmenší číslo z výčtu Math.min(4, 8, 2) 2
Math.random() Vrátí náhodné číslo mezi 0 (včetně) a 1 (ne včetně) Math.random() např. 0.37

Příklad: Generování náhodného čísla a jeho zaokrouhlení

Zde vidíme kombinaci dvou metod:

  • Math.random() – vytvoří náhodné desetinné číslo,

  • Math.floor() – převede ho na celé číslo dolů, přičtením +1 zajistíme rozsah od 1.


Příklad: Porovnání a zaokrouhlování hodnot


Typické chyby u objektu Math

  1. Chybějící závorky při volání metody
    – Např. Math.random bez závorek pouze odkazuje na funkci, ale nespustí ji.

  2. Zapomenuté zaokrouhlení při generování celých čísel
    – Math.random() vrací desetinné číslo, které je nutné upravit kombinací s Math.floor() nebo Math.round().

  3. Nesprávné pořadí operací
    – Pokud chceme náhodné číslo v rozsahu 1–10, musíme psát Math.floor(Math.random() * 10) + 1, nikoli naopak.


Objekt Date – práce s časem a datem

Objekt Date se používá k získávání a zpracování informací o čase a datu. Lze s ním číst aktuální datum, zjišťovat konkrétní části (den, měsíc, rok, hodinu), ale i porovnávat časy nebo měřit délku trvání událostí.

Vytvoření objektu probíhá pomocí konstruktoru:

Tento objekt obsahuje aktuální systémové datum a čas.


Získávání částí datumu

Metoda Popis Příklad Výsledek (např.)
getFullYear() Rok ted.getFullYear() 2025
getMonth() Měsíc (0–11) ted.getMonth() 9 (říjen)
getDate() Den v měsíci (1–31) ted.getDate() 7
getDay() Den v týdnu (0–6, neděle = 0) ted.getDay() 2
getHours() Hodina ted.getHours() 14
getMinutes() Minuta ted.getMinutes() 30
getSeconds() Sekunda ted.getSeconds() 5

Příklad: Zobrazení aktuálního data


Příklad: Měření času mezi dvěma událostmi

Tento příklad ukazuje, že objekt Date lze použít nejen pro zobrazení, ale i pro měření časových intervalů.


Typické chyby u objektu Date

  1. Záměna indexu měsíce
    – Měsíce se počítají od nuly (0 = leden, 11 = prosinec), proto je často nutné přičíst +1.

  2. Chybné formátování výstupu
    – Metody vracejí čísla, která je třeba převést na text, doplnit nulami nebo znaky (např. 07.10.2025).

  3. Zapomenutý rozdíl mezi getDate() a getDay()
    – getDate() vrací den v měsíci, zatímco getDay() den v týdnu.


Shrnutí

  • Objekt Math slouží k matematickým operacím, zaokrouhlování a generování náhodných čísel.

  • Objekt Date poskytuje informace o aktuálním čase, umožňuje měřit délku událostí a vytvářet formátovaný výstup datumu.

  • Oba objekty jsou součástí základní výbavy JavaScriptu a není třeba je importovat ani vytvářet ručně.

  • Umět je používat znamená umět psát efektivní, přehledný a univerzální kód, který zvládá výpočty i práci s časem bez zbytečných komplikací.

Úloha

Zadání (kontext úlohy):

Vytvoř program, který po spuštění automaticky zjistí aktuální datum a čas pomocí objektu Date a zároveň náhodně vygeneruje „náladu dne“ – např. „šťastný“, „unavený“, „motivovaný“ apod. Výsledek se zobrazí na stránce jako krátký zápis do deníku.


Cíl úlohy:

Procvičit práci s objekty Date (získávání a formátování data a času) a Math (náhodný výběr hodnoty z pole). Studenti se naučí kombinovat oba objekty a vytvářet textový výstup, který spojuje výpočet i aktuální čas.


Vstupní podmínky:

Student pracuje s jedním souborem script.js.
Výstup se zobrazí na stránce pomocí document.write().
Program nevyžaduje vstup od uživatele.


Požadovaný výstup:
  • Skript:

    1. Zjistí aktuální datum a čas (den, měsíc, rok, hodiny, minuty).

    2. Vybere náhodnou náladu ze seznamu (např. 6 různých nálad).

    3. Vypíše text ve tvaru:

      „Zápis ze dne 07.10.2025 v 08:43 – Dnešní nálada: motivovaný.“

  • Hodiny a minuty musí být vždy dvouciferné (např. 08:03).

  • Nálada se vybírá náhodně pomocí Math.random() a Math.floor().


Doplňující pokyny:
  • Seznam nálad vytvoř jako pole např. ["šťastný", "unavený", "motivovaný", "klidný", "napjatý", "nadšený"].

  • Nezapomeň přičíst +1 k měsíci (getMonth() vrací hodnoty 0–11).

  • Použij jednoduché formátování pomocí if pro doplnění nul u času.

Řešení úlohy

Co je zde splněno

  • Použit objekt Date pro získání aktuálního času.

  • Ošetřeno doplnění nul u jednociferných hodnot (if (hodina < 10)).

  • Použito pole s šesti náladami.

  • Náhodný výběr pomocí Math.random() a Math.floor().

  • Výsledek zobrazen přes document.write() ve správném formátu.

Vylepšení oproti začátečnické verzi
  • Přidána pomocná funkce dveCislice() pro elegantní formátování.

  • Použití šipkových funkcí a řetězcové interpolace (template literals).

  • Méně opakujícího se kódu, moderní a přehledný zápis.

  • Stejná logika, ale efektivnější a čistší forma.

 

Poznámky

  • Pro výuku je záměrně použito více kroků, aby bylo vše přehledné.

  • Pokud by se program spustil v jiném časovém pásmu, bude výstup odpovídat lokálnímu času počítače.