Tentamen i Programmeringsteknik I

Relevanta dokument
Tentamen i Programmeringsteknik I

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 vakten 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.

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.

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 vakten 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

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.

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.

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

Del A (obligatorisk för alla)

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

Tentamen i Programmeringsteknik I, ES,

Tentamen i Programmeringsteknik I

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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.

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 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!

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.

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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.

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

LyckaTill önskar Anna

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

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.

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.

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

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

Malmö högskola 2008/2009 CTS

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

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

Del A (obligatorisk för alla)

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

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

TENTAMEN OOP

Tentamen. Lösningsförslag

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

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

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

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

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

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 Programmeringsteknik II Inledning. Anmälningskod:

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

2D1342 Programkonstruktion för F1, ht 2006

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

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

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

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

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

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

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

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 )

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OOP Objekt-orienterad programmering

TENTAMEN OOP

OOP Tentamen

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Presentation av trafiksimuleringsprojektet

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

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

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

Föreläsning 3-4 Innehåll

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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

Tentamen OOP

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

Tentamen, EDA501 Programmering M L TM W K V

Tentamen i Grundläggande programmering STS, åk

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

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

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

trafiksimulering Intro OU5 trafiksimulering

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

Observera. Tentamen Programmeringsteknik II Skrivtid:

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

Objektorienterad programmering D2

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

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Objektorienterad programmering i Java

DAT043 Objektorienterad Programmering

Transkript:

Tentamen i Programmeringsteknik I 2016-10-17 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer och tentamenskod överst i högra hörnet på alla papper. Uppgift A1 skall rivas ur från tentamen och lämnas in tillsammans med övriga svar som skrivs på lösa papper. Fyll i försättssidan fullständigt. Alla uppgifter gäller programmeringsspråket Java och programkod skall skrivas i Java. Koden 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. Observera att betyget påverkas negativt av - icke-privata eller onödiga instansvariabler, - dålig läslighet, - upprepning av identisk kod och - underlåtenhet att utnyttja given eller egen tidigare skriven metod. För att bli godkänd (betyg 3) krävs att A-delen är i stort sett rätt löst Lycka till! Torsten För betyget 4 krävs dessutom att minst hälften av uppgifterna på B-delen och betyg 5 att alla uppgifter på B-delen är i stort sett lösta. Vi bedömningen av betyg 4 och 5 tas också hänsyn till kvalitén på lösningarna i A-delen. Observera att B-delen inte rättas om inte A-delen är godkänd. 1

2

Tentamenskod Del A (obligatorisk för alla) A1. Ringa in rätt svar och lämna in denna sida tillsammans med dina övriga svar a) Givet koden int x=36, y=10, z; 1. 4 z = x/y; X. 4.6 z++; 2. 5 Vilket värde har z efter sista satsen? b) Givet är koden int [] x = new int[3]; 1. Ger utskriften -2 x[1]=2; x[2]=-4; X. Medför ArrayIndexOutOfBoundsException x[3]=x[1]+x[2]; 2. Ger utskriften null System.out.println(x[3]); c) Givet koden: Vehicle [] thelane = new Vehicle[10]; double p = Math.random(); Vehicle v1; Vehicle v2 = new Vehicle('W'); Hur många Vehicle-objekt skapas? (Räkna bara de objekt som man ser att koden skapar). 1. 2 st X. 1 st 2. 11 st d) En konstruktor 1. skapar en ny klass X. anropas alltid när ett objekt skapas 2. har returtypen void e) Vad är korrekt angående tostring-metoden? 1. Har en parameter. X. Skriver ut en text 2. Returnerar en String f) Vilken returtyp skall metoden nedan ha, dvs vad ska bytas mot? public do(int n) { 1. int double [] x = new double[n]; X. void for (int i=0; i<n; i++) { 2. double [] x[i]=i; return x; g) Givet följande kod: Turtle [] family = new Turtle[3]; int x = family.length; 1. Medför java.lang.nullpointerexception family[0].move(20); X. Medför ArrayIndexOutOfBoundsException System.out.println(x); 2. Medför utskrift av 3 3

h) Givet koden: double a=8.5; double x = metha(a); double y = metha(14.5); Vilket av vidstående påståenden är sant? 1. a är en formell parameter X. a är en aktuell parameter 2. 14.5 är en formell parameter i) Givet koden ArrayList<Person> plist = new ArrayList<Person>(); Person p = new Person(); plist.add(p); Vilken av följande satser är korrekta? int x = plist.get(0); // a 1. Sats a double y = plist.get(0); // b X. Sats b Person z = plist.get(0); // c 2. Sats c j) Vilken sats ger med säkerhet en felutskrift? World w = new World(); // a 1. Sats a Turtle t; // b X. Sats b t.move(20); // c 2. Sats c 4

A2. Skriv en klass TicketMachine som skall representera en biljettautomat som har instansvariabler för biljettens identitet, priset och antalet tillgängliga biljetter. Namnge dem som identity, price och numberoftickets. Det finns en mainmetod nedan som visar hur klassen skall fungera och en programkörning. Skriv: a) Instansvariablerna b) Konstruktorn, se mainmetoden hur den skall fungera. c) Metoden getprice som returnerar biljettens pris d) Metoden buy med vilken man köper ett antal biljetter som då reduceras i biljettautomaten och metoden returnera true, annars skall inga biljetter köpas (antalet biljetter ej ändras) och metoden returnera false. e) Metoden tostring skall returnera den information som framgår av programkörningen. Här är mainmetoden som skall passa klassen TicketMachine: public static void main(string[] arg) { int price = 210; int nroftickets = 20; TicketMachine t = new TicketMachine("Biljettautomat 1", price, nroftickets); System.out.println(t); System.out.println(t.getPrice()); System.out.println(t.buy(5)); System.out.println(t); System.out.println(t.buy(18)); System.out.println(t); Programkörning: Biljettens id=biljettautomat 1, pris=210, antal=20 210 true Biljettens id=biljettautomat 1, pris=210, antal=15 false Biljettens id=biljettautomat 1, pris=210, antal=15 A3. Skriv en mainmetod som skapar 50 st biljettautomater med innehåll som nedanstående programkörning visar. Notera att varje automat laddas initialt med ett slumpmässigt antal biljetter som kan vara från 1-20. Efter skapandet av de 50 automaterna skall programmet köpa 10 st biljetter från varje maskin och räkna hur många automater som det gick bra att köpa från. Mainmetoden skall använda klassen TicketMachine och antag att metoden finns i en klass TestTicketMachine. Mainmetoden skall fungera som nedanstående programkörning visar: 50 st biljettautomater är skapade. Deras status är följande: Biljettens id=consert1, pris=240, antal=19 Biljettens id=consert2, pris=240, antal=15 Biljettens id=consert3, pris=240, antal=8 Biljettens id=consert4, pris=240, antal=14 Notera: Utskrifter är utelämnade Biljettens id=consert47, pris=240, antal=13 Biljettens id=consert48, pris=240, antal=2 Biljettens id=consert49, pris=240, antal=16 Biljettens id=consert50, pris=240, antal=8 Har försökt att köpa 10 st biljetter från varje biljettautomat. Aktuell status efter dessa köp: Biljettens id=consert1, pris=240, antal=9 Biljettens id=consert2, pris=240, antal=5 Biljettens id=consert3, pris=240, antal=8 Biljettens id=consert4, pris=240, antal=4 Notera: Utskrifter är utelämnade Biljettens id=consert47, pris=240, antal=3 Biljettens id=consert48, pris=240, antal=2 Biljettens id=consert49, pris=240, antal=6 Biljettens id=consert50, pris=240, antal=8 Antal automater det gick att köpa från: 28 5

B (Endast för dem som siktar på betyget 4 eller 5) B1. I en datingförening har varje medlem en identitet och ett antal egenskaper, där varje sådan egenskap har ett värde, ett heltal 0-9. Genom att beräkna hur pass överensstämmande dessa värden är mellan två medlemmar kan man beräkna ett matchningsmått. Antag att antalet egenskaper alltid är 5 för varje medlem. Ett exempel: En medlem med identiteten A har följande egenskapsvärden: 9, 0, 0, 2, 3. En medlem med identiteten B har följande egenskapsvärden: 9, 0, 0, 1, 6. Matchningen beräknas genom att summera kvadraterna på skillnaderna mellan värdena för medlemmarna. En matchning mellan A och B ger matchningsvärdet 10 eftersom: (9-9) 2 + (0-0) 2 + (0-0) 2 + (2-1) 2 + (3-6) 2 = 0 + 0 + 0 + 1 + 9 = 10 Skriv en klass Member som representerar en medlem som har en identitet (identity) och 5 st egenskapsvärden (properties) som är heltal. Klassen skall fungera ihop med följande mainmetod och ge de utskrifter som programkörningen visar: public static void main (String[] arg) { int [] propertiesa = {9,0,0,2,3; int [] propertiesb = {9,0,0,1,6; Member ma = new Member("A",propertiesA); Member mb = new Member("B",propertiesB); System.out.println(ma); System.out.println(mb); int match = ma.matchvalue(mb); System.out.println("Matchningsvärdet mellan " + ma.getidentity() + " och " + mb.getidentity() + " : " + match); Programkörning resulterar i följande utskrift: <A 9 0 0 2 3 > <B 9 0 0 1 6 > Matchningsvärdet mellan A och B : 10 B2 Datingföreningen har delat in sina medlemmar i olika grupper. Matchningen görs för alla medlemmarna inom en grupp. Exempelvis om vi har följande (lilla) grupp med fyra medlemmars identitet och egenskapsvärden: kim.nilsson@pollax.se 5 1 3 1 8 fia.jonsson@pollax.se 4 6 4 5 3 my.ehn@pollax.se 3 9 1 1 4 ida.lonn@pollax.se 5 7 3 8 2 I exemplet blir det 6 st par vars matchningsvärden beräknas: kim vs fia, kim vs my, kim vs ida, fia vs my, fia vs ida, my vs ida. Det lägsta värdet blir 13 vilket avser matchningsvärdet mellan paret fia och ida. I denna grupp har alltså detta par den bästa matchningen. För att hantera olika grupper har man en klass MemberGroup. Nedanstående mainmetod (se nästa sida) gör en matchning för ovan exempel på grupp som namnges som Pollax. Den jämför alla par av medlemmar och beräknar det par som matchar bäst, dvs har det lägsta matchningsvärdet. Om det bästa matchningsvärdet är högst 20, tas det paret bort från gruppen. 6

public static void main (String[] arg ) { MemberGroup g = new MemberGroup("Pollax"); Member m; int [] p1 = {5,1,3,1,8; m = new Member("kim.nilsson@pollax.se",p1); g.add(m); int [] p2 = {4,6,4,5,3; m = new Member("fia.jonsson@pollax.se",p2); g.add(m); int [] p3 = {3,9,1,1,4; m = new Member("my.ehn@pollax.se",p3); g.add(m); int [] p4 = {5,7,3,8,2; m = new Member("ida.lonn@pollax.se",p4); g.add(m); System.out.println("Antal medlemmar i gruppen " + g.getidentity()+ ":" + g.getantal() ); System.out.println(g); System.out.println("Alla medlemmars matchningsvärden:"); g.printmatchvalues(); // Beräkna det par som matchar bäst Member [] best = g.bestmatchpair(); int matchvalue = best[0].matchvalue(best[1]); System.out.println("\nBästa match:" + best[0].getidentity() + " och " + best[1].getidentity() + ":Matchvärde = "+matchvalue); // Ta bort bästa paret om matchningsvärdet är <=20 if (matchvalue<=20) { g.deletemember(best[0]); g.deletemember(best[1]); System.out.println(best[0].getIdentity()+ " och " + best[1].getidentity() + " är bortagna från gruppen"); System.out.println("Antal medlemmar i gruppen " + g.getidentity()+ ":" + g.getantal() ); System.out.println(g); // main En programkörning ger följande resultat: Antal medlemmar i gruppen Pollax:4 <kim.nilsson@pollax.se 5 1 3 1 8 > <fia.jonsson@pollax.se 4 6 4 5 3 > <my.ehn@pollax.se 3 9 1 1 4 > <ida.lonn@pollax.se 5 7 3 8 2 > Alla medlemmars matchningsvärden: <kim.nilsson@pollax.se 5 1 3 1 8 > vs <fia.jonsson@pollax.se 4 6 4 5 3 >: matchvärde=68 <kim.nilsson@pollax.se 5 1 3 1 8 > vs <my.ehn@pollax.se 3 9 1 1 4 >: matchvärde=88 <kim.nilsson@pollax.se 5 1 3 1 8 > vs <ida.lonn@pollax.se 5 7 3 8 2 >: matchvärde=121 <fia.jonsson@pollax.se 4 6 4 5 3 > vs <my.ehn@pollax.se 3 9 1 1 4 >: matchvärde=36 <fia.jonsson@pollax.se 4 6 4 5 3 > vs <ida.lonn@pollax.se 5 7 3 8 2 >: matchvärde=13 <my.ehn@pollax.se 3 9 1 1 4 > vs <ida.lonn@pollax.se 5 7 3 8 2 >: matchvärde=65 Bästa match:fia.jonsson@pollax.se och ida.lonn@pollax.se:matchvärde = 13 fia.jonsson@pollax.se och ida.lonn@pollax.se är bortagna från gruppen Antal medlemmar i gruppen Pollax:2 <kim.nilsson@pollax.se 5 1 3 1 8 > <my.ehn@pollax.se 3 9 1 1 4 > Skriv klassen MemberGroup som passar ovan mainmetod och ger det resultat som programkörningen visar. Givet är nedanstående skal (se nästa sida) till klassen MemberGroup där det saknas följande delar som du skall skriva: a) Konstruktorn b) Metoden getantal som returnerar antal medlemmar i gruppen c) Metoden add med vilken man lägger till en medlem i gruppen d) Metoden printmatchvalues som skriver ut alla par och deras matchningsvärden e) Metoden bestmatchpair som beräknar det par som matchar bäst. Metoden returnerar en array med två element som är de medlemmar som matchar bäst. Antag att det bara finns ETT par som matchar bäst, dvs bara ett par som har ett minsta matchningsvärde f) Metoden deletemember som tar bort en medlem från gruppen. Metoden skall returnera true om det gick att utföra detta (dvs medlemmen existerade), annars skall false returneras. 7

import java.util.* ; public class MemberGroup { // Instansvariablerna är givna private String identity; private ArrayList<Member> memberlist; public MemberGroup // Uppgift B2a public String getidentity() { return this.identity; public int getantal // Uppgift B2b public void add // Uppgift B2c public void printmatchvalues // Uppgift B2d // Given metod public int searchmember(member m) { for (int i=0; i<this.memberlist.size(); i++) { if (m.getidentity().equals(this.memberlist.get(i).getidentity())) { return i; return -1; public Member[] bestmatchpair // Uppgift B2e public boolean deletemember // Uppgift B2e // Given metod public String tostring() { String s =""; for (int i=0;i<this.memberlist.size();i++) { s = s + this.memberlist.get(i) + "\n"; return s; // MemberGroup På nästa sida följer en sida med hjälpmedel till tentamen 8