Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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
languagenone
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
titleKlikk her for å lære mer om lister og løkker
Code Block
languagenone
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. 

Code Block
languagenone
% 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.

Code Block
languagenone
% 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
languagenone
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
languagenone
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