DD1342 Programkonstruktion för F1, ht 2007 Lappskrivning 1 Torsdag 22/11 2007 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar markerats räknas det som fel svar. Alla skriftliga hjälpmedel är tillåtna. 10-13 rätt av 16 möjliga ger säkert godkänt och 2poäng. 14-16 rätt ger säkert 3poäng Skriv alla svar på svarsblanketten! 1. Följande Java-satser står i en main-metod. Vilka värden har variablerna x och y efter satserna är utförda? int x=7, y=1; x = x + y; y = x + y; A) x = 8 y = 8 B) x = 9 y = 9 C) x = 8 y = 9 D) x = 7 y = 1 2. Följande Java-satser står i en main-metod. Vilka värden har variablerna a och b efter satserna är utförda? int a=7, b = 12; boolean mindre = a<b; if (mindre) { a = a*10; else { b = a; a = a + 1; A) a = 71 b = 12 B) a = 70 b = 12 C) a = 8 b = 7 D) a = 7 b = 12 3. Vilket värde har variabeln r efter kodavsnittet nedan är exekverat, dvs vad skrivs ut? int x = 51, y = 17, r = x; while (r >= y) { r = r - y; System.out.println("r = " + r); A) r = 51 B) r = 17 C) r = -17 D) r = 0 1
En klass deklareras på följande sätt: class Mysko { private int hemlig = 0; public void gör () { hemlig = hemlig + 1; public int visa () { return hemlig; 4. Hur skapas objekt av klassen? Endast ett alternativ är rätt: A) Mysko agaton = new Mysko(); B) Mysko agaton = new Mysko; C) Mysko agaton = new Mysko(7); D) Mysko agaton = new gör(); 5. Antag att ett objekt av Mysko har skapats med det rätta alternativet ur uppgift 4. Därefter exekveras följande satser: Vad skrivs ut? agaton.gör(); agaton.gör(); agaton.gör(); System.out.println(agaton.visa()); A) hemlig (alltså texten hemlig) B) 0 C) 1 D) 3 6. Vilken av ustskrifterna produceras av kodavsnittet? for (int n=5; n>=0; n--) { for (int i=1; i<=n*n + 1; i++) System.out.print("*"); System.out.println(); A) ***** B) ****** C) ************************** D) * **** ***** ***************** ** *** **** ********** *** ** *** ***** **** * ** ** ***** * * ****** 2
7. Vilket av följande påståenden om Javaprogram är FALSKT? A) En klass kan innehålla metoder. B) Varje metod i Java kan bara anropas en gång. C) I en metod kan man deklarera lokala variabler. D) Exekvering av ett fristående program (application) börjar alltid i en metod som heter main. 8. Vilket värde har variabeln summa efter satsterna nedan exekverats? int[] p = {0,1,1,2,3,5,8,13,21,34; int summa = 0; for (int i = 0; i<p.length; i=i+3) summa = summa + p[i]; A) 88 B) 44 C) 27 D) 2 9. Följande programavsnitt skriver ut en talföljd. Hur börjar den? int t0=1, t1=1, t2=0; System.out.print(t0 + " " + t1); for (int k=1; k<=20; k++) { t2 = t1 + 2*t0; System.out.print(" " + t2); t0 = t1; t1 = t2; A)112358 B)113333 C)22461222 D)11351121 10. Vilket av följande påståenden om metoder i Java är SANT? A) Vid ett metodanrop måste de aktuella parametrarna ha samma namn som de formella parametrarna har i metoddefinitionen. B) En metod med returtyp (t.ex. int) måste alltid ha minst en parameter. C) Vid ett metodanrop måste de aktuella parametrarna vara lika många som metodens formella parametrar var då metoden definierades och de aktuella parametrarna måste ha samma typer som motsvarande formella parametrar har. D)Envoid-metodskaaldrighaparametrar. 3
11. Här vill vi räkna i hur många positioner som två heltalsvektorer har samma värden, dvs för hur många i som x i = y i. Om vektorerna är int[] x = {0,1,1,2,3,5,8,13,21; int[] y = {3,3,1,7,3,5,0, 0,21; så ska svaret bli 4. Svaret läggs i variabeln antallika. Vilket av alternativen nedan ger FEL svar? Tre alternativ ger rätt svar. A) int antallika = 0; int k=0; while(k<x.length) { if (x[k] == y[k]) { antallika = antallika + 1; k = k + 1; B) int antallika = 0; for (int i=0; i<x.length; i++) { for (int j=0; j<y.length; j++) { if (x[i] == y[j]) { antallika = antallika + 1; C) int[] diff = new int[x.length]; for (int i=0; i<x.length; i++){ diff[i] = x[i] - y[i]; int antallika = 0; for (int i = 0; i<x.length; i++) { if (diff[i] == 0) { antallika = antallika + 1; D) int antallika = 0; for (int i = 0; i<x.length; i++) { if (x[i] == y[i]) { antallika = antallika + 1; 4
12. Metoden f skall kunna anropas så som följande exempel visar. Vilken av metoddefinitionerna nedan är korrekt Java och stämmer med anropsexemplet? Exempel på anrop: double z = f(5, 0.99); A) double f (int n, double x) { f = Math.sin(n*x); B) double f (int n, double z) { return Math.sin(n*z); C) void f (int n, double x) { System.out.println("Värdet är " + Math.sin(n*z)); D) double f (double z, int n) { return Math.sin(n*z); 13. Om en metod har huvudet void mysko(boolean b, int h) Vilket av följande förslag är ett riktigt anrop av metoden? Alla förslag står i en metod i samma klass som mysko är definierad. A) mysko(false, 17); B) mysko(true, 3.14159265); C) int h = 33; boolean resultat = mysko(); D) mysko("troll", 999); 5
14. Metoden ritaboll ritar en röd boll med diameter 15 pixels. Hur många bollar kommer att synas när man kör appleten eller hur många gånger anropas metoden ritaboll för varje anrop av paint? import java.awt.*; import java.applet.*; public class Bollar extends Applet { int xpos; public void paint (Graphics g) { xpos = 20; ritamera(g); ritamera(g); ritamera(g); void ritaboll (Graphics g) { g.setcolor(color.red); g.filloval(xpos, 100, 15, 15); xpos = xpos + 20; void ritamera (Graphics g) { ritaboll(g); ritaboll(g); ritaboll(g); A) 0 B) 3 C) 9 D) 20 6
15. I appleten nedan deklareras tre variabler: xpos, pippi och ronja. Vilka av variablerna kan användas i en tredje metod, t.ex. inuti metoden paint? import java.awt.*; import java.applet.*; public class Synlighet extends Applet { int xpos = 100; void m1 () { int pippi = 25; public void paint (Graphics g) { m1(); m2(); // Kan variablerna xpos, pippi och ronja användas här? g.drawline(xpos, 50, 20, 100); // A) Det blir fel här g.drawline(xpos, 30, 100, pippi); g.drawline(xpos, 50, 100, ronja); // B) Första felet inträffar här // C) Första felet inträffar här // D) Det blir inte fel alls void m2() { int ronja = 250; A) Ingen av variablerna xpos, pippi och ronja kan användas inuti paint(). B) Endast variabeln xpos kan användas inuti paint(). C) Variablerna xpos och pippi men inte ronja kan användas inuti paint(). D) Alla variablerna xpos, pippi och ronja kan användas inuti paint()-metoden. 7
16. Följande applet ska rita en vacker stjärnhimmel med svart bakgrund och små vita cirklar i slumpmässiga positioner och storlekar. En viktig sats är utelämnad och ska stoppas in där kommentaren // ** här ** finns. Hur ska den utelämnade satsen se ut? import java.awt.*; import java.applet.*; public class Stjärnor extends Applet { int N = 700; public void init () { setbackground(color.black); public void paint (Graphics g) { g.setcolor(color.white); for (int i=0; i<n; i++) { // ** här ** void ritaslumpstjärna (Graphics målare) { int xpos = (int) (Math.random()*600); int ypos = (int) (Math.random()*600); int diam = 1 + (int) (Math.random()*4); målare.filloval(xpos, ypos, diam, diam); A) ritaslumpstjärna(målare); B) g.ritaslumpstjärna(xpos, ypos, diam, diam); C) målare.ritaslumpstjärna(g); D) ritaslumpstjärna(g); 8