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

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 tentamen

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Tentamen. Lösningsförslag

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

Rita Egna Bilder, Timer

Föreläsning 3. Iteration while-satsen

Lösningsförslag till tentamen

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

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Objektorienterad programmering

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

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

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.

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

Föreläsning 12. Klassen Timer Rörliga figurer Testning Undantag. intcomponent(pen); olor(color.blue); int w = 30;

Iteration while-satsen

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

Lösningsförslag tentamen FYTA11 Java

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Tentamen i Objektorienterad programmering E

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

Institutionen för TENTAMEN CTH VT-13 Datavetenskap TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM DAG: TID: 8:30 13:30

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

Del A (obligatorisk för alla)

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

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

Tentamen, EDAA20/EDA501 Programmering

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

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

Föreläsning 3-4 Innehåll

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

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

Tänk på följande: 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.

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

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

JAVAUTVECKLING LEKTION 4

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

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

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Testning och felhantering

Objektorienterad programmering

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

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 , Introduktion till Java, dtaa98, dtea53

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

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

OOP Objekt-orienterad programmering

Laboration 4: Game of Life

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

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

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

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

Malmö högskola 2008/2009 CTS

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

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

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.

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

Tentamen, EDA501 Programmering M L TM W K V

Exempel på användning av arv: Geometriska figurer

Del A (obligatorisk för alla)

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

Grundläggande programmering med C# 7,5 högskolepoäng

OOP Objekt-orienterad programmering

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Lösningar för tenta 3 DAT043,

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

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

2D1342 Programkonstruktion för F1, ht 2006

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

Institutionen för TENTAMEN CTH HT-16 Datavetenskap TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM

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

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

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

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

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

Lösningsförslag till exempeltenta 2

Transkript:

Uppgift 1 Lösningsförslag till tentamen 160315 a) Falskt. 8A 16 = 138 10 = 10001010 2 b) Falskt. Enligt Moores lag fördubblas antal transistorer som ryms på en given yta var 18:e månad. c) Sant. Sant. UDP är ett enklare protokoll än TCP. UDP har t.ex. inga funktioner för att rätta överföringsfel, TCP har. Men om man tittar på en film behöver inte varje filmruta vara helt perfekt. Hastigheten, att filmen flyter på, är viktigare en kvalitén. d) Falskt. Mellan transportlagret och länklagret finns nätverkslagret (network layer). e) Sant. f) Falskt. En glupsk algoritm ger sällan den optimala lösningen, men oftast en lösning som ligger nära den oprtimala. g) Falskt. Man eftersträvar att eliminera all redudans. h) Sant. i) Sant. j) Sant. Uppgift 2 A B B C D E F A B C XOR AND D E NOR F 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1 1 1 0 Uppgift 3 C A B D E F

Uppgift 4 Förklarningen är datatypen int lagras på binärform i 32 bits enligt 2-komplementsform. När 2-komplementsfrom nyttjas är den mest signifikanta biten en teckenbit. Teckenbiten 0 anger ett positivt tal och 1 anger ett negativt tal. Talet 2147483647 10 lagras alltså på binärform i 32bitar enligt 0111... 1111 Om vi nu addera 1 till detta värde får vi 0111... 1111 +1 1000... 0000 Den mest signifikanta siffran i det erhållna värdet är 1, vafrör vi har ett negativt tal. Vid 2-komplementsform erhålls bitmönstret för en negativt tal enligt: 1. Beräkna bitmönstret för motsvarande positiva heltal 2. Invertera detta bitmönster (dvs byt alla 0:or mot 1:or och vice versa). 3. Addera 1 till det bitmönster som erhölls i steg 2. För att erhålla absolutbeloppet av det negativa talet 1000... 0000 skall vi göra tvärsom, dvs 1. Subtrahera 1 från bitmönstret 2. Invertera det erhållna bitmönstet (dvs byt alla 0:or mot 1:or och vice versa). Detta resulterar i 1. 1000... 0000 1 0111... 1111 2. 1000... 0000 Decimalt är detta värde 2 31 = 2147483648. Därav utskriften 2147483648. Uppgift 5 En risk är att man kan bli utsatt för sabotage och vandalism av olika slag, t.ex. virus, maskar och trojanska hästar. När nya sådana börjar florera utveckals snabbt olika virusskydd. Således skall man installera virusskydd och uppdatera dessa ofta. Vanligtvis sprids virus via email, varför man bör installera spamfilter samt vara försiktig med att öppna filer som bifogas i email från okända avsändare. En annan risk är att råka ut för informationsstöld, via sniffing (avlyssning) eller phishing (förfrågan). Det finns olika typer av åtgärder som kan vidtas. För att förhindra avlyssning kan kryptering användas. Givitvis skall man aldrig besvara ett email som efterfrågar känslig och privat information, såsom lösenord och kontonummer. En skyddsmekanism mot både sabotage och informationsstöld är att installera en brandvägg. Uppgift 6 Följande tabell erhålls: Maträtt Pris Kokt ishavstorsk med hackat ägg 139 Omelett 89 Stekt sill 79

Uppgift 7 a) Utskriften blir: 45992 Metoden tar en strängrepresentation av ett icke-negativt hexadecimalt heltal och översätter detta till ett decimalt heltal. b) Utskriften blir: 4 2 6 8 c) Om parametern number har ett värde som är mindre eller lika med 0 returnerar metoden ett felaktigt värde (nämlign 0). En korrekt implementation har utseendet: public static int nrofdigits(int number) { if (number == 0) return 1; number = Math.abs(number); int digits = 0; while (number > 0) { digits =digits + 1; number = number / 10; return digits; //nrofdigits

Uppgift 8 import javax.swing.joptionpane; import java.util.scanner; public class Stock { public static void main(string args[]) { boolean done = false; while (!done) { String indata = JOptionPane.showInputDialog("Ge antal aktier, inköpspris, provision vid inköp, \n" + "försäljningspris samt provision vid försäljning"); if (indata == null) done = true; else { Scanner sc = new Scanner(indata); int NS = sc.nextint(); double PP = sc.nextdouble(); double PC = sc.nextdouble(); double SP = sc.nextdouble(); double SC = sc.nextdouble(); if (NS < 0 PP < 0 PC < 0 SP < 0 SC < 0) JOptionPane.showMessageDialog(null, "Otillåten indata!"); else { double profit = profit(ns, PP, PC, SP, SC); String output; if (profit < 0) { output = String.format("En förlust på %.2f kronor!", Math.abs(profit)); else { output = String.format("En vinst på %.2f kronor!", profit); JOptionPane.showMessageDialog(null, output); //main public static double profit(int NS, double PP, double PC, double SP, double SC) { return (NS * SP - SC) - (NS * PP + PC); //profit //Stock

Uppgift 10 a) b) c) import java.awt.point; public class City { private String name; private Point position; private boolean visited; public City(String name, Point position) { this.name = name; this.position = position; visited = false ; public void setvisited() { visited = true ; public boolean getvisited() { return visited; public String getname() { return name; public double distanceto(city other) { return Math.sqrt(Math.pow((this.position.getX() - other.position.getx()), 2) + Math.pow((this.position.getY() - other.position.gety()), 2)); //City public static City getclosesciy(arraylist<city> cities, City presentcity) { double mindist = Double.MAX_VALUE; City cand = cities.get(0); for (City c : cities) { double dist = presentcity.distance(c); if (dist< mindist &&!c.getvisited()) { mindist = dist; cand = c; return cand; //getclosesciy public static void calculateroute(arraylist<city> citiestovisit, City startcity) { startcity.setvisited(); System.out.print("Resvägen är: " + startcity.getname()); City presentcity = startcity; double totaldistance = 0; for (int i = 1; i < citiestovisit.size(); i = i + 1) { City nextcity = getclosesciy(presentcity, citiestovisit); nextcity.setvisited(); totaldistance = totaldistance + presentcity.distance(nextcity); System.out.print(" - "+ nextcity.getname()); presentcity = nextcity; System.out.println(" - " + startcity.getname()); totaldistance = totaldistance + presentcity.distance(startcity); System.out.println("Totala ressträckan är: " + totaldistance); // calculateroute

Uppgift 10 public static double geometricmean(int[] values) { if (values == null) throw new NullPointerException(); if (values.length == 0) throw new IllegalArgumentException(); double prod = 1; for (int i = 0; i < values.length; i++) { if (values[i] <= 0) throw new NumberFormatException(); prod = prod * values[i]; return Math.pow(prod, 1.0 / values.length); //geometricmean Uppgift 11 public static int[][][] decodegraypicture(int[][][] colourpicture) { int[][]graypicture = new int[colourpicture.length][colourpicture[0].length]; for (int row = 0; row < graypicture.length; row = row + 1) { for (int col = 0; col < graypicture[row].length; col = col + 1) { graypicture[row][col] = decodepixel(colourpicture[row][col]); return graypicture; //decodegraypicture private int decodepixel(int[][][] colourpixel) { int r = colourpixel[0]% 10; int g = colourpixel[1] % 10; int b = colourpixel[2] % 10; return 100*r + 10*g + b; //decodepixel Alternativ: public static int[][][] decodegraypicture(int[][][] colourpicture) { int[][]graypicture = new int[colourpicture.length][colourpicture[0].length]; for (int row = 0; row < graypicture.length; row = row + 1) { for (int col = 0; col < graypicture[row].length; col = col + 1) { int r = colourpicture[row][col][0]% 10; int g = colourpicture[row][col][1] % 10; int b = colourpicture[row][col][2] % 10; graypicture[row][col] = 100*r + 10*g + b; return graypicture; //decodegraypicture

Uppgift 12 a) import java.awt.*; import javax.swing.*; import java.awt.event.*; public class GrowingCircle extends JPanel implements ActionListener { private javax.swing.timer t = new javax.swing.timer(500, this); private int radie = 0; public GrowingCircle() { setbackground(color.yellow); radie = 1; t.start(); //construktor public void paintcomponent(graphics pen) { super.paintcomponent(pen); pen.setcolor(color.pink); int x = getwidth()/2 - radie; int y = getheight()/2 - radie; int b = 2*radie; int h = 2*radie; pen.filloval(x, y, b, h); public void actionperformed(actionevent e) { if (radie < getheight()/2 && radie < getwidth()/2) { radie = radie +1; repaint(); else { t.stop(); //actionperformed //GrowingCircle b) import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ShowGrowingCircle extends JFrame { public ShowGrowingCircle() { add(new GrowingCircle()); setdefaultcloseoperation(exit_on_close); //construktor public static void main(string[] args) { ShowGrowingCircle c = new ShowGrowingCircle(); c.setsize(325,225); c.setvisible(true); //main // ShowCircle