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

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

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

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

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

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.

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

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

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

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

Facit Tentamen TDDC (7)

Tentamen, Algoritmer och datastrukturer

Facit Tentamen TDDC kl (6)

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen TEN1 HI

Seminarium 13 Innehåll

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Teoretisk del. Facit Tentamen TDDC (6)

Tentamen Datastrukturer, DAT037 (DAT036)

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

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen Datastrukturer (DAT036)

Teoretisk del. Facit Tentamen TDDC (6)

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

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 14 Innehåll

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

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

Föreläsning 4 Datastrukturer (DAT037)

Tentamen TEN1 HI

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

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

Tentamen Datastrukturer (DAT037)

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

Föreläsning 13 Innehåll

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

DAI2 (TIDAL) + I2 (TKIEK)

Länkade strukturer, parametriserade typer och undantag

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

Tentamen Datastrukturer (DAT036)

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

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

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

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

Tentamen Datastrukturer, DAT037 (DAT036)

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

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

13 Prioritetsköer, heapar

Träd Hierarkiska strukturer

Föreläsning 4 Datastrukturer (DAT037)

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

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

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer för D2 DAT 035

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen Datastrukturer D DAT 035/INN960

PROGRAMMERINGSTEKNIK TIN212

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

TDDC Terminologi Uppdaterad Fö #1

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Introduktionsmöte Innehåll

Föreläsning 15: Repetition DVGA02

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Uppgift 1 ( Betyg 3 uppgift )

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Fredag 10 juni 2016 kl 8 12

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

Föreläsning 3 Datastrukturer (DAT037)

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

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

Objektorienterad Programmering (TDDC77)

Föreläsning 11 Datastrukturer (DAT037)

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

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

Föreläsning 9 Innehåll

Tentamen i Programmering grundkurs och Programmering C

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

Datastrukturer. föreläsning 3. Stacks 1

Länkade strukturer. (del 2)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 9 Datastrukturer (DAT037)

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

Objektorienterad Programmering (TDDC77)

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

Föreläsning Datastrukturer (DAT036)

Transkript:

LINKÖPINGS UNIVERSITET Institutionen för datavetenskap Daniel Karlsson Tentamen i TDDC30 Programmering i Java, datastrukturer och algoritmer För I3, Ii3 Datum: 2007-12-21 Klockan: 14-18 Jour: Fredrik Berntsson, 013-282860 Administratör: Madeleine Häger, tel. 282360 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: Facit: Totalt kan 21 poäng erhållas, fördelade på 6 uppgifter. För godkänt krävs minst 10 poäng, för betyg 4 minst 14 poäng och för betyg 5 minst 17 poäng. Publiceras på kurshemsidan efter tentamens slut. Lycka till!

Tentamen TDDC30 2007-12-21 2 (12) 1. (4p) Objektorientering Teoretisk del a) Vi har i kursen gått igenom 3 olika relationer mellan klasser. Vilka är de och vad innebär de? b) När används konstruktorer och varför använder man dem? c) Förklara vad gränssnitt (interface) är och vad man använder dem till. 2. (3p) Binära sökträd a) Rita det binära sökträd som blir resultatet av insättning av följande sekvens av element: 7, 3, 5, 10, 8, 1, 11, 12, 6 b) Ta bort roten (7) i nedanstående binära sökträd. Beskriv varje steg. 7 2 11 1 3 10 12 8 9 c) Vilken värstafallskomplexitet har insättning i binärt sökträd? Motivera! 3. (2p) Utval a) Illustrera hur Quickselect fungerar genom att leta upp det 6:e minsta elementet i nedanstående array. Välj alltid det första elementet som pivot. 7 13 5 2 18 1 10 9 b) Vilken rumskomplexitet har Quickselect? Motivera! 4. (3p) Sortering a) Vilken jämförelsebaserad sorteringsalgoritm är optimal med avseende på både tidsoch rumskomplexitet? Motivera! b) Sortera följande array med Shellsort, beskriv varje steg sorteringen. Välj lucksekvens 5, 2, 1. 6 5 9 13 2 3 8 15 1 7 c) Kan det någon gång vara lämpligt ur tidssynpunkt att använda en kvadratisk sorteringsalgoritm? Ge exempel, motivera!

Tentamen TDDC30 2007-12-21 3 (12) 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. 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, använd tentamenssystemet för kontakt med examinator. Bilagd finns även en lista över vanliga unixkommandon. 5. (4p) 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 denna 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. Om du ej klarar uppgiften överhuvudtaget kan du få svaret av en tentamensvakt, under förutsättning att du skriver under formuläret i slutet av detta häfte. På detta vis får du chans att klara uppgifterna b, c och d. Du får då givetvis inga poäng för denna deluppgift. b) Implementera operationen void enqueue(int elt) c) Implementera operationen int dequeue()

Tentamen TDDC30 2007-12-21 4 (12) d) Lägg till undantagshantering för operationerna enqueue och dequeue. Definiera och kasta undantaget QueueException då bufferten blir full respektive tom. 6. (5p) Prioritetsköer Klassen IntegerPriorityQueue i katalogen given_files innehåller ett kodskelett för en heap-implementation av en prioritetskö. Den innehåller följande attribut: buffer - arrayen som håller själva heapen nextemptypos - index till nästa lediga position i arrayen. Metoder för att bubbla ner respektive upp element finns redan implementerade. Dessa metoder tar ett index till det element som ska bubblas som argument. Metoderna använder i sin tur hjälpmetoden compare, vilken utför själva jämförandet mellan två element och därmed anger prioritetsordningen. Din uppgift är, i första ledet, att implementera metoderna leftchild, right- Child, parent, insert och removemin enligt beskrivning i deluppgifterna. Till din hjälp har du de färdigimplementerade bubblingsmetoderna. Dessa skall ej modifieras. I nästa steg ska du via en ny klass ändra prioritetsordningen. Klassen PriorityQueueTester i katalogen given_files innehåller ett litet testprogram som du kan använda för att testa din prioritetskö. Klassen implementerar i princip pqsort. Observera att du ska modifiera denna klass i uppgift 6d. Inga felkontroller för full- respektive tom kö behöver göras. 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). a) Implementera metoderna leftchild, rightchild och parent. Dessa metoder tar ett index till en nod som argument och returnerar indexet till nodens vänster eller höger barn respektive förälder. Golvfunktionen (avrundning nedåt) behöver ej explicit anges. Den sker automatiskt vid konvertering av flyttal till heltal. Om du ej kan implementera dessa metoder kan du få svaret av tentamensvakterna mot att du fyller i formuläret i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inget poäng för denna uppgift. b) Implementera metoden insert. Om du ej kan implementera denna metod kan du få svaret av tentamensvakterna mot att du fyller i formuläret i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inget poäng för denna uppgift.. c) Implementera metoden removemin. Om du ej kan implementera denna metod kan du få svaret av tentamensvakterna mot att du fyller i formuläret i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inget poäng för denna uppgift.

Tentamen TDDC30 2007-12-21 5 (12) d) Låt oss i denna deluppgift anta att klassen IntegerPriorityQueue som du implementerade ovan är given av någon utomstående och således inte kan modifieras. Vi vill ändå ändra dess funktionalitet så att högst heltalselement har högst prioritet, dvs vi vill vända prioritetsordningen. Implementera denna ändring, utan att skriva om hela prioritetskön, i en ny klass IntegerMaxPriorityQueue. Ändra även i PriorityQueueTester så att denna nya variant av prioritetskön används istället och därmed skriver ut talen i avtagande ordning. Du kan få en ledtråd till denna uppgift av tentamensvakterna mot att du fyller i formuläret i slutet av detta häfte. Du får då endast max 1 poäng för denna uppgift.

Tentamen TDDC30 2007-12-21 6 (12) 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 2007-12-21 7 (12) Ansökan om svar till uppgift 5A Jag anhåller härmed om att få svaret till uppgift 5a på tentamen i TDDC30 den 2007-12-21. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2007-12-21 Signatur Textat namn Personnummer

Tentamen TDDC30 2007-12-21 8 (12) Ansökan om svar till uppgift 6A Jag anhåller härmed om att få svaret till uppgift 6a på tentamen i TDDC30 den 2007-12-21. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2007-12-21 Signatur Textat namn Personnummer

Tentamen TDDC30 2007-12-21 9 (12) Ansökan om svar till uppgift 6B Jag anhåller härmed om att få svaret till uppgift 6b på tentamen i TDDC30 den 2007-12-21. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2007-12-21 Signatur Textat namn Personnummer

Tentamen TDDC30 2007-12-21 10 (12) Ansökan om svar till uppgift 6C Jag anhåller härmed om att få svaret till uppgift 6c på tentamen i TDDC30 den 2007-12-21. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2007-12-21 Signatur Textat namn Personnummer

Tentamen TDDC30 2007-12-21 11 (12) Ansökan om ledtråd till uppgift 6D Jag anhåller härmed om att få en ledtråd till uppgift 6d på tentamen i TDDC30 den 2007-12-21. Jag är medveten om att jag max kommer att erhålla 1 poäng för uppgiften. Linköping den 2007-12-21 Signatur Textat namn Personnummer

Tentamen TDDC30 2007-12-21 12 (12) 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