TDDC30 Programmering i Java, datastrukturer och algoritmer

Relevanta dokument
TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30 Programmering i Java, datastrukturer och algoritmer

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/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

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

Föreläsning 2. Länkad lista och iterator

Föreläsning 2. Länkad lista och iterator

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

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

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

Föreläsning 4 Innehåll

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen Datastrukturer D DAT 035/INN960

Teoretisk del. Facit Tentamen TDDC (6)

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 2 Datastrukturer (DAT037)

Stackar, köer, iteratorer och paket

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

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

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

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

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

Tentamen i Algoritmer & Datastrukturer i Java

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Samlingar Collection classes

Länkade strukturer. (del 2)

Länkade strukturer, parametriserade typer och undantag

DAI2 (TIDAL) + I2 (TKIEK)

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

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

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

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

Föreläsning 3. Stack

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen TEN1 HI

Facit Tentamen TDDC (7)

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

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

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Datastrukturer. föreläsning 3. Stacks 1

Objektsamlingar i Java

Objektorienterad Programkonstruktion

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

PROGRAMMERINGSTEKNIK TIN212

Sammansatta datatyper Generics: Parametrisk polymorfism

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen Datastrukturer D DAT 036/DIT960

Föreläsning 10. ADT:er och datastrukturer

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

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Föreläsning 3. Stack

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

DAT043 - föreläsning 8

DAT043 Objektorienterad Programmering

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

Seminarium 2 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

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

Tentamen i Objektorienterad modellering och design Helsingborg

Algoritmer och datastrukturer. HI1029 8,0 hp Föreläsning 1

Tentamen TEN1 HI

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

Objektorienterad Programmering (TDDC77)

Tentamen. Programmeringsmetodik, KV: Java och OOP. 20 januari 2005

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Trädstrukturer och grafer

Collection classes. Interface, första exempel. Interface (forts) Men först

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

Tentamen Datastrukturer (DAT037)

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Facit Tentamen TDDC kl (6)

Föreläsning 12. Länkade listor

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 5 Erik Nilsson, Institutionen för Datavetenskap, LiU

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

TENTAMEN I DATAVETENSKAP

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Tentamen Datastrukturer, DAT037 (DAT036)

Objektorienterad programmering D2

Tentamen i Programmering

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Generisk klass med typparameter Inre klass - ListIterator

Samlingar Collection classes

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

Transkript:

LINKÖPINGS UNIVERSITET Institutionen för datavetenskap Jonas Wallgren Tentamen i TDDC30 Programmering i Java, datastrukturer och algoritmer För I3, Ii3 Datum: 2008-12-18 Klockan: 08-12 Jour: Jonas Wallgren, 013-28 2682 Administratör: Madeleine Häger Dahlqvist, tel. 28 2360 Hjälpmedel: Anvisningar: Inga Omotiverade svar ger noll poäng! Börja varje uppgift på nytt papper och skriv namn och personnummer på varje inlämnat blad. Tentamen består av två delar: en teoretisk och en praktisk. Den teoretiska delen löses med papper och penna som en traditionell tentamen. Den praktiska delen löses på datorer, anvisade vid tentamenstillfället. Efter tentamen lämnas alla filer som ska examineras kvar på kontot. Poäng: Totalt kan 21 poäng erhållas, fördelade på 6 uppgifter. För godkänt krävs minst 10 poäng, för betyg 4 minst 14 poäng och för betyg 5 minst 17 poäng.

Tentamen TDDC30 2008-08-22 2 (11) 1. (4p) Sortering Teoretisk del a) Sortera nedanstående element med Quicksort. Visa varje steg i sorteringen. 4, 6, 2, 8, 3, 7, 1, 5 b) Vilken är Quicksorts komplexitet i medelfallet och i värsta fallet? Förklara varför. c) Varför är stabilitet intressant i sorteringssammanhang? Är Quicksort stabil? 2. (3p) Träd a) Sätt in följande element (i given ordning) i ett från början tomt binärt sökträd. Visa slutresultatet.. 3, 6, 7, 4, 9, 1, 2, 8, 5 b) Ta bort elementet 6 ur det resulterande trädet ovan. Förklara operationen och visa hur trädet ser ut efteråt. c) Traversera trädet från deluppgift a) i post-ordning. Skriv ut elementen vid besök. 3. (3p) Objektorientering a) Hur hanteras multipelt arv i Java? Ex: Om man har dels landfordon med hjulantal och dels sjöfordon med djupgående, hur kan då amfibiefordon vara båda delarna? (Principdiskussion räcker. Korrekt Javakod behövs inte.) b) Vad är och när/hur används konstruktorer? c) Hur beskrivs en klass i ett klassdiagram? 4. (2p) Köer a) Beskriv hur en (vanlig) kö kan representeras med en cirkulär länkad lista. Nämn ett problem med representationen. b) Visa hur de grundläggande köoperationerna utförs på den representationen och motivera deras komplexitet.

Tentamen TDDC30 2008-08-22 3 (11) 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. 5. (5p) Objektorienterad design 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. Poängavdrag följer beroende på förenklingens storlek. Tänk på läsbarhet och namngivning, och även på attributs och metoders synlighet. Skapa ett nytt projekt för varje uppgift. Benämn dessa Uppg5 resp Uppg6. För att mata in givna filer i Eclipse rekommenderas att du först öppnar filen i en vanligt texteditor varifrån texten kopieras och klistras in i Eclipse. Vid oklarheter och frågor om detaljerad Java-syntax, använd tentamenssystemet för kontakt med examinator. Bilagd finns även en lista över vanliga unixkommandon. En viss organisationsstruktur består av institutioner och avdelningar. En avdelning är en underorganisation till en institution, institutioner består alltså av avdelningar. En institution kan ha godtyckligt många avdelningar. Institutioner har en metod läggtillavdelning(avdelning avd) som anropas då en ny avdelning ska läggas till institutionen. Alla organisationer har (godtyckligt många) medlemmar, vilka kan läggas till med metoden läggtillmedlem(medlem medlem). Organisationernas medlemsregister kan skrivas ut med hjälp av metoden void skrivutmedlemmar(). Tänk på att även underorganisationers medlemmar ska skrivas ut. Medlemmar har ett namn (sträng), vilket kan skrivas ut med metoden skrivut- Namn(). De klasser vi ska implementera är alltså Organisation, Institution, Avdelning och Medlem. I denna uppgift får du endast använda de standardklasser som återfinns i java.lang (t.ex. String, Integer, System.out och System.err) samt gränssnittet java.util.list och klassen java.util.linkedlist. Klassen OrganisationTester i katalogen Given_files innehåller ett litet testprogram som du kan använda för att testa dina klasser. Klassen bygger upp en liten organisationsstruktur och skriver ut dess medlemmar. Denna klass kommer ej att examineras.

Tentamen TDDC30 2008-08-22 4 (11) a) Rita ett klassdiagram över dessa klasser på ett papper där deras inbördes relationer framgår. Om du ej kan rita ett sådant klassdiagram kan du få ett av tentamensvakterna mot att du fyller i formuläret i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inga poäng för denna uppgift. b) Implementera klasstrukturen i a), utom metodernas innehåll (se kommande uppgifter). Förse varje organisations- och medlemsklass med en konstruktor som tar en sträng som argument. Denna sträng motsvarar namnet på organisationen/medlemmen. Försök implementera klasstrukturen så mycket du kan. Även om du inte lyckas implementera alla detaljer är det möjligt att du kan få något poäng för den del du lämnar in. Om du ej kan implementera denna klasstruktur kan du få den given av tentamensvakterna mot att du fyller i formuläret i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inga poäng för denna uppgift, och max 1p för uppgift 6a. c) Implementera metoderna läggtillmedlem och läggtillavdelning. d) Implementera metoden skrivutmedlemmar. 6. (4p) Stackar I den här uppgiften ska du implementera en stack med en arraystruktur. Stacken ska kunna hantera element av en godtycklig typ, i den här beskrivningen kallad E. Följande operationer ska stödjas. void push(e elt) void pop() E top() (Observera att pop() i den här versionen bara tar bort stacktoppelementet. Vill man veta vilket det är måste man göra top() först.) Den underliggande arrayen ska (initialt) ha storlek 3. Om du ej kan använda generiska typparametrar kan du, mot poängavdrag, anta typen int. Den givna filen StackTester.java, som finns i katalogen Given_files, innehåller ett testprogram med vilket du kan testa din implementation. Denna fil kommer inte att examineras. I denna uppgift får du endast använda de standardklasser som återfinns i java.lang (t.ex. String, Integer, System.out och System.err). OBS: För att skapa en array av generisk typ E måste man först skapa den av typen Object[] för att därefter typkonvertera till E[].

Tentamen TDDC30 2008-08-22 5 (11) a) Implementera klassen Stack. Om du ej kan implementera denna klass kan du få svaret av tentamensvakterna mot att du fyller i formulär 6A i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inget poäng för denna uppgift. b) Implementera metoden push. Om du ej kan implementera denna metod kan du få svaret av tentamensvakterna mot att du fyller i formulär 6B i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inget poäng för denna uppgift. c) Implementera metoderna pop och top. Om du ej kan implementera dessa metoder kan du få svaret av tentamensvakterna mot att du fyller i formulär 6C i slutet av detta häfte. På detta vis får du en chans att lösa de andra deluppgifterna. Du får då inget poäng för denna uppgift. d) Modifiera push så att den underliggande arrayen tredubblar sin storlek om stacken blir full.

Tentamen TDDC30 2008-08-22 6 (11) Utdrag ur Java API Interface java.util.list<e> All Superinterfaces: Collection<E>, Iterable<E> All Known Implementing Classes: (Välj lämplig implementation bland kursiva. De kan skapas med standardkonstruktor. //Daniel) AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector void add(e o) Appends the specified element to the end of this list (optional operation). E get(int index) Returns the element at the specified position in this list. Iterator<E> iterator() Returns an iterator over the elements in this list in proper sequence. int size() Returns the number of elements in this list. Class java.util.linkedlist<e> java.lang.object extended by java.util.abstractcollection<e> extended by java.util.abstractlist<e> extended by java.util.abstractsequentiallist<e> extended by java.util.linkedlist<e> Type Parameters: E - the type of elements held in this collection All Implemented Interfaces: Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, Queue<E> boolean add(e o) Appends the specified element to the end of this list. Interface java.util.iterator<e> boolean hasnext() Returns true if the iteration has more elements. E next() Returns the next element in the iteration.

Tentamen TDDC30 2008-08-22 7 (11) Ansökan om svar till uppgift 5A Jag anhåller härmed om att få svaret till uppgift 5a på tentamen i TDDC30 den 2008-08-22. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2008-08-22 Signatur Textat namn Personnummer

Tentamen TDDC30 2008-08-22 8 (11) Ansökan om svar till uppgift 6A Jag anhåller härmed om att få svaret till uppgift 6a på tentamen i TDDC30 den 2008-08-22. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2008-08-22 Signatur Textat namn Personnummer

Tentamen TDDC30 2008-08-22 9 (11) Ansökan om svar till uppgift 6B Jag anhåller härmed om att få svaret till uppgift 6b på tentamen i TDDC30 den 2008-08-22. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2008-08-22 Signatur Textat namn Personnummer

Tentamen TDDC30 2008-08-22 10 (11) Ansökan om svar till uppgift 6C Jag anhåller härmed om att få svaret till uppgift 6c på tentamen i TDDC30 den 2008-08-22. Jag är medveten om att jag ej kommer att erhålla poäng för uppgiften. Linköping den 2008-08-22 Signatur Textat namn Personnummer

Tentamen TDDC30 2008-08-22 11 (11) Vanliga unixkommandon 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