Læringsmål:

  • Switch
  • For-løkker

Pensum

  • 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. 

function other = something( funky )
    switch ( funky )
        case 1
            other = 'Januar ';
        case 2
            other = 'Februar ';
        case 3
            other = 'Mars ';
        case 4
            other = 'April ';
        case 5
            other = 'Mai ';
        case 6
            other = 'Juni ';
        case 7
            other = 'Juli ';
        case 8
            other = 'August ';
        case 9
            other = 'September ';
        case 10
            other = 'Oktober ';
        case 11
            other = 'November ';
        case 12
            other = 'Desember ';
    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).

 

function res = function ( vector )
	% initialiser noe .
	for i = 1 : length ( vector )
		% gjør noe for hvert element i vektoren
	end
end

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. 

% her er vector en liste med personer .
function counter = count ( vector )
	% før vi har starter å telle så har vi telt 0 personer .
	counter = 0;
	for i = 1 : length ( vector )
		% for hver person vi teller øker vi telleren med 1.
		counter = counter + 1;
	end
% nå er counter lik antall personer i rommet .
end


b) Hva gjør følgende kode? Gi bedre navn til res og fn.

% 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?

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?

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