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

Relevanta dokument
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.

Det finns en referensbok (Java) hos vakten 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.

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

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.

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.

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

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.

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

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

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 Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

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

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

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

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.

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 i Programmeringsteknik I

Tentamen i Programmeringsteknik I

Tentamen i Programmeringsteknik I, ES,

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.

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

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

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

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

Tentamen i Programmeringsteknik I

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

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

Föreläsning 5-6 Innehåll

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

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

Del A (obligatorisk för alla)

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

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

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

Observera. Tentamen Programmeringsteknik II Skrivtid:

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

Tentamen OOP

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.

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

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

Malmö högskola 2008/2009 CTS

OOP Objekt-orienterad programmering

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

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

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]

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

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

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

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

tentaplugg.nu av studenter för studenter

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

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

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

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 )

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

Tentamen, EDAA20/EDA501 Programmering

Del A (obligatorisk för alla)

TDDD78 Viktiga begrepp, del 2

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.

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

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

TENTAMEN OOP

Tentamen, EDA501 Programmering M L TM W K V

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

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

Tentamen. Lösningsförslag

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

Exempel på program med objekt Klass med main-metod. Föreläsning 3-4 Innehåll. Övning Viktiga begrepp

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

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

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

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

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

Lösningsförslag övning 2.

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Chapter 4: Writing Classes/ Att skriva egna klasser.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

13 Prioritetsköer, heapar

public boolean containskey(string key) { return search(key, head)!= null; }

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

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Transkript:

Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok 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. Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer och pin-kod (eller namn om du saknar sådan) på alla papper. Skriv inte längst upp i vänstra hörnet - det går inte att läsa där efter sammanhäftning. Fyll i försättssidan fullständigt. Det är principer och idéer som är viktiga. Skriv så att du övertygar examinator om att du har förstått dessa även om detaljer kan vara felaktiga. Programkod skall vara läslig dvs den skall vara vettigt strukturerad och indenterad. Namn på variabler, metoder, klasser etc skall vara beskrivande men kan ändå hållas ganska korta. Det är totalt 30 poäng på skrivningen. Betygsgränser: 15 ger säkert 3, 21 ger säkert 4, 26 ger säkert 5. Lycka till! Tom 1

Uppgifter 1. Nedan följer ett program med ett antal inringade begrepp där varje inringning är försedd med en bokstav. public class Circle { private double r = 1.; private double x, y ; public Circle ( ) { public Circle ( double x, double y, double r ) { this. x = x; this. y = y; B this. r = r; C public double area ( ) { return Math. PI * r * r ; D public double circumference ( ) { return 2. * Math. PI * r ; E public void scale ( double sf ) { r = sf * r ; public String tostring ( ) { return String. format ( "Circle<%5.2f %5.2f %5.2f", x, y, r ) ; public static void main ( String [ ] a ) { Circle c = new Circle ( ) ; Circle d = new Circle ( 0.75, 0.25, 0.25 ) ; System. out. println ( ) ; System. out. println ( d ) ; System. out. println ( c. collide ( d ) ) ; A F G H I I tabellen nedan finns ett antal begrepp listade. Du skall para ihop begreppen vid bokstäverna med rätt rad i tabellen. Skriv den bokstav som passar för begreppet eller ett X om det inte finns någon inringning som passar. Svara bara med ett alternativ för varje rad! Samma bokstav kan dock förekomma på flera olika rader. Det kan alltså finnas bokstäver som inte har en motsvarande rad och rader som inte har en motsvarande bokstav! aktuell parameter 1 I formell parameter 2 E lokal variabel 3 G instansvariabel 4 C klassnamn 5 H iteration 6 X primitiv datatyp 7 X referensvariabel 8 G klassmetod 9 F omslagsklass 10 X Du kan skriva i tabellen och lämna in sidan eller bara ge en följd av par med radnummer och bokstav. (5p) 2

2. Uppgifter till klassen Circle på föregående sida: a) Man kan rikta viss kritik mot den ena av de två konstruktorerna liksom mot en av metoderna? Vilka och vad är kritiken? (2p) Svar: Konstruktorn med parametrar kontrollerar inte att den givna radien är ickenegativ och scale-metoden kontrollerar inte att skalfaktorn (sf) är ickenegativ b) Skriv metoden copy() som returnerar en kopia av det egna objektet (2p) Svar: public Circle copy() { return new Circle(r, x, y); c) Skriv metoden collide(circle c) som returnerar true om det egna objektet kolliderar med cirkeln c, annars false. Två cirklar anses kollidera om avståndet mellan deras centrumpunkter är mindre än summan av deras radier. (4p) Svar: public boolean collide(circle c) { double dx = x - c.x; double dy = y - c.y; double d = Math.sqrt(dx*dx + dy*dy); return d <= r + c.r; 3. Nedan finns delar av en kod som representerar en värld med cirklar dvs objekt av typen Circle från föregående uppgifter. public class CircleWorld { private Circle[] thecircles; private int n; // Actual number of circles public CircleWorld(int n) {... public void add(circle c) {... public int numberofcollisions() {... Testprogram: Output: public void print() { String r=""; for (int i=0; i<n; i++) { System.out.println(theCircles[i]); public static void main(string[] a) { int n = 6; CircleWorld cw = new CircleWorld(n); for (int i= 0; i<n; i++) { double r = Math.random()/2.; double x = Math.random(); double y = Math.random(); cw.add(new Circle(x, y, r)); cw.print(); System.out.println("Collisions: " + cw.numberofcollisions()); > run CircleWorld Circle< 0,46 0,37 0,41> Circle< 0,38 0,74 0,26> Circle< 0,97 0,57 0,26> Circle< 0,93 0,66 0,27> Circle< 0,73 0,82 0,50> Circle< 0,02 0,21 0,36> Collisions: 9 Too many circles > cw.add(new Circle()); 3

a) Skriv klar konstruktorn CircleWorld(int n) som skall skapa en värld med plats för n cirklar (men inte lägga in några). (1p) Svar: public CircleWorld(int n) { this.n = 0; this.thecircles = new Circle[n]; b) Skriv klar metoden add(circle c) som lägger till en cirkel till världen. Om den inte får plats skall ett felmeddelade ges och inget inlägg göras. (2p) Svar: public void add(circle c) { if (n==thecircles.length) { System.out.println("Too many circles"); return; else { thecircles[n++] = c; c) Skriv en metod som räknar ut det totala antalet cirkelkollisioner. Metoden skall alltså titta på alla möjliga par av cirklar och se om detta par kolliderar. Vid tre cirklar kan det således vara upp till tre kollisioner (cirkel 1 och 2, cirkel 1 och 3 samt cirkel 2 och 3) vid fyra kan det kan det vara upp till sex kollisioner (1 kolliderar med 2, 3, 4 och 2 kolliderar med 3, 4 och 3 kolliderar med 4). (4p) Svar: public int numberofcollisions() { int ret = 0; for (int i=0; i<n-1; i++) { for (int j=i+1; j<n; j++) { if (thecircles[i].collide(thecircles[j])) { ret++; return ret; 4. En prioritetskö är kö där uttagsordningen i första hand styrs av elementens prioritet snarare än deras ankomstordning. Patientköer i sjukhusens akutmottagningar är exempel på sådana köer. Om förhållandena ändras (t ex om någon komplikation tillstöter) så kan prioriteten behöva ändras för redan köande objekt. a) Skriv en klass Patient. Klassen skall representera en patient med namn och prioritet. Namnet och prioriteten skall ges som parametrar till klassens konstruktor. Förutom konstruktorn skall det finnas get-metoder för namn och prioritet, en metod för att ge en ny prioritet samt en tostring-metod. Se körexemplet från testprogrammet nedan! (4p) 4

Svar: public class Patient { private String name; private int prio; public Patient(String name, int prio) { this.name = name; this.prio = prio; public String tostring() { return "(" + name + ":" + prio + ")"; public int getprio() { return prio; public String getname() { return name; public void setprio(int p) { prio = p; b) Nedan finns ett embryo till klassen PriorityQueue: public class PriorityQueue { private ArrayList<Patient> q; public PriorityQueue() {... public boolean isempty() {... // true if the queue is true, else false public void put(patient p) {... // puts a patient in the queue public Patient get() {... // gets the first patient with the highest priority public String tostring() { String r =""; for (int i=0; i<q.size(); i++) { r = r + q.get(i); if (i<q.size()-1) { r = r + ", "; return "[" + r + "]"; Så här kan ett testprogram se ut: public static void main(string[] args) { PriorityQueue pq = new PriorityQueue(); for (int i=0; i<5; i++) { String name = "" + (char)( a + i); int prio = (int)(math.random()*6); Patient p = new Patient(name, prio); pq.put(p); System.out.println("Aktuell kö: " + pq); System.out.println("Patient ut: " + pq.get()); System.out.println("Patient ut: " + pq.get()); System.out.println("Aktuell kö: " + pq); pq.put(new Patient("Mx X", 10)); System.out.println("Aktuell kö: " + pq); while (!pq.isempty()) { System.out.println("Patient ut: " + pq.get()); med utmatning så här: Aktuell kö: [(a:2), (b:4), (c:1), (d:5), (e:1)] Patient ut: (d:5) Patient ut: (b:4) Aktuell kö: [(a:2), (c:1), (e:1)] Aktuell kö: [(a:2), (c:1), (e:1), (Mx X:10)] Patient ut: (Mx X:10) Patient ut: (a:2) Patient ut: (c:1) Patient ut: (e:1) 5

Skriv klar konstruktorn, metoden isempty() (enligt kommentarerna), metoden put (enligt kommentar och testkörning) samt metoden get. Metoden get skall leta upp patienten med högst prioritet, ta ut den ur kön och returnera den. Om det finns flera patienter som har den högsta prioriteten skall den som stått längst tid i kön tas. Om kön är tom skall null returneras. Observera att du kan få en del ledning genom att studera de delar av koden som är given inklusive testprogrammet. (6p) Svar: public PriorityQueue() { q = new ArrayList<Patient>(); public boolean isempty() { return q.size()==0; public void put(patient p) { q.add(p); // Put new patients in the end of the queue so // the order in the list reflects the arrival order public Patient get() { if (q.size()==0) { // If the queue is empty return null; int j = 0; for (int i = 1; i<q.size(); i++) { if (q.get(i).getprio() > q.get(j).getprio()) { j = i; return q.remove(j); 6