Inga hjälpmedel tillåtna.

Relevanta dokument
Observera : Lämna in svaren på frågorna på detta blad genom att lämna in detta blad!

INDA Introduktion till Datalogi Tentamen Mars 09

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

Skriv i Java två klassmetoder, en rekursiv och en iterativ, som beräknar fib(i).

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Laboration 13, Arrayer och objekt

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. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

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

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

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

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

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

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

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

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.

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

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

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

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

Del A (obligatorisk för alla)

TENTAMEN OOP

Kopiering av objekt i Java

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

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

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

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

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

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

DAT043 Objektorienterad Programmering

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

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

TENTAMEN OOP

Länkade strukturer, parametriserade typer och undantag

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

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

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Malmö högskola 2008/2009 CTS

Laboration 1 - Grunderna för OOP i Java

Sammanfattning och repetition utgående från typiska tentamensuppgifter

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Objektorienterad programmering i Java

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Konstruktion av klasser med klasser

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 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

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

DAT043 - Föreläsning 7

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

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

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

Malmö högskola 2007/2008 Teknik och samhälle

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Lösningar för tenta 2 DAT043,

Klasshierarkier - repetition

Föreläsning 3-4 Innehåll

Föreläsning REPETITION & EXTENTA

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Föreläsning 2, vecka 8: Repetition

Tentamen, Algoritmer och datastrukturer

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Föreläsning 3. Stack

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

Kurskod D0010E Datum Skrivtid 5tim

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

TDDD78 Viktiga begrepp, del 2

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

Lösningsförslag till exempeltenta 2

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

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

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Transkript:

KTH Nada Leif Kusoffsky INDA Introduktion till Datalogi Tentamen 20002 April 05 Observera: Skriv hela tentan. Man kan inte längre tillgodoräkna sig resultat från kontrollskrivningar, ej heller bonuspoäng från laborationerna! Inga hjälpmedel tillåtna. Lycka till!! Observera : Lämna in svaren på frågorna på detta blad genom att lämna in detta blad! 1. Instansmetoder och instansvariabler deklareras genom att (2p) a) alltid skriva void b) utelämna ordet static c) skriva static a b c 2. För instansmetoder gäller att de (2p) a) kan anropas enbart om det finns objekt av klassen a b c b) kan anropas med <klassnamn>.<metodnamn> c) kan anropas enbart om det inte finns objekt av klassen 3. Det är möjligt att programmera på traditionellt imperativt sätt, i stort sett icke-objekt-inriktat, i Java genom a) att bara använda instansvariabler (2p) b) att aldrig använda referensvariabler a b c c) att bara använda klassvariabler och klassmetoder 4. Antag att vi har deklarationen int i = 5;och anropet dosomething1(i); i en klass MyClass.(2p) dosomething1 anropar inga metoder och använder ej några icke- lokala variabler. Värdet på i i ett objekt av typen MyClass kan efter anropet a) ha ändrats b) ej ha ändrats c) ha avrundats a b c 5. En java-applikation startar alltid med en metod main som (2p) a) är static b) saknar parametrar c) är fördefinierad a b c 6. För instansvariabler gäller att de (2p) a) är odefinerade om man ej tilldelar dem vid deklarationen a b c b) är odefinerade om man ej tilldelar dem i konstruktorn c) finns i en uppsättning per skapat objekt 7. Uttrycket o1 == o2 blir true om o1 och o2 refererar a) objekt som är lika b) samma objekt c) olika arrayer med identiska element a b c (2p) 8. Satsen o1 = o2 leder till att o1 och o2 refererar a) två olika objekt som är likadana b) samma objekt c) "kloning" a b c (2p) 9. Java-interface kan (2p) a) innehålla instansvariabler a b c b) innehålla lokala variabler för metoder c) ärva varandra Observera : Lämna in svaren på frågorna på detta blad genom att lämna in detta blad!

Kopia på första bladet. 1. Instansmetoder och instansvariabler deklareras genom att (2p) a) alltid skriva void b) utelämna ordet static c) skriva static a b c 2. För instansmetoder gäller att de (2p) a) kan anropas enbart om det finns objekt av klassen a b c b) kan anropas med <klassnamn>.<metodnamn> c) kan anropas enbart om det inte finns objekt av klassen 3. Det är möjligt att programmera på traditionellt imperativt sätt, i stort sett icke-objekt-inriktat, i Java genom a) att bara använda instansvariabler (2p) b) att aldrig använda referensvariabler a b c c) att bara använda klassvariabler och klassmetoder 4. Antag att vi har deklarationen int i = 5;och anropet dosomething1(i); i en klass MyClass.(2p) dosomething1 anropar inga metoder och använder ej några icke- lokala variabler. Värdet på i i ett objekt av typen MyClass kan efter anropet a) ha ändrats b) ej ha ändrats c) ha avrundats a b c 5. En java-applikation startar alltid med en metod main som (2p) a) är static b) saknar parametrar c) är fördefinierad a b c 6. För instansvariabler gäller att de (2p) a) är odefinerade om man ej tilldelar dem vid deklarationen a b c b) är odefinerade om man ej tilldelar dem i konstruktorn c) finns i en uppsättning per skapat objekt 7. Uttrycket o1 == o2 blir true om o1 och o2 refererar a) objekt som är lika b) samma objekt c) olika arrayer med identiska element a b c (2p) 8. Satsen o1 = o2 leder till att o1 och o2 refererar a) två olika objekt som är likadana b) samma objekt c) "kloning" a b c (2p) 9. Java-interface kan (2p) a) innehålla instansvariabler a b c b) innehålla lokala variabler för metoder c) ärva varandra

10. a) Skriv en iterativ klassmetod (dvs en metod med en snurra, "loop", och inget rekursivt anrop) (8p)..... maxiter(int n, int [] arr) {... som returnerar det största elementet i arr från och med elementet med index 0 till och med elementet med index n. Om ett felaktigt n ges skall ett undantag kastas. b) Skriv motsvararande rekursiva metod..... maxrek(int n, int [] arr) {... (8p) Tips: Maximala elementet av elementen med index i, 0<= i <= n, n >0 är lika med maximum av arr[n] och det maximala elementet av elementet med index j, 0<= j <= n - 1. c) Skriv ett huvudprogram för att testa metoderna i a) och b). (4p) Förslag till körresultat:... >java Max 4 6 8 Max element (iteration) = 8 Max element (recursion) = 8... >java Max 4 6 8 2 Max element (iteration) = 8 Max element (recursion) = 8... >java Max 14 4 6 8 2 Max element (iteration) = 14 Max element (recursion) = 14... >java Max Exception in thread "main" java.lang.runtimeexception: n < 0 not allowed at Max.maxIter(Compiled Code) at Max.main(Compiled Code) 11 a). Pennor kan vara antingen kulspetspennor, som ger permanent skrift, eller träblyerspennor som ger text som kan raderas. Pennor har från början (när de "skapas") en viss längd i mm. Träblyertspennor blir 10 mm kortare när de vässas. Kulspetspennor kan inte vässas och behåller sin ursprungslängd. Modellera i Java med tre klasser denna situation, som den dessutom beskrivs med nedanstående UML-liknade klassdiagram: 7p) Penna double längd double pennlängd() boolean gerpermanenttext() Kulspetspenna Träblyertspenna Kulspetspenna(double il) { Träblyertspenna(double il) void vässa()

b) Antag att vi har en deklaration Penna p; och att p refererar till ett pennobjekt av något slag. Hur skriver man i Java ett uttryck som kontrollerar om p är kortare än 50 mm? 1p) c) Samma antagande som i uppgift b). Hur skriver man i Java att p skall vässas om p refererar till en blyertspenna (detta skall för full poäng kontrolleras)? 3p) d) Att göra som i c) är ingen bra OO-programmering. Ändra koden i så att penor alltid kan vässa, men 3p) när kulspetspennar "vässas" händer ingenting. Hur kan man nu skriva att en penna p skall vässas, och vad kallas det att vilken metod vässa som körs beror på vilken sorts penna p refererar? 12 Implementera en prioritetskö med en dubbellänkad lista i en klass DLPriorityQueue (16p) som skall implementera gränsnittet PriorityQueue. Listan innehåller objekt av klassen DLItemNode. Listan hålls sorterad med avsende på nycklarna, (key), i DLItemNode.. För att jämföra nycklar används ett objekt som implementar gränsnittet java.util.comparator. Högsta prioritet = minsta nyckel. Du skall skriva hela klassen (bl a det som behövs för att skapa en lämplig datastruktur) med undantag för att av metoderna i gränssnittet PriorityQueue behöver du bara behöver implementera metoden public void insertitem(object k, Object e). Givet: public interface PriorityQueue { // Högsta prioritet = minsta nyckel public int size() ; // Antalet "items" i prioritetskön public boolean isempty(); // Är prioritetskön tom? public Object minelement() throws PriorityQueueEmptyException ; // Elemenet- delen av det "item" som har högst prioritet public Object minkey() throws PriorityQueueEmptyException; // Nyckeln i det "item" som har högst prioritet public void insertitem(object k, Object e); // Tillför nytt "item" public Object removemin() throws PriorityQueueEmptyException ; // Avlägsna det "item" som har högst prioritet Mer givet för uppgift 12 på nästa sida.

public class DLItemNode implements Item { private Object element; private Object key; private DLItemNode left; private DLItemNode right; /** constructor with parameters */ public DLItemNode(Object k, Object e) { this(k, e, null, null); /** constructor with parameters */ public DLItemNode(Object k, Object e,dlitemnode ileft, DLItemNode iright ){ setelement(e);setkey(k); left = ileft; right = iright; public Object element() { return element; public void setelement(object o) { element=o; public Object key() { return key; public void setkey(object o) { key=o; public DLItemNode left() {return left; public void setleft(dlitemnode ileft) {left = ileft; public DLItemNode right() {return right; public void setright(dlitemnode iright) {right = iright; 13 Vilken komplexitet har körtiden för opertionen findelement när man gör en binärsökning i en "look-up-table"? Enligt bokens definition finns en "look-up-table" i vad boken betcknar som en vektor. Motivera ditt svar. (16p) 14 Visa hur man med "in-place insertion sort" gör en lexiografisk sortering av strängar med två tecken, alla tecken c i intervallet a <= c <= z. (16p) Svara genom att visa hur dessa strängar sorteras: zb pe mm fg ae ma vm kl le pp Är det en bra sorteringsmetod?

Förslag till svar tenatamen i 2D1340 Introduktion till datalogi 2002 april 05. 1. Instansmetoder och instansvariabler deklareras genom att (2p) a) alltid skriva void b) utelämna ordet static c) skriva static a bx c 2. För instansmetoder gäller att de (2p) a) kan anropas enbart om det finns objekt av klassen a x b c b) kan anropas med <klassnamn>.<metodnamn> c) kan anropas enbart om det inte finns objekt av klassen 3. Det är möjligt att programmera på traditionellt imperativt sätt, i stort sett icke-objekt-inriktat, i Java genom a) att bara använda instansvariabler (2p) b) att aldrig använda referensvariabler a b cx c) att bara använda klassvariabler och klassmetoder 4. Antag att vi har deklarationen int i = 5;och anropet dosomething1(i); i en klass MyClass.(2p) dosomething1 anropar inga metoder och använder ej några icke- lokala variabler. Värdet på i i ett objekt av typen MyClass kan efter anropet a) ha ändrats b) ej ha ändrats c) ha avrundats a bx c 5. En java-applikation startar alltid med en metod main som (2p) a) är static b) saknar parametrar c) är fördefinierad a x b c 6. För instansvariabler gäller att de (2p) a) är odefinerade om man ej tilldelar dem vid deklarationen a b cx b) är odefinerade om man ej tilldelar dem i konstruktorn c) finns i en uppsättning per skapat objekt 7. Uttrycket o1 == o2 blir true om o1 och o2 refererar a) objekt som är lika b) samma objekt c) olika arrayer med identiska element a bx c 8. Satsen o1 = o2 leder till att o1 och o2 refererar a) två olika objekt som är likadana b) samma objekt c) "kloning" a bx c (2p) 9. Java-interface kan (2p) a) innehålla instansvariabler a b c x b) innehålla lokala variabler för metoder (2p) c) ärva varandra 10 public class Max { public static int maxlk(int a, int b) { return a>=b? a : b; public static int maxrec(int n, int [] arr) { if (n<0 arr.length - 1 < n) { throw new RuntimeException(" n < 0 not allowed");

else if (n==0) { return arr[0]; else { return maxlk(arr[n], maxrec(n-1, arr)); public static int maxiter(int n, int [] arr) { if (n<0 arr.length - 1 < n) { throw new RuntimeException(" n < 0 not allowed"); else { int result = arr[0]; for (int i = 1; i <= n; i = i+1) { result = maxlk(arr[i], result); return result; public static void main(string [] arg) { int [] myarr = new int [arg.length]; for (int i = 0; i < arg.length; i = i+1) { myarr[i] = Integer.parseInt(arg[i]); System.out.println("Max element (iteration) = " + maxiter(arg.length-1, myarr)); System.out.println("Max element (recursion) = " + maxrec(arg.length-1, myarr)); 11 public abstract class Penna { protected double längd; //11a) public double pennlängd() { return längd; public abstract boolean gerpremanenttext(); public abstrakt void vässa(); public class Träblyertspenna extends Penna { public Träblyertspenna(double il) { längd = il;

public void vässa() { längd = längd - 10.0; public boolean gerpremanenttext() { return false; public class Kulspetspenna extends Penna { public Kulspetspenna(double il) { längd = il; public boolean gerpremanenttext() { return true; public void vässa() { // Tillägg för 11d p.pennlängd() < 50.0 // 11b if (p instanceof Träblyertspenna) { ((Träblyertspenna) p).vässa(); // 11c Om man gör tilläggen märkta 11d) ovan kan man nu helt enklet skriva // 11d p.vässa() til. Att "rätt sorts vässa-metod körs kallas ibland dynamisk bindning. Fenomenet kallas i vissa böcker polymorfism, men detta ord används även för andra företelser i programmering. 12 import java.util.*; public class DLPriorityQueue implements PriorityQueue { private Comparator comp; private int size = 0; private DLItemNode sentinel; public DLPriorityQueue(Comparator c) { if (c == null) { throw new IllegalArgumentException("Null comparator passed"); else { comp = c; sentinel = new DLItemNode(null, null,null, null);

sentinel.setleft(sentinel); sentinel.setright(sentinel); public void insertitem(object k, Object e) { sentinel.setkey(k); DLItemNode walker = sentinel.right(); while (comp.compare(k, walker.key()) > 0) { walker = walker.right(); DLItemNode ny = new DLItemNode(k, e, walker.left(), walker); (walker.left()).setright(ny); walker.setleft(ny); size = size + 1; 13 Se boken sid 358, sid 359. 14 zb pe mm fg ae ma vm kl le pp pe zb mm fg ae ma vm kl le pp mm pe zb fg ae ma vm kl le pp fg mm pe zb ae ma vm kl le pp ae fg mm pe zb ma vm kl le pp ae fg ma mm pe zb vm kl le pp ae fg ma mm pe vm zb kl le pp ae fg kl ma mm pe vm zb le pp ae fg kl le ma mm pe vm zb pp ae fg kl le ma mm pe pp vm zb