Tentamen i Grundläggande Programvaruutveckling, TDA548

Relevanta dokument
Tentamen i Grundläggande Programvaruutveckling, TDA548

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

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

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

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

Instuderingsfrågor, del D

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.

Tentamen Programmering fortsättningskurs DIT950

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

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

Tentamen TEN1 HI

Objektorienterad programmering i Java

TENTAMEN OOP

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?

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

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

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

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Del A (obligatorisk för alla)

Föreläsning 3-4 Innehåll

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

2D1339 Programkonstruktion för F1, ht 2004

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.

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

Föreläsning 7-8 Innehåll

TENTAMEN OOP

PROGRAMMERING-JAVA TENTAMINA

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

PROGRAMMERING-Java TENTAMINA

Tentamen OOP

HI1024 Programmering, grundkurs TEN

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen i Programmering

Tentamen, Algoritmer och datastrukturer

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

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

Föreläsning 6: Metoder och fält (arrays)

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

PROGRAMMERING-Java Omtentamina

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Tentamen i Programmeringsteknik I,, KandMa/Fy,

2D1339 Programkonstruktion för F1, ht 2003

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 vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

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

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

Föreläsning 2, vecka 8: Repetition

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

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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.

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

Rekursion och induktion för algoritmkonstruktion

OOP Objekt-orienterad programmering

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

PROGRAMMERINGSTEKNIK TIN212

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Lösningsförslag tentamen FYTA11 Java

Tentamen i Introduktion till programmering

Laboration A Objektsamlingar

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

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

TENTAMEN OOP

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

DD1361 Programmeringsparadigm. Carina Edlund

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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:

Uppgift 1 (grundläggande konstruktioner)

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

(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

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

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Tentamen i Programmeringsteknik I

Tentamen Grundläggande programmering

Tentamen TEN1 HI

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

kl Tentaupplägg

HI1024 Programmering, grundkurs TEN

Transkript:

Tentamen i Grundläggande Programvaruutveckling, Joachim von Hacht/Magnus Myreen Datum: 2016-12-20 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 3: 24-37 4: 38-47 5 : 48-60 (max 60) Lärare: Joachim von Hacht/Magnus Myreen. Någon besöker ca 10.00 och 11.30, tel. 031/7721003 Granskning: Anslås på kurssida. Instruktioner: För full poäng på essä-frågor krävs ett läsbart, begripligt och heltäckande svar. Generellt 1p för varje relevant aspekt av problemet. Oprecisa eller alltför generella (vaga) svar ger inga poäng. Konkretisera och/eller ge exempel. Det är aldrig någon risk att vara övertydlig! Det räcker med enbart relevanta kodavsnitt, övrig kod ersätts med... (aldrig import, main-metod, etc...) Överkomplicerade lösningar kan ge poängavdrag. Vi utgår från att användaren alltid skriver rätt och/eller gör rätt (d.v.s ingen felhantering behövs). Om felhantering skall ingå anges detta specikt. LYCKA TILL... 1

1. Vad avses med? 4p a) Konstruktor b) Formell parameter Förklara med en eller ett par meningar, du får gärna förtydliga med en skiss eller med kod. 2. Vilka av raderna 1-8 nedan kompilerar ej? Motivera varför! 2p int i = a(5); // 1 double d = a(5.0); // 2 d = a(5); // 3 d = c(1, 2.0, 3); // 4 d = a(1) + c(2, 3); // 5 int a(int n) { return n + 1; // 6 double b(double n) { return n + 1; // 7 double c(int n, double d) { return n + d; // 8 3. Det förefaller som att man, givet ett positivt heltal n, kan komma till talet 1 genom att upprepade gånger tillämpa två enkla regler för n. 4p Om n är jämt: Sätt n till n 2 (heltalsdivision) Om n är udda: Sätt n till 3n + 1. Skriv en metod, plot, som givet n, använder reglerna för att skriva ut alla tal [n, 1] (vi antar att vi kommer till 1). Exempel: plot(6) ger utskrift 6, 3, 10, 5, 16, 8, 4, 2, 1 plot(1) ger utskrift 1 plot(23) ger utskrift 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 2

4. Rita en bild som visar variabler, värden, referenser och objekt samt hur dessa förhåller sig till varann före, respektive efter anropet av metoden process (rita som vi ritat under föreläsningarna, lådor, pilar o.s.v.). // Så här ser det ut innan anropet C[] ca1 = {new C(1), new C(2), new C(3); C[] ca2 = {new C(3), new C(2), new C(5); process( ca1, ca2 ); // Anropet // Metoden process. Hur ser det ut efter att denna körts? void process(c[] carr1, C[] carr2) { for (int i = 0; i < carr1.length; i++) { if (carr1[i].n == carr2[i].n) { carr1[i] = carr2[i]; else { carr1[i].n = carr2[i].n; public class C { int n; C(int n) { this.n = n; 5. Skriv en metod, intersection(a1, a2), som givet två heltals-arrayer, a1 och a2, returnerar en array med de element som nns i både a1 och a2. De givna arrayerna får inte ändras. Resultatet behöver inte vara ordnat på något speciellt sätt. Exempel: a1 a2 Resultat [ 1,2,3,4,5 ] [ 5,8,9,3,0 ] [ 3,5 ] eller [ 5,3 ] [ 1,2,3 ] [ 4,5,6 ] [] [ 1,2,3 ] [] [] [ 1,2,3 ] [ 1,2,3 ] [ 1,2,3 ] 3

6. Skriv en klass PolyLine för att representera en kontinuerlig linje av linjesegment i 2D, se Figur 1. Ett linjesegment skall representeras som fyra reella tal, x1, y1, x2, y2. Första par anger startpunkt och sista anger slutpunkt. Eftersom linjen är kontinuerlig kan segment dela start- och slutpunkt. Följande gäller: 12p a) Klassen skall ha en konstruktor som tar en array av reella tal för linjesegmentens start- och slutpunkter. b) Klassen skall ha en metod translate(dx, dy) som yttar ett PolyLine-objekt dx i x-led och dy i y-led. c) Klassen skall ha en metod concat som sammanfogar aktuellt objekt med ett annat PolyLine-objekt. Som resultat returneras ett nytt PolyLine-objekt där det aktuella objektets slutpunkt har sammanfogats med det andra objektets startpunkt. Det nya objektet skall vara helt skilt från de andra objekten (operanderna). d) Visa hur du instansierar två PolyLine-objekt och därefter slår ihop dessa m.h.a. concat-metoden. Figur 1: En polyline med 6 segment. 4

7. Skriv en metod, sumfromstring, som summerar alla heltal i en sträng. I strängen nns bara positiva heltal. Exempel: arne12fia13pelle8lisa7 ger summan 40 arnelisa ger summan 0 12345 ger summan 12345 "1mmm2nn?n3nn##n4b&b5" ger summan 15 Tillåtna metoder från olika klasser: String - charat(int i), ger tecknet vid index i. - indexof(char ch), ger index för tecknet ch, -1 om tecknet saknas. - length() ger längden av strängen. - substring(int start, int end), ger en delsträng från start (inkl.) till end-1. - substring(int start), ger en delsträng från start (inkl.) till strängens slut. - tochararray(), gör om strängen till en array med tecken - split(string str), delar upp en sträng i en array av delsträngar utifrån ett visst tecken. Returnerar en String-array (String[]) Exempel "aaa:bb:cccc:dd".split(":") -> [ "aaa", "bb", "cccc", "dd" ] StringBuilder - append(string s), lägger till strängen s sist i Stringbuilder-objektet. - append( char ch ), som ovan - setlength(), sätter aktuell längd, setlength(0) raderar alla tecken. - tostring(), omvandlar StringBuilder-objektet till en String. Character - isdigit() får användas (klassmetod). Metoden returnerar sant för tecknen 0-9. Integer - valueof(string s) får användas (klassmetod). Metoden omvandlar en sträng till ett heltal. OBS! Att metoden kastar ett undantag för tomma strängen 8. Förklara med hjälp av exempel följande begrepp: a) statisk typ 1p b) dynamisk typ 1p c) typkonvertering 2p 5

9. Metoden test skriver ut ett mönster av tecken. void setmark(int[][] a, int x, int y) { a[x][y] = 1; // rad X void mark(int[][] a, int x, int y, int depth) { if (depth == 0) { return; setmark(a,x,y); mark(a,x+1,y,depth-1); mark(a,x-1,y,depth-1); mark(a,x,y+1,depth-1); mark(a,x,y-1,depth-1); void test(int dim, int depth) { // skriv in nollor int[][] a = new int[dim][dim]; for (int i=0;i<dim;i++) { for (int j=0;j<dim;j++) { a[i][j] = 0; // skriv in siffror mark(a,dim/2,dim/2,depth); // skriv ut siffrorna for (int i=0;i<dim;i++) { for (int j=0;j<dim;j++) { if (a[i][j] == 0) { System.out.print(" "); else { System.out.print(a[i][j]); System.out.println(); a) Vad skrivs ut när test(5,2) körs? Vad skrivs när test(5,3) körs? 4p b) Skriv kod för en ny version av mark metoden. Din metod skall inte använda rekursion men skall ha samma eekt som ett anrop till originalversionen ovan. c) Vad blir utskriften av test(5,3) ifall raden som är markerad ovan med rad X byts till a[x][y] = 1 + a[x][y];? Ditt svar ska vara baserat på den rekursiva versionen mark given i koden ovan. 6