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

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

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Facit Tentamen TDDC (7)

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 (6)

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

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

Tentamen TEN1 HI

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Tentamen TEN1 HI

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.

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 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

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

Facit Tentamen TDDC kl (6)

Seminarium 13 Innehåll

Tentamen i Algoritmer & Datastrukturer i Java

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

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

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

TDIU01 / 725G

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen Datastrukturer för D2 DAT 035

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

Tentamen, Algoritmer och datastrukturer

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

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Teoretisk del. Facit Tentamen TDDC (6)

Föreläsning 14 Innehåll

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

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

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

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer D DAT 035/INN960

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Föreläsning 9 Innehåll

Sökning och sortering

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

::= HIHI HIHIHI ::= HAHA HAHAHA

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Exempeltenta GruDat 2002/2003

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

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

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

Tentamen Datastrukturer (DAT036)

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Tentamen kl Uppgift 4. Uppgift 5

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

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

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

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

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Föreläsning 13 Innehåll

Tentamen, EDAA10 Programmering i Java

Tentamen Datastrukturer (DAT037)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

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

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

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

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

Tentamen Datastrukturer D DAT 036/INN960

Tentamen i Programmering grundkurs och Programmering C

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 035/INN960

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Uppgift 1 ( Betyg 3 uppgift )

Introduktionsmöte Innehåll

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Uppgift 1 ( Betyg 3 uppgift )

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

Föreläsning 4 Innehåll

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

kl Tentaupplägg

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

DAI2 (TIDAL) + I2 (TKIEK)

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 3 Datastrukturer (DAT037)

PROGRAMMERINGSTEKNIK TIN212

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Föreläsning 4 Datastrukturer (DAT037)

Magnus Nielsen, IDA, Linköpings universitet

Tentamen Datastrukturer (DAT036)

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Transkript:

Tentamen i.. TDDC30/725G63 Objektorienterad programmering i Java, datastrukturer och algoritmer Datum 2012-12-21 Tid 14-18 Provkod DAT1 Institution Institutionen för Datavetenskap (IDA) Jour Johan Janzén tel. 282490 Kursadministratör Helene Meisinger Antal uppgifter 6 Maximalt antal poäng 24 Preliminära betygsgränser U: 0-11 poäng 3: 12-15 poäng 4: 16-20 poäng 5: 21-24 poäng Anvisningar: Omotiverade svar ger noll poäng! Tentamen består av två delar: en teoretisk och en praktisk. Den teoretiska delen löses med papper och penna som en traditionell tentamen och lämnas in till tentavakt när du avslutar tentan Börja varje uppgift på nytt papper Skriv namn och personnummer på varje inlämnat blad Numrera varje inlämnat blad Den praktiska delen löses på datorn anvisad vid tentamenstillfället. Efter tentamen lämnas alla filer som ska examineras kvar på kontot Frågor angående tentan kan ställas via studentklienten. Notera dock att detta inte är en grundkurs i programmering, somliga saker förväntas du kunna.

Teoretisk del Denna del ska lösas med penna och papper. Vid tentamens slut lämnas denna del in till tentamensvakterna. Glöm inte att motivera dina svar! 1. Motivera kort huruvida följande påståenden är sanna a) Jämförelseoperatorn "==" och funktionen Object.equals() är ekvivalenta (0.5p) b) Träd representeras alltid bäst med arrayer (0.5p) c) Om en funktion tillhör O(n²log(n) ) och Ω(n²log(n) ), då tillhör den Θ(n²log(n) ). (0.5p) d) I ett sökträd finns alltid största talet i roten (0.5p) e) Om en sorteringsalgoritm är stabil garanteras att den kan sortera alla möjliga permutationer av indata (0.5p) f) Interfaces kan inte instantieras (0.5p) 2. En bugg i ett system medför att ett binärt sökträd har blivit förstört. Som tur är finns en postordertraversering av trädet sparat på fil, se siffrorna nedan. a) Återskapa exakt den tidigare strukturen och rita upp trädet. Som svar räcker det med att du ritar upp trädstrukturen. (2p) b) Vilka av följande egenskaper har trädet? Motivera (1p) fullständigt heapsorterat fullt 18 22 42 27 61 19 89 78

3. Erik har en filserver för alla icke-upphovsrättsskyddade filmer han laddar ner. Då filmer tar upp mycket plats vill han skiva ett program som vid behov automatiskt tar bort den film han inte öppnat på längst tid. Tanken är att funktionen ska köras automatiskt så snart filserverns minne börjar ta slut. a) Vilken abstrakt datayp är lämplig att använda för att spara information om filmerna, givet ovanstående användningsområde? Nämn även en lämplig representation för ADT-n. (1p) b) Rita ett klassdiagram för programmet: Klassen MemoryHandler ska bestå av (bland annat) en Movies, och har därför ett sådant, privat, attribut. Movies är ett interface med de publika metoderna Path removeoldestaccess() och void addmovie(path pathtomovie). Låt din datatyp från a) implementera Movies. (1p) Erik vill även i samma program få fram en lista av alla sina filmer. Listan ska vara sorterad i första hand efter speltid (han gillar långa filmer) och i andra hand efter hur länge sedan han såg den. Eftersom quicksort sorterar mycket snabbt i medelfallet väljer han att implementera radixsort med quicksort för varje nyckel för sitt program. Precis när han är klar inser han dock att han har gjort två misstag i sina val! 0 av 2, inte bra. c) Vilka två misstag har han gjort? Beskriv hur du skulle implementera detta och varför. (1p) 4. Det minsta talet i ett binärt sökträd är alltid längst till vänster. Man skulle kunna sortera elementen genom att upprepat ta bort det minsta talet i trädet och spara det sist i en lista. Använd vad du lärt dig inom algoritmanalys och beskriv hur lång tid en sådan sortering skulle ta. Motivera noggrannt. Beskriv både bästafall och värstafall, rita gärna grafer/bilder för att tydliggöra vad du menar. (3p)

Praktisk del Följande uppgifter ska lösas på dator. Skapa ett nytt projekt för varje uppgift. Om det inte är uttryckligen angivet annorlunda i uppgiften får du endast använda den del av Javas standardbibliotek som finns i java.lang. Om du inte kan lösa uppgiften, gör en lämplig förenkling och lös den istället. Skriv ned i källkoden vilka förenklingar du gjort. Poäng ges efter hur pass nära din lösning är att lösa den givna uppgiften. Även icke fungerande kod kan ge poäng om den visar på viss förståelse. Du har i denna uppgift tillåtelse att använda lämplig del av Javas standardbibliotek för att slumpa tal. 5. Anna är inne i ett kasino och ska spela poker. Hon ställer sig i en kö för att köpa sin stack med marker. Efter att hon fått sin stack sätter hon sig vid ett bord för att spela. Mitt emot henne sitter en man som klappar på sin katt. Spänningen stiger, mannen håller på att förlora mot Anna. Plötsligt springer katten rakt ut över bordet och välter Annas stack med marker! Ojdå, säger mannen och går prompt ifrån bordet med alla sina marker. a) Implementera en (osorterad) länkad lista. Implementera metoderna addlast(), addfirst(), removelast(), removefirst() samt printall(). Körtiden för add- och removemetoderna ska tillhöra O(1). Som elementtyp, skapa en klass Chip, som har ett attribut: ett heltal. (3p) b) Skapa två interfaces, Stack och Queue. Lägg till tillhörande metoder i dess definitioner (push,pop,size,enqueue,dequeue,size). Låt sedan listan från a) implementera dessa interfaces. (1p) Om du har fått VG på årets labbserie får du automatiskt full poäng för nedanstående uppgift (c) och behöver alltså inte utföra den. Posttenta-korrigering: Det är ok att använda java.util.arraylist för del 1 och 5. c) Skriv ett program som simulerar Annas otur i spelandet. Var noggrann med att använda rätt datayper: 1. Skapa en kö och lägg in N tomma listor med marker, där N är ett SLUMPAT tal mellan 1 och 7 inklusive. 2. Ställ objektet Anna längst bak i kön (representerad som ytterligare en tom lista med marker). Lägg in ytterligare 10 N tomma listor. 3. Ta bort personer från kön tills Anna kommer fram. 4. Lägg in 7 marker i Annas stack. Varje marker ska vara värd 5 kronor. 5. Töm Annas stack och lägg dem i en osorterad lista. Skriv ut listan. (3p)

För följande uppgift har du tillåtelse att vid behov använda lämpliga interfaces i paketet java.util (detta är ett tips ) 6. I mappen given_files finns två klasser som implementerar ett binärt sökträd för heltal. Importera dessa filer till ett nytt projekt. För alla deluppgifter, komplettera mainfunktionen med testfall som visar att klassen fungerar som väntat. a) Implementera metoden member() för det binära sökträdet. Metoden ska fungera enligt tillhörande davadoc-kommentar i källkoden. (2p) b) Gör klassen generisk, så att sökträdet kan användas för alla datatyper som kan jämföras med andra objekt av samma typ, till exempel klassen java.lang.string. Justera vid behov metoderna så att de fungerar som de ska. (2p) c) Skapa en metod printnodes() som skriver ut nodernas värden i preorder-ordning (1p) Lycka till!