Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5.

Storlek: px
Starta visningen från sidan:

Download "Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5."

Transkript

1 Föreläsning jan 15 v3, jan 22 v4. GT Chapter 6, GT Chapter 7 Hemuppgifter redovisning v4, v5. Planer för läsperiod 3. I GT kap 7 kommer vi att läsa 285 <= sida < 316. I GT kap 8 kommer vi att läsa 333 <= sida < 362, dvs 8.1, 8.2, 8.3, 8.4 och 8.5. I GT kap 9 kommer vi att läsa 379 <= sida < 393, dvs 9.1. I GT kap 10 kommer vi att läsa 447 <= sida < 486. Dock ej avsnitt <= sida <=479 Dessutom skall vi lära oss I/O (Input/Output) i Java och förhoppningsvis ha en avslutande repetitionsföreläsning. GT kap 11 och GT kap 12 ingår inte i kursen. Det är ingen katastrof om man råkar lära sig något av det överhoppade, det mesta av detta ingår i kommande kurser, främst ADK-kusen (Algoritmer-Datastrukturer-Komplexitet). GT Kapitel 6 analogt med boken. Vi har kvar implementationerna i slutet på kapitlet. Klassdiagram för EulerTour med ärvande klass PrintExpressionTour: EulerTour protected InspectableBinaryTree tree; public Object execute(binarytree T) protected Object eulertour(position p) protected void visitexternal(position p, TraversalResult r) protected void visitleft(position p, TraversalResult r) protected void visitbelow(position p, TraversalResult r) protected void visitright(position p, TraversalResult r) protected TraversalResult initresult() protected Object result(traversalresult r) PrintExpressionTour public Object execute(binarytree T) protected void visitexternal(position p, TraversalResult r) protected void visitleft(position p, TraversalResult r) protected void visitbelow(position p, TraversalResult r) protected void visitright(position p, TraversalResult r) GT Kapitel 7 analogt med boken

2 Hemuppgifter redovisning v4. C = 1, 4, 5 B= 1, 3, 4, 5 A = 1, 2, 4, 5, 6 Inlämning under läsperiod 3 senast måndagar klockan CBA-hemuppgift : (delvis P-6.3 GT page 281) Deluppgift: Komplettera bokens text så att klassen LinkedBinaryTree fungerar (på en egen katalog). Alla behövliga gränsnitt, dvs interface Position och alla interface från och med Inspectable- Container till och med BinaryTree i höger del av figure 6.11 GT sid 248, och bokens text till LinkedBinaryTree och BTNode finns på /info/inda01/gtch6/. Det mesta finns också på nätet, varifrån jag kopierat koden. Jag har dock kompletterat BinaryTreegränssnittet med två metoder (som redan finns implementerade i bokens LinkedBinaryTree) : public interface BinaryTree extends InspectableBinaryTree, PositionalContainer { /** Transform v from an external into an internal node by creating two new external nodes and making them the left and right children of v, respectivley. */ public void expandexternal(position v) ; /** Remove the external node w together with its parent v, replacing v with the sibling of w. */ public void removeaboveexternal(position v); Om man försöker kompilera upptäcker man att metoden positions() innehåller begrepp som är oidentiferade. Skriv om metodens "kropp" så att att metoden vid anrop enbart slänger ett RuntimeException med texten "positions() in class LinkedBinaryTree not implemented yet" Gör på motsvarande sätt med de andra metoderna (iterator-returnerare) som saknas. Om allt fungerar skall man nu kunna köra det givna (av mig skrivna) programmet UsePedigree (studera programmet!) som också finns på katalogen som angetts ovan. Körresultat: Antavla : Rut Bo Adam Eva Siv Per Kersti Utskriften visar Ruts härstammning, (far tv, mor t.h), som finns i detta binär träd, en antavla eller stamtavla (engelska pedigree) som vi också kan rita så här (för en gångs skull ritar vi träd rättvänt!): Adam Eva Per Kersti Bo Siv Rut Ruts mormor är alltså Kersti, Ruts far heter Bo osv.

3 Deluppgift: Komplettera programmet UsePedigree så att man gång på gång kan ge en persons namn och få reda på personens relation med personen i roten. Körexempel : Ge namnet på den person vars relation till Rut du vill veta (Sluta ge vagnretur) : Kersti Kersti är mormor till Rut Ge namnet på den person vars relation till Rut du vill veta (Sluta ge vagnretur) : Bo Bo är far till Rut Ge namnet på den person vars relation till Rut du vill veta (Sluta ge vagnretur) : Pia Pia finns ej i släktträdet Ge namnet på den person vars relation till Rut du vill veta (Sluta ge vagnretur) : Du kan utgå ifrån att varje namn bara finns på max ett ställe i trädet. Programmet använder förstås svenska språkets smarta och rekursiva sätt att benämna anfäder och anmödrar. Det är OK att i större träd än det ovanstående få utskrifter som mormorfarfarmor osv. Om du gör A-uppgift 6 så får du inte lösa denna uppgift med hjälp av Euler-tur-mallen. PS. Problemet löses lämpligen med rekursion. Om du blivit så van att programmera OO-mässigt att du ogillar att skriva klassmetoder kan du gå via en klass, kallad Pedigree t ex. DS. 2. A-hemuppgift : (P-6.2 GT page 281) Implementera gränssittet BinaryTree med en vektor med klassen VectorBinaryTree. Använd java.util.vector. Du ska kunna testköra din implementatiion med UsePedigree från uppgift 1, det enda som ska behöver ändras är BinaryTree pg = new LinkedBinaryTree(); till BinaryTree pg = new VectorBinaryTree(); De iterator-returnerande metoderna i gränssnittet som man kunde implementera med att slänga undantag kan även nu "implementeras" på samma sätt. Tips: Det står ju en del i avsnitt GT Jag är lite osäker på hur svårt ni tycker detta är, man måste nog väl förstå definitionerna i kap 5 och kapitel 6 i GT för att lösa uppgiften. Den som vill tänka helt själv kan ju sluta läsa här. Vi måste ju ha ett Position-begrepp för våra träd-element i vektorn. I avsnitt resoneras om två olika sätt att lösa motsvarande problem för vektorimplementerade sekvenser. Det första sättet som föreslås i första stycket på sid 209 avfärdas dock för sekvenser, eftersom positionerna "inte hänger med" vid t ex insertfirst. I våra träd ändras dock aldrig positioner, de bara tillkommer nya när trädet växer "ytterst" eller försvinner positioner när trädet "ansas" genom att man beskär trädet "ytterst", varför även första sättet är ganska OK såvitt jag förstår. Det är nog också det som avses med meningen "That is, each position object v is simply a "wrapper" for the index p(v) into the vector S." på sid 264. Jag använde det första sättet för mitt vektorbaserade binära träd. Jag skrev en klass VectorPosition som implementerar Position och i någon mån ersätter BTNode i implementeringen med länkning. Genom att förse VectorPosition med lämpliga metoder blev koden för VectorBinaryTree rätt lik den givna koden för LinkedBinaryTree.

4 3. B-hemuppgift : Skriv ut antavlan i UsePedigree med hjälp av en Euler-tur, dvs designmönstret "Templet Method Pattern" istället för med den givna metoden public static void preorder- Print(..). Utskriften skall bli densamma, dvs Antavla : Rut Bo Adam Eva Siv Per Kersti På /info/inda01/gtch6/ finns bokens klass EulerTour (GT sid 260) och hjälpklassen TraversalResult. Man skall alltså skriva en subklass PrintPedigree till EulerTour.Testkörningen sker genom att i UsePedigree instansiera ett PrintPedigree-objekt och sedan anropa execute i detta objekt. Har du gjort A-uppgift 2 så kolla att det fungerar också med VectorBinaryTree. Tips: För att hålla reda på nivån (och därmed hur många blanktecken som skall föregå ett namn) använder jag inte alls TraversalResult utan har istället en instansvariabel i mitt PrintPedigreeobjekt som jag räknar upp eller ned på lämpligt sätt. 4. CBA-hemuppgift : Implementera metoden positions() i LinkedBinaryTree på riktigt, dvs så att den retunerar en PositionIterator istället för att slänga ett undantag som vi gjorde i uppgift 1. Om man gör som boken antyder måste man skriva en metod inorderpositions och en klass ArrayPositionIterator som implementerar PositionIterator. Provkör genom att skriva en komplettering av UsePedigree som använderanvända en PositionIterator för att få få denna utskrift Alla elementen med PositonIterator : Rut Bo Adam Eva Siv Per Kersti Har du gjort A-uppgift 2 så gör även samma sak för VectorBinaryTree. Min lösning blev identisk med lösningen för LinkedBinaryTree. 5. CBA-hemuppgift : Kör UNIX-kommando >du på din startkatalog. Katalogerna och filerna bildar ett träd. Hur traverseras trädet? Finns det anledning att städa bland dina filer?

5 6. A-hemuppgift : Lös andra deluppgiften i uppgift 1, att finna någon persons relation med personen i trädets rot, med hjälp av en Euler-tur, dvs med designmönstret "Templet Method Pattern" Utskriften skall bli densamma, t ex : Ge namnet på den person vars relation till Rut du vill veta (Sluta ge vagnretur) : Kersti Kersti är mormor till Rut På /info/inda01/gtch6/ finns bokens klass EulerTour (GT sid 260) och hjälpklassen TraversalResult. Man skall alltså skriva en subklass till en EulerTour.Testkörningen sker genom att i UsePedigree instansiera ett subklass-objekt och sedan anropa execute i detta objekt. Har du gjort A-uppgift 2 så kolla att det fungerar också med VectorBinaryTree. Tips: Jag lät subklassens execute-metod ha denna signatur för att föra över nyckeln till en instansvariabel i subklass-objektet: public Object execute(binarytree T, String ikey)

6 Hemuppgifter redovisning v5. C = 1, 2 B= 2, 3, 4 A = 2, 3, 4, 5 Inlämning under läsperiod 3 senast måndagar klockan Allmänt om uppgifterna : I boken byggs implementationer av mer avancerade ADT upp med hjälp av implementationer av enklare ADT, man kan alltså tänka sig att en DLPriorityQueue skulle byggas på en List från kapitel 5 och ett HeapTree med BinaryTree från kap 6. Men till slut blir det nog enklare (och mindre kod) att direkt bygga en ADT från "scratch", vilket jag tänkt att vi gör i sorteringsuppgifterna denna vecka. För enkelhets skull är nycklarna och elementen i de "Items", dvs nyckel-element-par, vi skall sortera ofta strängar med samma innehåll. När vi skapar implementationer av prioitetsköer, t ex DLPriorityQueue i uppgift 1 och HeapPriorityQueue i uppgift 4 skall vi som argument till konstruktorn ge ett objekt som implementerar gränsnittetet Comparator. Det finns ett förslag till detta gränssnitt i boken, men också ett annat i java.util. Skillnaderna diskuteras i GT överst på sidan 295, och jag tycker att vi använder java.bibliotekets version. Många klasser i Javabiblioteket, bl a String, implementerar ytterligare ett annat gränssitt Comparable, vilket jag utnyttjat i MyComparator. Jag ger ett MyComparatorobjekt till mina proritetsköer som används på nycklarna vid sorteringarna för att avgöra ordningen mellan "Items": import java.util.*; class MyComparator implements Comparator{ // implements java.util.comparator public int compare(object a, Object b) { if (a instanceof Comparable b instanceof Comparable ) { return ((Comparable) a).compareto((comparable) b); else { throw new RuntimeException("compare() in MyComparator," + " arguments must be Comparable"); Körresultaten i programmen är ofta av denna typ: /*Körresultat :...>java...sort... bertil david adam ludvig martin zero rudolf adam bertil david ludvig martin rudolf zero */

7 1. C-hemuppgift : Implementera en prioritetskö med en dubbellänkad lista (som hålls sorterad) i en klass DLPriority- Queue som skall implementera gränsnittet PriorityQueue. Gränssittet finns givet på /info/inda01/gtch7, tillsammans med DLItemNode, och Item som man också har glädje av. Med hjälp av implementationen kan man göra en insättningssortering med detta program (finns också på info/inda01/gtch7 ), som alltså kan användas som test på att implementationen är riktig: import java.util.*; public class PriorityQueueSort { public static void main(string [] arg) { // PriorityQueue p = new HeapPriorityQueue(new MyComparator()) ; PriorityQueue p = new DLPriorityQueue(new MyComparator()) ; for (int i = 0; i < arg.length; i = i+1) { p.insertitem(arg[i], arg[i]); for (int i = 0; i < arg.length; i = i+1) { System.out.println(p.removeMin()); Tips: Min favoritstruktur är dubbellänkade noder, men till skillnad från boken med samma nod som både header och trailer, dvs vi får en cirkulär dubbellänkad lista med en vaktpost (sentinel) som är både "header" och "trailer". Till vänster en bild på strukturen när den är tom, till höger med tre element: 0 tom prioitetskö 3 prioitetskö med 3 element vaktpost, sentinel vaktpost, sentinel david david adam adam bertil bertil När du skriver insertitem kommer du antagligen att skriva en snurra som söker efter första elementet som har större nyckel, dvs du traskar vidare i kedjan så länge examinerat element har för liten nyckel. Avbrottsvillkoret i snurran kan skrivas enklare om man fyller vaktposten med nyckeln i det element som man skall stoppa in i kedjan.

8 2. CBA-hemuppgift : Implementera en "på-plats"sortering, (In-place-sort). Du kan välja mellan att göra en bubbelsortering eller en insättningsortering genom att kommentera bort de andra sorterarna i nedanstående testprogram. Inget av dessa sorteringssätt är något vidare val för på-plats-sortering, vilket däremot "in-place-heapsort" är, vilket är en senare uppgift. Detta testprogram (på /info/inda01/gtch7) kan används för att kontrollera implementationen: import java.util.*; public class SortInPlace { // finns på/info/inda01/gtch7 public static void main(string [] arg) { Vector v = new Vector(); for (int i = 0; i < arg.length; i = i+1) { v.add(new JustItem(arg[i], arg[i])); //Sorter p = new HeapSort(new MyComparator(), v); //Välj sorterare!!!!! Sorter p = new BubbelSort(new MyComparator(), v); //Sorter p = new InsertionSort(new MyComparator(), v); p.sort(); for (int i = 0; i < v.size(); i = i+1) { System.out.println((String) ((Item) (v.get(i))).element()); public interface Sorter { // Gränssnittet Sorter (på /info/inda01/gtch7) public void sort(); Tips: Det är alltså java.util.vector v som blir sorterad. Uppgiften är att skriva klassen Bubbel sort eller klassen InsertionSort som skall implementera interface Sorter, dvs klassen skall ha metoden sort(). Ett Sorter-objekt får en vektor och en komparator när det skapas. Vektorn kan sedan sorteras med sort(), varvid komparatorn bestämmer vad som menas med "mindre än".

9 3.BA-hemuppgift : Det kan ju vara roligt att se vad som händer under på-plats-sorteringen i uppgift 2. Följande givna program lägger in den sekvens items som skall sorteras dels i en vanlig vektor v, dels i en Final- RankRankVector frrv. Märk att "items" är gemensamma! Därefter sorteras v. Med hjälp av v kan vi nu byta elementen i alla items så att vi i stället har slutgiltiga rangen som elementvärde. Om vi nu sorterar frrv så skrivs hela frrv ut varje gång vi anropar set, pga att set är omdefinerad för FinalRankRankVector. Om du kombinerar SortInPlace1 med den sorterarare du gjort i förgående uppgift skall du kunna provköra för att få frrv utskriven gång på gång. Utskriften består av varje items <rang> <nykel> <slutgiltig rang>. import java.util.*; public class SortInPlace1 { // finns på/info/inda01/gtch7 public static void main(string [] arg) { // Move items to be sorted to v and frrv Vector v = new Vector(); Vector frrv = new FinalRankRankVector(); for (int i = 0; i < arg.length; i = i+1) { Item ii = new JustItem(arg[i], arg[i]); frrv.add(ii); v.add(ii); // Get a sorter for v, and sort //Sorter p = new InsertionSort(new MyComparator(), v); //Välj sorterare!!!!! Sorter p = new BubbelSort(new MyComparator(), v); //Sorter p = new HeapSort(new MyComparator(), v); p.sort(); System.out.println("Result of sort:"); for (int i = 0; i < v.size(); i = i+1) { System.out.println((String) ((Item) (v.get(i))).element()); // Change item elemnets to final rank for (int i = 0; i < v.size(); i = i+1) { ((Item) (v.get(i))).setelement(new Integer(i)); System.out.println("finalrankrankvector :"); for (int i = 0; i < frrv.size(); i = i+1) { System.out.println((Integer) ((Item) (frrv.get(i))).element()); // Sort frrv, which is a // FinalRankRankVector => vector will be shown at every set //p = new InsertionSort(new MyComparator(), frrv);//välj sorterare!!!!! p = new BubbelSort(new MyComparator(), frrv); //p = new InsertionSort(new MyComparator(), frrv); p.sort();

10 import java.util.*; public class FinalRankRankVector extends Vector { // finns på/info/inda01/gtch7 public void show() { for (int i = 0; i < size() ; i = i+1) { Item ii = (Item) get(i); if ( ii!= null) { System.out.print(" " + i + " " + ii.key() + " " + ii.element()); else { System.out.print(" " + i + " "); System.out.println(); public Object set(int index, Object oitem) { //overrides inherited set Object result = super.set(index, oitem); show(); return result; Uppgiften är att komplettera FinalRankRankVector så att man även får se sorteringen i en Java- Frame. Provkör klassfilen /info/inda01/gtch7/sortinplace1 så får du se min bubbelsortering "live in action". T ex... >java SortInPlace1 bertil adam david tore sverker erik eva sven zero per filip Gör teminalfönstret smalt och lägg de vid sedan så att fönstret inte skymmer "framen". Gör terminalfönstret aktivt och ge vagnreturer, så får man ser hur elementen bubblar på tills allt är sorterat, dvs man får en diagonal i fönstret. Ett element skrivs alltså ut på (rang, slutgiltig rang)-stället i ett n x n rutmönster, där n = v.size(); Tips: Jag försåg min FinalRankRankVector med en Frame FinalRankRankFrame (storleken 800 pixel * 800 pixel) som använder GridLayout och har en matris java.label []. Metoden show() i FinalRankRankVectora kompletteras så att den även skriver ny text i "framen".

11 4.BA-hemuppgift : Implementera (direkt, utan att gå via något ADT binärt träd som boken gör) en prioritetskö med en heap (i en java.util.vector) med en klass HeapPriorityQueue som skall implementera gränsnittet PriorityQueue. Gränsittet finns givet på /info/inda01/gtch7, tillsammans med bokens Item, som man ju har glädje av. Programmet kan testköras med samma testprogram som uppgift1, om man skriver i stället för PriorityQueue p = new HeapPriorityQueue(new MyComparator()) ; PriorityQueue p = new DLPriorityQueue(new MyComparator()) ; Märk finessen med "att programmera mot ett interface"!. Programmet gör nu förstås en "heap"- sortering. Delar av texten för uppgift 1 är relevant för denna uppgift också, förutom bokens avsnitt på sid 314.

12 5. A-hemuppgift : Implementera en "på-plats"heap-sortering, (In-place heap-sort). Testprogrammmet i uppgift 2 kan ändras så att man kan testa denna uppgift. Även testprogrammmet i uppgift 3 och din lösning till uppgift 3 skall kunna fungera med lösningen till denna uppgift, dvs du skall kunna se din "på-plats"heapsortering "live". Tips: Man kan säkert skriva HeapSort genom att bygga om HeapPriorityQueue, vilket är OK. Jag har dock löst problemet så här genom arv (mer intellektuell utmaning kanske): PriorityQueue HeapPriorityQueue protected Comparator comp protected Vector v protected int size... public void insertitem(object k, Object e)... /* m fl */ Sorter HeapSort : public HeapSort(Comparator ic, Vector iv) public void sort() private void insertitem(item ii) Vid arv behöver man en "omvänd komparator" vilket man kan få så här: class MyInvertedComparator implements Comparator{ private Comparator c; public MyInvertedComparator(Comparator ic) { c = ic; public int compare(object a, Object b) { return -c.compare(a,b);

Laboration 13, Arrayer och objekt

Laboration 13, Arrayer och objekt Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift

Läs mer

Seminarium 13 Innehåll

Seminarium 13 Innehåll Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet

Läs mer

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning. Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd Föreläsning 8 Innehåll Datastrukturer i kursen Träd, speciellt binära träd egenskaper användningsområden implementering Undervisningsmoment: föreläsning 8, övningsuppgifter 8, lab 4 Avsnitt i läroboken:

Läs mer

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

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig

Läs mer

Föreläsning 7. Träd och binära sökträd

Föreläsning 7. Träd och binära sökträd Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Läsanvisningar och

Läs mer

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper. Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr

Läs mer

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 PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

Algoritmer. Två gränssnitt

Algoritmer. Två gränssnitt Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;

Läs mer

Konstruktion av klasser med klasser

Konstruktion av klasser med klasser Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

LULEÅ TEKNISKA UNIVERSITET

LULEÅ TEKNISKA UNIVERSITET LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Andrey Kruglyak, 491000 Resultatet offentliggörs senast: 2010-04-09. Tillåtna

Läs mer

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 Datum för tentamen 2016-03-21 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal

Läs mer

Laboration 3, uppgift En klass för en räknare

Laboration 3, uppgift En klass för en räknare Laboration 3, uppgift 1 3.1 En klass för en räknare Ursprungligen skriven av Erland Holmström. Magnus Myreen har uppdaterat vissa delar. Hösten 2014 Anvisningar: Programmet skall utformas enligt de principer

Läs mer

Föreläsning 9 Innehåll

Föreläsning 9 Innehåll Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon

Läs mer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tentamen Datastrukturer (DAT036/DAT037/DIT960) Tentamen Datastrukturer (DAT036/DAT037/DIT960) Datum och tid för tentamen: 2016-04-07, 14:00 18:00. Författare: Nils Anders Danielsson. (Tack till Per Hallgren och Nick Smallbone för feedback.) Ansvarig:

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar Vi kommer att behöva hantera samlingar av objekt - Har oftast använd Array (fält) - Bra om

Läs mer

Programmering fortsättningskurs

Programmering fortsättningskurs Programmering fortsättningskurs Philip Larsson 2013 03 09 Innehåll 1 Träd 1 1.1 Binära träd........................................ 1 1.2 Strikt binärt träd..................................... 1 1.3 Binärt

Läs mer

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

Interfacen Set och Map, hashtabeller

Interfacen Set och Map, hashtabeller Föreläsning 0 Innehåll Hashtabeller implementering, effektivitet Interfacen Set och Map ijava Interfacet Comparator Undervisningsmoment: föreläsning 0, övningsuppgifter 0-, lab 5 och 6 Avsnitt i läroboken:

Läs mer

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Klasshierarkier. Klasser kan byggas på redan definierade klasser Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen

Läs mer

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

Föreläsning 10. ADT:er och datastrukturer Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

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

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2 Objektorienterad programmering E Algoritmer Linjär sökning Binär sökning Tidsuppskattningar Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk; dess syntax och semantik, bibliotek

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4 Träd, binära träd och sökträd Koffman & Wolfgang kapitel 6, avsnitt 1 4 1 Träd Träd är ickelinjära och hierarkiska: i motsats till listor och fält en trädnod kan ha flera efterföljare ( barn ) men bara

Läs mer

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap. Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.

Läs mer

Klasshierarkier - repetition

Klasshierarkier - repetition Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Institutionen för Data- och informationsteknik TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer. Denna tentamen gäller

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker

Läs mer

Föreläsning 11 Innehåll. Sortering. Sortering i Java. Sortering i Java Comparable. Sortering. O(n 2 )-algoritmer: urvalssortering insättningssortering

Föreläsning 11 Innehåll. Sortering. Sortering i Java. Sortering i Java Comparable. Sortering. O(n 2 )-algoritmer: urvalssortering insättningssortering Föreläsning 11 Innehåll Sortering O(n 2 )-algoritmer: urvalsering insättningsering O(n log n)-algoritmer: Merge Quick Heap behandlades i samband med prioritetsköer. Undervisningsmoment: föreläsning 11,

Läs mer

OOP Omtenta 2010-03-06 10.00 15.00

OOP Omtenta 2010-03-06 10.00 15.00 Stockholms universitet 1 (6) OOP OOP Omtenta 2010-03-06 10.00 15.00 Avser kurserna: DSK1:OOP GES:OOP ID1013 Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv

Läs mer

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik I 2011-03-17 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift

Läs mer

Tentamen TEN1 HI

Tentamen TEN1 HI Tentamen TEN1 HI1029 2015-03-17 Skrivtid: 8.15-13.00 Hjälpmedel: Referensblad (utdelas), papper (tomma), penna Logga in med tentamenskontot ni får av skrivvakten. Det kommer att ta tid att logga in ha

Läs mer

Tentamen. Grundläggande programmering i Java A 5p, DTAA32 2003-03-21

Tentamen. Grundläggande programmering i Java A 5p, DTAA32 2003-03-21 Mitthögskolan ITM Institutionen för Informationsteknologi och medier. Bertil Danielsson 060-14 86 82 Jan-Erik Jonsson 060-14 87 90 Tentamen i Java A Sida 1/6 Tentamen Grundläggande programmering i Java

Läs mer

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

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna! Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)

Läs mer

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt

Läs mer

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om? Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt

Läs mer

Tentamen. Lösningsförslag

Tentamen. Lösningsförslag Sida 1/8 Tentamen Grundläggande programmering i Java A 5p, DTAA32 2002-03-22 Lösningsförslag Uppgift 1 ( 3p ) Utskriften blir: Skriv in ett tal 24 47 48 intal=471 Uppgift 2 ( 6p ) a.) b.) c.) d.) e.) falskt

Läs mer

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Lösningsförslag, tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Astronomi och Teoretisk fysik HT 12 Lösningsförslag, tentamen FYTA11 Javaprogrammering Onsdag 9 januari 2013, 10:15 14:15 Instruktioner Hjälpmedel: Papper och

Läs mer

PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (6) PROG2 PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 Tentan består av tre uppgifter. Max poäng är 38. För betyget E (godkänd) krävs minst

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till

Läs mer

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras

Läs mer

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

LÖSNINGSFÖRSLAG TENTAMEN

LÖSNINGSFÖRSLAG TENTAMEN LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND

Läs mer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30

Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 DAG: 15-08-19 TID: 8:30 12:30 Institutionen för TENTAMEN CTH VT-15 Datavetenskap 2015-08-19 TDA550 Tentamen för TDA550 Objektorienterad programvaruutveckling IT, fk DAG: 15-08-19 TID: 8:30 12:30 Ansvarig: Christer Carlsson, ankn 1038

Läs mer

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

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 Föreläsning 4 Kö 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 ADT Kö Grundprinciper: En kö fungerar som en kö. Man

Läs mer

Chapter 4: Writing Classes/ Att skriva egna klasser.

Chapter 4: Writing Classes/ Att skriva egna klasser. Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad

Läs mer

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a. Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel

Läs mer

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram

Läs mer

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-12-14 Idag Frågor? Är något oklart inför tentan? Sammanfattning Exempel från föreläsning 1 Dåligt val av datastruktur public class Bits {

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ Organisation En array Šr en ordnad lista av všrden Varje všrde har ett numeriskt index - deklaration & anvšndning som parametrar flerdimensionella fšlt N element indexeras med 0 till N-1 0 1 2 3 4 5 6

Läs mer

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (6) PROG2 VT13 PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 Tentan består av tre uppgifter. Max poäng är 38. För betyget E (godkänd) krävs minst

Läs mer

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla

Läs mer

Facit Tentamen TDDC (7)

Facit Tentamen TDDC (7) Facit Tentamen TDDC30 2014-03-18 1 (7) Teoretisk del 1. (3p) "Snabba frågor" a) Varför kan man tänkas vilja dölja metoder och variabler med private? (0.5p) Svar:För att skydda interna variabler från ändringar

Läs mer

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/

Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

Språkkonventioner och redigering av tal.

Språkkonventioner och redigering av tal. Språkkonventioner och redigering av tal. Kap J3-1 Konventioner för olika språk hanteras med hjälp av klassen java.util.locale Ett objekt i denna klass beskriver en lokal konvention. Lokala konventioner

Läs mer

Laboration A Objektsamlingar

Laboration A Objektsamlingar Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

Objektsamlingar i Java

Objektsamlingar i Java 1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och

Läs mer

Tentamen Datastrukturer D DAT 036/DIT960

Tentamen Datastrukturer D DAT 036/DIT960 Tentamen Datastrukturer D DAT 036/DIT960 17 december 2010 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 0736-341480 eller ankn 1035 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 =

Läs mer

Algoritmer och datastrukturer 2012, fo rela sning 8

Algoritmer och datastrukturer 2012, fo rela sning 8 lgoritmer och datastrukturer 01, fo rela sning 8 Komplexitet för binära sökträd De viktigaste operationerna på binära sökträd är insert, find och remove Tiden det tar att utföra en operation bestäms till

Läs mer

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm. Algoritmanalys Analys av algoritmer används för att uppskatta effektivitet. Om vi t. ex. har n stycken tal lagrat i en array och vi vill linjärsöka i denna. Det betyder att vi måste leta i arrayen tills

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F11:1 OOP Objekt-orienterad programmering Föreläsning 11 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F11:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

TDDC Terminologi Uppdaterad Fö #1

TDDC Terminologi Uppdaterad Fö #1 Det här dokumentet ska inte ses som en uttömmande förklaring av varje term, utan snarare som en snabb påminnelse om vad varje enskild term betydde. För en mer noggrann beskrivning, se kursmaterialet eller

Läs mer

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (7) TENTAMEN: Algoritmer och datastrukturer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att vi

Läs mer

Föreläsning 9: Arv och UML

Föreläsning 9: Arv och UML TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;

Läs mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,

Läs mer

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30 Programmering i Java, datastrukturer och algoritmer LINKÖPINGS UNIVERSITET Institutionen för datavetenskap Jonas Wallgren Tentamen i TDDC30 Programmering i Java, datastrukturer och algoritmer För I3, Ii3 Datum: 2009-04-17 Klockan: 14-18 Jour: Jonas Wallgren,

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2 Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 2 TID: 4 timmar Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt

Läs mer

Träd Hierarkiska strukturer

Träd Hierarkiska strukturer Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden

Läs mer

Föreläsning 15: Repetition DVGA02

Föreläsning 15: Repetition DVGA02 Föreläsning 15: Repetition DVGA02 Vad handlar kursen om? Kursen kan i grova drag delas upp i tre delar: 1. Objekt-orienterad programmering 2. Grafiska användargränssnitt 3. Datastrukturer Dessutom genomsyras

Läs mer

Föreläsning 5 Datastrukturer (DAT037)

Föreläsning 5 Datastrukturer (DAT037) Föreläsning 5 Datastrukturer (DAT037) Nils Anders Danielsson, Fredrik Lindblad 2016-11-14 Förra gången: Cirkulära arrayer Prioritetskö Binära heapar Leftistheapar merge Det verkar inte gå att slå ihop

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Föreläsning 13 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037) Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-12-14 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Sammanfattning

Läs mer

Objektorienterad programmering med Java, Generics

Objektorienterad programmering med Java, Generics Generics i Java Generic: allmän, genersisk. På menyn på en asiatisk restaurang: Denna rätt serveras med valfritt kött, fisk eller skalddjur Bakgrund Generics i Java ger oss att skriva kod, klasser och

Läs mer

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 Datum för tentamen 2014-03-18 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal

Läs mer

Trädstrukturer och grafer

Trädstrukturer och grafer Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer

Läs mer