Försättsblad till skriftlig tentamen vid Linköpings Universitet

Relevanta dokument
Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Teoretisk del. Facit Tentamen TDDC (6)

TDDC30 Programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Facit Tentamen TDDC kl (6)

Facit Tentamen TDDC (7)

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

TDDC30 Programmering i Java, datastrukturer och algoritmer

kl Tentaupplägg

TDIU01 / 725G

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

kl Tentaupplägg

Tentamen i Grundläggande programmering STS, åk 1 fredag

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

TDP Regler

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

TDDC91 & TDDE22 & 725G97 Datastrukturer och algoritmer Datortentamen (DAT1) , 08 12

Tentamen TEN1 HI

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

TDP Regler

Tentamen Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 035/INN960

Försättsblad till skriftlig tentamen vid Linköpings Universitet

729G04 Programmering och diskret matematik

kl Tentaupplägg

TDDC Terminologi Uppdaterad Fö #1

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Länkade strukturer, parametriserade typer och undantag

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Grundläggande programmering STS, åk 1 fredag

PROGRAMMERINGSTEKNIK TIN212

kl Tentaupplägg

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer för D2 DAT 035

TDDI22 (exempel) TDDI22 Tentaregler

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Tentamen i Algoritmer & Datastrukturer i Java

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen TEN1 HI

Laboration 1 - Grunderna för OOP i Java

TDDI14 Objektorienterad programmering

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

TDDI TDDI22 Tentaregler

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 14 Innehåll

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Tentamen kl Uppgift 4. Uppgift 5

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

kl Tentaupplägg

Tentamen i. TDDC67 Funktionell programmering och Lisp

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Tentamen Datastrukturer D DAT 035/INN960

Programmering för språkteknologer II, HT2011. Rum

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

kl Tentaupplägg

Seminarium 13 Innehåll

Tentamen i Grundläggande programmering STS, åk 1 lördag

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

kl Tentaupplägg

TENTAMEN OOP

kl Tentaupplägg

TDDI TDDI22 Tentaregler

Tentamen i Grundläggande programmering STS, åk

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

kl Tentaupplägg

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDP Regler

Tentamen i Grundläggande programmering STS, åk

Uppgift 1 ( Betyg 3 uppgift )

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

729G04 Programmering och diskret matematik TEN kl 8-12

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2016-03-21 Sal Tid 14:00 18:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal sidor på tentamen (inkl. försättsbladet) Jour/kursansvarig Samling i korridoren vid SU17/18 TDDC30, 725G82 DAT1 Programmering i Java, datastrukturer och algoritmer IDA 6 (4 teoretiska och 2 praktiska) 8 Erik Nilsson Telefon under skrivtid 013-284676 Besöker salen ca kl. - Kursadministratör (namn, telefon, mailadress) Tillåtna hjälpmedel Övrigt Åsa Kärrman, 013-285760, asa.karrman@liu.se Inga Information och frågor hanteras genom Tentaklienten. Preliminära poänggränser: 3: 22 G: 22 4: 30 VG: 33 5: 37

Tentamen TDDC30 2016-03-21 kl 14-18 2 (8) Teoretisk del Anvisningar: Uppgifterna i denna del ska lösas med penna och papper på lösa blad. Vid tentamens slut lämnas svaren till denna del in till tentamensvakterna. Du kan även lämna in till tentavakterna under tentans gång så rättar vi om vi hinner (ingen kompletteringsmöjlighet ges dock). Det är även okej att skicka in svar på teoriuppgifter via tentasystemet (i en textfil per uppgift). Uppgift 2 och 4 kräver dock att ni ritar, så där vill vi ha in svaren på papper. Då svar skrivs på lösa blad, markeras varje deluppgift tydligt markeras. Endast en sida av bladet används. Varje blad markeras högst upp med personnummer och sidnummer. Viktigt: Starta en tentaklient genom att högerklicka på skrivbordet, för att kunna ta del av allmän information och kunna ställa frågor. 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan en instansvariabel och en klassvariabel? (1p) b) Hur kan man från en subklass komma åt en metod som ligger i superklassen? (1p) c) Vad innebär nyckelordet extends i Java? (1p) d) Vad är skillnaden mellan ett RuntimeException och ett Exception i Java. (1p) e) Vad är syftet med ADT:erna stack och kö, när ADT:n lista tycks göra samma sak, fast mer?

Tentamen TDDC30 2016-03-21 kl 14-18 3 (8) 2. (6p) "Datastrukturer" a) Antag att vi har en kö Q som är tom från början. Beskriv vad som händer och rita hur kön ser ut efter varje steg när man kör operationerna nedan (i ordningen uppifrån och ned). Q.enqueue(a) Q.enqueue(b) Q.dequeue() Q.enqueue(c) Q.dequeue() Q.dequeue() b) Antag att vi har ett binärt sökträd BT som ser ut som i bilden nedan. Beskriv vad som händer och rita hur trädet ser ut när man kör operationerna nedan (i ordningen uppifrån och ned). BT.add(4); BT.remove(8); 6 52 57 1 5 78 c) Rita upp ett exempel på hur elementen 1, 1, 3, 4, 5, 6, 6, 6, 8 skulle kunna ligga i en maxheap. 79

Tentamen TDDC30 2016-03-21 kl 14-18 4 (8) 3. (6p) "Tidskomplexitet" a) Ange och motivera tidskomplexiteten för följande metoder för en enkellänkad lista: (3p) * Metoden insert(e) som lägger till ett nytt element e först i listan. * Metoden remove(e) som tar bort elementet e ur listan. * Metoden iterator() som returnerar en iterator till listan. b) Ange tidskomplexiteten i värsta fallet, med avseende på n, för följande metoder. (n är alltid ett positivt heltal.) int looper1(int n) { int sum = 0; for (int k = 0 ; k < 10 ; k = k+1) { for (int j = 0 ; j < 3*n ; j = j+1) { for (int i = n ; i > 0 ; i = i-1) { sum = sum + i; return sum; int mille(int n) { return looper1(1000); int millemille(int n) { return 1000*1000*n; c) Förenkla följande uttryck för tidskomplexitet: (1p) O(3n ⁵ + n ⁷) + O(n*log(n))

Tentamen TDDC30 2016-03-21 kl 14-18 5 (8) 4. (6p) "Algoritmer" a) Sortera värdena [ 5 5 4 1 4 3 0 5 ] med mergesort. Var noga med att ange vad som sker i varje steg, så att det går att följa processen från början till slut. Sorteringen ska leda till stigande ordning, d.v.s. 1, 2, 3, o.s.v. Ange tydligt vad som sker under sorteringen. b) Sortera värdena [ 2 5 8 7 1 3 6 ] med selectionsort. Sorteringen ska leda till stigande ordning, d.v.s. 1, 2, 3, o.s.v. Ange tydligt i svaret hur hela fältet ser ut innan varje platsbyte, samt vilka index som är på väg att byta plats, med maximalt ett byte per steg. c) Hur kan en sorteringsalgoritm som har tidskomplexitet O(n²) i praktiken vara snabbare än en sorteringsalgoritm som har tidskomplexitet O(nlog(n))?

Tentamen TDDC30 2016-03-21 kl 14-18 6 (8) Praktisk del Anvisningar: Uppgifterna i denna del ska lösas på dator. När alla uppgifter är lösta ska uppgifterna skickas in via tentasystemet. Tänk på att bifoga alla filer som behövs för att köra programmet för uppgift 5 resp. 6. Du kan också exportera projektet som en zip-fil och skicka in denna. Viktigt: Starta en tentaklient genom att högerklicka på skrivbordet, för att kunna ta del av allmän information och kunna ställa frågor. Försök att lösa alla uppgifter så långt som möjligt. Om du inte kan lösa en uppgift, förenkla uppgiften. Glöm i så fall inte att beskriva förenklingen med en tydlig kommentar i koden. Poängavdrag ges beroende på förenklingens storlek. Tänk på läsbarhet och namngivning, och även på variablers och metoders synlighet. Ni behöver inte skriva javadoc för er kod. Skapa ett projekt i Eclipse för vardera uppgift. Vanligtvis finns det givna filer för uppgifterna. De givna filerna ligger i mappen given_files. Om det bara är en javafil är det enklast att kopiera in koden till ditt projekt. Om det är projektfiler så kan du importera till Eclipse, File Import, sedan General Existing projects into workspace, klicka sedan i Select archive file och välj Browse, och välj sedan arkivfilen i given_files. Därefter kan ni välja vilja projekt ni vill importera från arkivet. Här är några vanliga unixkommandon: ls cd mappnamn cd.. cp från till lista alla filer i den mappen du står byt till mapp gå upp ett steg kopiera fil BONUS: Om du har bonus från labserien så får du lika många bonuspoäng som avklarade poäng i den praktiska delen (dock maximalt 5 poäng). Om du exempelvis får 3 poäng på den praktiska delen så får du ytterligare 3 bonuspoäng. 6 poäng och mer ger alltså bara 5 bonuspoäng. Du kan förstås ej överskrida tentans maxpoäng.

Tentamen TDDC30 2016-03-21 kl 14-18 7 (8) 5. (10p) Marinan Du har blivit anlitad av en marina som vill ha ett register över sina båtar och båtägare. För detta behöver du skapa klasser för olika typer av båtar, båtägare och själva marinan. Här är ett översiktligt klassdiagram: SailBoat Boat 1..N 1 Marina 1..N 1 1..N 1 MotorBoat BoatOwner I mappen given_files finns ett litet testprogram där vi visar hur det är tänkt att man skall instansiera de olika objekten och hur man skall kunna använda dem. a) Implementera klasserna i diagrammet ovan så att första delen av testprogrammet går att köra. Alla instanser av typen Boat har ett namn (en sträng) och ett djupgående. Djupgåendet mäts i meter (ett flyttal) och mäter hur djupt båten går ner på det djupaste stället. Detta är intressant för marinan eftersom båtar med mindre djupgående kan ha en bryggplats som är närmre land. Segelbåtar har också en segelyta (ett heltal) som anger hur stor totalyta seglen har. Motorbåtar har inte segelyta utan har istället ett heltal som beskriver hur många hästkrafter motorn har. Båtägare har alltid ett namn (både för- och efternamn i en sträng). En båtägare kan äga godtyckligt antal båtar och har metoden add(boat) som lägger till en båt till ägaren. Marinan har också ett namn (en sträng) och håller koll både på alla båtägare och alla båtar. Marinan har därför en metod addowner(boatowner) som läger till en ägare och alla dess båtar till marinan. Det skall även finnas en metod add(boat) så att man kan lägga till båtar som inte har någon specifik ägare. Slutligen skall det även finnas en metod getboatswithdepthlessthan(double d) som returnerar en lista med alla båtar som har ett djupgående på d eller mindre. Tänk på att hålla instansvariabler privat. Tänk på i vilken klass du lägger implementation. (6p) b) Du skall nu lägga till metoden printownerregister() i klassen Marina. Se testprogrammet för hur vi har tänkt att utskriften skall se ut. Observera att de båtar som inte har någon ägare inte skall skrivas ut av denna metod. (Denna deluppgift kan lösas oberoende av deluppgift c). c) Du skall nu lägga till metoden getownerforboat() i klassen Marina. Metoden skall returnera en viss båts ägare. Om båten som söks inte har någon ägare så skall undantaget NoOwnerForBoatException kastas. Om båten inte finns överhuvudtaget i Marinan så skall undantaget NoSuchBoatException kastas. Undantagen skall ärva från klassen Exception (ej RuntimeException). Modifiera testprogrammet så att det fungerar med din nya kod. (Denna deluppgift kan lösas oberoende av deluppgift b).

Tentamen TDDC30 2016-03-21 kl 14-18 8 (8) 6. (10p) Släktträd Du har fått i uppdrag från släktens överhuvud att du skall börja släktforska. Till din hjälp gör du självklart ett program som klarar av detta. Du skall i denna uppgift skapa klassen FamilyMember som representerar släktträdet. En FamilyMember har följande egenskaper: namn children En sträng som representerar vad personen heter. En uppsättning FamilyMember som representerar denna persons barn. Man kan ha godtyckligt många barn. a) Implementera följande metoder i FamilyMember: FamilyMember(String) addchild(familymember) getchildren() Metoderna skall ha tidskomplexitet O(1). (Konstruktor), tar personens namn. Lägger till ett barn till personen. Hämtar en persons alla barn som en List. (4p) b) Gör nu en testklass FamilyTreeTest som testar dina metoder. Representera följande släkt i ditt program: Marielle Stefan Gunilla Emma Gustav Love Ivana c) Du skall nu lägga till följande metoder i FamilyMember: printpreorder() Gör en preorder-traverering på trädet och skriver ut dess medlemmar. d) printlevelorder() Gör en levelorder-traversring på trädet och skriver ut dess medlemmar. Metoderna i (c) och (d) skall gå i O(n). Metoderna skall skriva ut en familjemedlem per rad.