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:

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:

Tentamen 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:

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

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

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tentamen i Grundläggande Programvaruutveckling, TDA548

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN OOP

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

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

PROGRAMMERING-Java Omtentamina

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

Laboration A Objektsamlingar

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

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

Tentamen Programmering fortsättningskurs DIT950

Instuderingsfrågor, del D

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Tentamen i Programmeringsteknik I

Repetition av OOP- och Javabegrepp

TENTAMEN OOP

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.

Repetition av OOP- och Javabegrepp

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

Instuderingsfrågor, del E

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

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

OOP Objekt-orienterad programmering

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

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

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

I ett program hantera man ofta samlingar av objekt av samma typ.

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

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

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 Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

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

Tentamen i Grundläggande programmering STS, åk

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

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

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

Föreläsning 3-4 Innehåll

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

Tentamen FYTA11 Javaprogrammering

Del A (obligatorisk för alla)

Del A (obligatorisk för alla)

Typkonvertering. Java versus C

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

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Objektorienterad programmering i Java

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

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.

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Objektorienterad Programmering (TDDC77)

Tentamen. Grundläggande programmering i Java A 5p, DTAA

PROGRAMMERINGSTEKNIK TIN212

Tentamen i Programmeringsteknik I

Lösningsförslag tentamen FYTA11 Java

LÖSNINGSFÖRSLAG TENTAMEN

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Värde och typ? Problem. Vad skrivs ut? Referenssematik (1) Joachim von Hacht. Förklara (i detalj)! int x; int y; x = y = 1; out.println(x + ":" + y);

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

Tentamen i Objektorienterad programmering

Tentamen i Programmeringsteknik I, ES,

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Anteckningar 1: Grundläggande saker

Tentamen i Programmering

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

DAT043 Objektorienterad Programmering

Tentamen FYTA11 Javaprogrammering

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

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Tentamen OOP

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

Tentamen. Lösningsförslag

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

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

Transkript:

Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-04-12, 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 Vad avses med? a) Konstruktor b) Arv c) Tilldelning d) Kompilator Förklara med en eller ett par meningar, du får gärna förtydliga med en skiss eller kod. Uppgift 2 Vilka av raderna 1-22 nedan kompilerar ej? Motiverar varför! 1 class Main { 2 public static void main(string[] args) { 3 int n = f(5); 4 double d = f(5.0); 5 d = f(5); 6 d = h(1, 2.0, 3); 7 d = f(1) + h(2, 3); 8 n = b(1.0); 9 10 11 int f(int n) { 12 return n + 1; 13 14 15 double g(double d) { 16 return d + 1; 17 18 19 double h(int n, double d) { 20 return n + d; 21 22 Uppgift 3 (12 poäng) Skriv en klass Tokenizer som delar upp en sträng i substränger (så kallade tokens ) som är separerade med skiljetecken ( delimiters ). Till exempel, om vi väljer mellanslag och punkt som skiljetecken då har strängen "Lätt som en plätt." fyra tokens: "Lätt", "som", "en" och "plätt". Klassen Tokenizer ska ha följande konstruktor och metoder: public Tokenizer(String input, String delimiters) public String nexttoken() public boolean hasnexttoken() public List<String> alltokens() 2

Metoden nexttoken returnerar nästa token som finns i strängen. Om det inte finns något token kvar i resten av strängen då kastas ett NoSuchElementException undantag. Exempel användning: System.out.println(new Tokenizer("x = x + 1;", " ;").alltokens()); Tokenizer t = new Tokenizer(" Java is the best!!! Duh!", "!"); System.out.println(t.nextToken()); System.out.println(t.allTokens()); System.out.println(t.nextToken()); ger: [x, =, x, +, 1] Java [is, the, best, Duh] Exception java.util.nosuchelementexception För att lösa uppgifterna är det tillåtet att använda metoder från List gränssnittet och följande metoder från klassen String: char charat(int i) ger tecknet vid index i int indexof(char ch) ger index för tecknet ch eller -1 om tecknet saknas int length ger längden av strängen String substring(int start, int end) ger en delsträng från start till end - 1 String substring(int start) ger en delsträng från start till strängens slut String[] split(string str) delar upp en sträng i ett fält av delsträngar utifrån ett visst tecken, till exempel: "aaa:bb:cccc:dd".split(":") -> {"aaa", "bb", "cccc", "dd" Uppgift 4 (3 poäng) Förklara med hjälp av exempel följande begrepp: a) statisk typ b) dynamisk typ c) typkonvertering 3

Uppgift 5 (5 poäng) Betrakta metoden run() nedan och ange vad skrivs ut när den körs. Hur många variabler finns i programmet (hur många olika behållare för värden kommer att användas)? Hur många objekt är inblandade? Du måste motivera, att bara ange några talvärden ger inga poäng! class Wrapper { Integer i; Wrapper(Integer i) { this.i = i; class Swapper { public static void swap(wrapper x, Wrapper y) { Integer tmp = x.i; x.i = y.i; y.i = tmp; void run() { Swapper ws = new Swapper(); int a = 1; int b = 2; Wrapper x = new Wrapper(a); Wrapper y = new Wrapper(b); ws.swap(x, y); System.out.println("a = " + x.i + " b = " + y.i); Uppgift 6 Ett heltal P är ett primtal om det är större än 1 och inte har några andra positiva delare än 1 och talet självt. Ett heltal som är inte ett primtal kallas för en komposit. Till exempel, 2, 3, 7 är primtal medan 4 = 2 2 och 12 = 2 2 3 är komposit. a) Skriv en metod isprime som kontrollerar om ett heltal n är ett primtal och returnerar true i sådan fall och annars false. Kom ihåg att uttrycket x % y resulterar i resten av heltalsdivisionen av x med y. Lösningen ska ha lämplig typsignatur för metoden isprime samt dess implementation. (3 poäng) b) Skriv en metod iscomposite som tar ett heltal n och returnerar true om n är en komposit, och false annars. Implementation av iscomposite ska använda metoden isprime. (1 poäng) c) Skriv en metod primes som tar ett heltal n som input och returnerar ett heltalsfält med alla primtal från 2 till n i numerisk ordning, så att fältets längd är lika med antal primtal mellan 2 och n. Återigen använd metoden isprime i implementationen. (6 poäng) 4

Uppgift 7 Betrakta följande klass- och gränssnittsdeklarationer: interface Vehicle { String registrationid(); interface Wheeler { int numwheels(); abstract class FourWheeler implements Vehicle, Wheeler { int numwheels() { return 4; class Car extends FourWheeler { String registrationid = "unknown"; String registrationid() { return registrationid; class Volvo extends Car { String manufacturedin() { return "Made in Göteborg"; a) Vad skriver följande satser ut? (2 poäng) 1. System.out.println(new Car().numWheels()); 2. System.out.println(new Volvo().numWheels()); 3. System.out.println(new Car().registrationId()); 4. System.out.println(new Volvo().registrationId()); 5. System.out.println(new Volvo().manufacturedIn()); b) 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. Vehicle v = new Vehicle(); 2. Vehicle v = new Car(); 3. Car c = new Volvo(); 4. Volvo c = new Car(); 5. FourWheeler f = new Volvo(); 6. FourWheeler f = new FourWheeler(); 7. Wheeler w = new Car(); 8. Volvo v = new Volvo(); 9. List<Car> = new List<Car>(); 10. List<Vehicle> = new List<Car>(); 5

Uppgift 8 Betrakta följande deklaration för klassen IntList som representerar en heltalslista: class IntList { private final Integer[] data; private int size; public IntList() { data = new Integer[10_000]; size = 0; public int size() { return this.size; Implementationen använder ett privat fält data för att spara alla element i listan. Instansvariabeln size räknar antal element i listan, som kan läsas av med metoden size(). Elementen i listan är sparade konsekuitivt i fältet data från position 0 till och med position size - 1. Syftet är att kompletera implementationen av klassen IntList med följande metoderna. a) Skriv en metod get med typsignatur public Integer get(int index) som returnerar elementet sparat på position index i listan. Om index är ogiltigt då returnerar get värdet null. (2 poäng) b) Skriv en metod remove med typsignatur public Integer remove() som tar bort elementet längst till höger i listan och returnerar detta. Om listan är tom då returnerar remove värdet null. c) Skriv en metod add med typsignatur public void add(integer item) som lägger till ett heltalsvärde item längst till höger av element i listan. Om det finns inget utrymme kvar i listan då kastas ett FullException undantag. 6