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

Relevanta dokument
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

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

Facit Tentamen TDDC (7)

Facit Tentamen TDDC kl (6)

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

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

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

Tentamen TEN1 HI

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

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen Datastrukturer för D2 DAT 035

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

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen TEN1 HI

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

TDIU01 / 725G

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Tentamen Datastrukturer D DAT 035/INN960

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

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

Tentamen Datastrukturer (DAT037)

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

Tentamen Datastrukturer D DAT 035/INN960

TDDC Terminologi Uppdaterad Fö #1

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

Seminarium 13 Innehåll

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.

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

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

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

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

Tentamen Datastrukturer D DAT 036/INN960

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

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

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

Föreläsning 13 Innehåll

Tentamen Datastrukturer D DAT 036/INN960

Föreläsning 9. Sortering

Tentamen i Algoritmer & Datastrukturer i Java

Tommy Färnqvist, IDA, Linköpings universitet

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

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

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

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

Tillämpad Programmering (ID1218) :00-13:00

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Lösningsförslag till tentamen i Digitalteknik, TSEA22

Träd Hierarkiska strukturer

Magnus Nielsen, IDA, Linköpings universitet

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

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

Föreläsning 9 Datastrukturer (DAT037)

Tentamen TEN1 HI

Algoritmer och datastrukturer 2012, fo rela sning 8

Lösningar Datastrukturer TDA

Tentamen Datastrukturer (DAT036)

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

729G04 Programmering och diskret matematik

Föreläsning 11 Datastrukturer (DAT037)

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

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

Tentamen, Algoritmer och datastrukturer

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen Datastrukturer (DAT036)

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Tentamen i Introduktion till programmering

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

::= HIHI HIHIHI ::= HAHA HAHAHA

Tentamen i. TDDC67 Funktionell programmering och Lisp

Föreläsning 9 Innehåll

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018

Lösningsförslag till tentamen Datastrukturer, DAT037,

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2015-08-28 Sal Tid 08:00 12: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 DAT1 Programmering i Java, datastrukturer och algoritmer IDA 6 (4 teoretiska och 2 praktiska) 7 Jonas Lindgren Telefon under skrivtid 013-281403 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: 20 4: 28 5: 36

Tentamen TDDC30 2015-08-28 kl 08-12 2 (7) 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. Alla svar skrivs på lösa blad, där 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 syftet med ett interface? (1p) b) Vad är skillnaden mellan en instansvariabel och en klassvariabel? (1p) c) Vad innebär polymorfi? (1p) d) Varför anses program skrivna i Java vara plattformsoberoende? (1p) e) Vad är skillnaden mellan en abstrakt klass, en vanlig klass och ett interface? (2p) 2. (6p) "Datastrukturer" a) Värdena 7 1 3 2 6 4 5 ligger i en perfekt minheap. Rita upp hur heapen ser ut och hur värdena ligger i den. (2p) b) Organisera om siffrorna i trädet nedan så att trädet utgör ett binärt sökträd. (2p) ( Organisera om siffrorna innebär att pilarna och noderna förblir på samma plats, endast siffrorna får byta plats i bilden.) 9 52 57 5 8 71 4 73 76 c) Ett binärt träd har skrivits ut med en levelorder-traversering samt en inorder-traversering. Rita upp hur det motsvarande trädet ser ut. (2p) Levelorder-traversering: 3 5 2 4 1 Inorder-traversering: 5 4 3 1 2

Tentamen TDDC30 2015-08-28 kl 08-12 3 (7) 3. (6p) "Tidskomplexitet" a) Antag att en enkellänkad lista har tre olika insert-metoder. Ange tidskomplexiteten, samt motivera varför, för: (3p) * En insert-metod som alltid stoppar in elementet först i listan. * En insert-metod som alltid stoppar in elementet sist i listan. * En insert-metod som stoppar in det nya elementet på den x'te platsen i listan, där x är en parameter som anges när metoden körs. b) Ange tidskomplexiteten i värsta fallet, med avseende på n, för följande metoder. (n är alltid ett positivt heltal.) (2p) int foo(int n) { int x = n*n; return x*x; int foofoo(int n) { for (int i = 0; i < 5; i = i+1) { foo(n); return 5; int sum(int n) { int sum = n*n; for (int i = 0; i < n; ++i) { sum += foofoo(i); return sum; c) Förenkla följande uttryck för tidskomplexitet: (1p) O(5 + 2n + 2n²) O(n) + O(n 7 ) 4. (6p) "Algoritmer" a) Sortera värdena [ 5 5 1 4 3 4 0 5 ] med countsort. 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, dvs 1, 2, 3, osv. Ange tydligt vad som sker under sorteringen. (2p) b) Sortera värdena [ 2 5 8 7 1 3 6 ] med insertionsort. Gör detta genom att byta plats på värden inom fältet, dvs. in-place. Sorteringen ska leda till stigande ordning, dvs 1, 2, 3, osv. 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. (2p) c) Vad innebär det att en sorteringsalgoritm är stabil? Ge exempel på en sorteringsalgoritm som kan implementeras stabil, och en som inte kan implementeras stabil. (2p)

Tentamen TDDC30 2015-08-28 kl 08-12 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. 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. Testprogrammet till varje deluppgift ska fungera utan förändringar när tillhörande deluppgift är löst, om inget annat anges i uppgiften. 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. För att importera projekt i Eclipse, File Import, sedan General Existing projects into workspace, klicka sedan i Select archive file och välj Browse, och välj sedan arkivfilerna för det projekt du vill ha i given_files. Skapa ett nytt projekt i Eclipse för varje deluppgift, om inget annat anges i uppgiften. Gör detta genom att döpa om det gamla projektet till något lämpligt, t.ex. svar_uppgift_a, och sedan importera projektet på nytt för att göra del b. Om du vill fortsätta arbeta med en tidigare lösning kan du även kopiera ditt existerande projekt och arbeta vidare på kopian. Som en bilaga finns även en lista över vanliga unixkommandon.

Tentamen TDDC30 2015-08-28 kl 08-12 5 (7) 5. (8p) Bokhögen Skolstarten har krypt på Anna och hon har fortfarande många bra böcker kvar att läsa. För att hinna klart med åtminstone de allra viktigaste innan nyår så måste hon prioritera! En maxheap där hon kan stoppa in alla sina böcker med en prioritet, och sedan plocka ut dom igen, en och en, när det är dags att läsa dom, vore..egentligen kanske overkill, men lite studieflykt är alltid välkommet! I det här fallet låter hon t.ex. favoritboken få prioritet 100 så att den är mest prioriterad, och sedan kommer de övriga in därefter. En nod från Annas heap: Värde Importera Annas projekt från given_files, och hjälp henne med programmet enligt nedan. a) Implementera färdigt Annas size-metod, så att den räknar antal element i heapen. Den ska implementeras iterativt! (3p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) b) Det vore smidigt om Anna kunde ändra sin bok-klass så att den kan lagra godtycklig data istället för bara en sträng. Då kan hon göra en datastruktur där hon t.ex. lagrar saker som bokens titel, författare och årtal. Uppdatera all relevant kod så att del b fungerar som den ska. Var noga med att eliminera alla varningar som dyker upp när du gör konverteringen! (2p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) c) Implementera färdigt Annas depth-metod, så att den räknar ut djupet av heapen. Den ska implementeras rekursivt! Kom ihåg att rotnoden, om den finns, är på djup 0. (3p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.)

Tentamen TDDC30 2015-08-28 kl 08-12 6 (7) 6. (10p) Trädets två aspekter Stefan har knackat ihop ett binärt sökträd, eller åtminstone skelettet till vad som ska bli ett binärt sökträd. Det finns dock mer att göra, och det är där ni kommer in i bilden. En nod från Stefans binära träd: Värde Importera Stefans projekt från given_files, och hjälp honom med programmet enligt nedan. a) Ett binärt sökträd måste ha en add-metod. Stefan har förberett hur metoden ska se ut, men det är upp till er att implementera den. (8p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter, men kan vara svår att testa utan den övriga funktionaliteten.) b) För att kontrollera add-metoden vore en printinorder-metod på sin plats. Stefan har förberett även den. Ni får implementera den på valfritt vis, så länge den bygger på strukturen i det binära sökträdet. (2p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter, men kan vara svår att testa utan den övriga funktionaliteten.)

Tentamen TDDC30 2015-08-28 kl 08-12 7 (7) Intressanta terminal-kommandon eclipse & mkdir målkatalog rmdir målkatalog cd målkatalog cd cp källfil målfil mv källfil målkatalog ls cat filnamn Starta Eclipse Skapa målkatalog Ta bort målkatalog Byt aktuell katalog till målkatalog Byt aktuell katalog till din hemkatalog Kopiera fil från källfil till målfil Flytta källfil till målkatalog Skriver ut alla filer i aktuell katalog Skriver ut innehållet i filen filnamn