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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

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.

Facit Tentamen TDDC (7)

TDDC30 Programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

TDDC30 Programmering i Java, datastrukturer och algoritmer

Facit Tentamen TDDC kl (6)

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

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Algoritmer. Två gränssnitt

Föreläsning 9 Innehåll

Föreläsning 14 Innehåll

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

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

Tentamen TEN1 HI

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

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

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

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

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

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 9. Sortering

Seminarium 13 Innehåll

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

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Exempelsamling Assemblerprogrammering

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Tentamen i Introduktion till programmering

Tentamen Datastrukturer (DAT037)

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

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

Objektorienterad Programmering (TDDC77)

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

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

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

Föreläsning 13 Innehåll

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

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

Tentamen, Algoritmer och datastrukturer

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Tentamen i Algoritmer & Datastrukturer i Java

TDDC Terminologi Uppdaterad Fö #1

Sökning och sortering

Lösningar Datastrukturer TDA

Tentamen Datastrukturer D DAT 036/INN960

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

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

TENTAMEN OOP

tentaplugg.nu av studenter för studenter

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

TDIU01 / 725G

Interfacen Set och Map, hashtabeller

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.

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

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen TEN1 HI

Tentamen Datastrukturer (DAT036)

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

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

Magnus Nielsen, IDA, Linköpings universitet

Tentamen Datastrukturer D DAT 035/INN960

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen Datastrukturer D DAT 035/INN960

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Föreläsning 9 Innehåll

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

Objektorienterad programmering D2

Datastrukturer. föreläsning 6. Maps 1

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

Föreläsning 10 Innehåll

Tentamen Datastrukturer D DAT 036/INN960

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd

Lösningsförslag till exempeltenta 1

Arrayer (fält)

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2014-06-11 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) 9 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 2014-06-11 2 (9) 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 skillnaden mellan en abstrakt klass, en vanlig klass och ett interface? (2p) b) Varför anses program skrivna i Java vara plattformsoberoende? (1p) c) Vad innebär det att en algoritm har tidskomplexitet O(n 2 ) och rymdskomplexitet O(n 3 ) i bästa fallet? (2p) d) Vad är syftet med en konstruktor? (1p) 2. (6p) "Datastrukturer" [ 2 7 8 6 5 1 9 3 4 ] a) Arrangera värdena ovan i ett träd av maximalt djup. Svara med en bild av det resulterande trädet. (1p) b) Placera värdena ovan i följande träd så att det blir ett korrekt binärt sökträd. Svara med en bild. (2p) c) Organisera valfritt antal av värdena ovan i en full binär minheap. Svara med en bild, och motivera varför den är full. (2p) d) Ange i vilken ordning noderna i det blanka trädet ovan skulle besökas av en preordertraversering, samt en levelordertraversering. Svara med två bilder, och ange tydligt vilken traversering som är vilken. (1p)

Tentamen TDDC30 2014-06-11 3 (9) 3. (6p) "Tidskomplexitet" a) Förenkla följande tre uttryck för tidskomplexitet: (2p) 1) O(n) + O(2n 2 + 3n) 2) O(n) O(2n 2 + 3n) 3) O(2) O(3n) + O(n) b) Ange tidskomplexiteten i värsta fallet, med avseende på n, för följande metoder. (n är alltid ett positivt heltal.) (2p) void foo(int n) { System.out.println("foo: " + n); for (int i = 0; i < n; i = i+1) { bar(i); bar(n); bar(n); void bar(int n) { System.out.println("bar: " + n); for (int i = n; n > 0; i = i-1) { for (int j = 0; j < 10*n; j = j+1) { System.out.println(i + "*" + j + "=" + (i*j)); void fizz(int n) { System.out.println("fizz: " + n); c) Sortera följande sorteringsalgoritmer med avseende på deras tidskomplexitet i värsta fallet: Bucketsort, Insertionsort, Bubblesort, Quicksort, Heapsort. Svara ordnat med lägst tidskomplexitet först. (2p)

Tentamen TDDC30 2014-06-11 4 (9) 4. (6p) "Algoritmer" a) Sortera värdena [ 6 5 1 2 7 4 2 ] med shellsort med lucksekvensen [ 3 2 1 ]. 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) b) Sortera värdena [ 4 1 5 6 2 4 ] med bubblesort. 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) Kan insertionsort implementeras stabil? Motivera! (2p)

Tentamen TDDC30 2014-06-11 5 (9) 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, sedan Browse, och välj projekt i given_files. Viktigt: Glöm inte att kryssa i Copy projects into workspace! Skapa ett nytt projekt i Eclipse för varje deluppgift, om inget annat anges i uppgiften. Som en bilaga finns även en lista över vanliga unixkommandon.

Tentamen TDDC30 2014-06-11 6 (9) 5. (8p) Semester-planen Anna har bestämt sig för att den här sommaren ska avnjutas med maximalt nöje. För att verkligen få ut det mesta av sommaren vill hon planera vad hon ska göra noga. Hon tänker spika ett antal aktiviteter, och när hon är klar med dessa tänker hon börja om och göra om dom igen och igen, tills dess att sommaren är slut! Detta angreppssätt påminner Anna om något hon lärde sig om i Java-kursen tidigare, en cirkulärt länkad lista! I den kan man ju gå runt och runt hur länge som helst, tills dess att man tröttnar, precis som hon tänker göra med sina sommaraktiviteter! Sagt och gjort, Anna plockar fram sina programmeringsverktyg och börjar arbeta på en cirkulärt länkad lista för att sköta sin planering! Importera Annas projekt från given_files, och hjälp henne med programmet enligt nedan. a) Anna har kommit en bit på vägen på sin cirkulärt länkade lista, men några omtentor i sista minuten har förhindrat henne från att skriva klart riktigt allt. Hjälp henne skriva klart insertmetoden i klassen CircularLinkedList. Den ska ta in strängar som representerar det hon planerat att göra, och placera dessa inuti den länkade listan så att listan blir lexikografiskt sorterad i stigande ordning. Det här innebär helt enkelt att värdena i den länkade listan ska vara sorterade i alfabetisk ordning (ex. aa, ab, bb ). Det här kan verka knepigt på ytan, men Anna vet att i Java har strängar en compareto-metod som kan användas för att jämföra två strängar lexikografiskt. Lös den här uppgiften med hjälp av den. (6p) (Ett Javadoc-utdrag om compareto finns bifogat i slutet av tentamen.) b) I sista minuten kommer Anna på att det nog vore bra att ha en size-metod som returnerar antalet element som finns lagrade i listan. Implementera denna åt henne. (2p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.)

Tentamen TDDC30 2014-06-11 7 (9) 6. (10p) Läskigt läskande Stefan anar att sommaren kommer bli riktigt het i år, och har därför börjat fundera på hur han bäst håller sig sval. Läskande drycker av något slag verkar vara nyckeln, men exakt vilken dryck är den mest läskande av dem alla? Om han köper in ett urval av olika produkter, hur ska ha sedan kunna välja precis rätt dryck, när han står där i hettan och svetten rinner? Stefan anar ett svepskäl för att programmera och sätter igång med en maxheap, sorterad med avseende på en drycks läskighet. En nod från Stefans heap: Värde Importera Stefans projekt från given_files, och hjälp honom med programmet enligt nedan. a) Stefan behöver en metod för att skriva ut alla värden i hans heap, för att kontrollera att allt blev instoppat som det skulle. Han vill att värdena skrivs ut i den ordning som en postordertraversering leder till. Hjälp honom att skriva klart print i MaxHeap. (6p) b) För att kontrollera att heapen är korrekt vore det även bra med en depth-metod som anger djupet på heapen. Han definierar djupet på en heap med endast en nod som 0, och om heapen är helt tom ska ett undantag kastas. Hjälp honom att skriva klart depth. (4p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.)

Tentamen TDDC30 2014-06-11 8 (9) 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

Tentamen TDDC30 2014-06-11 9 (9) public int compareto(string anotherstring) Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argument string. The result is a negative integer if this String object lexicographically precedes the argument string. The result is a positive integer if this String object lexicographically follows the argument string. The result is zero if the strings are equal; compareto returns 0 exactly when the equals(object) method would return true. This is the definition of lexicographic ordering. If two strings are different, then either they have different characters at some index that is a valid index for both strings, or their lengths are different, or both. If they have different characters at one or more index positions, let k be the smallest such index; then the string whose character at position k has the smaller value, as determined by using the < operator, lexicographically precedes the other string. In this case, compareto returns the difference of the two character values at position k in the two string -- that is, the value: this.charat(k)-anotherstring.charat(k) If there is no index position at which they differ, then the shorter string lexicographically precedes the longer string. In this case, compareto returns the difference of the lengths of the strings -- that is, the value: this.length()-anotherstring.length() Specified by: compareto in interface Comparable<String> Parameters: anotherstring - the String to be compared. Returns: the value 0 if the argument string is equal to this string; a value less than 0 if this string is lexicographically less than the string argument; and a value greater than 0 if this string is lexicographically greater than the string argument.