Lösningsförslag till tentamen 150317



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

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

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

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

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM DAG: TID: 14:00 19:00

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

Tentamen. Lösningsförslag

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

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

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

Föreläsning 14. Filhantering

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

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

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

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

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

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 OOP

Mer om grafiska komponenter. Händelsestyrda program

Lösningar för tenta 3 DAT043,

Lösningsförslag till exempeltenta 1

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

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

TENTAMEN OOP

TENTAMEN OOP

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

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

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

Rita Egna Bilder, Timer

Lösningsförslag till tentamen

13 Prioritetsköer, heapar

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

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

Instuderingsfrågor, del D

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 och DSV1:P2

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

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

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

Grafiska komponenter.

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Laboration 15 Grafiskt användargränssnitt

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

Tentamen i Algoritmer & Datastrukturer i Java

DAT043 Objektorienterad Programmering

Föreläsning 3. Iteration while-satsen

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

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

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

Lösningsförslag till exempeltenta 2

Tentamen OOP

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

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

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

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

Tentamen, EDAA20/EDA501 Programmering

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

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

OOP Objekt-orienterad programmering

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

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

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

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

Lösningsförslag till tentamen

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

Del A (obligatorisk för alla)

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

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

Tentamen i Programmeringsteknik I

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

Objektorienterad programmering i Java

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

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.

kl

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.

Objektorienterad programutveckling, fk

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

Lösningar för tenta 2 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

Algoritmer. Två gränssnitt

Transkript:

Uppgift 1 Lösningsförslag till tentamen 150317 1) Sant 2) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser.) 3) Falskt. Det är TCP som använder sig av en fast kommunikationsförbindelse.) 4) Sant 5) Sant 6) Falskt. För små datamängder kan en algoritm som har tidskomplexiteten (n 2 ) vara snabbare än en algoritm med tidskomplexiteten (n 2 log n). 7) Falskt. MySql är en databashanterare. 8) Sant. 9) Falskt. Det är en form av black-box testing. 10) Falskt, objekten byggs upp av trianglar. Uppgift 2 The Two-Pizza Rule innebär att en lagom stor projektgrupp ska kunna dela på två pizzor till lunch. Den senaste tiden har projektgrupperna inom mjukvaruutveckling tenderat att bli mindre. För vara konkurrentkraftiga måste företagen lansera nya produkter i allt snabbare takt. Detta innebär att det inte går att ha stora projektgrupper med tidsödande byråkrati. Uppgift 3 Internet är infrastrukturen som används av WWW, dvs WWW är endast en av många applikation som nyttjar Internet. Andra applikationer är email, ftp (för filöverföring mellan datorer) och telnet (för inloggning på datorer via nätet). Uppgift 4 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 5 A B C D E F 0 0 0 0 1 1 B C A AND NAND D E XOR F 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 Uppgift 6 Name Price Erik Hansson 2876 Lisa Andersson 12345

Uppgift 7 a) i) Utskriften blir: ii) Iii) eller [8, 3, 9, 4, 5] Metoden mystery flyttar om elementen i fältet arr på så sätt att alla elementen, förutom det första, flyttas ett position till vänster. Det första elementet hamnar sist. Exempelvis (har även bytt namnet på metoden till ett mer lämpligt namn) public static void shiftleft(int[] arr) { for (int i = 0; i < arr.length - 1; i = i + 1) { int temp = arr[i]; arr[i] = arr[i + 1]; arr[i + 1] = temp; //shiftleft public static void shiftleft(int[] arr) { int temp = arr[0]; for (int i = 0; i < arr.length - 1; i = i + 1) { arr[i] = arr[i + 1]; arr[arr.length-1] = temp; //shiftleft b) Utskriften blir: [1, 2, 4, 5, 7, 8] c) Precis som kompilatorn påpekar i sitt felmeddelande saknas det en return-sats. Eftersom parametern betyg är av typen int kan metoden anropas med alla existerande värden av typen int, inte bara värdena 0 till 4 som Stina använder. Detta betyder att alla värden förutom värdena 0 till 4 "passerar förbi" samtliga if-satser och följaktligen stöter dessa värden inte på någon return-sats. Det finns flera sätt att korrigera metoden på. En bra princip, för alla icke-void-metoder, är att ha endast en return-sats som ligger allra sist i metoden (alla exekveringsvägar i metoden leder ju i så fall dit). En lämplig modifiering av metoden är därför: public static String omvandla(int betyg) { String utdata = ""; if (betyg == 0) utdata = "Urdålig!"; else if (betyg == 1) utdata = "Dålig!"; else if (betyg == 2) utdata = "Godkänd!"; else if (betyg == 3) utdata = "Bra!"; else if (betyg == 4) utdata = "Jättebra!"; return utdata; //omvandla

Uppgift 8 import javax.swing.*; import java.util.*; public class QuadraticEquation { public static void main(string[] arg) { while(true) { String indata = JOptionPane.showInputDialog("Ange koeffienterna a, b och c: "); if (indata == null) break; Scanner sc = new Scanner(indata); double a = sc.nextdouble(); double b = sc.nextdouble(); double c = sc.nextdouble(); if (a == 0) JOptionPane.showMessageDialog(null, "Detta är ingen andragradsekvation!\n Försök igen!"); else computeroots(a, b, c); //while //main public static void computeroots(double a, double b, double c) { double D = Math.pow(b, 2) / Math.pow(2*a, 2) - c / a; if (D == 0) { JOptionPane.showMessageDialog(null, "Har en dubbelrot i " + -b/(2 * a)); else if (D > 0) { JOptionPane.showMessageDialog(null, "Rötterna är " + (-b / (2*a) + Math.sqrt(D)) + " och " + (-b / (2*a) - Math.sqrt(D)) ); else { double real = -b / (2*a); double imaginary = Math.sqrt(Math.abs(D)); JOptionPane.showMessageDialog(null, "Imaginära rötter i " + real + " + " + imaginary + "i \n" + "och " + real + " - " + imaginary + "i."); // computeroots // QuadraticEquation

Uppgift 9 public class Wine{ private String name; private int type; private int year; private String comment; private int number; public static final int RED = 0; public static final int WHITE = 1; public static final int ROSE = 2; public Wine(String name, int type, int year, String comment, int number ) { this.name = name; this. year = year; this.type = type; this.comment = comment; this.number = number; //constructor public String getname() { return name; //getname public int getyear() { return year; //getr public int gettype(){ return type; //gettype public void setcomment(string comment) { this.comment = comment; public String getcomment() { return comment; //getcomment public void setnumber(int number) { this.number = number; //setnumber public int getnumber(){ return number; //getnumber public String tostring() { String utdata = "Namn : " + name + "\n" + "Årtal: " + year + "\n" + "Typ: "; if (type == RED) utdata = utdata + "rött"; else if (type == WHITE) utdata = utdata + "vitt"; else utdata = utdata + "ROSE"; utdata = utdata +"\n" + "Kommentar: " + comment + "\n" + "Antal i lager: " + number + "\n" ; return utdata; //tostring //Wine

Uppgift 10 a) public static ArrayList<Wine> allrosefromyear(arraylist<wine> bottles, int year){ ArrayList<Wine> res = new ArrayList<Wine>(); for (int i = 0; i < bottles.size(); i = i + 1) { Wine currentbottle = bottles.get(i); if (currentbottle.gettype() == Wine.ROSE && currentbottle.getyear() == year) { res.add(currentbottle); return res; // allrosefromyear Alternativ lösning med förenklad for-sats: b) public static ArrayList<Wine> allrosefromyear(arraylist<wine> bottles, int year){ ArrayList<Wine> res = new ArrayList<Wine>(); for (Wine currentbottle : bottels) { if (currentbottle.gettype() == Wine.ROSE && currentbottle.getyear() == year) { res.add( currentbottle); return res; // allrosefromyear public static boolean ispalindrom(string phrase) { String str = removenonletters(phrase); str = str.tolowercase(); boolean okey = true; for (int pos = 0; pos < str.length()/2; pos = pos +1) { if (str.charat(pos)!= str.charat(s.length() - 1 - pos)) okey = false; return okey; //ispalindrom c) private static String removenonletters(string str) { String res = ""; for (int pos = 0; pos < str.length(); pos = pos + 1) { char ch = str.charat(pos); if (Character.isLetter(ch)) { res = res + ch; return res; // removenonletters public static int[][][] vignetting(int[][][] sample) { int[][][] newsample = new int[sample.length][sample[0].length][3]; for (int x = 0; x < newsample.length; x = x + 1) { for (int y = 0; y < newsample[x].length; y = y + 1) { for (int i = 0; i < 3; i++) { double factor = Math.pow(sample.length/2 - x, 2) + Math.pow(sample[0].length/ 2 - y, 2); factor = 4 * factor / (Math.pow(sample.length, 2) + Math.pow(sample[0].length, 2)); newsample[x][y][i] = (int) ((1- factor) * sample[x][y][i]); return newsample; //vignetting

Uppgift 11 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class Bandit extends JFrame implements ActionListener { private JButton spela = new JButton("Spela"); private JLabel n1 = new JLabel("", JLabel.CENTER); private JLabel n2 = new JLabel("", JLabel.CENTER); private JLabel n3 = new JLabel("", JLabel.CENTER); private JLabel info = new JLabel(" Ingen vinst ", JLabel.CENTER); public static Random rnd = new Random(); public Bandit() { settitle("lucky LUKE"); Font font = new Font("Times", Font.PLAIN, 36); spela.setfont(font); n1.setfont(font); n2.setfont(font); n3.setfont(font); n1.setforeground(color.blue); n2.setforeground(color.blue); n3.setforeground(color.blue); info.setfont(font); info.setbackground(color.white); info.setopaque(true); setlayout(new GridLayout(3,1,3,3)); JPanel p = new JPanel(); add(spela); add(p); add(info); p.setlayout(new GridLayout(1,3,3,3)); p.add(n1); p.add(n2); p.add(n3); spela.addactionlistener(this); setsize(250, 200); setvisible(true); setdefaultcloseoperation(exit_on_close); //konstruktor public void actionperformed(actionevent e) { int t1 = rnd.nextint(10); int t2 = rnd.nextint(10); int t3 = rnd.nextint(10); n1.settext(t1+""); n2.settext(t2+""); n3.settext(t3+""); if ((t1 == t2) && (t1 == t3)) info.settext("vinst 50 kr"); else if (t1 == t2 t1 == t3 t2 == t3) info.settext("vinst 2 kr"); else info.settext("ingen vinst"); // actionperformed public static void main(string[] s) { Bandit r = new Bandit (); //main //Bandit