Innhold:

Denne siden inneholder eksammensoppgaver tilhørende delen «grunnleggende programmering» i faget TDT4105. Prosentverdiene i parantes angir antall poeng (totalt 100) deloppgaven har telt i eksamenssettet. Poengsummen er avhengig av de andre oppgavene i settet, så du kan ikke direkte sammenligne antall poeng og andel arbeid mellom de forskjellige oppgavene nedenfor.

Enkle oppgaver

Dette delkapitlet inneholder oppgaver som sannsynligvis er for enkle til å komme med i nye eksamenssett.

Absoluttverdi (4%)

Absoluttverdien til et tall er alltid et positivt tall: |a| = a dersom a>0 og |a|= -a dersom a<0. Lag en funksjon absoluttverdi(a) som returnerer absoluttverdien til parameter a.

[Hovedeksamen 2003] LF

 

Oppgaver med plotting

Tredjegradsligning (4%)

Gitt tredjegradsligningen f(x) = -x3 + 7x -5, definert for x ∈ [-10,25]. Vis hvordan du vil tegne opp f(x) i en Matlab-graf for det angitte intervallet i x.

[Hovedeksamen 2003 (redigert)] LF

Sortert liste (5%)

a) Anta du har gitt en liste (en-dimensjonal tabell) av verdier Y. Vis hvordan du kan bruke den innebygde funksjonen sort til å sortere Y i stigende rekkefølge.

b) Vis hvordan du kan bruke funksjonen plot, slik at hver verdi i Y plottes med et inkrement på 0.1 langs x-aksen. Altså går Y(1) på 0.1, Y(2) på 0.2, Y(3) på 0.3 og så videre.

[Kontinuasjonseksamen 2003 (redigert)] LF

 

Oppgaver med løkker

Glatting (8%)

Lag en funksjon glatting(Y) som returnerer en tabell Z hvor tabellplass Z(i) skal være gjennomsnittsverdien av Y(i-1)Y(i) og Y(i+1). La endepunktene Z(1) og Z(N) være likY(1) og Y(N) der N=length(Y).

[Hovedeksamen 2003] LF

Nedbør Værnes (13%)

Du har fått en datafil med daglige målinger av nedbør fra Værnes værstasjon. Lag en funksjon som tar en en-dimensjonal tabell X med målinger for alle dagene i et år som innargument (parameter), og returnerer et histogram (en tabell) med den totale nedbøren for hver måned i hvert element. Anta for enkelhets skyld at året har 360 dager, og at det er 30 dager i hver måned. Du skal altså lage en funksjon som returnerer en tabell med tolv elementer, hvor hvert element representerer den totale nedbøren i den angitte måneden. Implementer funksjonen nedbor.

[Kontinuasjonseksamen 2003 (redigert)] LF

SumVektor (4%)

Lag en funksjon sumVektor som tar en vektor av desimaltall som parameter og returnerer summen av tallene i denne vektoren. Ikke bruk den «innebygde» funksjonen sum.

Red.anm.: vektor ≡ liste ≡ en-dimensjonal tabell.

[Hovedeksamen 2004] LF

antPositive (3.75%)

Lag en funksjon antPositive som tar inn en en-dimensjonal tabell (liste) med desimaltall som parameter, og returnerer antallet positive tall i tabellen som et heltall. Verdien 0.0 regnes som positiv.

[Kontinuasjonseksamen 2004 (redigert)] LF

GangerekkeFor (3.75%)

Lag en funksjon som genererer de 10 første tallene i gangerekka for et gitt tall. De 10 første tallene i gangerekka for tallet 4 er feks:

4 8 12 16 20 24 28 32 36 40

Funksjonen skal hete gangerekkeFor. Denne skal ta inn tallet som skal ganges, som parameter, og gi ut den tilsvarende gangerekka som funksjonsverdi.

[Kontinuasjonseksamen 2004]

Nok øvinger (3%)

Anta du har en liste med 11 verdier, hvor 1. verdi inneholder 1 (sann) hvis du har fått øving 1 godkjent, 0 (usann) hvis du ikke har fått den godkjent og tilsvarende for 2. verdi og oppover så langt du har kommet med øvingsopplegget.

Skriv en funksjon nokovinger som returnerer sann hvis du har gjort nok øvinger for å gå opp til eksamen i ITGK 2006, og usann ellers. Husk at du må ha 8 av 11 godkjent, og en av de to auditorieøvingene (nr. 4 og 10) må være blant de godkjente. Du kan bruke ei løkke eller den innebygde funksjonen sum.

[Kontinuasjonseksamen 2004 (redigert)] LF

Hoyeste (4%)

Gitt følgende funksjon for å finne indeksen til det største heltallet i en en-dimensjonal tabell

function svar = hoyeste(tabell)
      x = 0; y = 0;
      for i = 1:length(tabell)
           if (tabell(i) >= x)
                x = tabell(i);
                y = i;
           end
      end
      svar = y;
end

Gi et eksempel på en tabell hvor denne funksjonen returnerer feil svar.

[Hovedeksamen 2005]

Sum2 (4%)

Lag en funksjon sum2 som tar inn to like store en-dimensjonale tabeller A og B av heltall. Funksjonen skal inneholde ei løkke som gjør elementvis sum av A og B og returnerer svaret i en tabell C.

Oppgaven skal besvares uten å bruke innebygde funksjoner sum, max og min.

[Hovedeksamen 2005] LF

Tippekupong (4%)

Skriv en funksjon tippekupong som returnerer 12 tilfeldige tippetegn 'H''U' eller 'B' i en tabell. Du kan bruke ceil(3*rand) for å lage ett tilfeldig heltall x ∈ {1, 2, 3}. Her er programsetninger som kaller funksjonen og skriver ut resultatet:

tabell = tippekupong();

for i = 1:length(tabell)
    disp([num2str(i) '.' tabell(i)]); 
end
 

[Hovedeksamen 2005] LF

Indresum (5%)

Lag en funksjon indresum som summerer alle elementene i de indre radene og kolonnene i en tabell med m rader og n kolonner. Det vil si at radene langs kantene ikke skal være med.

Det indre av en tabell med m rader og n kolonner

[Kontinuasjonseksamen 2005] LF

Bytt2 (5%)

Gitt følgende funksjon for parvis å bytte om to og to tall i en en-dimensjonal tabell A.

function A = bytt2(A)
    n = length(A);
    for i = 1:2:n
        A(i) = A(i+1);
        A(i+1) = A(i);
    end
end
 

Det er to klassiske programmeringsfeil i bytt2, forklar hvilke.

[Kontinuasjonseksamen 2005] LF

Pascal (10%)

Lag en funksjon pascal som tar inn ei liste av heltall og returnerer ei liste hvor hvert element er summen av to naboelementer i inngangslista. I tillegg skal du sette inn ett element med verdi 1 først og ett element med verdi 1 til slutt. Merk at returlista blir ett element lenger enn inngangslista.

Eksempel: inngangsdata [2 3 4] gir resultat [1 5 7 1].

[Kontinuasjonseksamen 2005] LF

Trizero (15%)

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 figur.

Nullstilling av elementer over eller under hoveddiagonalen

[Hovedeksamen 2008] LF

Oppgaver med tracing

Bruk av ceil (2%)

Hva skriver skriptet nedenfor ut på skjermen når det kjøres ?

 % ceil(x) returnerer x rundet opp til nærmeste heltall
svar = 0;
for i = 1 : 5
    svar = ceil( (svar + i) / 2 );
end
disp(svar);
 

[Hovedeksamen 2003]

Bruk av mod (2%)

Hva blir partall([ 1 0 ]) ?

function antall = partall(tabell)
	i = length(tabell);
antall = 0;

% mod(x,y) gir rest ved heltallsdivisjonen x/y
while (i > 0 && mod(tabell(i), 2) == 0)
    antall = antall + 1;
   i = i - 1;
end
end
 

[Hovedeksamen 2003]

Dobbel for-løkke (4%)

Hva blir skrevet ut til skjermen når disse programsetningene kjøres ?

 z = 0;
for x = 1:5
    for y = x:10
        z = z + 1;
    end
end
disp(z);

[Hovedeksamen 2005]

Dobbel for-løkke II (5%)

Hva blir skrevet ut til skjermen når disse programsetningene kjøres ?

z = 0;
for x = 1:4
    for y = x:2*x
        z = z + 1;
    end
end
disp(z);

[Kontinuasjonseksamen 2005]

Mystery (10%)

Hva returnerer kallet mystery(1,5) ?

 function L = mystery(seed, count)
 	if (count < 1)
    	L = [];
    	return;
  	end
  	L(1) = seed;
  	for i = 2:count
    	L(i) = seed*(seed+1);
    	seed = L(i);
  	end
end

[Hovedeksamen 2008]

  • No labels