Læringsmål:
- Switch
- For-løkker
Pensum
- Kap PLACEHOLDER
...
- 4.4 - The Switch statement
- 5.1 - The FOR loop
a)
I) Hva gjør funksjonen nedenfor? (Hva skrives ut? Hvordan fungerer funksjonen? Hva er case
, switch
og otherwise
?)
...
II) I koden under kan du se ordene something
, other
og funky
. Hva representerer disse? Endre navnene til å være mer beskrivende for deres funksjon.
Code Block | ||
---|---|---|
| ||
function resother = fn something( argfunky ) switch ( argfunky ) case 1 res other = 'Januar '; case 2 res other = 'Februar '; case 3 res other = 'Mars '; case 4 res other = 'April '; case 5 res other = 'Mai '; case 6 res other = 'Juni '; case 7 res other = 'Juli '; case 8 res other = 'August '; case 9 res other = 'September '; case 10 res other = 'Oktober '; case 11 res other = 'November '; case 12 res other = 'Desember '; otherwise res otherwise other = 'Ikke en gyldig maaned '; end end |
Du får i oppgave å telle antall personer i et rom. Hvordan gjøres dette? En løsning er å be dem stille seg på rekke og for hver person du ser så legger du til én i tellingen helt til alle er telt.
I programmering gjøres dette med vektorer og for-løkker. Det antas at alle personene er lagret i en vektor (liste) og man bruker for-løkken for å iterere gjennom alle personene (i listen).
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Når man løser telleproblemer er det lurt å bruke pekefingeren for å ha kontroll på hvor langt man har kommet. I eksempelet over representerer i-variabelen pekefingeren og man kan si at den peker på det elementet i vektoren man har kommet til. På samme måte som man bruker v(1) for å få tilgang til det første elementet i en vektor med navnet v, kan man bruke i-variabelen for å få tilgang til elementene i vektoren slik: v(i). Siden for-løkken hjelper med å sette verdien til i lik 1,2,3 osv til enden av vektoren, kan man gjøre en handling for hvert element i listen. Feks øke tellevariabelen med 1 for hvert person man ser.
|
b) Hva gjør følgende kode? Gi bedre navn til res og fn.
Code Block | ||
---|---|---|
| ||
% vector er en vektor med tall eks : vector = [ 1 2 3 ];
function res = fn ( vector )
res = 1;
for i = 1 : length ( vector )
res = res*vector(i);
end
end |
c) Funksjonen under skal returnere verdien til det største tallet. Hva er galt?
Code Block | ||
---|---|---|
| ||
function val = maximum (A, B)
if (A > B)
val = A;
elseif (B < A)
val = B;
end
end |
d) Funksjonen under skal returnere 1 om den finner et negativt tall og 0 ellers. Hva er galt med den?
Code Block | ||
---|---|---|
| ||
function bool = hasNegatives(list)
bool = false;
for i = 1 : length(list)
if (list(i) < 0)
bool = true; % fant
else
bool = false; % fant ikke
end
end
end |