Læringsmål:

  • For-løkker
  • If-setninger

Pensum:

  • Kap 4.1 - 4.3
  • Kap 5.4


 

Legg inn funksjonen getCalendar (se vedlegg). Denne krever daysInMonth og getMonthStartDay, se tidligere øvinger. Skuddår må være med i beregningene. Du kan bruke filene daysInMonth.m og isLeapYear.m . 

For å kunne denere funksjonen getMonthStartDay trenger vi først å vite hvilken dag året starter på.

a) Lag funksjonen getYearStartDay. Funksjonen skal ta inn et årstall som parameter og returnere hvilken ukedag året starter på (1 = Mandag, 2 = Tirsdag, ..., 7 = Søndag). 
Tips: Året 1900 startet på en mandag. For hvert år flytter startdagen seg med en dag. Det vil si at 1901 startet på en tirsdag. Hvis året er et skuddår, flytter startdagen i neste år seg med to dager.

 For å teste denne funksjonen kan du kjøre følgende skript:

getYearStartDay (1900) % skal skrive ut 1
getYearStartDay (1901) % skal skrive ut 2
getYearStartDay (1902) % skal skrive ut 3
getYearStartDay (1903) % skal skrive ut 4
getYearStartDay (1904) % skal skrive ut 5
getYearStartDay (1905) % skal skrive ut 7
getYearStartDay (1906) % skal skrive ut 1
getYearStartDay (2012) % skal skrive ut 7


b) Lag funksjonen getMonthStartDay. Den skal ta inn et årstall og et månedsnummer som parameter (1 = Januar, 2 = Februar, ..., 12 = Desember). Funksjonen skal returnere hvilken ukedag måneden starter på (1 = Mandag, 2 = Tirsdag, ..., 7 = Søndag). 

getMonthStartDay (2012 , 0) % skal skrive ut 0
getMonthStartDay (2012 , 1) % skal skrive ut 7
getMonthStartDay (2012 , 2) % skal skrive ut 3
getMonthStartDay (2012 , 3) % skal skrive ut 4
getMonthStartDay (2012 , 4) % skal skrive ut 7
getMonthStartDay (2012 , 5) % skal skrive ut 2
getMonthStartDay (2012 , 6) % skal skrive ut 5
getMonthStartDay (2012 , 7) % skal skrive ut 7
getMonthStartDay (2012 , 8) % skal skrive ut 3
getMonthStartDay (2012 , 9) % skal skrive ut 6
getMonthStartDay (2012 , 10) % skal skrive ut 1
getMonthStartDay (2012 , 11) % skal skrive ut 4
getMonthStartDay (2012 , 12) % skal skrive ut 6
getMonthStartDay (2012 , 13) % skal skrive ut 0