Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Like dokumenter
Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python LØSNINGSFORSLAG

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python LØSNINGSFORSLAG

TDT4110 IT Grunnkurs Høst 2015

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python

Eksamensforelesning TDT4105

Binærfiler versus tekstfiler

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

Løsningsforslag for øving 9 TDT4105 IT Grunnkurs

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

UNIVERSITETET I OSLO

Fasit, Oppgave 1. 1b 2b 3a 4d 5a 6a 7c 8a 9d 10c 11a 12d 13d 14b 15c 16b 17b 18d 19c 20a. Oppgavenr A B C D. 1.1 x. 1.2 x. 1.3 x. 1.4 x. 1.5 x. 1.

Løsningsskisse til avsluttende eksamen i TDT4105 Informasjonsteknologi, grunnkurs Torsdag 8. desember :00 13:00

UNIVERSITETET I OSLO

Løsningsforslag 2017 eksamen

UNIVERSITETET I OSLO

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

TDT4110 IT Grunnkurs Høst 2016

TDT4105 IT Grunnkurs Høst 2016

TDT4105 IT Grunnkurs Høst 2014

Øvingsforelesning 5 Python (TDT4110)

Hangman. Level. Introduksjon

TDT4110 IT Grunnkurs Høst 2012

Øvingsforelesning 5 Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2016

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

TDT4105 Informasjonsteknologi, grunnkurs

IN2010: Algoritmer og Datastrukturer Series 2

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

TDT4105 IT Grunnkurs Høst 2016

Oppsummering fra sist

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

TDT4100 Objektorientert programmering

TDT4110 IT Grunnkurs Høst 2016

Kondisjonstest. Algoritmer og datastrukturer. Python-oppgaver. Onsdag 6. oktober Her er noen repetisjonsoppgaver i Python.

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

TDT4110 IT Grunnkurs Høst 2017

Norsk informatikkolympiade runde

UNIVERSITETET I OSLO

Eksamensoppgaver 2014

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

HØGSKOLEN I SØR-TRØNDELAG

TDT4105 IT Grunnkurs Høst 2017

Datastrukturer (kap. 8)

Læringsmål og pensum. Oversikt

Norsk informatikkolympiade runde

Høgskoleni østfold EKSAMEN

UNIVERSITETET I OSLO

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Avsluttende eksamen i TDT JSP Informasjonsteknologi, grunnkurs Torsdag 8. desember :00 13:00

TDT4105 Informasjonsteknologi, grunnkurs Eksempler

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Øvingsforelesning TDT4105 Matlab

Læringsmål og pensum. if (be): else (not_to_be):

Finne ut om en løsning er helt riktig og korrigere ved behov

Øvingsforelesning TDT4105 Matlab

Øvingsforelesning 1 Python (TDT4110)

Palindrom - iterativt

Eksamensoppgave i TDT4105 Informasjonsteknologi - grunnkurs

TDT4102 Prosedyreog objektorientert programmering Vår 2016

O-notasjon og kompleksitet

Dynamic Programming Longest Common Subsequence. Class 27

MAT1030 Diskret Matematikk

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Kontinuasjonseksamen i TDT4105 Informasjonsteknologi - grunnkurs Matlab

Norsk informatikkolympiade runde

TDT4110 IT Grunnkurs Høst 2015

IN uke 1. Komme i gang med programmering

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

Finne ut om en løsning er helt riktig og korrigere ved behov

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Noen innebygde funksjoner - Vektorisering

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Eksamensoppgave i TDT4105 Informasjonsteknologi, grunnkurs kontinuasjonseksamen

Løsningsskisse til kontinuasjonseksamen i TDT4105 Informasjonsteknologi, grunnkurs Onsdag 10. august

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

Noen innebygde funksjoner - Vektorisering

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

Web-programmering med JSP Løsningsforslag leksjon 3

TDT4105 Informasjonsteknologi, grunnkurs

MAT1030 Diskret matematikk

Kontinuasjonseksamen i TDT4105 Informasjonsteknologi - grunnkurs

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Transkript:

Side 1 av 8 Institutt for datateknikk og informasjonsvitenskap Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG Løsningsforslag for følge oppgaver: Oppgave 1: Flervalgsoppgave (25%) Oppgave 2: Kodeforståelse (15%) Oppgave 3: Programmering reisetid (20%) Oppgave 4: Programmering sensur (40%) Svarark for hurtigsensur Oppgave 1: Flervalgsoppgave (25%) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 b b c d b a c a b c b d a c b a a d a a Oppgave 2 Kodeforståelse (15%) Oppgave 2a (5%) Hva blir skrevet ut til skjerm når du kjører koden som vist under? (3 %) JULENISSEN Forklar med en setning hva funksjonen mystery gjør (2 %) Funksjonen plukker ut annenhver bokstav fra de to listene og starter med liste B. Oppgave 2b (5%) Hva blir skrevet ut til skjerm når du kjører koden som vist under? (3 %) 64 Forklar med en setning hva funksjonen compute gjør (2 %) Rekursiv funksjon som multipliserer et tall med 2 ganger tallet så lenge tallet er mindre enn 10, 1*2*4*8 = 64.

Side 2 av 8 Oppgave 2c (5%) Hva blir skrevet ut til skjerm når du kjører koden som vist under? (3 %) [8, 7, 6, 5, 3, 2, 1] Forklar med en setning hva funksjonen a gjør (2 %) Sorterer en liste med tall i synke rekkefølge («selection sort med bytting»). Oppgave 3 Programmering reisetid (20%) Oppgave 3a (5%) Lag funksjonen readtime function res = readtime() h = input('enter hour: ') ; while h<0 h>23 h~=fix(h) fprintf('- ERROR: Hour must be between 0 and 23!\n'); h = input('enter hour: ') ; m = input('enter minute: ') ; while m<0 m>59 m~=fix(m) fprintf('- ERROR: Minute must be between 0 and 59!\n'); m = input('enter minute: ') ; s = input('enter second: ') ; while s<0 s>59 s~=fix(s) fprintf('- ERROR: Second must be between 0 and 59!\n'); s = input('enter second: ') ; res = [ h, m, s ] ; Oppgave 3b (5%) Lag funksjonen converttime function ret = converttime(verdi, opt) if strcmp(opt, 'time') h = floor(verdi/3600) ; m = floor((verdi-h*3600)/60) ; s = verdi - h*3600 - m * 60 ; ret = [ h, m, s] ; elseif strcmp(opt, 'sec') ret = (verdi(1)*60 + verdi(2))*60 + verdi(3) ; else error('incorrect mode') ; %Extra check

Side 3 av 8 Oppgave 3c (5%) Lag funksjonen traveltime function traveltime() fprintf('give departure time in hour, minute and second:\n'); starttime = converttime(readtime(), 'sec') ; fprintf('give arrival time in hour, minute and second:\n'); Time = converttime(readtime(), 'sec') ; while (Time < starttime) fprintf('- ERROR: Arrival time must be later than Departure time\n') ; fprintf('give arrival time in hour, minute and second:\n'); Time = converttime(readtime(), 'sec') ; travtime = converttime(time-starttime, 'time'); fprintf('traveltime: %d hr, %d min, %d sec\n',... travtime(1), travtime(2), travtime(3)); Oppgave 3d (5%) Lag funksjonen analyzebusroutes function analyzebusroutes( busses ) korteste.tid = 24*60*60 ; lengste.tid = 0 ; for i=1:size(busses,1) diff = (busses(i,4)-busses(i,2))*60 + busses(i,5)-busses(i,3); if diff>lengste.tid lengste.tid = diff ; lengste.nr = busses(i,1) ; if diff<korteste.tid korteste.tid = diff ; korteste.nr = busses(i,1) ; tid = converttime(lengste.tid*60, 'time') ; fprintf('the slowest bus route is bus nr. %d and it takes %d hour, %d min.\n',... lengste.nr, tid(1), tid(2)) ; tid = converttime(korteste.tid*60, 'time') ; fprintf('the fastest bus route is bus nr. %d and it takes %d hour, %d min.\n',... korteste.nr, tid(1), tid(2)) ; Oppgave 4 Programmering Sensur (40%) Oppgave 4 a) (5%) Lag starten på hovedprogrammet (ikke funksjon) NTNU_scores = [89 77 65 53 41 0] NTNU_letters = {'A', 'B', 'C', 'D', 'E', 'F'} TASKS = {'1', '2a','2b','2c', '3a','3b','3c','3d',... '4a','4b','4c','4d','4e','4f','4g','4h'} WEIGHTS = [25, 5,5,5, 5,5,5,5, 5,5,5,5,5,5,5,5]

Side 4 av 8 Oppgave 4 b) (5%) Lag funksjonen makearray function array = makearray( numbers, texts ) % Make a data-structure (cell array) from numbers and characters array = cell( length(numbers), 2 ); for i=1:length(numbers) array{i,1} = numbers(i); array{i,2} = texts{i}; %for Oppgave 4 c) (5%) Lag funksjonen computescore function total = computescore( points, weight ) total = 0; for i=1:length( points ) total = total + points(i)/10 * weight(i); %for %Alternative: Vectorized total = sum( points/10.* weight ); %function Oppgave 4 d) (5%) Skriv en funksjon score2letter function letter = score2letter( score, limitletters ) %letter=''; %Don't return anything if the input is not >0 %assuming limitletters is sorted in descing score order: for i=1:length(limitletters) if score >= limitletters{i,1} letter = limitletters{i,2}; return; %or break %function Oppgave 4 e) (5%) Skriv en funksjon addcandidate function addcandidate( candidatenr, scores, weight ) fid = fopen('eksamen.txt','a'); if fid<0 error('could not open the file eksamen.txt\n'); text = sprintf('%d\t', candidatenr); for i=1:length(scores) text = sprintf('%s\t%d ', text, scores(i)); fprintf( fid, '%s\t%.1f\n', text, computescore( scores, weight ) ); fclose(fid); %function

Side 5 av 8 Oppgave 4 f) (5%) Skriv en funksjon readresultfile function res = readresultfile(filename) %Convert a file-table of strings to a table of int fid = fopen(filename,'r'); if fid==-1 error( Could not open the file' ) ; res = [] ; while ~feof(fid) line = fgetl(fid); res(+1,:) = str2num(line) ; fclose(fid) ; Oppgave 4 g) (5%) Skriv en funksjon checkresultok function ok = checkresultok( filename, weight ) ok = true; %Antar at alt er ok data = load( filename ); %or readresultfile( filename ) [rows,cols] = size( data ); for i = 1:rows knr = data(i,1); scores = data( i, 2:cols-1 ); total = data( i, cols ); %sjekk at ingen kommer mer enn en gang if ( sum( data(1:i,1) == knr ) > 1 ) fprintf( 'ERROR: Candidate %d appears more than once!\n', knr ); ok = false; %Dobbelt-linje %sjekk at ingen har fått <0 eller >10 poeng if sum ( scores <0 ) + sum( scores >10 ) > 0 fprintf('error: Candidate %d scores are not between 0-10!\n', knr); ok = false; %sjekk at totalen er korrekt if ( total ~= computescore( scores, weight ) ) fprintf('error: Candidate %d has wrong total score!\n', knr); ok = false; Oppgave 4 h) (5%) Skriv en funksjon listall function rows = listall( filename, limitletters ) data = load( filename ); %or readresultfile( filename ) [rows, cols] = size( data ); data = sortrows( data, cols ); for i=1:rows fprintf( '%5i %5.1f %c\n', data(i,1), data(i,cols),... score2letter( data(i,cols), limitletters ) ); %for %function

Side 6 av 8 Sensor-veiledning 10 poeng: Helt riktig løsning. Kan være en annen løsning enn fasit. 7-9 poeng: Små syntaktiske feil. 5-7 poeng: Mindre semantiske og syntaktiske feil. 3-5 poeng: Noe riktig tankegang, men en del semantiske/syntaktiske feil. 2 poeng: Korrekt funksjonshode og returnering av resultat. 1 poeng: Noe riktig. For eksempel funksjonshode eller returnering av resultat. A>89, B>77, C>65, D>53, E>41, F<41

Side 7 av 8 Transparent for flervalgsoppgave: Viser riktige svar (dekker over feil svar) Kandidatnummer: Fagkode: Antall sider: Program: Dato: Side: Oppgavenr A B C D 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20

Side 8 av 8 Transparent for flervalgsoppgave: Viser feil svar (dekker over riktig svar) Kandidatnummer: Fagkode: Antall sider: Program: Dato: Side: Oppgavenr A B C D 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20