Læringsmål:
...
- For-løkker
Pensum:
- Kap 5.4
Code Block | ||
---|---|---|
| ||
Oktober 2014 ma ti on to fr lo so 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
...
- Månedsnavn og årstall. Første rad.
- Dagsnavn. Andre rad.
- Datoer for alle dager på riktig plass. Tredje til syvende rad.
a) Andre rad er en enkel iterasjon gjennom en liste av navn på dagene. De siste radene er mer bry: Disse utgjør en 6x7 matrise hvor radene er uker og kolonnene er ukedager. Denne matrisen kan se slik ut:
Code Block | ||
---|---|---|
| ||
month = 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 0 0 0 0 |
Tallet 0 representerer dager som ikke finnes i måneden.
Neste steg er å definere en funksjon som lager denne matrisen. Det gjør følgende funksjon:
Code Block | ||
---|---|---|
| ||
function calendar = getCalendar ( year , month ) startDay = getMonthStartDay ( year , month ); numDays = daysInMonth ( year , month ); calendar = zeros ( 6, 7 ); date = 0; for week = 1:6 for day = 1:7 if ( date == 0 ) if ( week == 1 && day == startDay ) date = 1; end else if ( date < numDays ) date = date + 1; else date = 0; end end calendar (week , day ) = date ; end end end |
Her returnerer funksjonen daysInMonth antall dager i måned, getMonthStartDay returnerer nummeret på den første ukedagen i måneden (1 = Mandag, 2 = Tirsdag, ..., 7 = Søndag). I eksempelet med oktober 2014, returnerer daysInMonth 31 og getMonthStartDay 3.
a)
Gitt startDay = 7 og numDays 30. Gå gjennom funksjonen over og skriv ned verdien til variablene week, day og date for hver iterasjon i den indre for løkken.
Iterasjon | week | day | date |
---|---|---|---|
1 | 1 ... ... ... | 1 ... ... ... | 0 ... ... ... |