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

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

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-17, TDA540. Dag: , Tid:

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

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

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

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

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

Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

TENTAMEN OOP

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

Institutionen för TENTAMEN CTH HT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

TENTAMEN OOP

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

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

Tentamen i Programmeringsteknik I

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Tentamen i Grundläggande programmering STS, åk

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

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

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

Objektorienterad programmering i Java

TENTAMEN OOP

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Laboration A Objektsamlingar

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

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.

LÖSNINGSFÖRSLAG TENTAMEN

Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

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

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

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

Föreläsning 3-4 Innehåll

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

DAT043 Objektorienterad Programmering

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

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

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

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Lösningsförslag tentamen FYTA11 Java

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Tentamen i Programmeringsteknik I

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna 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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Tentamen Programmering fortsättningskurs DIT950

DAT043 - Föreläsning 7

Föreläsning 5-6 Innehåll

PROGRAMMERINGSTEKNIK TIN212

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

Tentamen, EDAA10 Programmering i Java

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

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

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

Den som bara har en hammare tror att alla problem är spikar

Del A (obligatorisk för alla)

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

OOP Objekt-orienterad programmering

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

Institutionen för TENTAMEN CTH VT-14 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

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

Föreläsning 2, vecka 8: Repetition

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

Typkonvertering. Java versus C

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Programmering A. Johan Eliasson

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen OOP

Transkript:

Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-08-24, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex Gerdes (alexg@chalmers.se, 031 772 6154) Resultat: Betygsgränser: Siffror inom parentes: Granskning: Hjälpmedel: Var vänlig och: Observera: Erhålls via Ladok 3:a 24 poäng 4:a 36 poäng 5:a 48 poäng max 60 poäng Anger maximal poäng på uppgiften Tentamen kan granskas på studieexpeditionen. Vid eventuella åsikter om rättningen eposta och ange noggrant vad du anser är fel så återkommer vi. Cay Horstmann: Java for everyone eller Jan Skansholm: Java direkt med Swing Understrykningar och smärre förtydligande noteringar får finnas. Skriv tydligt och disponera papperet på lämpligt sätt. Börja varje uppgift på nytt blad. Skriv ej på baksidan av papperet. Uppgifterna är ej ordnade efter svårighetsgrad. Titta därför igenom hela tentamen innan du börjar skriva. Alla program skall vara väl strukturerade, lättöverskådliga och enkla att förstå. Indentera programkoden! Vid rättning av uppgifter där programkod ingår bedöms principiella fel allvarligare än smärre språkfel. Lycka till! 1

Uppgift 1 (4 poäng) Vad avses med? a) Abstrakt klass (abstract class) b) Arv (inheritance) c) Undantag (exception) d) Variabel (variable) Förklara med en eller ett par meningar, du får gärna förtydliga med en skiss eller kod. Uppgift 2 (4 poäng) Vilka av raderna 1-11 nedan kompilerar ej? Motiverar varför! 1 class Number { 2 private int num; 3 4 public Nummer(int n) { 5 num = n; 6 7 8 public int getnumber() { 9 return n; 10 11 Uppgift 3 (5 poäng) Exponentialfunktionen används ofta i matematiken och skrivs som exp(x) i de flesta programspråk. Man kan beräkna den med en potensserie: exp(x) = n=0 x n n! = 1 + x + x2 2! + x3 3! + x4 4! + x5 5! +... I ovanstående betyder n! att det är n-fakultet, dvs multiplikation av alla heltal från 1 till och med n. Skriv en metod exp som gör en beräkning enligt ovanstående funktion. Metoden exp tar x som argument och ska ta med de första 100 termer från potensserien. Observera att det är inte tillåtit att använda metoderna Math.pow eller Math.exp samt ^ operatorn. 2

Uppgift 4 (12 poäng) Ett program behöver hantera vägar i planet som i nedanstående exempel: (x 1, y 1 ) (x 2, y 2 ) (x 6, y 6 ) (x 7, y 7 ) (x 0, y 0 ) (x 3, y 3 ) (x 5, y 5 ) (x 4, y 4 ) Vägen bestäms i exemplet av punkterna (x 0, y 0 ), (x 1, y 1 ),..., (x 7, y 7 ); antalet punkter i en väg är förstås inte alltid åtta. a) Definiera en klass Path vars instanser representerar en sådan väg. Som hjälpklass ska du definiera en klass Point som representerar en punkt som innehåller en x och y koordinat. Konstruktorn i Path ska ta en punkt (startpunkten) som argument. b) Vidare ska det finnas en metod addpoint, som också tar en punkt som argument och lägger till denna punkt som ny slutpunkt, observera att den får inte vara samma som den befintliga slutpunkten. c) Det ska finnas en metod getpoints som returnerar hela vägen, dvs alla punkterna, i någon form. Du får själv välja en lämplig resultattyp; det kan vara en lista eller ett fält eller kanske något annat. d) Överskugg tostring metoden så att en väg skrivs ut på ett lämpligt sätt. e) Lägg till en metod boolean loops() i Path klassen som kollar om vägen loopar, dvs när vi följer vägen kommer vi tillbaka till någon punkt där vi har varit förut. 3

Uppgift 5 (3 poäng) Betrakta metoden main() nedan och ange vad skrivs ut när den körs. public class Uppgift5 { public static void setelement(int[] xs, int i, int n) { if (i < xs.length) { xs[i] = n; else { System.out.println("Index out of bounds!"); public static void setlist(int[] xs, int n) { int[] ys = new int[xs.length]; for (int i = 0; i < ys.length; i++) { ys[i] = n; xs = ys; public static void printlist(int[] xs) { for (int x : xs) System.out.println(x); public static void main(string[] args) { int[] list = {1, 3, 3, 7; setelement(list, 3, 8); printlist(list); setlist(list, 42); printlist(list); 4

Uppgift 6 a) Skriv en metod med följande signatur: static int digit(int n, int k) som returnerar siffran på position k i talet n, räknad från positionen längst till höger. Om n har mindre än k siffror då returneras -1. Till exempel: digits(372, 1) returnerar 2, digits(372, 3) returnerar 3, och digits(372, 4) returnerar -1. Du får anta att både n och k är positiva heltal. (5 poäng) b) Skriv en metod increasing med följande signatur: static boolean increasing(int n) som kontrollerar om siffrorna i talet n är i stigande ordning när man räknar upp från positionen längst till höger, dvs första siffran (längst till höger) är mindre eller lika med den andra siffran, vilken in sin tur är mindre eller lika med den tredje siffran, och så vidare. Till exempel: increasing(372) returnerar false, increasing(743) returnerar true. Du får anta att n är ett positivt heltal och behöver inte kontrollera detta. Implementationen av increasing skall anropa digit och gå genom siffrorna i n. (5 poäng) 5

Uppgift 7 Betrakta följande klass- och gränssnittsdeklarationer: interface Immutable<G> { boolean has(g v); interface Collection<G> extends Immutable<G> { void put(g v); class Sequence<G> implements Collection<G> { ArrayList<G> elements = new ArrayList<>(); public boolean has(g v) { return elements.contains(v); public void put(g v) { elements.add(v); class IntSequence extends Sequence<Integer> { class IntList implements Immutable<Integer> { Integer[] elements = {5, 10, 20, 30, 36, 43; public boolean has(integer v) { for (int i = 0; i < elements.length; i++) if (elements[i] == v) return true; return false; a) Förklara för varje nedanstående sats om den blir accepterad eller resulterar i ett kompileringsfel, om det är fel förklara varför. (10 poäng) 1. Immutable<Integer> x1 = new Immutable<Integer>(); 2. Collection<Integer> x2 = new Sequence<Integer>(); 3. Immutable<Integer> x3 = new Sequence<Integer>(); 4. Sequence<Integer> x4 = new Sequence<Integer>(); 5. IntSequence x5 = new Sequence<Integer>(); 6. Sequence<Integer> x6 = new IntSequence(); 7. IntList x7 = new Sequence<Integer>(); 8. Immutable<Integer> x8 = new IntList(); 9. Sequence<Double> x9 = new Sequence<Double>(); 10. Sequence<Integer> x10 = new Sequence<Double>(); b) Vad skriver följande satser ut? (2 poäng) 1. System.out.println(new IntList().has(20)); 2. System.out.println(new IntSequence().has(20)); 3. System.out.println(((Immutable<Integer>)new IntSequence()).has(20)); 4. System.out.println(((Immutable<Integer>)new IntSequence()).put(20)); 6

Uppgift 8 I den här uppgift ska vi använda instanser av nedanstående klassen Sequence, som representerar sekvenser av element som har en godtycklig generisk typ G. Klassen använder ett privat fält (array), för att spara alla element, som blir initialiserat i konstruktorn. class Sequence<G> { private final G[] elements; public Sequence(G[] elements) { this.elements = elements; En elements multiplicitet (engelska: multiplicity) i en sekvens är antalet förekomster av elementet i sekvensen. Till exempel, multipliciteten av 3 i 1, 2, 3, 4, 3, 2, 1 är 2, och multipliciteten av 5 is samma sekvens är 0. a) Utöka klassen Sequence med en metod multip: int multip(g x) som returnerar multipliciteten av x i this objektets sekvens. (4 poäng) Betrakta nu två sekvenser s = x 0, x 1,..., x n och t = y 0, y 1,..., y m. s är en permutation av t om multipliciteten av varje element i s och t är detsamma i s så som i t. Till exempel, s = 1, 2, 2, 3 är en permutation av t = 2, 1, 3, 2, men inte av u = 1, 2, 3 för multipliciteten av 2 i s är 2 medan det är 1 i u. b) Utöka klassen Sequence med en metod permutation: boolean permutation(sequence<g> t) som returnerar true om this objektets sekvens är en permutation av argumentets (t) sekvens och annars false. Implementationen av permutation skall följa ovanstående definition av permutation och använda multip för att beräkna elementens multiplicitet. (6 poäng) 7