Kalenterin toteutuksen käsittely JavaScriptillä
Kalenterimme on taulukko
numeroiden kanssa 1:stä kuukauden viimeiseen päivään.
Ongelmana on, että numeroiden taulukon ensimmäisellä
rivillä ei saa alkaa ensimmäisestä solusta.
Tämä on yleisesti ottaen ilmeistä. Ei ole kuitenkaan ilmeistä, mistä solusta pitäisi aloittaa. Mietitäänpä asiaa.
Oletetaan, että viikko alkaa maanantaista, ja
se on nollas päivä. Tässä tapauksessa kuukauden ensimmäisen
päivän viikonpäivän numero vastaa
tyhjien solujen määrää ennen sitä. Esimerkiksi,
torstain numero on 3 ja ennen
sitä on 3 tyhjää solua.
Samanlainen ongelma odottaa meitä taulukon lopussa. Myös sinne on jätettävä tyhjiä soluja viimeisen kuukausipäivän jälkeen. Tässä tapauksessa tyhjien solujen määrä on kuusi, josta on vähennettävä viikonpäivän numero kuukauden viimeisenä päivänä.
Mietitään nyt, kuinka muodostamme
taulukkomme. On ilmeisen kätevintä
olla kaksiulotteinen taulukko, jossa jokaisessa alataulukossa
on 7 alkiota (= viikonpäivien
määrä). Samalla ensimmäisessä ja viimeisessä
alataulukoissa osan alkioista on oltava tyhjiä.
Toimintojen algoritmi
Tehdään funktio, joka luo taulukon
numeroiden kanssa 1:stä kuukauden viimeiseen päivään.
Sitten tehdään funktio, joka lisää
taulukon alkuun tarvittavan määrän tyhjiä
alkioita. Vastaavan funktion tulee lisätä
tyhjät alkiot taulukon loppuun.
Tämän jälkeen saamme yksiulotteisen taulukon,
jossa on alkioita, määrältään 7:llä jaollinen.
Muunnamme tämän taulukon kaksiulotteiseksi, 7
alkiota per alataulukko.
Otamme sitten tämän kaksiulotteisen taulukon, käymme sen läpi silmukoilla ja muodostamme taulukkomme.
Toteutamme tämän toiminta-algoritmin vaiheittain seuraavissa oppitunneissa.