You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Kodeforståelsesoppgaver

Oppgave 3.1.1: If-setninger

Hvilken verdi har x, y og z etter at det følgende scriptet har kjørt?

oppgave_1.m
a = 2;
if a + 3 > 4
   x = 1;
end
if a >= 3
  y = 1;
elseif a >= 2
  y = 2;
elseif a >= 1
  y = 3;
end
if a ~= 2
  z = 1;
else
  z = 2;
end

Videoforklaring (5:47)

Svar

x =
     1
y =
     2
z =
     2

Oppgave 3.1.2: Tvilsom bruk av if-setninger

Scriptet under inneholder tre if-setninger. Hva er merkelig med disse?

oppgave_2.m
x = 2;
x == 3;
if true
 x = 4;
end
if x < 0
 y = 1;
elseif x < -1
 y = 2;
elseif x < -2
 y = 3;
else
 y = 4;
end
test = x >= 4;
if test == true
 z = 1;
elseif test == false
 z = 2;
end

Videoforklaring (mm:ss)

Svar

  1. Første if-setning er merkelig fordi uttrykket er konstant true. Antakeligvis skulle uttrykket på linjen over vært brukt som if-setning-uttrykk.
  2. Andre if-setning er merkelig fordi betingelsene som står etter begge elseif er dekket av betingelsen som står etter if. Siden den første betingelsen sjekkes først, vil koden etter elseif aldri kjøre. Antakeligvis skulle rekkefølgen på betingelsene vært reversert, slik at den strengeste kom først.
  3. Siste if-setning har en unødvendig sjekk på om en sannhetsverdi er true. Dette sjekkes uansett av Matlab. Betingelsen etter elseif dekker alle andre tilfeller, og elseif kunne vært byttet ut med else.

Oppgave 3.1.3: Switch-setninger

Hva er variablene x, y og z bundet til etter at følgende script er kjørt?

a = 1;
switch a + 2
    case 1
        x = 1;
    case 1+1
        y = 1;
    case {3, 4, 5}
        z = 1;
    otherwise
        x = 1; y = 2; z = 3;
end

Videoforklaring (mm:ss)

Svar

 x og y er ubundet, z er bundet til verdien 1.

Oppgave 3.1.4: For-løkker gjentar kodeutførelse

Hva gjør denne funksjonen, hvis bat kan være desimaltall og rat kan være et ikke-negativt heltall?

function hat = oppgave_4(bat, rat)
    hat = 1;
    for i = 1:rat
        hat = hat * bat;
    end
end

Videoforklaring (mm:ss)

Svar

 Den regner ut bat opphøyd i rat.

Oppgave 3.1.5: Iterasjonsvariabel i for-løkke

Hva skrives ut hvis vi kjører det følgende scriptet?

for i = 1:3
  if i == 2
    disp('går');
  elseif i == 1
    disp('dette');
  else
    disp('bra');
  end
end

Videoforklaring (mm:ss)

Svar

dette
går
bra

Oppgave 3.1.6: Tilordning til teller-variabel i for-løkke

Hva skrives ut hvis vi kjører det følgende scriptet?

for i = 1:3
  i = i * 2;
  disp(i);
end

Videoforklaring (mm:ss)

Svar

     2
     4
     6

Oppgave x.y.z: Tittel

Oppgavetekst

 

Videoforklaring (mm:ss)

Svar

 

Kodeoppgaver

Oppgave 3.2.1: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave 3.2.2: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave 3.2.3: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave 3.2.4: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave 3.2.5: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave 3.2.6: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave x.y.z: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

  • No labels