Resultat Multiple-Choice-Teil: Folgende Antworten wurden erwartet und dienen als Grundlage für die Beurteilung: 1. Welche der folgenden Aussagen treffen auf Ausnahmen und Ausnahmebehandlungen in Java zu? Falsch: Das Java-Laufzeitsystem wirft nur überprüfte (checked) Ausnahmen. (1A) Falsch: Gibt es mehrere catch-Blöcke, wird der letzte passende ausgeführt. (1B) Richtig: Ausnahmen vom Typ Exception sind überprüft (checked). (1C) Richtig: Alle Ausnahmen sind vom Typ Throwable. (1D) Richtig: Das Ergebnis von getMessage() soll die Fehlerart konkretisieren. (1E) 2. public int median(int[] b) { return b[b.length / 2]; } Welche der folgenden Aussagen können (jede für sich) als Vor- bzw. Nachbedingungen dieser Methode sinnvoll sein? Richtig: Nachbedingung: Wirft eine Exception wenn b.length == 0. (2A) Richtig: Vorbedingung: b.length > 0 (2B) Richtig: Vorbedingung: b ist aufsteigend sortiert. (2C) Richtig: Nachbedingung: Gibt den Median zurück wenn b sortiert ist. (2D) Falsch: Vorbedingung: Greift auf einen Eintrag von b zu. (2E) 3. Welche der folgenden Aussagen treffen für Design-by-Contract zu? Richtig: Methoden müssen machen, was ihre Namen versprechen. (3A) Richtig: Vorbedingungen beschreiben häufig Eigenschaften von Parametern. (3B) Richtig: Eine Nachbedingung darf im Untertyp stärker sein als im Obertyp. (3C) Richtig: Nachbedingungen beschreiben häufig Eigenschaften von Rückgabewerten. (3D) Richtig: Vorbedingungen beziehen sich auf einzelne Methoden. (3E) 4. Welche der folgenden Aussagen treffen in Bezug auf Algorithmen und Datenstrukturen zu? Richtig: Ein AVL-Baum ist nicht immer effizienter als ein einfacher Suchbaum. (4A) Richtig: Quicksort eignet sich besser für Arrays als für lineare Listen. (4B) Falsch: Hash-Tabellen werden wegen ihrer Zufallsabhängigkeit kaum verwendet. (4C) Falsch: Arrays verwenden wir meist nur wo andere Datenstrukturen nicht passen. (4D) Falsch: Arrays sind für die meisten Anwendungen zu ineffizient. (4E) 5. int c=59, q=1, j=1; while (j < c) q *= ++j; Welche der folgenden Aussagen sind gültige Schleifeninvarianten dieser Schleife? Richtig: j >= 1 && j <= c (5A) Falsch: j > 1 (5B) Richtig: q ist das Produkt aller Zahlen von 1 bis j, also 1*...*j (5C) Richtig: j >= 1 && j <= 59 (5D) Falsch: j > 0 && j < c (5E)