Del A (obligatorisk för alla)

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Del A (obligatorisk för alla)

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.

Tentamen i Programmeringsteknik I

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

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

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

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.

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

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

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.

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

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

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 OOP

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.

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

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.

Tentamen, EDAA20/EDA501 Programmering

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

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

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

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

TENTAMEN OOP

Saker du ska kunna Föreläsning 13 & 14

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.

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

Föreläsning REPETITION & EXTENTA

Tentamen. Lösningsförslag

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

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Instuderingsfrågor, del E

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Laboration A Objektsamlingar

Tentamen i Programmeringsteknik I

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

Tentamen OOP

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

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Objektorienterad programmering i Java

Chapter 4: Writing Classes/ Att skriva egna klasser.

OOP Objekt-orienterad programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

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

Instuderingsfrågor, del D

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

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 6: Metoder och fält (arrays)

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

Lösningsförslag: Instuderingsfrågor, del D

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

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 Objektorienterad programmering DD1332. Typomvandling

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

Presentation av trafiksimuleringsprojektet

Föreläsning 2, vecka 8: Repetition

Tentamen i Programmering

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

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

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

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

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

JAVAUTVECKLING LEKTION 8

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

Tentamen i Programmeringsteknik I

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

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,, KandMa/Fy,

Att skriva till och läsa från terminalfönstret

Objektorienterad Programmering (TDDC77)

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

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

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

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Lösningsförslag till tentamen

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

TDDD78 Viktiga begrepp, del 2

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

Transkript:

Del A (obligatorisk för alla) A1. Ringa in rätt svarsalternativ eller skriv svar i ruta om sådan a) Satsen double x = (int)(1 + 3/2.0) + 3.; resulterar i b) Satsen int x = (int)(1 + 3/2.0) + 3.; resulterar i c) Hur många objekt skapas av koden int[] a = new int[3]; ArrayList<Turtle> t = new ArrayList<Turtle>(); t.add(new Turtle(new World()); 1) Kompileringsfel 2) x får värdet 5.0 3) x får värdet 5 4) x får värdet 5.5 1) Kompileringsfel 2) x får värdet 5.0 3) x får värdet 5 4) x får värdet 5.5 4 d) Antag att nedanstående kod går att kompilera och köra Test t = new Test(); System.out.println(t.ps[0].getName()); Markera ett alternativ som måste vara sant? e) Samma kod som i ovanstående uppgift men markera nu ett annat alternativ som kan vara sant. f) Antag följande metodhuvud void foo(string s) Markera ett anrop som är felaktigt! 1) ps är en klassmetod 2) ps är en objektmetod 3) ps är en instansvariabel 4) ps är en lokal variabel 5) ps är en formell parameter 6) ps är en array 1) ps är en klassmetod 2) ps är en objektmetod 3) ps är en instansvariabel 4) ps är en lokal variabel 5) ps är en formell parameter 6) ps är en array 1) foo("lotta" + 3); 2) foo("" + 3); 3) foo(3); 4) foo(null); 5) foo(""); g) Vad leder nedanstående kod till? ArrayList<String> a = new ArrayList<String>(); a.add("kalle"); a.add("anka"); a.remove(0); System.out.println(a.get(0)); 1) Utskrift av Kalle 2) Utskrift av Anka 3) Utskrift av null 4) Utskrift av en tom sträng ("") 5) NullPointerException För att denna uppgift ska betraktas som godkänd bör du ha minst 5 rätta deluppgifter.

Klassen Container ska lagra ett antal heltal (för enkelhetens skull i praktiken skulle man antagligen lagra någon typ av objekt). En container har ett tak dvs en maxstorlek för hur många tal som ryms. Maxstorleken anges när containern skapas. Exempel på kod som använder container-klassen. Till höger står de till koden svarande utskrifterna. public static void main(string[] args) { Container c = new Container(6); System.out.println("c = " + c.tostring()); c.add(5); c.add(3); c.add(5); c.add(4); System.out.println("c = " + c.tostring()); System.out.println("c.isFull() = " + c.isfull()); c.add(2); c.add(1); System.out.println("c = " + c.tostring()); System.out.println("c.isFull() = " + c.isfull()); Container d = c.copy(); System.out.println("d = " + d); System.out.println("c.removeMin: "); while(!c.isempty() ) { System.out.print(" " +c.removemin()); System.out.println(); System.out.println("c = " + c.tostring()); c = <6 : []> c = <6 : [5, 3, 5, 4]> c.isfull() = false c = <6 : [5, 3, 5, 4, 2, 1]> c.isfull() = true d = <6 : [5, 3, 5, 4, 2, 1]> c.removemin: 1 2 3 4 5 5 c = <6 : []> System.out.println("d = " + d); System.out.println("d.sorted() = " + d.sorted()); int[] arr = d.toarray(2, 4); System.out.println("d.toArray(2, 4) = " + Arrays.toString(arr)); d = <6 : [5, 3, 5, 4, 2, 1]> d.sorted() = <6 : [1, 2, 3, 4, 5, 5]> d.toarray(2, 4) = [3, 4, 2] Klassen Container har vissa likheter med klassen Measurements i lektion 7 men, till skillnad från den klassen, ska den 1. implementeras med en ArrayList, 2. lagra heltal och 3. ej kunna utvidgas dvs högst lagra det antal värden som angavs när objektet skapas. Dina lösningar på uppgifterna nedan ska fungera enligt ovanstående exempel! A2. Klassen Container ska ha en instansvariabel av typen ArrayList med namnet contents som lagrar värden och en av typ int som anger maximal storlek. Skriv deklarationerna för dessa två instansvariabler. private ArrayList<Integer> contents; private int max;

A3. Skriv den konstruktor som som används i exempelkoden dvs den som tar emot max-antalet. public Container(int max) { this.contents = new ArrayList<Integer>(max); this.max = max; A4. Skriv tostring()-metoden som producerar resultat enligt exempelkoden. public String tostring() { return "<" + max + " : " + contents + ">"; A5. Skriv metoden boolean isfull() som returnerar true om det maximala antalet tal är lagrade, annars false. public boolean isfull() { return contents.size() == max;

A6. Skriv metoden void add(int x). Om det finns plats för ytterligare ett tal ska det lagras sist i arraylistan. Om containern är full ska ett undantag kastas med koden throw new RuntimeException("Container full") public void add(int x) { if (isfull()) { throw new RuntimeException("The container is full"); else { contents.add(x); A7. Skriv metoden public boolean equals(container c) som returnerar true om detta objekt är lika som objektet c. Med lika menas att de har samma maxstorlek och exakt samma innehåll i samma ordning. Tips: Metoden equals i klassen ArrayList kan vara mycket användbar här! public boolean equals(container c) { return this.max == c.max && this.contents.equals(c.contents); eller public boolean equals(container c) { return this.tostring().equals(c.tostring()));

A8. Skriv en metod public int compareto(container c) som jämför den egna containern med containern c storleksmässigt. Storleken bestäms av det maximala utrymmet (inte av hur många eller vilka tal som är lagrade). Metoden ska returnera -1 om den egna containern är mindre än containern c, 0 om containrarna är lika stora, annars 1. public int compareto(container c) { if (this.max < c.max) { return -1; else if (this.max == c.max) { return 0; else { return 1; A9. Skriv de satser som behövs för att skapa ett Scanner-objekt kopplat till tangentbordet, skriva ut en fråga till användaren om en storlek (heltal), läsa in storleken med hjälp av Scanner-objektet och sedan skapa en container med denna storlek. Scanner scan = new Scanner(System.in); System.out.print("Container size: "); int max = scan.nextint(); Container c = new Container(max); A10. Skriv metoden public Container copy() som skapar och returnerar ett nytt Container-objekt som är lika stort och har samma innehåll som det egna objektet. public Container copy() { Container res = new Container(max); for (int value : contents) { res.add(value); return res;

A11. Skriv metoden public int indexmin() som returnerar index för det minsta värdet i containern. public int indexmin() { int index = 0; for (int i=1; i < contents.size(); i++) { if (contents.get(i) < contents.get(index)) { index = i; return index; A12. Skriv metoden public int removemin() som tar bort och returnerar minsta elementet ur containern. public int removemin() { return contents.remove(indexmin());

Del B (för betyg 4 och 5) Svaren skrivs på lösa papper med ny uppgift på nytt papper. B1. Skriv en metod public Container sorted() i klassen Container som skapar ett nytt Containerobjekt med samma data som i detta objekt men där värdena är lagrade i storleksordning. Se körexemplet! public Container sorted() { ArrayList<Integer> result = new ArrayList<Integer>(); for (int value : contents) { int i = 0; while (i<result.size() && value > result.get(i)) { i++; result.add(i, value); return new Container(result); public Container(ArrayList<Integer> al) { this.contents = al; this.max = al.size(); B2. Skriv en metod public int[] toarray(int low, int high) i klassen Container som skapar och returnerar en array med de tal som är större än eller lika med low och mindre än eller lika med high. Se körexemplet! public int[] toarray(int low, int high) { int n = 0; for (int i: contents) { if (i >= low && i <= high) { n++; int [] result = new int[n]; n = 0; for (int i: contents) { if (i >= low && i<=high) { result[n++] = i; return result; B3. Skriv en metod public boolean samecontents(container c) i klassen Container som returnerar true om denna container har samma innehåll som containern c oavsett ordning och storlek, annars false. public boolean samecontents(container c) { return this.sorted().equals(c.sorted());

B4. Skriv en klass MeanFilter som representerar ett medelvärdesfilter. Filtret har en storlek n som sätts när filtret skapas. För varje värde som matas (metoden add) så ska medelvärdet av detta värde och de närmast föregående n 1 värdena returneras. Körexempel: public static void main(string[] args) { double[] testdata = {1, 5, 6, 4, 5, 3, 1, 5, 9, 4; MeanFilter mf = new MeanFilter(3); System.out.println("In Ut Lagrade"); for (double d: testdata) { System.out.println(d + " " + mf.add(d) + " " + mf.tostring()); Resulterande utskrift: In Ut Lagrade 1.0 1.0 [1.0] 5.0 3.0 [1.0, 5.0] 6.0 4.0 [1.0, 5.0, 6.0] 4.0 5.0 [5.0, 6.0, 4.0] 5.0 5.0 [6.0, 4.0, 5.0] 3.0 4.0 [4.0, 5.0, 3.0] 1.0 3.0 [5.0, 3.0, 1.0] 5.0 3.0 [3.0, 1.0, 5.0] 9.0 5.0 [1.0, 5.0, 9.0] 4.0 6.0 [5.0, 9.0, 4.0] Skriv klassen med instansvariabler, konstruktor och metoder så att filtret fungerar i enlighet med ovanstående exempel.

public class MeanFilter { private ArrayList<Double> thevalues; private int size; public MeanFilter(int size) { this.size = size; this.thevalues = new ArrayList<Double>(size); public double add(double value) { if (thevalues.size() == size) { thevalues.remove(0); thevalues.add(value); return mean(); public double mean() { double sum = 0; for (double d : thevalues) { sum += d; return sum/thevalues.size(); public String tostring() { return thevalues.tostring();