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

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 för TDA540 Objektorienterad Programmering

Lösningsförslag till tentamen

OOP Objekt-orienterad programmering

Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

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

Tentamen. Lösningsförslag

Lösningsförslag till tentamen

TENTAMEN OOP

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

OOP Objekt-orienterad programmering

Lösningsförslag tentamen FYTA11 Java

OOP Objekt-orienterad programmering

Föreläsning 3. Iteration while-satsen

JAVAUTVECKLING LEKTION 7

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

Mer om klasser och objekt

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

Lösningsförslag övning 2.

DAT043 Objektorienterad Programmering

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

TENTAMEN OOP

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

Tentamen OOP

F4. programmeringsteknik och Matlab

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

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.

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

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

Tentamen FYTA11 Javaprogrammering

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 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Del A (obligatorisk för alla)

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

TENTAMEN OOP

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

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

Malmö högskola 2008/2009 CTS

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

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

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 3-4 Innehåll

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

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

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

Del A (obligatorisk för alla)

Föreläsnings 9 - Exceptions, I/O

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

OOP Objekt-orienterad programmering

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

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

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

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

Objektorienterad programmering

Tentamen, EDAA20/EDA501 Programmering

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

OOP Objekt-orienterad programmering

Tentamen , Introduktion till Java, dtaa98, dtea53

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

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

JAVAUTVECKLING LEKTION 11

Föreläsning 14. Filhantering

Objektorienterad programutveckling, fk

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Språkkonventioner och redigering av tal.

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Föreläsning 3. Stack

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

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

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

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

Mer om grafiska komponenter. Händelsestyrda program

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Iteration while-satsen

Föreläsning 3. Stack

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

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.

Lösningar för tenta 2 DAT043,

PROGRAMMERING-Java TENTAMINA

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

Tentamen FYTA11 Javaprogrammering

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) 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()) 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][0] / 10) + g; newsample[x][y][2] = 10 * (sample[x][y][0] / 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()); case "n": pig.settotal(); dump(pig); if (pig.gameover()) { done = true; else { pig.next(); System.out.println("Player is " + pig.getactualplayer()); case "q": done = true; 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());