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

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

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30 Programmering i Java, datastrukturer och algoritmer

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

Facit Tentamen TDDC (7)

Teoretisk del. Facit Tentamen TDDC (6)

Facit Tentamen TDDC kl (6)

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

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

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

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

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

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 i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i Algoritmer & Datastrukturer i Java

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 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Seminarium 13 Innehåll

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

Tentamen, Algoritmer och datastrukturer

TDIU01 / 725G

Föreläsning 14 Innehåll

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

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

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

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

TDDC Terminologi Uppdaterad Fö #1

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen Datastrukturer för D2 DAT 035

Tentamen i Algoritmer & Datastrukturer i Java

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

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Tentamen i Algoritmer & Datastrukturer i Java

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. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen Datastrukturer D DAT 035/INN960

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

Introduktionsmöte Innehåll

Lösningsförslag till tentamen Datastrukturer, DAT037,

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

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

Tentamen Datastrukturer (DAT036)

Föreläsning 9. Sortering

Föreläsning 13 Innehåll

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Sökning och sortering

Föreläsning 13 Innehåll

Lösningsförslag till tentamen i Digitalteknik, TSEA22

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

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

Magnus Nielsen, IDA, Linköpings universitet

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

DAI2 (TIDAL) + I2 (TKIEK)

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 11 Datastrukturer (DAT037)

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

EDAA01 Programmeringsteknik - fördjupningskurs

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen Datastrukturer D DAT 035/INN960

TDDI14 Objektorienterad programmering

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

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

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

Uppgift 1 ( Betyg 3 uppgift )

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

Föreläsning 1 Datastrukturer (DAT037)

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

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

TENTAMEN OOP

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

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

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

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

Algoritmer. Två gränssnitt

Tentamen Datastrukturer (DAT036)

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

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2013-06-05 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 SU18 TDDC30 DAT1 Programmering i Java, datastrukturer och algoritmer IDA 6 (4 teoretiska och 2 praktiska) 7 Jonas Lindgren Telefon under skrivtid 013-282490 Besöker salen ca kl. - Kursadministratör (namn, telefon, mailadress) Tillåtna hjälpmedel Övrigt Anna Grabska Eklund, 013-282362, anna.grabska.eklund@liu.se Inga Information och frågor hanteras genom Tentaklienten. Preliminära poänggränser: 3: 10 4: 14 5: 18

Tentamen TDDC30 2013-06-05 2 (7) Teoretisk del Anvisningar: Uppgifterna i denna del ska lösas med penna och papper. Vid tentamens slut lämnas svaren till denna del in till tentamensvakterna. 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. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) b) Vad är syftet med ett interface? (0.5p) c) Klasser kan placeras i paket. Varför gör man det? (0.5p) d) Vad är syftet med en konstruktor? (0.5p) e) Vad innebär det att en algoritm har tidskomplexiteten O(n)? (0.5p) f) I Car mycar = new Car() sker två separata saker. Vad innebär Car mycar och vad innebär new Car()? (0.5p) 2. (3p) "Datastrukturer" För dessa tre separata binära träd: I 0 II 7 III 4 1 2 9 6 8 3 5 a) Ange vilka av dessa träd, om några, som är: (1p) 1) Fulla 2) Perfekta 3) Fullständiga b) Ange i vilken ordning värdena skulle skrivas ut genom en postorder-traversering för vart och ett av dessa träd. (0.5p) c) Organisera värdena [ 0 1 2 3 4 5 6 7 8 9 ] i en binär maxheap av minimalt djup. Visa med en bild. (0.5p) d) Organisera valfritt antal av värdena [ 0 1 2 3 4 5 6 7 8 9 ] i ett fullt binärt sökträd av så stort djup som möjligt. Visa med en bild. (1p)

Tentamen TDDC30 2013-06-05 3 (7) 3. (3p) "Tidskomplexitet" a) Förenkla följande tre uttryck för tidskomplexitet: (1p) * O(n) O(3n) + O(5n) * O(3n 2 + n) * O(2n) + O(5 + 4n) b) Ange tidskomplexiteten i värsta fallet, med avseende på n, för följande två metoder. (n är alltid ett positivt heltal) (2p) void foo(int n) { for (int i = 0; i < 5; i = i + 1) { for (int j = 0; j < 2*n; j = j + 1) { System.out.println("foo: "+i+" x "+j+": "+(i*j)); void bar(int n) { System.out.println("bar: "+n); if (n!= 0) { foo(n); bar(n/2); 4. (3p) "Algoritmer" a) Sortera värdena [ 1 5 2 6 7 2 4 ] 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 fältet ser ut innan varje platsbyte, samt vilka index som är på väg att byta plats, med maximalt ett byte per steg. (1p) b) Sortera värdena [ 2 5 2 6 7 1 4 ] 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 fältet ser ut innan varje platsbyte, samt vilka index som är på väg att byta plats, med maximalt ett byte per steg. (1p) c) Kan de två sorteringsalgoritmerna ovan implementeras stabila? Ange separat svar för varje algoritm, samt motivera varför. (1p)

Tentamen TDDC30 2013-06-05 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. 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 uppgift. Det kan även vara en god idé att göra en säkerhetskopia av projektet när man går från t.ex. deluppgift a till deluppgift b. Som en bilaga finns även en lista över vanliga unixkommandon.

Tentamen TDDC30 2013-06-05 5 (7) 5. (4p) Ko-Klassikern Stefan har fått besked att en av hans fjärran släktingar har avlidit, och lämnat sin gård till Stefan. Om man bortser från dödsfallet så är detta goda nyheter för Stefan, då han på senare tid fått blodad tand för livet på landet! På gården ska det tydligen finnas ett antal nötkreatur, och Stefans dröm om ett stadigt förråd av färska mjölkprodukter kan till slut bli en realitet! Dock finns det ett problem, Stefan har lite problem med att hålla isär alla dessa olika sorters nötkreatur. Kor, tjurar och kalvar, vad är skillnaden egentligen, hur mycket väger de och viktigast av allt, hur mycket mjölk producerar de? För att reda ut skillnaderna har Stefan bestämt sig för att skriva ett enkelt program, där han för varje djur kan få reda på dess namn, en uppskattning av dess vikt och en uppskattning av dess mjölkproduktion. a) Hjälp Stefan skriva klart sitt program. Det ska finnas minst fyra klasser, Animal, Cow, Bull och Calf. Fler klasser är tillåtna. Varje klass ska det sedan gå att köra ett antal metoder på, som ska returnera namn, vikt och mjölkproduktion, respektive. (2p) (Se på hur klasserna används i testprogrammet, det demonstrerar vad rätt svar från programkörningen ska vara. Testprogrammet ska fungera utan ändringar, dock får ni gärna göra egna testprogram.) b) Som en fortsättning på del a vill Stefan lösa problemet med så få metoder som möjligt. Han har funderat på saken, och kommit fram till att det borde inte behövas mer än 5 get-metoder, totalt, bland alla klasser. För att det ska bli lite utmaning kräver Stefan att detta löses utan några som helst klass- eller instans-variabler, förutom name i Animal. (2p)

Tentamen TDDC30 2013-06-05 6 (7) 6. (5p) Den Prioriterade Semestern Anna planerar sin semester för sommaren men det finns så många intressanta resemål att besöka, och hon är inte riktigt säker på vad som är den rätta destinationen för henne. För att underlätta sin planering har hon bestämt sig för att göra en prioritetskö av de hetaste kandidaterna. Dock har hon några tentor som hon också måste plugga och gå upp på, så hon har inte riktigt hunnit skriva klart sin kod. a) Hjälp Anna skriva klart, genom att färdigställa hennes remove-metod. Annas prioritetskö är implementerad som en maxheap som i sin tur lagras i ett fält (I det här fallet en ArrayList). Remove-metoden ska returnera och ta bort det största värdet i prioritetskön, som alltså ligger överst i heapen. Om man ska ta bort det översta värdet och fortfarande ha en korrekt maxheap måste man som bekant flytta upp värdet längst nere till höger i heap-strukturen till toppen, och sedan bubbla ner den till rätt plats. Detta sker genom att man byter plats med den nya noden och dess största barn, och sedan upprepar proceduren tills noden som bubblas ligger på rätt plats. (4p) (Kom ihåg att se till att remove fungerar väl i alla fall, även de som kanske inte testas av det givna testprogrammet. Testprogrammet ska fungera utan ändringar, dock får ni gärna göra egna testprogram.) Till exempel: 9 5 4 3 1 9 tas bort, ersätts av 1. 1 byter plats med dess största barn, 5. 1 byter plats med dess största barn, 3. 1 har ej längre större barn, är på rätt plats. b) En annan tanke Anna har är att det vore trevligt om hon kunde använda sin prioritetskö till annat än bara Strings, som nu är fallet. Gör de ändringar som behövs för att göra Annas prioritetskö generisk, så att testprogrammet för del b fungerar. (1p) (Denna uppgift går att göra utan att del a har lösts.)

Tentamen TDDC30 2013-06-05 7 (7) Vanliga Unix-kommandon 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