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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Institutionen för TENTAMEN CTH VT-17 Datavetenskap TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM

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

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

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

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

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

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

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

Tentamen. Lösningsförslag

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

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

OOP Objekt-orienterad programmering

Föreläsning 14. Filhantering

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

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

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

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

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

Mer om grafiska komponenter. Händelsestyrda program

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

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

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

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

Lösningsförslag till exempeltenta 2

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

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

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

Objektorienterad programmering

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

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

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

Klassen String Mer om fält Något om inläsning

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

Tentamen OOP

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

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

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 )

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

Föreläsning 3. Iteration while-satsen

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

OOP Objekt-orienterad programmering

Testning och felhantering

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

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

kl

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Rita Egna Bilder, Timer

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

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

LYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH TIN 211. DATAVETENSKAP Göteborg ( ) TENTAMEN

DAT043 Objektorienterad Programmering

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN OOP

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

OOP Objekt-orienterad programmering

Tentamen , Introduktion till Java, dtaa98, dtea53

Föreläsning REPETITION & EXTENTA

Föreläsning 3: Händelsestyrda program och användargränssnitt

Objektorienterad programmering

Föreläsning 3. Föreläsning 3

Föreläsning 3. Föreläsning 3

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 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.

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

Föreläsning 3-4 Innehåll

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

Lösningsförslag till tentamen

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.

Laboration 4: Game of Life

TDDD78 Viktiga begrepp, del 2

Instuderingsfrågor, del D

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Lösningar till tentamen i EDAF25

Laboration 15 Grafiskt användargränssnitt

Föreläsning 9-10 Innehåll

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

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

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

Tentamen i Algoritmer & Datastrukturer i Java

PROGRAMMERINGSTEKNIK för F1 och TM1 (TIN212)

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

F4. programmeringsteknik och Matlab

JAVAUTVECKLING LEKTION 4

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

Transkript:

Uppgift 1 Lösningsförslag till tentamen 170314 a) Falskt. Talområdet för ett 8-bitars tal på tvåkomplementsform är -128 till 127. b) Sant. c) Falskt, HTTP är ett kommunikationsprotokoll som används för att överföra webbsidor. Simple Mail Transfer Protocol (SMTP) är det kommunikationsprotokoll som vanligtvis används för att leverera elektronisk post. d) Falskt. Algoritmen har tidskomplexiteten Q(n 3 ). e) Sant. f) Sant. g) Falskt. Man eftersträvar att eliminera all redudans. h) Sant. i) Falskt. White-box-testing (som också kallas glass-box-testing) används under programutvecklingsfasen. j) Sant. Uppgift 2 A B XOR C NAND OR E D AND F A B C D E F 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 Uppgift 3 Primärminne även kallat arbetsminne, används för att lagra olika sorters data under tiden det används och centralprocessorn har direkt åtkomst av all denna information. Sekundärminnet måste lagras i primärminnet innan centralprocessorn har tillgång till dess information till skillnad från primärminnet. Data och information i primärminnet lagras bara en kortare stund och försvinner då datorn stängs av. Primärminnet är således inget permanent minne. Vilket den därför kallas för ett flyktigt minne och när den fortsätts lagras utan att strömmen är påslagen kallas för ett icke-flyktigt minne. Vill man spara data en lägre period utnyttjar man sekundärminne. Uppgift 4 En stack är en datastruktur i vilken element kan sättas in och tas ut. En stack har ett LIFO- beteende, dvs endast det element som senast sattes in i stacken är nåbart och är således det enda elementet som kan tas bort från stacken. En kö är en datastruktur i vilken element kan sättas in och tas ut. En stack har ett FIFO- beteende, dvs endast det element som först sattes in i kön är nåbart och är således det enda elementet som kan tas bort från kön.

Uppgift 5 Följande tabell erhålls: Name Klas Stålnacke Clara Skoog School Hagaskolan Stjärnaby skolan Uppgift 6 Med software ecosystem menas allt det som krävs för att att mjukvarusystem skall fungera, utvecklas och bli framgångsrik. Ett software ecosystem består bl.a av en mjukvaruplattform, av interna och externa utvecklare, en serviceorganisation, intressesgrupper, mm.

Uppgift 7 a) i) Utskriften blir: ii) 1000 1111 Metoden mystery översätter ett positivt heltal på decimalform till binärform b) För att jämföra om två strängar är lika måste metoden equals användas. Likhetsoperatorn == public static boolean proceed() { Scanner scannerobject = new Scanner(System.in); while (true) { System.out.println("Answer yes to continue, and no to stop."); String answer = scannerobject.next(); if (answer.equals("yes") answer.equals("y")) return true; if (answer.equals("no") answer.equals("n")) return false; else System.out.println("Your answer should be yes or no!"); //proceed c) Vad kompilatorn klagar på är att metoden Math.sqrt() inte finns! Detta kan ju verka något mystiskt eftersom vi alla vet att det i klassen Math finns en klassmetod sqrt(). Alla vet också att klassen Math finns i paketet java.lang och att detta paket inte behöver importeras. Så varför blir det då fel? Jo, problemet är att också den egna klassen heter Math!! Vid namngivning i Java gäller närhetsregeln, därför avser Math i anropet Math.sqrt(tal) den egna klassen Math och inte java.lang.math. Kompilatorn har givetvis rätt, i den egna klassen finns ingen metod sqrt definierad. För att rätta till felet kan vi således ändra namnet på den egna klassen eller specificera att det är klassen java.lang.math vi avser. Specificera namnet på metoden: //Math import javax.swing.*; public class Math { public static void main (String[] arg) { String indata = JOptionPane.showInputDialog("Ange ett tal: "); double tal = Double.parseDouble(indata); double root = java.lang.math.sqrt(tal); JOptionPane.showMessageDialog(null, "Roten ur talet " + tal + " är " + root); //main Ändra namnet på klassen: import javax.swing.*; public class AnOtherMath { public static void main (String[] arg) { String indata = JOptionPane.showInputDialog("Ange ett tal: "); double tal = Double.parseDouble(indata); double root = Math.sqrt(tal); JOptionPane.showMessageDialog(null, "Roten ur talet " + tal + " är " + root); //main //AnOtherMath

Uppgift 8 import javax.swing.joptionpane; import java.util.scanner; public class ATG { private static int calculatenrof6(int[] nrofhorses) { int sum = 0; for (int i = 0; i < nrofhorses.length; i = i + 1) { sum = sum + nrofhorses[i] - 1; return sum; //calculatenrof6 private static int calculatenrof5(int[] nrofhorses) { int sum = 0; for (int i = 0; i < nrofhorses.length - 1; i = i + 1) { for (int j = i + 1; j < nrofhorses.length; j = j + 1) { sum = sum + (nrofhorses[i]-1) * (nrofhorses[j] - 1); return sum; //calculatenrof5 public static void main(string[] args) { boolean done = false; while (!done) { String indata = JOptionPane.showInputDialog("Ange antal hästar per lopp: "); if (indata == null) done = true; else { Scanner sc = new Scanner(indata); int[] nrofhorses = new int[7]; for (int i = 0; i < nrofhorses.length; i++) { nrofhorses[i] = sc.nextint(); String output = "Antal rader med 6 rätt: " + calculatenrof6(nrofhorses) +"\n"; output = output + "Antal rader med 5 rätt: " + calculatenrof5(nrofhorses); JOptionPane.showMessageDialog(null, output); //main //ATG Med användning av System.in och System.out: public static void main(string[] args) { Scanner sc = new Scanner(System.in); boolean done = false; while (!done) { System.out.print("Ange antal hästar per lopp: "); if (!sc.hasnext()) done = true; else { int[] nrofhorses = new int[7]; for (int i = 0; i < nrofhorses.length; i++) { nrofhorses[i] = sc.nextint(); System.out.println("Antal rader med 6 rätt: " + calculatenrof6(nrofhorses) +"\n" + "Antal rader med 5 rätt: " + calculatenrof5(nrofhorses)); //main

Uppgift 9 import java.util.arraylist; public class Ship { private String name; private double capacity; private ArrayList<Goods> cargo; public Ship(String name, double capacity) { this.name = name; this.capacity = capacity; cargo = new ArrayList<Goods>(); //konstruktor public String getname() { return name; //getname public double getcapacity(){ return capacity; //getcapacity public double gettotalweight() { int total = 0; for (Goods g : cargo) { total = total + g.getweight(); return total; //gettotalweight public boolean loadgoods(goods item) { if (gettotalweight() + item.getweight() > capacity) { return false; else { cargo.add(item); return true; //loadgoods public Goods unloadgoods(int id){ for (Goods g : cargo) { if (id == g.getid()) { cargo.remove(g); return g; return null; //unloadgoods public ArrayList<Goods> willbeunloadat(string destination){ ArrayList<Goods> todestination = new ArrayList<Goods>(); for (Goods g : cargo) { if (g.getdestination().equals(destination)) { todestination.add(g); return todestination; //willbeunloadat //Ship

Alternativ lösning: import java.util.arraylist; public class Ship { private String name; private double capacity; private ArrayList<Goods> cargo = new ArrayList<Goods>();; private int totalweight = 0; public Ship(String name, double capacity) { this.name = name; this.capacity = capacity; //konstruktor public String getname() { return name; //getname public double getcapacity(){ return capacity; //getcapacity public double gettotalweight(){ return totalweight; //gettotalweight public boolean loadgoods(goods item) { if (totalweight + item.getweight() > capacity) { return false; else { cargo.add(item); totalweight = totalweight + item.getweight(); return true; //loadgoods public Goods unloadgoods(int id){ for (int i = 0; i < cargo.size(); i = i + 1) { Goods item = cargo.get(i); if (id == item.getid()) { cargo.remove(item); totalweight = totalweight -item.getweight(); return item; return null; //unloadgoods public ArrayList<Goods> willbeunloadat(string destination){ ArrayList<Goods> todestination = new ArrayList<Goods>(); for (int i = 0; i < cargo.size(); i = i + 1) { Goods item = cargo.get(i); if (item.getdestination().equals(destination)) { todestination.add(item); return todestination; //willbeunloadat //Ship

Uppgift 10 a) b) c) public static int numberoftimesoccurring(char ch, String str) { int count = 0; char lowerch = Character.toLowerCase(ch); String lowerstr = str.tolowercase(); for (int i = 0; i < lowerstr.length(); i++) { if (lowerstr.charat(i) == lowerch) { count++; return count; //numberoftimesoccurring public static boolean lettersoccuringsamenumberoftimes(string str1, String str2) { for (int i = 0; i < str1.length(); i++) { char curchar = str1.charat(i); if (Character.isLetter(curChar)) { int timesinstr1 = numberoftimesoccurring(curchar, str1); int timesinstr2 = numberoftimesoccurring(curchar, str2); if (timesinstr1!= timesinstr2) { return false; return true; // lettersoccuringsamenumberoftimes public static boolean isanagram(string str1, String str2) { return lettersoccuringsamenumberoftimes(str1, str2) && lettersoccuringsamenumberoftimes(str2, str1); //isanagram Uppgift 11 public static int[][][] scale(int[][][] samples, double factor) { int[][][] newsamples = new int[(int) (factor*samples.length)][(int) (factor*samples[0].length)][3]; for (int row = 0; row < newsamples.length; row = row + 1) for (int col = 0; col < newsamples[row].length; col = col + 1) { for (int rgb = 0; rgb < 3; rgb = rgb + 1) { newsamples[row][col][rgb] = samples[(int) (row/factor)][(int) (col/factor)][rgb]; return newsamples; //scale

Uppgift 12 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TimeTrackerPanel extends JPanel implements ActionListener { private JButton track = new JButton("Track"); private JButton pause = new JButton("Pause"); private JLabel showtime = new JLabel("", JLabel.CENTER); private Timer timer = new Timer(1000, this); private Time nrofseconds = new Time(); public TimeTrackerPanel() { Font buttonfont = new Font("Times", Font.PLAIN, 36); Font labelfont = new Font("Times", Font.PLAIN, 12); track.setfont(buttonfont); pause.setfont(buttonfont); showtime.setfont(labelfont); track.setforeground(color.blue); track.setbackground(color.yellow); pause.setforeground(color.blue); pause.setbackground(color.yellow); showtime.setforeground(color.blue); showtime.setbackground(color.white); showtime.settext(nrofseconds.tostring()); showtime.setopaque(true); setlayout(new GridLayout(3, 1)); add(showtime); add(track); add(pause); track.addactionlistener(this); pause.addactionlistener(this); pause.setenabled(false); //constructor public void actionperformed(actionevent e) { if (e.getsource() == track) { timer.start(); track.setenabled(false); pause.setenabled(true); else if (e.getsource() == pause) { timer.stop(); track.setenabled(true); pause.setenabled(false); else if (e.getsource() == timer) { nrofseconds.increase(); showtime.settext(nrofseconds.tostring()); //actionperformed //TimeTrackerPanel

import javax.swing.jframe; public class TimeTracker extends JFrame { public TimeTracker() { add(new TimeTrackerPanel()); setsize(200, 150); setvisible(true); setdefaultcloseoperation(exit_on_close); //constructor public static void main(string[] args) { new TimeTracker(); //main //TimeTracker