n KTH CSC inda12, Uppgift 10
bild
Skolan för
elektroteknik
och datavetenskap

Uppgift 10

Den här gången är det två punkter på programmet: Ni ska lämna in en första version av terminens slutuppgift samt göra en 45-minuters lappskrivning med tio flervalsfrågor. Uppgifterna kommer att handla om de delar av Java som behandlas i kapitel 1-7 i läroboken. Inga hjälpmedel är tillåtna. För godkänt på uppgiften krävs rätt svar på minst hälften av frågorna. Förbered dig genom att göra exempelskrivningen nedan.

Slutuppgift i programmering (Uppgift 11)

Slutuppgiften på den här delen av kursen är att skriva ett äventyrsspel som bygger på projektet i kapitel 6 (uppl 4: kapitel 7). Du måste utgå från någon av de versioner av spelet som finns i boken. Du ska implementera minst fyra, men gärna fler, av förslagen i uppgift 6.41-6.48 (uppl 4: 7.42-7.49).

Uppgiften ska redovisas i två steg. En första spelbar version ska vara klar för inlämning senast 30/11. Ta med en pappersutskrift av koden till lektionen.

En slutversion, som ska vara användartestad och kodgranskad av någon av dina kollegor, ska redovisas på terminens sista övning 7/12.

Exempelskrivning

Inga hjälpmedel är tillåtna. Kryssa för ett alternativ per uppgift. För godkänt på uppgiften krävs rätt svar på minst hälften av frågorna.

1. Vad händer om man försöker exekvera följande metod?

public void mystery() {
    int n = 5;
    double x = 2;

    System.out.println(3*n/x);
}
  • a) Det blir ett kompileringsfel.
  • b) Programmet skriver ut talet 7.
  • c) Programmet skriver ut talet 7.5.
  • d) Programmet skriver ut talet 8.
  • e) Inget av ovanstående alternativ.

2. Vad händer om man exekverar följande metod?

public void mystery() {
    int res = 1;
    int n = 4;
    while (n*res > 0) {
        res *= n;
        n /= 2;
    }

    System.out.println(res);
}
  • a) Programmet skriver ut "0".
  • b) Programmet skriver ut "2".
  • c) Programmet skriver ut "4".
  • d) Programmet skriver ut "8".
  • e) Inget av ovanstående alternativ.

3. Vad händer om man försöker kompilera och köra följande metod?

public void mystery() {
    String s = null;
    String t = "";

    if (!s.equals(t))
       System.out.print("A");
    if (s != t)
       System.out.print("B");
    System.out.println();
}
  • a) Det blir ett exekveringsfel.
  • b) Programmet skriver ut "".
  • c) Programmet skriver ut "A".
  • d) Programmet skriver ut "B".
  • e) Programmet skriver ut "AB".

4. Vad blir resultatet av metodanropet mystery(0,2)?

public int mystery(int i, int j) {
    if (i == j)
        return j;
    else
        return i + mystery(i + 1, j);
}
  • a) Metoden returnerar 0.
  • b) Metoden returnerar 1.
  • c) Metoden returnerar 2.
  • d) Metoden returnerar 3.
  • e) Metoden returnerar 4.

5. Vad händer om man försöker kompilera klassen Mystery och sedan försöker skapa ett Mystery-objekt?

import java.util.HashMap;

public class Mystery {
    private HashMap<String, String> secrets;

    public Mystery() {
        secrets = new HashMap<String, String>();
    }

    public void addSecret(String codeName, String realName) {
        secrets.put(codeName, realName);
    }

    public String getRealName(String codeName) {
         return secrets.get(codeName);
    }
}
  • a) Det blir ett kompileringsfel i konstruktorn.
  • b) Det blir ett kompileringsfel i metoden addSecret.
  • c) Det blir ett kompileringsfel i metoden getRealname.
  • d) Det blir ett exekveringsfel.
  • e) Inget av ovanstående.

6. Vad blir utskriften när man exekverar metoden mystery? (Du kan anta att båda metoderna ligger i samma klass.)

public void mystery() {
    int n = 0;
    int[] v = new int[2];

    secret(n, v);
    System.out.println(n +"," + v[1]);
}

public void secret(int n, int[] v) {
    n = n + 1;
    v[1] = v[0] + 1;
}
  • a) "0,0".
  • b) "1,0".
  • c) "0,1".
  • d) "1,1".
  • e) Inget av ovanstående.

7. Vad händer om man försöker kompilera och exekvera följande metod?

public void mystery() {
    int[] v = new int[2];
    int res = 0;

    for (int i : v) {
        v[i]++;
        res += v[i];
    }
    System.out.println(res);
}
  • a) Programmet skriver ut "0".
  • b) Programmet skriver ut "1".
  • c) Programmet skriver ut "2".
  • d) Programmet skriver ut "3".
  • e) Inget av ovanstående alternativ.

8. Vad händer om man försöker exekvera följande metod?

public void mystery() {
    String s = "Svar: ";
    int n;

    System.out.println(s + 1 + 1 + n);
}
  • a) Metoden skriver ut "Svar: ".
  • b) Metoden skriver ut "Svar: 2".
  • c) Metoden skriver ut "Svar: 11".
  • d) Metoden skriver ut "Svar: 110".
  • e) Inget av ovanstående alternativ.

9. Mystery är en av flera klasser i ett större program. Hur många objekt av klassen Mystery kan skapas när man exekverar programmet?

public class Mystery {
    private static Mystery thisObject;

    private Mystery() {
    }

    public static Mystery createMystery() {
        if (thisObject == null)
	    thisObject = new Mystery();
        return thisObject;
    }
}
  • a) Inga.
  • b) Högst ett.
  • c) Högst två.
  • d) Så många som ryms i minnet.
  • e) Så många som skräpsamlaren tillåter.

10. Vad blir resultatet av metodanropet mystery(v, 0, v.length - 1)?

public int mystery(int[] v, int a, int b) {
    if (a > b)
	return 0;
    if (a == b)
        return v[a];
    return mystery(v, a, (a + b)/2) +
           mystery(v, (a + b)/2 + 1, b);
}
  • a) Antalet element i v.
  • b) Det mittersta elementet i v.
  • c) Medianen av elementen i v.
  • d) Summan av elementen i v.
  • e) Inget av ovanstående alternativ.
Copyright © Sidansvarig: Stefan Nilsson <snilsson@nada.kth.se>
Uppdaterad 2012-10-15