Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs



Like dokumenter
Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 IT Grunnkurs Høst 2015

TDT4110 IT Grunnkurs Høst 2012

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4110 IT Grunnkurs Høst 2017

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python LØSNINGSFORSLAG

TDT4110 IT Grunnkurs Høst 2016

Oppsummering fra sist

UNIVERSITETET I OSLO

TDT Prosedyre- og objektorientert programmering

UNIVERSITETET I OSLO

Kontinuasjonseksamen i TDT4105 Informasjonsteknologi - grunnkurs Matlab

TDT4110 IT Grunnkurs Høst 2016

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Repetisjon Novice Videregående Python PDF

Oppgave 2: def a (x): x = x + 1 y = 1 + x * 2

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

Øvingsforelesning 7 i Python (TDT4110)

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

TDT4110 IT Grunnkurs Høst 2016

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

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Systemutvikling (Software Engineering) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

MAT1030 Diskret matematikk

TDT4102 Prosedyreog objektorientert programmering Vår 2016

UNIVERSITETET I OSLO

Øvingsforelesning 5 Python (TDT4110)

TOD063 Datastrukturer og algoritmer

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs: Løsningsforslag

Øvingsforelesning i Python (TDT4110)

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Øvingsforelesning 9 i Python (TDT4110)

Øvingsforelesning 5 Python (TDT4110)

Eksamensoppgaver 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

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

INF1000 Eksamen 2014 (modifisert)

Informasjon Eksamen i IN1000 høsten 2017

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Informasjon Prøveeksamen i IN1000 høsten 2018

INF1000 Eksamen 2014 (modifisert)

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

UNIVERSITETET I OSLO

MAT1030 Diskret Matematikk

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

TDT4110 IT Grunnkurs Høst 2015

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

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.

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

IN1000 Obligatorisk innlevering 7

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

TDT4105 IT Grunnkurs Høst 2014

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

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

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

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

MAT1030 Plenumsregning 1

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

TDT4110 IT Grunnkurs Høst 2014

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Eksamensoppgave i TDT4110 Informasjonsteknologi grunnkurs, med Python LØSNINGSFORSLAG

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2014

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

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

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i TDT4105 Informasjonsteknologi grunnkurs, med Matlab LØSNINGSFORSLAG

Lynkurs i shellprogrammering under Linux

Pensum: Starting out with Python

TDT4110 IT Grunnkurs Høst 2012

TDT4105 IT Grunnkurs Høst 2016

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Endret litt som ukeoppgave i INF1010 våren 2004

TDT4110 IT Grunnkurs Høst 2014

Lage større programmer (Python, relatert til teoridelen om Software Engineering ) TDT 4110 IT Grunnkurs Professor Guttorm Sindre

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

UNIVERSITETET I OSLO

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

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

HØGSKOLEN I SØR-TRØNDELAG

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

TDT4110 IT Grunnkurs Høst 2012

TDT4105 IT Grunnkurs Høst 2012

Transkript:

Institutt for datateknikk og informasjonsvitenskap Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs 5. august 2015 Annen informasjon: Oppgavesettet inneholder 4 oppgaver. Det er angitt i prosent hvor mye hver oppgave og hver deloppgave teller ved sensur. Målform/språk: Bokmål Innhold: Oppgave 1: Flervalgsoppgave (20%) Oppgave 2: Kodeforståelse (15%) Oppgave 3: Programmering Yatzy (15%) Oppgave 4: Programmering vitneobservasjoner (50%) Appendiks: Nyttige funksjoner Svarark til Flervalgsoppgave (2 eksemplarer) Løsning Oppgave 1: 1: D 6: D 11: A 16: B 2: D 7: C 12: A 17: B 3: A 8: C 13: B 18: D 4: C 9: A 14: A 19: B 5: C 10: A 15: C 20: B

Løsning Oppgave 2: a: [25.0, 20.0, 20.0, 13.33, 15.0] b: Funksjonen tricky_a finner snittet av tre og tre nærliggende verdier, samt på endene snittet av to nærliggende verdier i ei liste. c: False d: Funksjonen sjekker to og to etterfølgende tall i lista for å se om det foregående tallet har +1 verdi. e: 2 f: Søker igjennom en 2dimensjonell tabell A for tallet x, og returnerer multiplikasjon av posisjonene til rekke og kolonne. Løsning Oppgave 3: Løsning 3a: def throw(n): dice =[] for x in range(n): dice.append(random.randint(1,6)) return dice Løsning 3b: def chance(dice): total = 0 for value in dice: total += value return total Løsning 3c: Finnes flere løsninger på dette: def house(dice): if (dice[0]!=dice[4] and ((dice[0]==dice[1] and dice[2]==dice[3]==dice[4]) or (dice[0]==dice[1]==dice[2] and dice[3]==dice[4]))): return chance(dice) def house(dice): if (dice[0]!=dice[4] and ((dice[0]==dice[1] and dice[2]==dice[4]) or (dice[0]==dice[2] and dice[3]==dice[4]))): return chance(dice)

Løsning 3d: Finnes flere løsninger på dette: def straight(dice): small_straight=0 # Counts small straight numbers in a row large_straight=0 # Counts large straight numbers in a row for i in range(5): if (dice[i]==i+1): small_straight+=1 elif (dice[i]==i+2): large_straight+=1 if (small_straight==5): return 15 elif (large_straight==5): return 20 def straight(dice): correct=[1,2,3,4,5,6] if (dice==correct[0:5]): return 15 elif (dice==correct[1:6]): return 20 Løsning Oppgave 4: Løsning 4a: def les_inn_bilinfo(): merke=input('hvilket bilmerke var det? ') modell=input('hvilken modell? ') farge=input('hvilken farge? ') return [merke,modell,farge] Løsning 4b: Flere greie måter å gjøre denne på: def sjekk_bil(vitneobs,bildata): # LØSNING MED LØKKE for i in range(3): if vitneobs[i]!= '?' and vitneobs[i]!= bildata[i]: return True def sjekk_bil(vitneobs,bildata): # LØSNING MED RETURN, STOR BETINGELSE return ((vitneobs[0] == '?' or vitneobs[0] == bildata[0]) and (vitneobs[1] == '?' or vitneobs[1] == bildata[1]) and (vitneobs[2] == '?' or vitneobs[2] == bildata[2]))

def sjekk_bil(vitneobs,bildata): # LØSNING MED IF-ELIF-ELSE if vitneobs[0]!= '?' and vitneobs[0]!= bildata[0]: elif vitneobs[1]!= '?' and vitneobs[1]!= bildata[1]: elif vitneobs[2]!= '?' and vitneobs[2]!= bildata[2]: return True Løsning 4c: def les_gyldig_vitneskilt(): gyldig=false while not gyldig: streng=input('skriv inn skilt, 2 bokst + 5 tall (?=usikker) ') if len(streng)!=7: print('skiltnummer må være 7 tegn langt') elif (streng[0] not in SKILTBOKSTAV or streng[1] not in SKILTBOKSTAV): print('to første tegn må være skiltbokstav eller?') elif (streng[2:7]!= '?????' and not streng[2:7].replace('?','').isdigit()): print('fem siste tegn må være tall eller?') gyldig=true return streng Løsning 4d: def match(vitneskilt,regnr): test=true for i in range(0,7): if vitneskilt[i]!= '?' and vitneskilt[i]!= regnr[i]: test=false return test Løsning 4e: def match_liste(vitneskilt,skiltliste): resultatliste=[] for skilt in skiltliste: if match(vitneskilt,skilt): resultatliste.append(skilt) return resultatliste

Løsning 4f: Bruker tre hjelpefunksjoner, en som leser fra fil og legger inn i dictionary, en som går gjennom dictionary og finner mulig matchende biler, og en som skriver ut resultat til skjerm. Andre oppdelinger kan også være mulig. def les_biler_fra_fil(filnavn): fil=open(filnavn,'r') dic={} for linje in fil: linje=linje.strip('\n') liste=linje.split() dic[liste[0]] = liste[1:] fil.close() return dic def match_bildata(vitneskilt,bilinfo,bil_db): kandidater=[] mulige_skilt = match_liste(vitneskilt,bil_db.keys()) for skilt in mulige_skilt: if sjekk_bil(bilinfo,bil_db[skilt]): kandidater.append(skilt) return kandidater def vis_resultat(skiltliste): if skiltliste == []: print('ingen match') print('mulige kjøretøyer er:') for element in skiltliste: print(element, 'Eier:', bil_db[element][3]) def main(): try: bil_db = les_biler_fra_fil('biler.txt') print('fil lest') except Exception as feil: print('problemer med lesing av fil, feilmelding:') print(feil) fortsett=true while fortsett: bilinfo = les_inn_bilinfo() regnr = les_gyldig_vitneskilt() skiltliste = match_bildata(regnr,bilinfo,bil_db) vis_resultat(skiltliste) svar = input('vil du sjekke flere kjøretøyer? (J/N) ') if svar.upper() == 'N': fortsett = False main()