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

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

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

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

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

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

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

Mer om grafiska komponenter. Händelsestyrda program

Tentamen. Lösningsförslag

Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

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

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

Lösningsförslag till tentamen

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

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 Algoritmer & Datastrukturer i Java

Laboration 4: Game of Life

13 Prioritetsköer, heapar

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

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

Lösningsförslag till exempeltenta 1

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

Laboration 15 Grafiskt användargränssnitt

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

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

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

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

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

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

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning 7. Träd och binära sökträd

Malmö högskola 2008/2009 CTS

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

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

Föreläsning 14. Träd och filhantering

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

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Laboration 24 Databasen MySQL och java

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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.

Lösningsförslag till exempeltenta 2

MVC-mönstret. model-view-control i Swing

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

Rita Egna Bilder, Timer

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs

Lösningar till tentamen i EDAF25

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Föreläsning 13: Swing (GUI), händelser, timer

Föreläsning 9 Innehåll

Lösningsförslag övning 2.

Lösningar för tenta 3 DAT043,

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

Föreläsning 14: Grafik & mera händelsehantering

Föreläsning 14. Filhantering

Objektorienterad programutveckling, fk

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

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

Datalogi I, grundkurs med Java 10p, 2D4112, Tentamen 29 november 2003, svar och lösningar

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

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

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

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

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

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

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

Föreläsning 9-10 Innehåll

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

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

Lösningsförslag till tentamen

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Lösningsförslag tentamen FYTA11 Java

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

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

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Properties. Användbara metoder som kan anropas i propertychanged:

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

Föreläsning 1, vecka 8: Att förbereda sig för tentan

kl

BST implementering, huvudstruktur

DAI2 (TIDAL) + I2 (TKIEK)

Tentamen i Objektorienterad programmering E

Transkript:

Uppgift 1 a) Sant. b) Sant. c) Sant. Lösningsförslag till tentamen 170818 d) Falskt. IPv6 anger en IP-adress med 132 bitar. e) Falskt. Spoofing åsyftar användning av förfalskad eller lånad identitet på Internet, ofta för bedrägligt syfte. f) Falskt! Tidskomplexiteten är (n 2 log n). g) Sant. h) Sant i) Falskt. Man syftar på att utvecklingen inom mjukvaruindustrin går allt snabbare och nya produkter måste lanseras allt snabbare för att inte bli utkonkurrerad. j) Falskt. Har modulerna hög coupling och låg cohesion är programsystemet svårt att bygga ut och modifiera, beroende på att en förändring i en moduler påverkar andra moduler. Uppgift 2 A B AND D NOR C NAND E G OR H F Uppgift 3 Ett fotografi är en avbildning av objekt i verkligheten som skapas genom att ljus fångats på ett ljuskänsligt medium. För att en datorgenererad bild skall bli realistisk gäller det att återskapa hur energin från ljuskällor reflekteras av olika ytor i bilden. Detta kan till exempel vara metoder för att förse en bild med reflektioner, skuggor och mer avancerad belysningsteknik. Skuggor och reflektioner är mycket viktiga i många sammanhang, eftersom människan använder sig av dessa för att avgöra var olika objekt befinner sig i förhållande till varandra. Uppgift 4 -notationen används för att beskriva en algoritms tidsåtgång utan att ta hänsyn till detaljer och utan att ange tidsåtgången i absoluta mått (vilket naturligtvis är beroende av hur snabb hårdvaran är). Det som beskrivs är hur tidsåtgången växer beroende på storleken av den datamängd som algoritmen bearbetar. Man tar endast hänsyn till den "dominerande termen", dvs endast den del i algoritmen där den största tidsåtgången förbrukas. Att två algoritmer tillhör samma -klass innebär att båda algoritmerna har samma tillväxthastigheten på tidsåtgången. En algoritm som har tidskomplixiteten (n 2 ) har således en tillväxt på tidsåtgången som är kvadratisk med hänseende till den bearbetade datamängdens storlek. Eftersom -notationen inte anger någon absolut tidsåtgång, kan en algoritm som tillhör en -klass med en snabb tillväxtshastighet i absoluta mått kräva mindre tidsåtgång för små datamängder än en algoritm som tillhör en -klass med en långsammare tillväxtshastighet.

Uppgift 5 Ett binärt sökträd är ett binärt träd, där varje nod innehåller ett värde från en ordnad mängd. För varje nod n i ett binärt sökträd gäller följande: - samtliga noder i det vänstra subträdet till n innehåller värden som är mindre än värdet i noden n. - samtliga noder i det högra subträdet till n innehåller värden som är större än värdet i noden n. Betrakta nedanstående binära sökträd: 13 9 23 1 17 24 35 Sökning efter ett element t.ex. det som har värdet 17 tillgår enligt följande: 17 är större än värdet 13 som finns i roten, därför fortsätter sökningen i det högra subträdet. 17 är mindre än värdet 23 som värdet i roten av det subträd som vi nu genomsöker, därför fortsätter sökningen i det vänstra subträdet till detta subträd. 17 är lika med värdet 17 som är värdet i det subträd som vi nu genomsöker. Alltså har gvi lokaliserat det eftersökta elementet. Om vi söker efter ett element som inte finns i trädet kommer när det subträd som skall genomsökas är tomt. Uppgift 6 Namn Saldo Jens Andersson 25090 Stefan Lilja 65435 Per Persson 34550

Uppgift 7 a) Utskriften blir [6, 6, 6, 10, 11] b) Utskriften blir: Uppgift 8 8 27 64 import javax.swing.*; public class Wind { public static void main(string[] args){ boolean done = false; while (!done) { String indata = JOptionPane.showInputDialog("Ange vindstyrkan i m/s:"); if (indata == null) done = true; else { double wind = Double.parseDouble(indata); if ( wind < 0 wind > 115) JOptionPane.showMessageDialog( null, "Felaktig indata! Försök igen!"); else { String name = term(wind); JOptionPane.showMessageDialog( null, "En vind på " + wind + " m/s kallas på sjön för " + name); // main public static String term( double wind){ String name; if (wind <= 0.2) name = "stiltje"; else if (wind <= 13.9) name = "bris"; else if (wind <= 24.5) name = "kuling"; else if (wind <= 32.7) name = "storm"; else name = "orkan"; return name; //term //Wind

Uppgift 9 a) b) public class MexicoDice { private Die d1; private Die d2; private int value; public MexicoDice() { Die d1 = new Die(); Die d2 = new Die(); value = 0; //constructor public void roll() { d1.roll(); d2.roll(); int r1 = d1.getvalue(); int r2 = d2.getvalue(); if (r1 >= r2) { value = 10 * r1 + r2; else { value = 10 * r2 + r1; //roll public int getvalue() { return value; //getvalue //MexicoDice public class Util { public static int lowestscorevalue(int score1, int score2) { if (toserialnumber(score1)< toserialnumber(score2)) return score1; else return score2; //lowestscorevalue private static int toserialnumber(int score) { if (score == 21) return 1000; if (score / 10 == score % 10) return 10 * score; return score; //toserialnumber //Util

a) public class MexicoDice { private Die d1; private Die d2; private int value; public MexicoDice() { Die d1 = new Die(); Die d2 = new Die(); value = 0; //constructor public void roll() { d1.roll(); d2.roll(); int r1 = d1.getvalue(); int r2 = d2.getvalue(); if (r1 >= r2) { value = 10 * r1 + r2; else { value = 10 * r2 + r1; //roll public int getvalue() { return value; //getvalue //MexicoDice b) public static int lowestscorevalue(int score1, int score2) { if (tograde(score1)< tograde(score2)) return score1; else return score2; //lowestscorevalue public static int tograde(int score) { if (score == 21) return 1000; if (score/10 == score%10) return 10 * score; return score; //tograde

Uppgift 10 a) b) public static int secondlargest(int[] a) { if (a == null a.length < 2) throw new IllegalArgumentException(); int max; int secmax; if (a[0] > a[1]) { max = a[0]; secmax = a[1]; else { max = a[1]; secmax = a[0]; for (int i = 2; i < a.length; i++) { if (a[i] > max) { secmax = max; max = a[i]; else if (secmax < a[i] && a[i] < max) { secmax = a[i]; return secmax; //secondlargest public static int[][][] frosty(int[][][] samples) { int[][][] newsamples = new int[samples.length][samples[0].length][3]; for (int row = 0; row < samples.length; row = row + 1) { for (int col = 0; col < samples[row].length; col = col + 1) { int xn = disturb(row, samples.length-1); int yn = disturb(col, samples[0].length-1); for (int c = 0; c < 3; c++) { newsamples[row][col][c] = samples[xn][yn][c]; return newsamples; //frosty private static int disturb(int v, int max) { java.util.random r = new java.util.random(); int nx; do { nx = v + r.nextint(2 * 5 + 1) - 5; while (nx < 0 nx > max); return nx;

Uppgift 11 a) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class SimpleEggTimer extends JPanel implements ActionListener { private JButton plus = new JButton("+"); private JButton start = new JButton("Start"); private JLabel tallabel; private Timer timer = new Timer(1000, this); private int nrofseconds = 0; public SimpleEggTimer() { tallabel = new JLabel("0", JLabel.CENTER); setlayout(new BorderLayout()); add("center", tallabel); add("east", plus); add("south", start); plus.setbackground(color.yellow); tallabel.setbackground(color.white); tallabel.setopaque(true); plus.addactionlistener(this); start.addactionlistener(this); start.setenabled(false); Font font = new Font("Times", Font.PLAIN, 36); plus.setfont(font); tallabel.setfont(font); //konstruktor public void actionperformed(actionevent e) { if (e.getsource() == timer) countdown(); else if (e.getsource() == plus) settime(); else if (e.getsource() == start) startclock(); //actionperformed private void countdown() { nrofseconds = nrofseconds -1; tallabel.settext(" " + nrofseconds); if (nrofseconds!= 0) { Toolkit.getDefaultToolkit().beep(); timer.stop(); plus.setenabled(true); // countdown private void settime() { nrofseconds = nrofseconds + 1; tallabel.settext(" " + nrofseconds); start.setenabled(true); //settime private void startclock() { timer.start(); start.setenabled(false); plus.setenabled(false); //startclock //SimpleEggTimer

b) import javax.swing.*; public class ShowSimpleEggTimer extends JFrame { public ShowSimpleEggTimer() { SimpleEggTimer clock = new SimpleEggTimer(); add(clock); setdefaultcloseoperation(jframe.exit_on_close); setsize(300, 150); setvisible(true); //konstruktor public static void main(string[] arg) { JFrame w = new ShowSimpleEggTimer(); //main //ShowSimpleEggTimer