Kodeforståelsesoppgaver (total videotid: 52:09)
Oppgave 3.1.1: If-setninger
Hvilken verdi har x, y og z etter at det følgende scriptet har kjørt?
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
Oppgave 3.1.2: Tvilsom bruk av if-setninger
Scriptet under inneholder tre if-setninger. Hva er merkelig med disse?
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 (9:02)
Svar
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 (4:06)
Svar
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 (9:54)
Svar
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 (6:11)
Svar
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 (8:32)
Svar
Oppgave 3.1.7: For-løkke med matriser
Hva skrives ut hvis vi kjører det følgende scriptet?
s = 0; M = [ 1, 2, 3; 4, 5, 6; 7, 8, 9 ]; for c = M for e = c s = s + e; end end disp(s);
Videoforklaring (8:37)
Svar
Kodeoppgaver
Oppgave 3.2.1: Skriv ut velkomstmelding
Du ønsker å lage et Matlab-program som kan hilse deg velkommen når du starter Matlab. Du er svært nøye på at korrekt hilsen brukes til rett tid på dagen, og har laget følgende oversikt over hva du ønsker at Matlab-programmet ditt skal si.
Du vet at du kan avgjøre hvilken time på dagen det er ved hjelp av Matlab-uttrykket hour(datetime('now'))
, og hvilket minutt det er med Matlab-uttrykket minute(datetime('now'))
.
Lag et script som skriver ut en hilsen som passer nåværende klokkeslett når det kjøres.
Videoforklaring (12:45)
Løsningsforslag
Oppgave 3.2.2: Konverter fra romersiffer
Lag en funksjon som kan konvertere fra et romersiffer til den tilsvarende tallverdien. Konverteringstabellen er oppgitt under. Avslutt med en feilmelding hvis et ugyldig romersiffer gis inn.
Videoforklaring (5:38)
Løsningsforslag
Oppgave 3.2.3: Skreddersydd Fahrenheit-oversikt
Du har tidligere laget et script som produserer en oversikt over hvilke Fahrenheit-verdier som tilsvarer en rekke Celsius-referanseverdier. Du vil nå dele dette scriptet med dine venner, og de har ytret et ønske om å kunne bruke andre referanseverdier enn de du har brukt.
Utvid scriptet til å spørre om brukeren ønsker å skrive inn egne referanseverdier, eller om de eksisterende skal brukes. Hvis brukeren ønsker å skrive inn egne verdier, skal scriptet først spørre om hvor mange verdier brukeren vil skrive inn. Deretter skal alle verdiene leses inn, og fortløpende konverteres til Fahrenheit og skrives til skjerm.
Utdelt kode
Videoforklaring (14:58)
Løsningsforslag
Oppgave 3.2.4: Finn elementposisjon i vektor
Lag en funksjon som som tar inn en vektor og en elementverdi, og som returnerer første posisjon hvor vektoren inneholder elementverdien. Hvis vektoren ikke innholder elementverdien, skal funksjonen returnere 0.
Videoforklaring (11:48)
Løsningsforslag
Oppgave 3.2.5: Konverter fra romertall
I romerriket brukte man bokstavene M, D, C, L, X, V og I til å representere tall, som angitt i tabellen til høyre. En rekke med slike bokstaver representerte summen av bokstavverdiene – for eksempel ville strengen MLX vært tallet 1060. Hvis en bokstav med en lavere verdi kommer før en bokstav med høyere verdi, skal den laveste verdien i stedet trekkes fra den høyeste verdien – for eksempel er strengen IV tallet 4, strengen XC verdien 90, og strengen MCMXCIX verdien 1999.
Lag en funksjon som konverter fra et romertall til tallverdien det representerer. Du kan anta at konverteringsfunksjonen fra_romersiffer er tilgjengelig for å konvertere fra en enkelt romerbokstav til tilsvarende tallverdi.
Utdelt kode
Videoforklaring (11:37)
Løsningsforslag
Oppgave 3.2.6: Eksamensoppgave
Skriv en funksjon trizero
som tar inn en tabell A
med like mange rader som kolonner og et flagg (logisk variabel) upper
. Hvis upper == true
skal alle elementene over hoveddiagonalen nullstilles og hvis upper == false
skal alle elementene under hoveddiagonalen nullstilles. Resten av elementene skal beholde sin opprinnelige verdi. Hele tabellen skal returneres etter nullstilling av de angitte elementer. Returner en tom tabell hvis antall rader ikke er lik antall kolonner i inngangstabellen A
. Se også figur 1.
Videoforklaring (mm:ss)
Løsningsforslag
Oppgave x.y.z: Tittel
Utdelt kode
Videoforklaring (mm:ss)