Diskusia o implementácii kalendára v JavaScripte
Náš kalendár predstavuje tabuľku
s číslami od 1 do posledného dňa mesiaca.
Problém je v tom, že čísla v tabuľke v prvom
rade by nemali ísť od prvej bunky.
To je vo všeobecnosti zrejmé. Nie je zrejmé, z ktorej presne bunky treba začať. Poďme to premyslieť.
Nech týždeň začína pondelkom a
je to nultý deň. V tomto prípade číslo dňa
v týždni prvého dňa mesiaca zodpovedá
počtu prázdnych buniek pred ním. Napríklad,
štvrtok bude mať číslo 3 a pred
ním bude 3 prázdnych buniek.
Podobný problém nás bude čakať na konci tabuľky. Tiež tam treba nechať prázdne bunky po poslednom čísle mesiaca. V tomto prípade počet prázdnych buniek bude rovný šiestim, od ktorých treba odpočítať číslo dňa v týždni posledného dňa mesiaca.
Premýšľajme teraz, ako budeme formovať
našu tabuľku. Je zrejmé, že najvhodnejšie je
mať dvojrozmerné pole, v každom podpoli
ktorého bude po 7 prvkov (= počtu
dní v týždni). Pritom v prvom a poslednom
podpoli časť prvkov musí byť prázdna.
Algoritmus akcií
Urobme funkciu, ktorá vytvorí pole
čísiel od 1 do posledného dňa mesiaca.
Potom urobme funkciu, ktorá pridá na
začiatok poľa potrebný počet prázdnych
prvkov. Podobná funkcia musí pridávať
prázdne prvky na koniec poľa.
Potom dostaneme jednorozmerné pole
s počtom prvkov, ktorý je násobkom 7.
Pretransformujme toto pole na dvojrozmerné po 7
prvkov v podpoli.
Potom zoberieme toto dvojrozmerné pole, prejdeme ho cyklami a vytvoríme našu tabuľku.
Tento algoritmus akcií budeme postupne vykonávať v nasledujúcich lekciách.