Kodeforståelsesoppgaver
Oppgave 8.1.1: Enkel structbruk
Hvilken verdi har S etter at vi kjører scriptet
oppgave_1.m
?oppgave_1.m
S = struct('antall', 5, 'pris', 100, 'navn', 'Biff'); S.totalpris = S.antall * S.pris; S.plass = struct('reol', 3,'hylle', 4); S.plass.avstand = sqrt(S.plass.reol^2 + S.plass.hylle^2);
Videoforklaring (8:43)
Svar
Oppgave 8.1.2: Utskrift til fil
Hva blir innholdet i filene «oppgave_2_fil_1.txt» og «oppgave_2_fil_2.txt» hvis vi kjører scriptet
oppgave_2.m
? Anta at du har skrivetilgang til begge filene.oppgave_2.m
fd = fopen('oppgave_2_fil_1.txt', 'w'); fprintf(fd, 'Linje 2\n'); fclose(fd); fd = fopen('oppgave_2_fil_2.txt', 'a'); fprintf(fd, 'Linje 2\n'); fclose(fd);
oppgave_2_fil_1.txt
Linje 1
oppgave_2_fil_2.txt
Linje 1
Videoforklaring (9:18)
Svar
Oppgave 8.1.3: Formattert utskrift til fil
Hva blir innholdet i filene «oppgave_3_fil.txt» hvis vi kjører scriptet
oppgave_3.m
? Anta at du har skrivetilgang til alle filer, og rettighet til å lage nye filer.oppgave_3.m
fd = fopen('oppgave_3_fil.txt', 'w'); fprintf(fd, 'Katten %s spiste %d fisk på %.2f kg\n', 'Mons', 3, 0.75); fclose(fd);
Videoforklaring (4:34)
Svar
Oppgave 8.1.4: Lesing fra en fil
Hva skrives ut til skjerm hvis vi kjører scriptet
oppgave_4.m
? Anta at du har lesetilgang til alle filer.oppgave_4.m
fd = fopen('oppgave_4_fil.txt', 'r'); linje1 = fgetl(fd); linje2 = fgets(fd); fprintf('Lengde 1: %d, lengde 2: %d\n', length(linje1), length(linje2));
oppgave_4_fil.txt
Linje 1 Linje 2 Linje 3
Videoforklaring (10:34)
Svar
Oppgave 8.1.5: Rekursjon
Hva skrives ut til skjerm hvis vi kjører scriptet
oppgave_5.m
?oppgave_5.m
f(3) g(3)
f.m
function f(n) if n == 0 fprintf('BOOOM!\n'); else f(n-1); fprintf('%d...\n', n); end end
g.m
function g(n) if n == 0 fprintf('BOOOM!\n'); else fprintf('%d...\n', n); g(n-1); end end
Videoforklaring (14:56)
Svar
Kodeoppgaver
Oppgave 8.2.1: Struct-struktur
Du har begynt på et prosjekt i et fag hvor du skal analysere forekomsten av Pokémon Go-monstre i Trondheim. I prosjektet er et område av Trondheim delt i et rutenett, og prosjektdeltakerne loggfører alle gangene de støter på forskjellige Pokémon. Disse dataene lastes opp til en server, hvor de behandles av et program skrevet i Matlab.
Du skal jobbe med å utvide analysekoden, som er skrevet av tidligere prosjektstudenter. Du irriterer deg umiddelbart over at dataene i programmet er samlet i cellelister, som illustrert under. Du bestemmer deg for å gjøre noe med saken.
a) Lag en funksjon som konverterer data for én forekomst fra en celleliste til en struct med et passende format.
b) Deler av programmet jobber på samlinger av forekomstdata. Lag en funksjon som konverterer en cellematrise med forekomstdata til et passende alternativ som bruker structs. Scriptet
opprett_pokemon.m
lager en cellematrise du kan teste funksjonen med.Utdelt kode
Videoforklaring (21:34)
Del 1 (7:30) | Del 2 (4:55) | Del 3 (9:09) |
---|---|---|
Oppgaveintroduksjon, og løsning av oppgave a). | Generelt om valgene man har for å bruke structs til å | Løsning av oppgave b). |
Løsningsforslag
Oppgave 8.2.2: Skriv dagbok
Du ønsker å digitalisere din dagbokskriving, og har funnet ut at du vil lage et Matlab-program for å la deg skrive inn hva som helst og som lagrer det du skriver i en fil. Du vil også at programmet automatisk skal markere hvilken dag hver del av dagboka er skrevet. For å gjøre dette, bestemmer du deg for å lage funksjonen
skriv_dagbok(filnavn)
, som- Skriver dagens dato til filen, omringet av to linjer med bindestreker slik at det blir et tydelig skille i filen.
- Skriver alt brukeren skriver inn til dagboka.
Det er viktig at funksjonen ikke sletter det som står i dagboka fra før, men legger det du skriver til slutt i filen. Hvis brukeren skriver inn en tom linje, skal funksjonen avslutte.
Tips: bruk date()
-funksjonen for å få dagens dato som en tekststreng.
Videoforklaring (13:40)
Del 1 (8:14) | Del 2 (5:26) |
---|---|
Oppgaveintroduksjon, og kode for å håndtere skriving av noe til fil. | Kode for å produsere teksten som skal skrives til filen. |
Løsningsforslag
Oppgave 8.2.3: Filanalyse
Lag en funksjon
analyser_fil(filnavn)
, som:- Skriver filens innhold til skjerm, linje for linje.
- Skriver til skjerm hvor mange linjer det er i filen.
- Skriver til skjerm hvor mange ord det er i filen.
Du kan anta at ord er adskilt av mellomrom i filen.
Videoforklaring (14:30)
Del 1 (7:28) | Del 2 (7:02) |
---|---|
Oppgaveintroduksjon, og kode for å håndtere lesing av tekst fra fil. | Kode som behandler teksten lest inn fra fil. |