Læringsmål:
- Switch
- For-løkker
Pensum
- Kap 4.4
- Kap 5.1
a)
I) Hva gjør funksjonen nedenfor?
II) Hva er noe, annet og funky? Gi dem bedre navn.
function something = other( 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 : v = [ 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) En funksjon dukker opp. Den skal returnere 1 om den finner et negativt tall og 0 ellers. Hva er galt med den?
function bool = negative ( list) bool = false; for i = 1 : length(list) if ( list(i) < 0) bool = true; % fant else bool = false; % fant ikke end end end