Lösningsförslag till tentamen

Relevanta dokument
Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

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

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

OOP Objekt-orienterad programmering

Lösningsförslag till tentamen

Lösningsförslag tentamen FYTA11 Java

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

TENTAMEN OOP

Tentamen FYTA11 Javaprogrammering

Lösningsförslag till tentamen

OOP Objekt-orienterad programmering

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

Del A (obligatorisk för alla)

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

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

TENTAMEN OOP

Tentamen OOP

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

Tentamen. Lösningsförslag

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

Föreläsning 9-10 Innehåll

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

Lösningsförslag övning 2.

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

Tentamen, EDAA20/EDA501 Programmering

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Tentamen, EDAA20/EDA501 Programmering

Föreläsning 6. Top-Down Design Parameteröverföring

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

DAT043 Objektorienterad Programmering

TENTAMEN OOP

Föreläsning 3. Iteration while-satsen

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

JAVAUTVECKLING LEKTION 7

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

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

OOP Objekt-orienterad programmering

Föreläsning 7. for-satsen Fält

OOP Objekt-orienterad programmering

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

Del A (obligatorisk för alla)

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

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

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 FYTA11 Javaprogrammering

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

Mer om klasser och objekt

F4. programmeringsteknik och Matlab

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

Malmö högskola 2008/2009 CTS

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 5-6 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.

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 )

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

Hur ser ett Java-program ut?

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och 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 tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

JAVAUTVECKLING LEKTION 11

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

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

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

Föreläsning 14. Filhantering

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

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

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

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

Iteration. Föreläsning 3. TDA540 - Objektorienterad Programmering

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Chapter 4: Writing Classes/ Att skriva egna klasser.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

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

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

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.

Språkkonventioner och redigering av tal.

Föreläsning 3-4 Innehåll

Objektorienterad programmering

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

Transkript:

Uppgift 1 Lösningsförslag till tentamen 131220 a) Första felet beror på att namnet på klassen är felstavat i konstruktorn! Således har vi ingen konstruktor utan en metod med namnet Trubel. En metod måste specificera typen av på värdet metoden returnerar, just i detta fallet returneras inget värde varför returtypen skall vara void (om det hade varit en metod med namnet Trubel som vi verkligen skulle vilja haft). Dock är det en konstruktor vi vill ha (annars skulle aldrig instansvariabeln kunna ges ett värde). Alltså skall Trubel på rad 3 bytas mot Trubbel. Avsikten med metoden getnumber är att returnera värdet på instansvariabeln, men denna heter anumber och inte n. Alltså skall n på rad 7 bytas mot anumber. public class Trubbel{ private int anumber; public Trubbel(int n){ anumber = n; public int getnumber(){ return anumber; b) Felet beror på villkoret wordarray[i] == word i if-satsen! Här jämförs två referenser till objekt av typen String. Avsikten är att villkoret skall bli true om objekten refererar till objekt som har samma värde. Men likhetsoperatorn == ger true om och endast om referenserna refererar till samma objekt. För att få det önskade resultatet skall objekten jämföras med equals-metoden. public static int countoccurrences(string[] wordarray, String word) { int result = 0; for (int i = 0; i < wordarray.length; i = i + 1) { if (wordarray[i].equals(word)) { result = result + 1;

Uppgift 2 Med användning av dialogrutor: import javax.swing.*; import java.util.*; public class Speed { public static void main(string[] args) { while(true) { String indata = JOptionPane.showInputDialog("Ange avverkad sträcka i meter" + " och använd tid i sekunder: "); if (indata == null) break; Scanner sc = new Scanner(indata); double sträcka = sc.nextdouble(); double tid = sc.nextdouble(); if (sträcka <= 0 tid <= 0 ) { JOptionPane.showMessageDialog(null, "FELAKTIG INDATA!"); else { double speedmps = sträcka / tid; double speedkpt = tokmperhours(speedmps); JOptionPane.showMessageDialog(null, "Medelhastigheten är " + String.format("%.2f",speedMpS) + " meter per sekund, \nvilket motsvarar " + String.format("%.2f", speedkpt) + " kilometer per timma."); //main public static double tokmperhours(double mpers) { return mpers * 60*60/1000; // tokmperhours //Speed Med användning av System.in och System.out: import java.util.*; public class Speed { public static void main(string[] args) { Scanner sc = new Scanner(System.in); while(true) { System.out.print("Ange avverkad sträcka i meter och använd tid i sekunder: "); if (!sc.hasnext()) break; double sträcka = sc.nextdouble(); double tid = sc.nextdouble(); if (sträcka <= 0 tid <= 0 ) { System.out.println("FELAKTIG INDATA!"); else { double speedmps = sträcka / tid; double speedkpt = tokmperhours(speedmps); System.out.println("Medelhastigheten är " + String.format("%.2f",speedMpS) + " meter per sekund"); System.out.println("vilket motsvarar " + String.format("%.2f", speedkpt) + " kilometer per timma."); //main public static double tokmperhours(double mpers) { return mpers * 60*60/1000; // tokmperhours //Speed

Uppgift 3 public int[] trimsilencefromfront(int[] samples) { int nrofzeros = 0; boolean finished = false; while ( nrofzeros < samples.length &&!finished) { if (samples[nrofzeros] == 0) nrofzeros = nrofzeros + 1; else finished = true; int[] newsamples = new int[samples.length - nrofzeros]; for (int i = nrofzeros; i < samples.length; i = i + 1) { newsamples[i - nrofzeros] = samples[i]; return newsamples; // trimsilencefromfront Uppgift 4 public static int[][][] hidemessage(int[][][] sample, String msg) { int[][][] newsample = new int[sample.length][sample[0].length][3]; int nrofletters = 0; for (int x = 0; x < newsample.length; x = x + 1) { for (int y = 0; y < newsample[x].length; y = y + 1) { if (nrofletters < msg.length()) { char ch = msg.charat(nrofletters); nrofletters = nrofletters + 1; int ascii = (int) ch; int r = ascii / 100; int g = ascii / 10 % 10; int b = ascii % 10; newsample[x][y][0] = 10 * (sample[x][y][0] / 10) + r; newsample[x][y][1] = 10 * (sample[x][y][1] / 10) + g; newsample[x][y][2] = 10 * (sample[x][y][2] / 10) + b; else { for (int i = 0; i < 3; i++) newsample[x][y][i] = sample[x][y][i]; return newsample; //hidemessage

Uppgift 5 a) import java.util.random; public class Dice { private final int faces; private final Random random = new Random(); private int result; private int total; public Dice(int faces) { this.faces = faces; public int roll() { result = random.nextint(faces) + 1; if (result > 1) { total += result; else { total = 0; public int gettotal() { return total; public int getlastresult() { if (result > 0) { else { throw new IllegalStateException("Must roll dice first"); public void clear() { total = 0;

b) import java.util.list; import java.util.random; public class Pig { public static final int FACES = 6; private final List<Player> players; private Player actualplayer; //private final Dice dice = new Dice(FACES); private final PigDice dice = new PigDice(FACES); public Pig(List<Player> players) { this.players = players; public int roll() { return dice.roll(); public Player getactualplayer() { return actualplayer; public List<Player> getplayers() { return players; public void start() { int playerno = new Random().nextInt(players.size()); this.actualplayer = players.get(playerno); public void next() { dice.clear(); int i = players.indexof(actualplayer); actualplayer = players.get((i + 1) % players.size()); public void settotal() { actualplayer.addpoints(dice.gettotal()); public boolean gameover() { return actualplayer.gettotal() >= PigOptions.getPointsToWin();

c) import java.util.scanner; public class CommandLinePig { public static void main(string[] args) { boolean done = false; Pig pig = new Pig(PigOptions.getPlayers()); pig.start(); System.out.println("Pig started"); System.out.print("Players are "); dump(pig); Scanner s = new Scanner(System.in); System.out.println("Player is " + pig.getactualplayer()); while (!done) { System.out.print("> "); String cmd = s.nextline(); switch (cmd) { case "r": int result = pig.roll(); System.out.println(result); if (result == 1) { dump(pig); pig.next(); System.out.println("Player is " + pig.getactualplayer()); break; case "n": pig.settotal(); dump(pig); if (pig.gameover()) { done = true; else { pig.next(); System.out.println("Player is " + pig.getactualplayer()); break; case "q": done = true; break; default: System.out.println("?"); if( pig.gameover() ){ System.out.println("Game over! Winner is " + pig.getactualplayer()); else{ dump(pig); System.out.println("Game aborted"); private static void dump(pig pig) { for (Player p : pig.getplayers()) { System.out.print(p + " "); System.out.println();

d) import java.util.random; public abstract class AbstractDice { private final int faces; private final Random random = new Random(); private int result; public AbstractDice(int faces) { this.faces = faces; public int roll() { result = random.nextint(faces) + 1; public int getlastresult() { if (result > 0) { else { throw new IllegalStateException("Must roll dice first"); public class PigDice extends AbstractDice { private int total; public PigDice(int faces) { super(faces); @Override public int roll() { int result = super.roll(); if (result > 1) { total += result; else { total = 0; public int gettotal() { return total; public void clear() { total = 0;

Uppgift 6 import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jtextfield; public class MainFrame extends JFrame implements ActionListener { private final JTextField text = new JTextField("In"); private final JLabel label = new JLabel("Out"); public MainFrame() { this.setlayout(new GridLayout(2, 2)); this.add(text); this.add(label); text.addactionlistener(this); this.setsize(150, 150); public static void main(string[] args) { new MainFrame().setVisible(true); @Override public void actionperformed(actionevent e) { JTextField t = (JTextField) e.getsource(); label.settext(t.gettext());

public class Player { private final String name; private int total; public Player(String name) { this.name = name; public String getname() { return name; public int gettotal() { return total; public void addpoints(int points) { total += points; @Override public String tostring() { return "{" + name + " : " + total + ""; //Player

import java.util.arraylist; import java.util.list; public class PigOptions { private PigOptions() { private static final int POINTS_TO_WIN = 20; //During development // User options private static final List<Player> players = new ArrayList<>(); private static int pointstowin = POINTS_TO_WIN; public static List<Player> getplayers() { // Default players players.add(new Player("Anna")); players.add(new Player("Urban")); players.add(new Player("Fia")); return players; public static int getpointstowin() { return pointstowin; public static void setpointstowin(int pts) { pointstowin = pts;

public class Point { private int x; private int y; public Point (int x, int y) { this.x = x; this.y = y; //constructor public int getx () { return x; //getx public int gety () { return y; //gety public Point translate(int dx, int dy) { return new Point(x + dx, y +dy); //translate public double distance(point p) { return Math.sqrt(Math.pow(x-p.x, 2) + Math.pow(y-p.y, 2)); //distance public boolean equals(point p) { return (x == p.x && y == p.y); //equals public String tostring() { return "(" + x + ", " + y + ")"; //tostring //Point