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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen

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

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Laboration 4: Game of Life

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

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

Rita Egna Bilder, Timer

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

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

Mer om grafiska komponenter. Händelsestyrda program

Lösningsförslag övning 2.

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

Lösningsförslag tentamen FYTA11 Java

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

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

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

Föreläsning 3. Iteration while-satsen

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

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Lösningsförslag till tentamen

Föreläsning 11. Att rita egna bilder.

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

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

Tentamen FYTA11 Javaprogrammering

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

Tentamen i Objektorienterad programmering E

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

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

Tentamen. Lösningsförslag

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

Iteration while-satsen

kl

Tentamen i Objektorienterad programmering E

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

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

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

PROGRAMMERING-Java TENTAMINA

OOP Objekt-orienterad programmering

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

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

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

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

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Lösningsförslag till tentamen

Tentamen OOP

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

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.

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Lösningar för tenta 3 DAT043,

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

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

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

PROGRAMMERINGSTEKNIK för F1 och TM1 (TIN212)

Malmö högskola 2008/2009 CTS

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. 1 Lösningsförslag. Uppgift 1

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

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

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

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

Föreläsning 5-6 Innehåll

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen FYTA11 Javaprogrammering

TENTAMEN OOP

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

Objektorienterad programmering

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

Föreläsning 11. Att rita egna bilder. Grafik. Klassen Graphics. Fönstrets koordinatsystem

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Laboration 15 Grafiskt användargränssnitt

Exempel på användning av arv: Geometriska figurer

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

Laboration 24 Databasen MySQL och java

DAT043 Objektorienterad Programmering

Transkript:

Uppgift 1 Lösningsförslag till tentamen 150417 1) c 2) c 3) a 4) b 5) a 6) c 7) b 8) b 9) b 10) a Uppgift 2 Public-key encryption bygger på att man har två nycklar, en publik och en privat. Man måste således ha båda nycklarna för att kunna avkoda meddelandet. Public-key encryption är en kryptering som används för att på ett säkert sätt kunna skicka och ta emot information över Internet. Den fungerar på så sätt att det finns två slags nycklar, en publik och en privat. Den publika nyckeln används för att koda ett meddelande medan den privata nyckeln krävs för att kunna avkoda meddelandet. Den publika nyckeln finns tillgänglig för vem som helst som kan tänkas vilja skicka ett meddelande till en viss person, medan det endast är mottagaren som har tillgång till den privata nyckeln. Även om flera personer har den publika nyckeln och vet hur meddelandet är kodat kan ingen utom mottagaren avkoda meddelandet. På så sätt kan man med hjälp av public-key encryption säkert skicka information över Internet utan att någon obehörig kommer åt den. Uppgift 3 Overflow och trunkering uppkommer på grund av att en dator lagra numeriska värden i ett begränsat minnesutrymme. Antag att vi lagrar heltal i 8-bitar på tvåkomplementsform. Det största heltal som då kan lagras är 127, vilket representeras som bitmönstret 01111111 Om vi nu utför operationen 127 + 1 kommer vi att få overflow och resultatet vi erhåller blir -128! 01111111 +1 11111111 Trunkering är en form av avrundning som inträffar på grund av att minnesutrymmet är begränsat. Betrakta beräkningen 1/3 + 1/3 + 1/3 Om vi har 4 decimala siffror att lagra resultaten i erhåller vi 0.3333 + 0.3333 + 0.3333 = 0.9999 Med obegränsat antal decimaler hade vi fått resultatet 1.0.

Uppgift 4 a) 9 jämförelser utförs. b) 2 jämförelser behövs, nämligen med talen 1039 och 9876. c) Nej! Om vi t.ex. söker efter talet 5 i den givna sekvensen behöver sekventiell sökning endast 1 jämförelse, medan binärsökning behöver 3 jämförelser (med talen 1039, 167 och 5). Uppgift 5 A B C E XOR D NOR AND F OR G A B C D E F G 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 1 Uppgift 6 Tabellen som erhålls får utseendet: Hemmalag Malmö FF Bortalag IFK Göteborg

Uppgift 7 a) Utskriften blir 2 3 4 5 2 3 4 5 b) När metoden grow anropas uppdateras inte instansvariabeln area! Felet kan korrigeras antingen genom att förändra metoden grow: public void grow() { sidelength = 2 * sidelength; area = sidelength*sidelength; //grow Man kan dock diskutera om instansvariabeln area överhuvudtaget skall finnas i klassen. Alternativet är att istället låta metoden getarea beräkna genom att använd instansvariabeln sidelength: public class Square { private int sidelength; public Square(int initiallength) { sidelength = initiallength; //constructor public int getarea() { return sidelength * sidelength; //getarea public void grow() { sidelength = 2 * sidelength; //grow //Square c) Utskriften blir 2 3 4 5 d) Utskriften blir: 2 Metoden methodunknown(string str, char c) räknar och returnerar antalet förekomster av tecknet c i strängen str.

Uppgift 8 import javax.swing.*; import java.util.*; public class Body{ public static void main(string args[]) { while (true) { String indata = JOptionPane.showInputDialog("Ge vikt i kilo och längd i meter: "); if (indata == null) break; Scanner sc = new Scanner(indata); double kilo = sc.nextdouble(); double meter= sc.nextdouble(); if (kilo < 0 meter < 0) JOptionPane.showMessageDialog(null, "Ogiltig indata!"); else { JOptionPane.showMessageDialog(null, String.format("BMI- värdet är %.2f", bmi(kilo,meter))); //main public static double bmi(double kilo, double meter) { return kilo/(meter*meter); //bmi //Body

Uppgift 9 public class FotballTeam { private String name; private int nrofmatches; private int scoredgoals; private int concededgoals; private int points; public FotballTeam(String name) { this.name = name; //constructor public String getname() { return name; //getname public int getnrofmatches() { return nrofmatches; //getnrofmatches public int getscoredgoals() { return scoredgoals; //getscoredgoals public int getconcededgoals() { return concededgoals; //getconcededgoals public int getpoints() { return points; //getpoints public void registermatch(int scoredgoals, int concededgoals) { nrofmatches = nrofmatches + 1; this.scoredgoals = this. scoredgoals + scoredgoals; this.concededgoals = this.concededgoals + concededgoals; if ( scoredgoals > concededgoals) points = points + 3; else if (scoredgoals == scoredgoals) points = points + 1; //registermatch public int compareto(fotballteam otherteam) { if (points > otherteam.points ) return 1; else if ( points < otherteam.points) return -1; else if ((scoredgoals - concededgoals) > (otherteam.scoredgoals - otherteam.concededgoals)) return 1; else if ( (scoredgoals - concededgoals) < (otherteam.scoredgoals - otherteam.concededgoals)) return -1; else if (scoredgoals > otherteam.scoredgoals ) return 1; else if (scoredgoals < otherteam.scoredgoals ) return -1; else return 0; //compareto public String tostring() { return name + " " + nrofmatches + " " + scoredgoals + " - " + concededgoals + " " + points; //tostring // FotballTeam

Uppgift 10 a) public static ArrayList<FotballTeam> losers(arraylist<fotballteam> teams) { ArrayList<FotballTeam> res = new ArrayList<FotballTeam>(); for (int i = 0; i < teams.size(); i = i + 1) { FotballTeam ateam = teams.get(i); if (ateam.getscoredgoals () - ateam.getconcededgoals () < 0) { res.add(ateam); return res; //losers Alternativ lösning med förenklad for-sats: b) c) public static ArrayList<FotballTeam> losers(arraylist<fotballteam> teams) { ArrayList<FotballTeam> res = new ArrayList<FotballTeam>(); for (FotballTeam ateam : teams) { if (ateam.getscoredgoals () - ateam.getconcededgoals () < 0) { res.add(ateam); return res; //losers public int[] limitamplitud(int[] samples, int limit) { int[] newsamples = new int[samples.length]; for (int i = 0; i < samples.length; i = i + 1) { if (samples[i] > limit) newsamples[i] = limit; else if (samples[i] < -limit) newsamples[i] = -limit; else newsamples[i] = samples[i] return newsamples; // limitamplitud public static int[][][] montage(int[][][] foreground, int[][][] background) { int[][][] newsample = new int[foreground.length][foreground[0].length][3]; for (int row = 0; row < newsample.length; row = row + 1) { for (int col = 0; col < newsample[x].length; col = col + 1) { if (isgreen(row, col, foreground)) { for (int i = 0; i < 3; i = i + 1) { newsample[row][col][i] = background[row][col][i]; else { for (int i = 0; i < 3; i = I + 1) { newsample[x][y][i] = foreground[x][y][i]; return newsample; //montage private static boolean isgreen(int i, int j, int[][][] image) { return image[i][j][0] == 0 && image[i][j][1] == 255 && image[i][j][2] == 0 ; //isgreen

Uppgift 11 a) import java.awt.*; import javax.swing.*; import java.util.*; public class Flag extends JPanel { private Color c1, c2, c3; public Flag() { setbackground(color.white); setforeground(color.white); //konstruktor public void paintcomponent(graphics pen) { super.paintcomponent(pen); pen.setcolor(c1); pen.fillrect(0, 0, getwidth() / 3, getheight()); pen.setcolor(c2); pen.fillrect(getwidth() / 3, 0, getwidth()/3, getheight()); pen.setcolor(c3); pen.fillrect(2*getwidth() / 3, 0, getwidth()/3, getheight()); //paintcomponent public void setcolors(color c1, Color c2, Color c3) { this.c1 = c1; this.c2 = c2; this.c3 = c3; //setcolor //Flag

b) import java.awt.*; import javax.swing.*; import java.awt.event.*; public class ShowFlags extends JFrame implements ActionListener { private JButton frankrike = new JButton("Frankrike"); private JButton italien = new JButton("Italien"); private JButton belgien = new JButton("Belgien"); private Flag theflag = new Flag(); public ShowFlags() { JPanel buttonpanel = new JPanel(); buttonpanel.setlayout(new GridLayout(1,3, 10, 10)); buttonpanel.add(frankrike); buttonpanel.add(italien); buttonpanel.add(belgien); frankrike.addactionlistener(this); italien.addactionlistener(this); belgien.addactionlistener(this); setlayout(new BorderLayout()); add("center", theflag); add("south", buttonpanel); setdefaultcloseoperation(exit_on_close); //konstruktor public void actionperformed(actionevent e) { if (e.getsource() == frankrike) theflag.setcolors(color.blue,color.white,color.red); else if (e.getsource() == italien) theflag.setcolors(color.green,color.white,color.red); else if (e.getsource() == belgien) theflag.setcolors(color.black,color.yellow,color.red); theflag.repaint(); //actionperformed public static void main(string[] args) { ShowFlags f = new ShowFlags(); f.setsize(325, 225); f.setvisible(true); //main //ShowFlags