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

Teoretisk del. Facit Tentamen TDDC (6)

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 kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30 Programmering i Java, datastrukturer och algoritmer

Facit Tentamen TDDC (7)

Teoretisk del. Facit Tentamen TDDC (6)

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

Facit Tentamen TDDC kl (6)

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

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Föreläsning 9 Innehåll

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

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

Tentamen Datastrukturer för D2 DAT 035

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Föreläsning 14 Innehåll

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

Tentamen i Algoritmer & Datastrukturer i Java

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

Algoritmer. Två gränssnitt

Tentamen TEN1 HI

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 TEN1 HI

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

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

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

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

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

Magnus Nielsen, IDA, Linköpings universitet

TDIU01 / 725G

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

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

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

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

Sökning och sortering

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

Tentamen Datastrukturer (DAT037)

Föreläsning 10 Innehåll

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

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

TENTAMEN OOP

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

Lösningar Datastrukturer TDA

TDDC Terminologi Uppdaterad Fö #1

Tentamen TEN1 HI

Tentamen Datastrukturer D DAT 035/INN960

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

Seminarium 13 Innehåll

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

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

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

Tommy Färnqvist, IDA, Linköpings universitet

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 11 Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 035/INN960

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.

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

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Föreläsning 9. Sortering

TENTAMEN OOP

Tentamen, Algoritmer och datastrukturer

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

Objektorienterad Programmering (TDDC77)

Föreläsning 8: Exempel och problemlösning

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

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

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: Algoritmer och datastrukturer. Läs detta!

Tentamen FYTA11 Javaprogrammering

kommando -fl argument

Tentamen i Introduktion till programmering

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

Tentamen Datastrukturer (DAT036)

Tenta i Grundläggande programmering DD klockan

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2014-08-29 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) 8 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-08-29 2 (8) 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 synligheterna public, private och protected? (1p) b) Vad innebär det att en algoritm har tidskomplexitet O(n 2 ) och rymdskomplexitet O(n) i värsta fallet? (2p) c) Vad är skillnaden mellan en instansvariabel och en klassvariabel? (1p) d) Vad är syftet med ett interface? (1p) e) Vad innebär polymorfi? (1p) 2. (6p) "Datastrukturer" 3 4 1 5 6 9 8 a) Är trädet ovan ett binärt sökträd? Motivera svaret! (1p) b) Organisera om siffrorna i trädet ovan så att trädet utgör antingen en binär minheap eller en binär maxheap. Svara med en bild. Ange också vilken typ av heap du valde, och motivera varför trädet utgör antingen en maxheap eller minheap. (3p) ( Organisera om siffrorna innebär att pilarna och noderna förblir på samma plats, endast siffrorna får byta plats i bilden.) c) Ange i vilken ordning värdena i trädet ovan skulle lagras i fältet, om hela trädet representerades som ett fält. Markera odefinierade värden i fältet med ett frågetecken. (2p)

Tentamen TDDC30 2014-08-29 3 (8) 3. (6p) "Tidskomplexitet" a) Antag att det finns ett osorterat fält med tillhörande remove-metoder för att ta bort enskilda värden. Ange tidskomplexiteten för varje remove-metod, samt motivera varför, för: (4p) 1) En remove-metod som alltid tar bort det första värdet i fältet. 2) En remove-metod som alltid tar bort det sista värdet i fältet. 3) En remove-metod som tar bort ett visst värde från fältet, värdet som ska tas bort angivet när metoden anropas. Finns flera kopior av det värdet, tas bara det första som hittas bort. (Om ditt svar bygger på något antagande som du är osäker på, ange även det antagandet.) b) Förenkla följande tre uttryck för tidskomplexitet: (2p) 1) O(7) + O(3n) 2) O(7) O(1 + 3n + n) 3) O(5n 3 ) O(5n 3 ) 4. (6p) "Algoritmer" a) Sortera värdena [ 2 7 1 3 9 5 6 4 8 ] med selectionsort. 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 7 6 2 5 ] med quicksort. 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. Förklara även hur pivot-strategin du använde väljer pivot-element. (2p) c) Kan de två sorteringsalgoritmerna ovan implementeras stabila? Ange separat svar för varje algoritm, samt motivera varför. (2p)

Tentamen TDDC30 2014-08-29 4 (8) 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-08-29 5 (8) 5. (8p) Läxhögen Nu när skolan börjar dra igång på allvar har Anna börjat planera hur hon ska lägga upp sina studier. I år ska allt göras i tur och ordning, har hon bestämt. En sak i taget, ordning och reda. För att få lite struktur på det hela plockar hon fram sina programmeringsfärdigheter och sätter igång på ett litet program som ska lösa detta med hjälp av en stack! Importera Annas projekt från given_files, och hjälp henne med programmet enligt nedan. a) Anna minns något vagt om en speciell metod klasser bör ha och hur inkapsling innebär privata klassvariabler, men hon har inte riktigt hunnit fixa klart detta. Skriv klart Node-klassen åt Anna så att den är korrekt inkapslad, och uppdatera övrig kod så att den fortfarande fungerar. (3p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) b) Några viktiga metoder saknas fortfarande i Stack-klassen. Skriv klart dessa åt Anna så att de följer specifikationen i kommentarerna. (5p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.)

Tentamen TDDC30 2014-08-29 6 (8) 6. (10p) Kurskodsträdet Stefan har börjat titta på alla kurser han kommer läsa fram till sommaren, och har kommit fram till att det är rätt många att hålla reda på. Det vore bra om han kunde hitta något sätt att organisera dessa så att han inte glömmer bort något. Som en blixt från klar himmel inser han att det här är ett prima läge för lite studieflykt, och han sätter sig prompt ned och börjar skriva ett Java-program för att göra detta. Planen är ett binärt träd, där han lagrar alla kurser som strängar baserat på kurskod och namn, och låter det binära trädet sortera därefter. 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) Stefan behöver en metod för att stoppa in värden i det binära trädet. Skriv klart add-metoden enligt specifikationen i den tillhörande kommentaren. Åt vilket håll det binära trädet är sorterat väljer du själv. Att sortera strängar kan verka knepigt, men Stefan 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) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) (Ett Javadoc-utdrag om String.compareTo finns bifogat i slutet av tentamen.) b) Det vore bra om Stefan kunde kontrollera att föregående metod fungerar som den ska. Det brukar dock bli lite knepigt att kontrollera det för hand, men lite ytlig insikt kan han få genom att helt enkelt kontrollera att en ny nod stoppats in efter varje add-anrop. Till detta behöver han en size-metod. Hjälp honom skriva klart denna. Denna metod får inte använda sig av en räknevariabel i klassen som räknar antalet gånger add anropas, utan måste räkna antalet noder som faktiskt finns i trädet för att producera svaret. (4p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter, men blir svårare att testa utan att ha gjort a) först.)

Tentamen TDDC30 2014-08-29 7 (8) 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-08-29 8 (8) 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.