Majadiliano juu ya Utekelezaji wa Kalenda kwa kutumia JavaScript
Kalenda yetu ni jedwali
lenye nambari kutoka 1 hadi siku ya mwisho ya mwezi.
Tatizo ni kwamba nambari katika jedwali kwenye safu ya kwanza
hazipaswi kuanza kutoka kiini cha kwanza.
Kwa ujumla hii ni dhahiri. Kinachoshindwa kueleweka ni haswa ni kiini gani kinapaswa kuanzia. Hebu tufikirie kwa undani.
Hebu tuchukulie wiki inaanza na Jumatatu, na
ni siku ya sifuri. Katika hali hii, nambari ya siku
ya wiki ya tarehe ya kwanza ya mwezi inalingana na
idadi ya seli tupu kabla yake. Kwa mfano,
Alhamisi itakuwa na nambari 3 na kabla
yake kutakuwa na seli tupu 3.
Tatizo kama hilo litatungoja mwishoni wa jedwali. Huko pia inahitajika kuachwa seli tupu baada ya nambari ya mwisho ya mwezi. Katika hali hii idadi ya seli tupu itakuwa sawa na sita, ambayo inahitaji kupunguzwa nambari ya siku ya wiki ya siku ya mwisho ya mwezi.
Sasa tufikirie jinsi tutakavyounda
jedwali letu. Ni wazi kwamba ni rahisi zaidi
kuwa na safu mbili-dimensional (array), ambapo kila safu-ndogo
itakuwa na 7 elementi (= idadi ya
siku katika wiki). Wakati huo huo, katika safu-ndogo ya kwanza na ya mwisho
sehemu ya elementi inapaswa kuwa tupu.
Algorithmu ya Vitendo
Tutafanye utendaji ambao utatengeneza safu
ya nambari kutoka 1 hadi siku ya mwisho ya mwezi.
Kisha tutafanye utendaji ambao utaongeza
mwanzoni mwa safu idadi inayohitajika ya elementi tupu.
Utendaji sawa unapaswa kuongeza
elementi tupu mwishoni mwa safu.
Baada ya hayo tutapata safu ya mwelekeo mmoja
na idadi ya elementi, inayogawanyika kwa 7.
Badilisha safu hii kuwa safu mbili-dimensional kwa 7
elements katika kila safu-ndogo.
Kisha tutachukua safu hii mbili-dimensional, kuipitia kwa kutumia vitanzi na kuunda jedwali letu.
Algorithmu hii ya vitendo tutatekeleza hatua kwa hatua katika masomo yafuatayo.