INDA - Uppgift 10 2006/2007


Lappskrivning
Den här gången är det para två punkter på programmet. Ni ska lämna in slutuppgiften i början av lektionen och sedan blir det en entimmes 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 förra årets prov (se nedan).


INDA - Skrivning december 2005

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 i = 3;

    System.out.println(i/2*1.5);
}
  • a) Det blir ett exekveringsfel.
  • b) Programmet skriver ut talet 1.
  • c) Programmet skriver ut talet 1.5.
  • d) Programmet skriver ut talet 2.25.
  • e) Inget av ovanstående alternativ.

2. Vad händer om man exekverar följande metod?
public void mystery() {
    int n = 2;
    int sum = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            sum += i;
    System.out.println(sum);
}
  • a) Programmet skriver ut "1".
  • b) Programmet skriver ut "2".
  • c) Programmet skriver ut "4".
  • d) Programmet skriver ut "6".
  • e) Inget av ovanstående alternativ.

3. Vad händer om man försöker kompilera och köra följande metod (du kan anta att metoden finns i en korrekt utformad klass)?
public void mystery() {
    String s = "";
    String t = s;

    if (s == t)
       System.out.print("A");
    if (s.equals(t))
       System.out.print("B");
    System.out.println();
}
  • a) Det blir ett kompileringsfel.
  • 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(5)?
public int mystery(int n) {
    if (n <= 2)
        return n;
    else
        return (n - 1) * mystery(n - 2);
}
  • a) Metoden returnerar 0.
  • b) Metoden returnerar 4.
  • c) Metoden returnerar 8.
  • d) Metoden returnerar 12.
  • e) Metoden returnerar 16.

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

public class Mystery
{
    private boolean secret;

    public Mystery() {
        this.secret = ((new Random()).nextInt() % 2 == 0);
    }

    public boolean isSecret() {
        return this.secret;
    }
}
  • a) Det blir ett kompileringsfel.
  • b) Det blir ett exekveringsfel.
  • c) Det blir ett logiskt fel.
  • d) Det blir ett exekveringsfel och ett logiskt fel.
  • 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 m = 1;
    int n = 2;

    secret(m, n);
    System.out.println(m + "+" + n);
}

public void secret(int m, int n) {
    m = m * n / 2;
    n = m / n * 2;
}
  • a) "1+2".
  • b) "3".
  • c) "1+0".
  • d) "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 sum = 0;
    for (int i = 0; i < v.length; i++)
        sum += v[i];
    System.out.println(sum);
}
  • a) Programmet skriver ut "0".
  • b) Programmet skriver ut "2".
  • c) Det blir ett kompileringsfel.
  • d) Det blir ett exekveringsfel.
  • e) Inget av ovanstående alternativ.

8. Betrakta följande två klasser. Vad händer om vi skapar ett objekt i bluej med kommandot
new KeyChain({new Key(1), new Key(2)})
och därefter anropar metoden mystery(3) på detta objekt?
public class Key
{
  private long value;

  public Key(long value) {
    this.value = value;
  }

  public long value() {
    return value;
  }
}

  - - -

import java.util.ArrayList;

public class KeyChain
{
  private ArrayList keys = new ArrayList();

  public KeyChain(Key[] keys) {
    for (int i = 0; i < keys.length; i++)
      this.keys.add(keys[i]);
  }

  public boolean mystery(long key) {
    boolean keyFound = false;
    for (int i = 0; i < keys.size(); i++)       
      if (key  == ((Key) keys.get(i)).value())
        keyFound = true;
    return keyFound;
  }
}
  • a) Metoden returnerar true.
  • b) Metoden returnerar false.
  • c) Metoden returnerar heltalsvektorn {false, false}.
  • d) Metoden returnerar en Key-vektor med två element.
  • e) Inget av ovanstående alternativ.

9. Vad händer om man försöker kompilera och sedan skapa två objekt av följande klass?
public class Mystery
{
    private static int nrOfMysteries = 0;

    public Mystery() {
        nrOfMysteries += 1;
    }
}
  • a) Det blir ett exekveringsfel.
  • b) Variabeln nrOfMysteries får värdet 0.
  • c) Variabeln nrOfMysteries får värdet 1.
  • d) Variabeln nrOfMysteries får värdet 2.
  • e) Inget av ovanstående alternativ.

10. Vad blir resultatet av metodanropet mystery(v, 0, v.length - 1)?
// Pre: 0 <= a <= b + 1 <= v.length
public int mystery(int[] v, int a, int b) {
    if (a >= b)
        return b - a + 1;
    return 2 + mystery(v, a + 1, b - 1);
}
  • a) Antalet element i v.
  • b) Summan av talen i v.
  • c) Summan av talen på jämna positioner i v.
  • d) Summan av talen på udda positioner i v.
  • e) Inget av ovanstående alternativ.



Stefan Nilsson
2006-10-17