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.