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

Relevanta dokument
Facit Tentamen TDDC kl (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

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

Facit Tentamen TDDC (7)

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

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 Programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

Seminarium 13 Innehåll

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

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

Tentamen i Algoritmer & Datastrukturer i Java

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

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 13 Innehåll

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

Tentamen TEN1 HI

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

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

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

Tentamen Datastrukturer (DAT037)

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer för D2 DAT 035

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

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

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

Föreläsning 14 Innehåll

TDDC Terminologi Uppdaterad Fö #1

Föreläsning 9. Sortering

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

TDIU01 / 725G

Objektorienterad Programmering (TDDC77)

Tentamen Datastrukturer D DAT 035/INN960

::= HIHI HIHIHI ::= HAHA HAHAHA

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Tentamen Datastrukturer (DAT036)

Träd Hierarkiska strukturer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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

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

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Tentamen Datastrukturer D DAT 036/INN960

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

Tentamen i Grundläggande programmering STS, åk

Länkade strukturer, parametriserade typer och undantag

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

Föreläsning 13 Innehåll

Tildatenta Lösningsskiss

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

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

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

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

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

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

Tentamen Datastrukturer D DAT 035/INN960

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

Exempeltenta GruDat 2002/2003

Föreläsning 11 Datastrukturer (DAT037)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

Stackar, köer, iteratorer och paket

Datastrukturer. föreläsning 3. Stacks 1

13 Prioritetsköer, heapar

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

Tentamen i. TDDC67 Funktionell programmering och Lisp

Tentamen Datastrukturer, DAT037 (DAT036)

Tentamen i Grundläggande programmering STS, åk 1 lördag

Trädstrukturer och grafer

Föreläsning 4 Datastrukturer (DAT037)

Datastrukturer och Algoritmer D0041D

Föreläsning 2 Datastrukturer (DAT037)

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

Föreläsning Datastrukturer (DAT037)

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

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2015-03-19 Sal Tid 14:00 18: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 2015-03-19 kl 14 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) Ge ett exempel på ett kodstycke som orsakar ett NullPointerException. (1p) b) Vad är syftet med en konstruktor? (1p) c) Vad innebär det att en metod är överlagrad? (1p) d) Varför används Ordo-notationen för att jämföra tidskomplexitet hos algoritmer, istället för att t.ex. jämföra tiden de olika algoritmerna tar att köra? (1p) e) Vad är syftet med UML? (1p) f) Vad är skillnaden mellan en abstrakt datatyp (ADT) och dess implementation? (1p) 2. (6p) "Datastrukturer" a) Ett binärt sökträd har skrivits ut med en postorder-traversering, vilket resulterade i [ 2 4 3 6 5 1 ]. Rita upp hur det binära sökträdet såg ut. (3p) b) Fältet [ 9 2 7? 4 1 3?? 6??? 5 8 ] representerar ett träd. Frågetecken representerar ett odefinierat värde. Rita upp hur det motsvarande trädet ser ut. (2p) c) Ange i vilken ordning noderna i trädet nedan besöks av en levelorder-traversering och en inorder-traversering. (1p) 1 5 4 2 3

Tentamen TDDC30 2015-03-19 kl 14 3 (8) 3. (6p) "Tidskomplexitet" a) Sortera följande sorteringsalgoritmer med avseende på deras tidskomplexitet i värsta fallet: Selectionsort, Mergesort, Shakersort, Countsort, Heapsort. Svara ordnat med lägst tidskomplexitet först. (2p) 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) { for (int i = 0; i < n; ++i) { System.out.println( Foo! + n); void bar(int n) { if (n % 5 == 0) { for (int i = 0; i < n; ++i) { foo(i); void extrabar(int n) { for (int i = n; i > 0; --i) { bar(i); c) Förenkla följande tre uttryck för tidskomplexitet: (2p) 1) O(nlog(n)) O(10n²) 2) O(n² + 10n + 2) O(3n ⁷) 3) O(n³) + O(167n²)

Tentamen TDDC30 2015-03-19 kl 14 4 (8) 4. (6p) "Algoritmer" a) Sortera värdena [ 6 1 2 7 5 4 3 ] med shellsort, med lucktalen [ 4 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 [ 5 4 3 2 1 ] med shakersort. 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 de två sorteringsalgoritmerna ovan implementeras stabila? Ange separat svar för varje algoritm, samt motivera varför. (2p)

Tentamen TDDC30 2015-03-19 kl 14 5 (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 2015-03-19 kl 14 6 (8) 5. (8p) Att organisera uppgifter Mitt bland alla planer för öde öar och annat kul har Stefan hamnat efter i sitt skolarbete och har nu en del att ta igen. Eftersom det är ganska tight med tid så måste han också prioritera det viktigaste först, så att han hinner med allt så gott det går. Dock finns det alltid tid för lite studieflykt i sista minuten, och ett välskrivet Java-program för att klura ut i vilken ordning han ska hantera sina uppgifter vore väl intressant? En heap vore nog bra, där de olika uppgifterna han har gett sig själv kan sorteras efter hur viktiga de är. En uppgift med större viktighet är viktigare än andra med mindre. Om han sedan använder en maxheap så kommer han ju alltid kunna hämta ut den mest viktiga uppgiften från den. Strålande! (Obs, beskrivningen ovan är inte tydlig med att viktigheten uttrycks i en siffra där en mindre siffra är viktigare, dvs uppgift 1, uppgift 2, etc. Information med förtydling gick ut under tentans gång.) En nod från Stefans heap: Värde Importera Stefans projekt från given_files, och hjälp honom med programmet enligt nedan. a) Att lägga till saker i heapen har Stefan redan ordnat, men att ta bort saker har han inte hunnit fixa. Hjälp Stefan skriva sin removetop-metod, och var noggrann med att den uppdaterar heapen i övrigt så att den fortsätter vara en korrekt heap. Vid borttagning så behöver du här inte bevara att heapen är ett fullständigt träd. (6p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) b) Obs: Har du har bonus på labb 3 och 4 tillgodoräknas du deluppgift 5b och 6b. Just nu kan Stefans heap bara lagra strängar och dess viktighet. Det vore egentligen smidigt om den kunde lagra godtyckliga datatyper med viktighet, och det vore ju en lätt sak att fixa med hjälp av generiska typer. Hjälp Stefan med att uppdatera hans kod så att testprogrammet för del b fungerar. Var noga med att eliminera alla varningar som dyker upp när du gör konverteringen, så att allt blir som det ska! (2p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.)

Tentamen TDDC30 2015-03-19 kl 14 7 (8) 6. (10p) Båt-listan Anna har hört om Stefans planer att köpa sin egen öde ö, och även om det verkar intressant verkar det också lite väl ambitiöst. Något mer realistiskt vore nog att ta en seglar-semester någonstans varmt i ett år eller så. Ju mer Anna tänker på det, desto intressantare verkar det. Men det är ganska mycket som måste ordnas för att det här ska gå vägen, hon måste hitta en båt, rusta upp den och köpa in all kringutrustning som behövs, diverse provision och ha pengar öronmärkta för framtida påfyllningar och reparationer. Det givna sättet att få struktur på situationen är så klart ett välskrivet Java-program! De inköp som måste göras är ju mer eller mindre viktiga, t.ex. så är ju en båt mycket viktigare än matprovisionerna, men matprovisionerna i sin tur mycket viktigare än de skönlitterära böckerna som sedan måste köpas in. Likaså kanske en del saker är lika viktiga för resan, men kostar olika mycket, och då vore det ju vettigast att prioritera den dyraste saken först, för att eliminera de stora hindren först. En prioritetskö borde kunna hjälpa här, tänker Anna.. Importera Annas projekt från given_files, och hjälp henne med programmet enligt nedan. a) Annas prioritetskö behöver en add-metod, som tar in en båtpryl och sorterar in den i kön enligt dess prioritet. Prylens prioritet bestäms i första hand av prioritetsattributet, där lägre är mer prioriterat, och i andra hand av prylens kostnad, där högre är mer prioriterat. När allt är sagt och gjort ska Anna kunna stoppa in saker i prioritetskön i godtycklig ordning och sedan plocka ut dom i prioritetsordningen, så hon vet vad hon måste fixa först. Hjälp henne skriva klart add-metoden. (6p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) b) Obs: Har du har bonus på labb 3 och 4 tillgodoräknas du deluppgift 5b och 6b. Det här ser ju lovande ut, men det vore smidigt om Anna kunde återanvända den här koden i andra projekt. För att det ska bli riktigt bra borde koden var vettigt och konsekvent namngiven med rätt synligheter. För att strukturera upp hur hon har tänk sig ritar Anna ihop UML-diagrammen nedan, som representerar hur hon vill att hennes klasser ska se ut. Uppdatera Annas klasser så att de följer UML-diagrammen till punkt och pricka. (4p) (Denna deluppgift kan lösas oberoende från övriga deluppgifter.) PriorityQueue - Node first + int size() + void insert(...) + Item dequeue() + boolean isempty() Node - Item data # Node next # Node(...) + Item getdata()

Tentamen TDDC30 2015-03-19 kl 14 8 (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