...
- Funksjoner
- Switch
- For-løkker
Pensum
- 4.1 - The if Statement
- 4.2 - The if-else Statement
- 4.4 - The switch StatementKap 3.7
a) Skriv funksjonen daysInMonth
ved hjelp av en switch-setning. Den skal ta inn et månedsnummer: 1 = Januar, 2 = Februar osv. Funksjonen skal returnere antall dager i måneden. Bidrag fra skuddår neglisjeres. Hvis argumentet er ugyldig skal det returneres 0. Feks gir måned "appelsin" ingen mening og vi ønsker å beskytte oss mot slikt.
Code Block | ||
---|---|---|
| ||
daysInMonth ("'Appelsin"') % skal skrive ut 0 daysInMonth (1) % skal skrive ut 31 daysInMonth (2) % skal skrive ut 28 daysInMonth (3) % skal skrive ut 31 daysInMonth (4) % skal skrive ut 30 daysInMonth (5) % skal skrive ut 31 daysInMonth (6) % skal skrive ut 30 daysInMonth (7) % skal skrive ut 31 daysInMonth (8) % skal skrive ut 31 daysInMonth (9) % skal skrive ut 30 daysInMonth (10) % skal skrive ut 31 daysInMonth (11) % skal skrive ut 30 daysInMonth (12) % skal skrive ut 31 daysInMonth (13) % skal skrive ut 0 daysInMonth (pi) % skal skrive ut 0 |
b) Utvid funksjonen slik at den også tar med hensyn til skuddår. Da må også årstall årstallet også være et argument. Alle årstall som er delelig med 4 er skuddår bortsett fra hvert hundrede år (1800, 1900) om de ikke er delelig med 400 (1600, 2000).
Tips: lag funksjonen isLeapYear
som (year)
som tar inn årstallet og returnerer 0 eller 1 om det er skuddår eller ikke. mod(a,b)
returnerer resten av divisjonen av a på b. Feks: mod(10,3) = 1.
c) Skriv funksjonen listSort som sorterer tallene i en liste. Den skal ta in "list" som parameter og returnere "sortedList". Du har ikke lov å bruke innebygde funksjoner.
Pseudokode: Velger første tall: er det større en det neste tallet? Hvis ja: bytt plass. Gå så til tall to. Større enn neste tall? Ja: bytt plass. Gjenta prosedyre til man har gått gjennom listen uten en eneste bytting.
Denne sorteringsalgoritmen kalles Bubble sort og slike algoritmer er av spesiell interesse innen IT.