Uppgift 1 Lösningsförslag till tentamen 110317 a) Sant. b) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser. c) Falskt. TCP är ett protokoll på transportlagret. d) Falskt. Binärsökning tillhör klassen ( 2 log n). e) Falskt. En nod har 0, 1 eller 2 barn. f) Falskt, redundans inom databaser innebär att man har lagrat samma information upprepande gånger på olika platser i samma databas. Detta innebära då information skall uppdateras eftersom uppdateringen måste göras på alla kopior av informationen för att inte få inkonsistens. Man bör alltså eftersträva redundansfria databaser. g) Sant h) Falskt. SQL är ett standardiserat frågespråk för databaser.) i) Sant. i) Sant. Uppgift 2 A B OR C XOR NOR E D AND F a b c d e f 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 Uppgift 3 Algoritmen har tidskomplexiteten (n 2 ). Uppgift 4 Tabellen som erhålls får utseendet: Name Price Erik Hansson 2876 Lisa Andersson 12345
Uppgift 5 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. En statisk implementation av en kö kan göras med hjälp av ett fält av storleken queuesize samt en variabel tail som håller reda på hur många element som finns i kön. Ett element läggs in i kön i fältindex tail och tail ökas med 1. Det element som sattes in först i kön finns i index 0. När det första elementet tas ut ur kön minskas tail med 1 och alla kvarvarande elementen i kön flyttas fram en position i fältet, dvs det element som finns i index 1 flyttas till index 0, det element som finns i index 2 flyttas till index 1 osv. kön 0 1 2 3 4 5 queuesize-1 tail 4 Uppgift 6 Device drivers, är den mjukvara som kommunicerar med yttre enheter, såsom skrivare, monitorer och disk drivers. Memory manager sköter om minneshanteringen. Memory manager går igenom listan över ledigt minne för att söka efter ett ledigt minnesblock till processer. File managern koordinerar användningen av datorns sekundärminne. File mangern håller reda på vilka filer som finns på sekundärminnet, var filerna finns och vem som kan använda filerna, samt vilka minnesutrymmen som är lediga. Schedulern schemalägger när de olika processerna skall köras.
Uppgift 7 a) Metoden nextint är en instansmetod och inte en statisk metod, därför är anropet Random.nextInt(10) felaktigt. Istället skall anropet vara rand.nextint(10) b) Utskriften blir 2 3 4 5 2 c) Utskriften blir: -5
Uppgift 8 import javax.swing.*; import java.util.*; import java.text.*; public class Cooling { public static void main (String[] arg) { while (true) { String indata = JOptionPane.showInputDialog("Ge temperatur ( C) och vindstyrka (m(sek): "); if (indata == null) break; Scanner sc = new Scanner(indata); double temp = sc.nextdouble(); double hastighet = sc.nextdouble(); if (hastighet < 0) { JOptionPane.showMessageDialog(null, "OGILTIG VINDHASTIGHET!"); else { double effekt = temp; if (hastighet > 0.5) effekt = effekt(temp, hastighet); NumberFormat nf = NumberFormat.getInstance(); NumberFormat nf = NumberFormat.getInstance(); nf.setmaximumfractiondigits(1); nf.setminimumfractiondigits(1); JOptionPane.showMessageDialog(null, "Upplevd tempratur " + nf.format(effekt)); //main public static double effekt(double t, double v) { return 13.12667 + 0.6215 * t - 13.924740* Math.pow(v, 0.16) + 0.4875195*t * Math.pow(v, 0.16) ; //effekt //Cooling
Uppgift 9 public class Circle { private double x; private double y; private double radius; public Circle (double radius, double x, double y) { this.radius = radius; this.x = x; this.y = y; //konstruktor public double getx() { return x; //getx public double gety() { return y; //gety public double getradius() { return radius; //getradius public double getarea() { return Math.PI * Math.pow(radius, 2); //getradius public boolean overlaps(circle another) { double distansx = x- another.getx(); double distansy = y - another.gety(); double lengthofradius = radius + another.getradius(); return (distansx * distansx + distansy * distansy) < (lengthofradius * lengthofradius); //getradius public Circle biggest(circle another) { if (radius >= another.getradius()) return this; else return another; public String tostring() { return "Mittpunkt: " + x+ ", " + y + "\nradie: " + radius; //Circle
Uppgift 10 a) b) public static double biggestarea(circle[] vekt) { if (vekt == null vekt.length == 0) return -1; else { double biggest = 0; for (int i = 0; i < vekt.length; i = i + 1) { if (vekt[i].getarea() > biggest) { biggest = vekt[i].getarea(); return biggest; // biggestarea public static int[][] newintensity(int[][] samples, int low, int high) { int[][] newsamples = new int[samples.length][samples[0].length]; for (int row = 0; row < samples.length; row = row + 1) for (int col = 0; col < samples[row].length; col = col + 1) { if (samples[row][col] > high) newsamples[row][col] = 255; else if (samples[row][col] < low) newsamples[row][col] = 0; else newsamples[row][col] = (255*(samples[row][col]-low)/(high-low)); return newsamples; // newintensity
Uppgift 11 (deluppgift 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; if ( nrofseconds!= 0) tallabel.settext(" " + nrofseconds); else { tallabel.settext("pling!! "); 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(); //ShowSimpleEggTimer