Grundläggande programmering, STS 1 14 maj 2007 Sida 1/11 Dugga i Grundläggande programmering STS, åk 1 2007-05-14 Skrivtid: 13:00 16:00 Hjälpmedel: Inga Lärare: Sven Sandberg besöker duggan ca 13:45. Tel. 471 1049. Läs instruktionerna på nästa sida mycket noggrant!
Grundläggande programmering, STS 1 14 maj 2007 Sida 2/11 Instruktioner Duggan består av 17 kryssfrågor, som vardera ger ett poäng. Sist i duggan finns ett svarsblad. Riv ut detta blad och lämna dina svar på bladet. Svarsbladet ska lämnas in. De överiga pappren i duggan får du behålla. Kryssa tydligt över det svar du anser vara riktigt. Om du vill ändra ett svar, gör det på ett sätt som inte kan misstolkas. Enbart ett svarsalternativ är riktigt, utom på de frågor där det tydligt anges att ett eller flera alternativ är riktiga. Om du svarar med fler än ett svar på någon annan uppgift, får du inget poäng. I samtliga uppgifter kan du förutsätta att extra-paketet har importerats, även då det inte står uttryckligen i uppgiften. Duggan gås igenom på morgondagens föreläsning. Betygsgränser Duggapoäng Duggaresultat Kvalitetspoäng 0 10 U 0 11 G 0 12 G 10 13 G 14 14 G 18 15 G 22 16 G 26 17 G 30
Grundläggande programmering, STS 1 14 maj 2007 Sida 3/11 Uppgifter Klassen TelefonKostnad nedan är en förenklad version av klassen som beskrevs på föreläsningen. Objekt av klassen ska hålla ordning på kostnaden för en mobiltelefon. I frågorna 1 8 refereras till denna klass. class TelefonKostnad { taxasms = 0.70; private String namn; private double kostnad; TelefonKostnad( ) { this.namn = namn; kostnad = 0; antaltelefoner++; public void skrivut() { Std.out.print(namn + " har anvant " + kostnad + " kr."); skickasms() { kostnad += taxasms; public double gekostnad() { return kostnad; public static void satttaxasms(double taxa) { taxasms = taxa; public static double getaxasms() { return taxasms;
Grundläggande programmering, STS 1 14 maj 2007 Sida 4/11 1. Vilket eller vilka av följande ord ska texten ➊ ovan ersättas med, om vi ska följa konventioner för Java-programmering? (Ordens inbördes ordning kommer vara densamma i koden som bland svarsalternativen, ifall flera svar ska kryssas.) (a) public (f) int (b) private (g) double (c) static (h) String (d) void (i) namn (e) boolean (j) kostnad 2. Vilket eller vilka av följande ord ska texten ➋ ovan ersättas med, om vi ska följa konventioner för Java-programmering? (Ordens inbördes ordning kommer vara densamma i koden som bland svarsalternativen, ifall flera svar ska kryssas.) (a) public (f) int (b) private (g) double (c) static (h) String (d) void (i) namn (e) boolean (j) kostnad 3. Vilket eller vilka av följande ord ska texten ➌ ovan ersättas med, om vi ska följa konventioner för Java-programmering? (Ordens inbördes ordning kommer vara densamma i koden som bland svarsalternativen, ifall flera svar ska kryssas.) (a) public (f) int (b) private (g) double (c) static (h) String (d) void (i) namn (e) boolean (j) kostnad 4. Vilket eller vilka av följande ord ska texten ➍ ovan ersättas med, om vi ska följa konventioner för Java-programmering? (Ordens inbördes ordning kommer vara densamma i koden som bland svarsalternativen, ifall flera svar ska kryssas.) (a) public (f) int (b) private (g) double (c) static (h) String (d) void (i) namn (e) boolean (j) kostnad
Grundläggande programmering, STS 1 14 maj 2007 Sida 5/11 5. Studera följande kodrad, som du kan anta finns i en main -metod i en annan klass, kallad TelefonTest1. TelefonKostnad tel = new TelefonKostnad(150.0); Om de saknade raderna i TelefonKostnad skrevs riktigt, och TelefonKostnad och TelefonTest1 kompilerades, skulle raden: (a) Ge upphov till ett fel när den kompilerades. (b) Kompileras korrekt, men ge upphov till ett fel när den exekverades. (c) Kompileras, exekveras och ge upphov till ett objekt ur klassen TelefonKostnad med kostnad 0. (d) Kompileras, exekveras och ge upphov till ett objekt ur klassen TelefonKostnad med kostnad 150. Vi skapar en ny fil där vi definierar klassen TelefonKostnadMedUtskrift. I fråga 6 8 refereras till denna klass. Filen börjar med följande två rader: class TelefonKostnadMedUtskrift extends TelefonKostnad { Klassen innehåller bl.a. följande metod. public void skickasms() { super.skickasms(); skrivut(); Du får anta att klassen innehåller övriga rimliga metoder, såsom konstruktorer, trots att dessa inte är beskrivna här. 6. Den relation som beskrivs mellan TelefonKostnadMedUtskrift och TelefonKostnad kallas... (a) har-relation (b) känner-till-relation (c) är-relation
Grundläggande programmering, STS 1 14 maj 2007 Sida 6/11 7. Antag nu att vi lägger till följande metod i klassen TelefonKostnadMedUtskrift : public static void main(string[] args) { TelefonKostnadMedUtskrift tel = new TelefonKostnadMedUtskrift("Kim"); tel.skickasms(); tel.skrivut(); Std.out.println("Slut."); Om main -metoden i klassen TelefonKostnadMedUtskrift anropades, vad skulle programmet skriva ut? (a) Kim har anvant 0.0 kr.slut. (b) Kim har anvant 0.7 kr.slut. (c) Kim har anvant 0.0 kr.kim har anvant 0.0 kr.slut. (d) Kim har anvant 0.0 kr.kim har anvant 0.7 kr.slut. (e) Kim har anvant 0.7 kr.kim har anvant 0.7 kr.slut. 8. Antag istället att vi lägger till följande metod i klassen TelefonKostnadMedUtskrift : public static void main(string[] args) { TelefonKostnad tel = new TelefonKostnad("Kim"); tel.skickasms(); tel.skrivut(); Std.out.println("Slut."); Om den nya main -metoden i klassen TelefonKostnadMedUtskrift anropades, vad skulle programmet skriva ut? (a) Kim har anvant 0.0 kr.slut. (b) Kim har anvant 0.7 kr.slut. (c) Kim har anvant 0.0 kr.kim har anvant 0.0 kr.slut. (d) Kim har anvant 0.0 kr.kim har anvant 0.7 kr.slut. (e) Kim har anvant 0.7 kr.kim har anvant 0.7 kr.slut.
Grundläggande programmering, STS 1 14 maj 2007 Sida 7/11 9. Studera följande kodavsnitt. int x = 0, y = 0; while (x < 10) { y++; x += 2; Std.out.println("x=" + x + "y=" + y); Vad skrivs ut om kodavsnittet exekveras? (a) x=5 y=5 (d) x=5 y=9 (b) x=9 y=5 (e) x=9 y=9 (c) x=10 y=5 (f) x=10 y=9 (g) x=5 y=10 (h) x=9 y=10 (i) x=10 y=10 10. Studera följande kodavsnitt. int x = 0, y = 0; while (x < 10) { x++; for (int z=0; z<10; z++) y++; Std.out.println("x=" + x + "y=" + y); Vad skrivs ut om kodavsnittet exekveras? (a) x=9 y=9 (d) x=9 y=10 (b) x=10 y=9 (e) x=10 y=10 (c) x=100 y=9 (f) x=100 y=10 (g) x=9 y=100 (h) x=10 y=100 (i) x=100 y=100 11. Studera följande kodavsnitt. int[] a = { 1, 2, 4, 8 ; int x = 0; for (int i = 1; i < 3; i++) x += a[i]; Std.out.println(x); Vad skrivs ut om kodavsnittet exekveras? (a) 1 (c) 3 (e) 6 (b) 2 (d) 4 (f) 7 (g) 8 (h) 12 (i) 14 (j) 15
Grundläggande programmering, STS 1 14 maj 2007 Sida 8/11 12. Studera följande kodavsnitt. int[] x = new int[10]; for (int i = x.length - 2; i >= 0; i--) x[i] = x[i + 1] + 1; for (int i = 0; i < x.length; i++) Std.out.print(x[i]); Std.out.println("."); Vad skrivs ut om kodavsnittet exekveras? (a) 0000000000. (d) 1111111111. (b) 0123456789. (e) 1234567890. (c) 0987654321. (f) 9876543210. (g) 9999999999. Studera koden för klassen Kalender nedan. Klassen används i uppgift 12 och 13. class Kalender { private static String[] manader = { "jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec" ; public void visakalender(int borjan, int slut) { borjan--; slut--; if ((borjan >= 0) && (slut >= 0) && (borjan < 12) && (slut < 12)) { int m = borjan; while ( ) { Std.out.println(manader[m]); if ( ) m = 0; else m++; Metoden visakalender ska skriva en lista av månader. Listan ska börja med månad nummer borjan och sluta en månad innan månad nummer slut. Metoden ska skriva minst 0 och högst 11 månader. Alla följande tre anrop ska fungera, dvs. månaden efter december ska vara januari: visakalender(3, 6); // fr.o.m. mars t.o.m. maj visakalender(8, 2); // fr.o.m. augusti t.o.m. januari visakalender(12, 1); // bara december
Grundläggande programmering, STS 1 14 maj 2007 Sida 9/11 13. Vad ska texten ovan bytas ut mot för att programmet ska fungera som förväntat? (a) borjan < slut (b) borjan + m < slut (c) borjan + m < slut + 12 (d) m < 11 (e) m < 12 (f) m < 13 (g) m < slut (h) m!= slut 14. Vad ska texten ovan bytas ut mot för att programmet ska fungera som förväntat? (a) borjan == 11 (b) borjan > slut (c) m == 11 (d) m == 12 (e) m == 13 (f) m < borjan (g) m > slut 15. Studera följande två klasser. class Uppg14 { public int metod1(int x, int y) { y = x; return x + y; class Test14 { public static void main(string[] arg) { int x = 2; int y = 6; Uppg14 u = new Uppg14(); x = u.metod1(x, y); Std.out.println("x=" + x + " y="+y); Vad kommer skrivas ut ifall main -metoden i klassen Test14 anropas? (a) x=2 y=2 (d) x=4 y=2 (g) x=6 y=2 (b) x=2 y=4 (e) x=4 y=4 (h) x=6 y=4 (c) x=2 y=6 (f) x=4 y=6 (i) x=6 y=6
Grundläggande programmering, STS 1 14 maj 2007 Sida 10/11 16. Studera följande två klasser. class Heltal { private int etttal; public Heltal(int etttal) { this.etttal = etttal; public void addera(int x) { etttal += x; public int getal() { return etttal; public int specialmetod(int etttal) { etttal++; addera(1); return etttal; class HeltalTest { public static void main(string[] arg) { int x = 3; Heltal y = new Heltal(3); int z = y.specialmetod(x); Std.out.println("x=" + x); Std.out.println("y=" + y.getal()); Std.out.println("z=" + z); Vilka tre rader kommer skrivas ut om main -metoden i klassen HeltalTest anropas? Observera att du ska kryssa för tre av alternativen. (a) x=3 (b) x=4 (c) x=5 (d) y=3 (e) y=4 (f) y=5 (g) z=3 (h) z=4 (i) z=5
Grundläggande programmering, STS 1 14 maj 2007 Sida 11/11 17. Consider the following two classes. class Simple1 { private int x; private int y; public Simple1() { x = 3; y = 5; public int compute(int a, int b) { x = a * a; y = b + 7; return x + y; public void printout(int a) { Std.out.println("First: " + x + " Second: " + y + " Third: " + a); class Test { public static void main(string[] arg) { int x = 2; int y = 6; Simple1 calc = new Simple1(); x = calc.compute(x, y); calc.printout(x); What will the program print out, if the main method in the class Test is called? (a) First: 0 Second: 0 Third: 2 (b) First: 2 Second: 6 Third: 2 (c) First: 2 Second: 6 Third: 13 (d) First: 4 Second: 6 Third: 4 (e) First: 4 Second: 13 Third: 4 (f) First: 4 Second: 13 Third: 17 (g) First: 17 Second: 13 Third: 17