TDDC30 Programmering i Java, datastrukturer och algoritmer

Relevanta dokument
TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

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

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

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

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

Tentamen i Algoritmer & Datastrukturer i Java

Facit Tentamen TDDC (7)

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen TEN1 HI

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

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Tentamen Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

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.

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

Föreläsning 14 Innehåll

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Teoretisk del. Facit Tentamen TDDC (6)

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

Tentamen Datastrukturer, DAT037 (DAT036)

Länkade strukturer, parametriserade typer och undantag

Programmering II (ID1019) :00-11:00

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

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

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

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

Tentamen Datastrukturer (DAT036)

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

Tentamen, Algoritmer och datastrukturer

DAI2 (TIDAL) + I2 (TKIEK)

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

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

Teoretisk del. Facit Tentamen TDDC (6)

Föreläsning 4 Datastrukturer (DAT037)

Tentamen TEN1 HI

Facit Tentamen TDDC kl (6)

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Datastrukturer. föreläsning 3. Stacks 1

Föreläsning 3 Datastrukturer (DAT037)

Tentamen Datastrukturer för D2 DAT 035

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen i Programmering

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

Objektorienterad programmering D2

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

OOP Tentamen

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

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

OOP Tentamen

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

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

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

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

Tentamen Datastrukturer D DAT 035/INN960

Föreläsning 9 Innehåll

Tentamen Datastrukturer (DAT036)

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Uppgift 1 ( Betyg 3 uppgift )

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen i. TDDC67 Funktionell programmering och Lisp

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

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Seminarium 13 Innehåll

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 9 Datastrukturer (DAT037)

TENTAMEN OOP

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Stackar, köer, iteratorer och paket

Transkript:

LINKÖPINGS UNIVERSITET Institutionen för datavetenskap Jonas Wallgren Tentamen i TDDC30 Programmering i Java, datastrukturer och algoritmer För I3, Ii3 Datum: 2009-04-17 Klockan: 14-18 Jour: Jonas Wallgren, 013-28 2682 (Fredrik Berntsson, 013-28 2860) Administratör: Madeleine Häger Dahlqvist, tel. 28 2360 Hjälpmedel: Anvisningar: Inga Omotiverade svar ger noll poäng! Börja varje uppgift på nytt papper och skriv namn och personnummer på varje inlämnat blad. Tentamen består av två delar: en teoretisk och en praktisk. Den teoretiska delen löses med papper och penna som en traditionell tentamen. Den praktiska delen löses på datorer, anvisade vid tentamenstillfället. Efter tentamen lämnas alla filer som ska examineras kvar på kontot. Poäng: Totalt kan 22 poäng erhållas, fördelade på 6 uppgifter. För godkänt krävs minst 11 poäng, för betyg 4 minst 15 poäng och för betyg 5 minst 19 poäng.

Tentamen TDDC30 2009-04-17 2 (7) 1. (3p) Sortering Teoretisk del a) Sortera följande array i stigande ordning med Bucketsort. Tillåtna nycklar är talen 0, 1,..., 9. Beskriv varje steg i sorteringen. Varje element i arrayen nedan är skrivet på formen nyckel:data. 5:A 3:B 9:C 6:D 1:E 3:F 6:G 6:H 5:I b) Hur snabbt (komplexitetsmässigt) kan man sortera en array med en jämförelsebaserad sorteringsalgoritm? Förklara varför Bucketsort kan ha en lägre komplexitet än denna undre gräns. c) Vad innebär det att en sorteringsalgoritm är stabil? Nämn 1 stabil sorteringsalgoritm som vi gått igenom i kursen och förklara varför den är stabil. 2. (3p) Komplexitet a) Ange den matematiska definitionen av f O( g). Om du ej kan den eftersökta definitionen, beskriv den med ord (ger ej full poäng). b) Bevisa eller motbevisa matematiskt 2 n Ω( n 2 ) c) Betrakta två algoritmer A och B, med respektive tidskomplexitet T A ( n) On ( 2 ) och T B ( n) On ( ). Är det under några omständigheter möjligt att A exekverar snabbare än B? Motivera! 3. (4p) Objektorientering Betrakta nedanstående klassdiagram (Observera att "A" och ett "met3" är kursiva): A met1() met2() met3() D met5() met6() B met3() met4() C met2() met3() a) Vilka metoder har klassen B? Förklara! b) Vad innebär det att klass C implementerar en likadan metod som klass A (t.ex. met2())?

Tentamen TDDC30 2009-04-17 3 (7) c) Klass A är abstrakt och metoden met3() likaså. Vad innebär det och när är det användbart? d) Vilken relation har klasserna C och D? Vad innebär den relationen? 4. (2p) Träd a) Ange för vart och ett av följande binära träd om det är fullt, perfekt eller fullständigt. Träd R Träd S Träd T b) Sätt in följande element i ett från början tomt binärt sökträd. Visa det resulterande trädet. 8, 12, 15, 4, 9, 5, 2, 11, 10 c) Ta bort 8 ur det resulterande trädet ovan. Förklara operationen och visa hur trädet ser ut efteråt. d) Traversera trädet från deluppgift b) i pre-ordning och därefter i in-ordning. Skriv ut elementen vid besök.

Tentamen TDDC30 2009-04-17 4 (7) Praktisk del Anvisningar: Uppgifterna i denna del ska lösas på dator. När alla uppgifter är lösta ska alla filer som ska examineras lämnas kvar på kontot. Uppgifterna ska alltså inte skickas in via tentamenssystemet. 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. Poängavdrag följer beroende på förenklingens storlek. Tänk på läsbarhet och namngivning, och även på attributs och metoders synlighet. Skapa ett nytt projekt för varje uppgift. Benämn dessa Uppg5 resp Uppg6. För att mata in givna filer i Eclipse rekommenderas att du först öppnar filen i en vanligt texteditor varifrån texten kopieras och klistras in i Eclipse. Vid oklarheter och frågor om detaljerad Java-syntax, fråga tentajour/ examinator. Bilagd finns även en lista över vanliga unixkommandon. 5. (5p) Köer I denna uppgift ska du definiera en klass för att representera ADT Kö av heltal (int). Kalla denna klass RingBufferQueue. Använd ringbuffer-implementation av kön. I denna uppgift får du endast använda de standardklasser som återfinns i java.lang (t.ex. String, Integer, System.out och System.err) samt klassen Exception (API i bilaga). Filen QueueTester.java i katalogen Given_files innehåller ett litet testprogram. Du kan använda detta för att testa din kö. Denna klass kommer ej att examineras. a) Definiera klassen RingBufferQueue inklusive de variabler som behövs för din köimplementation. Lägg till en konstruktor, som tar ett heltalsargument. Detta argument anger storleken på den underliggande bufferten (max storlek på kön). Om du ej klarar av att skriva en sådan konstruktor, skriv då en standardkonstruktor (utan argument) och anta att max antal samtidiga element i stacken är 3. Detta ger ej full poäng. b) Implementera operationen void enqueue(int elt) c) Implementera operationen int dequeue() d) Lägg till undantagshantering för operationerna enqueue och dequeue. Definiera och kasta undantaget QueueException då bufferten blir full respektive tom.

Tentamen TDDC30 2009-04-17 5 (7) 6. (5p) Sorterade länkade listor Skriv ett program som lagrar heltal i ordnade, länkade listor enligt följande: Den ena listan innehåller positiva heltal, den andra negativa. I båda listorna är talen ordnade efter stigande absolutbelopp. 1 -> 3 -> 4 -> 10 -> 4711-2 -> -5 -> -7 -> -1000 -> -4711 Listorna ska sedan slås ihop (merge) till en lista efter stigande absolutbelopp. 1 -> -2 -> 3 -> 4 -> -5 -> -7 -> 10 -> -100 -> -4711 -> 4711 a) Definiera en egen klass LinkList. Varje nod ska innehålla ett heltal. En nod ska konstrueras med talet och resten av listan som argument. b) Definiera en metod insert för att sätta in en nod på rätt plats i en lista. Den ska anropas med insert(element,list) eller med list.insert(element) - välj själv - där element alltså är ett tal som ska sättas in i listan. Du får själv bestämma om insert ska returnera en ny lista eller void. c) Definiera en metod print som skriver ut alla element i en lista - separerade av mellanslag och med en radframmatning på slutet. d) Skriv ett huvudprogram som Läser in en följd av heltal från tangentbordet och skapar två listor mha insert - en med positiva heltal och en med negativa. Inlästa 0:or lagras inte alls. Skriver ut bägge listorna mer print. Slår ihop listorna så att resultatet blir en lista med elementen ökande efter absolutbelopp. Om både -n och n finns i listan ska -n komma före n, t.ex. -17 före 17. Skriver ut den sammanslagna listan.

Tentamen TDDC30 2009-04-17 6 (7) Class java.lang.exception java.lang.object extended by java.lang.throwable extended by java.lang.exception All Implemented Interfaces: Serializable Utdrag ur Java API public Exception(String message) Constructs a new exception with the specified detail message. Parameters: message - the detail message. The detail message is saved for later retrieval by the Throwable.getMessage() method. public String getmessage() Returns the detail message string of this throwable.

Tentamen TDDC30 2009-04-17 7 (7) Vanliga unixkommandon mkdir katalognamn rmdir katalognamn cd katalognamn cp källfil målfil mv källfil målkatalog mv orgnamn nyttnamn ls cat filnamn Skapa katalog Ta bort katalog Sätt aktuell katalog Kopiera fil från källfil till målfil Flytta källfil till målkatalog Byt namn på filen orgnamn till nyttnamn Skriver ut alla filer i aktuell katalog Skriver ut innehållet i filen filnamn