Grundlagen der Programmierung (CS101)

Transcrição

Grundlagen der Programmierung (CS101)
UNIVERSITÄT BASEL
Dozent
Prof. Dr. Thomas Vetter
Departement Informatik
Bernoullistrasse 16
CH 4056 Basel
Assistenten
Bernhard Egger
Andreas Forster
Tutoren
Jan Ebbe
Pat Mächler
Valentino Rugolo
Sascha Scherrer
Webseite
http://informatik.unibas.ch/index.php?id=cs101_hs13
Grundlagen der Programmierung (CS101) - Blatt 9
Theorie [12 Punkte] - Praxis [4 Punkte]
Vorbesprechung
18. - 22. Nov
Abgabe
25. - 29. Nov
Aufgabe 1: Game of Life - AWT (Praxis)
[4 Punkte]
Schreiben Sie eine JAVA-Klasse GOLFenster zur Visualiserung des Game Of Life. Schreiben Sie eine Klasse welche von java.awt.Component abgeleitet ist. Diese soll im Konstruktor eine Klassenvariable JFrame erstellen und sich selbst dem JFrame hinzufügen.
Dem Konstruktor soll das Game Of Life übergeben werden welche auch als Klassenvariable
gespeichert wird. Implementieren Sie ausserdem noch folgende Methoden:
// zeichnet das Feld
public void paint(Graphics g) { ... }
// gibt die benögtigte Grösse zum Zeichnen zurück
public Dimension getPreferredSize() { ... }
// soll eine Aufruf zum neu Zeichnen an das JFrame senden
public void redraw() { ... }
Schreiben Sie Ihr Programm so um, dass an Stelle der Konsolenausgabe die Grakausgabe
aufgerufen wird.
[3 Punkte]
Erweitern Sie die Klassen so, dass der Benutzer mit der Maus Zellen zum leben erwecken
kann.
[1 Punkt]
Grundlagen der Programmierung
Blatt 9
Aufgabe 2: Ablauogik von Ausnahmen (Theorie)
Seite 2 / 3
[4 Punkte]
Geben Sie zu dem unten stehendem Programmstück die Ausgabe auf der Komandozeile
an, wenn gilt:
(a) condition = true
(b) condition = false
Geben Sie für jeden Schritt eine kurze Bergründung an.
class Exceptions {
public static class E1 extends Exception {}
public static class E2 extends Exception {}
public static void main (String[] args) {
try {
System.out.print("Urs ");
m1();
System.out.print("Regula ");
} catch (E1 e) {
System.out.print("Kino ");
} catch (E2 e) {
System.out.print("allein ");
} finally {
System.out.print("nach ");
}
System.out.println("Hause ");
}
static void m1() throws E1, E2 {
try {
System.out.print("geht ");
if (condition)
throw new E1();
else
throw new E2();
} catch (E1 e) {
System.out.print("sehr ");
}
finally {
System.out.print("gerne ");
}
System.out.print("mit ");
}
}
Grundlagen der Programmierung
Blatt 9
Aufgabe 3: Fehlersuche (Theorie)
Seite 3 / 3
[8 Punkte]
Schauen Sie sich die folgenden Programmstücke an, und nden Sie die Programmierfehler,
die sich dort eingeschlichen haben. Erläutern sie kurz was das Problem ist, und geben Sie
eine korrigierte Version an.
Eine Routine, um die Position eines Buchstabens in einem Text zu bestimmen
[2 Punkte]
public static int findChar(String s, char c) {
for (int i=0; i<s.length(); ++i)
if (s.charAt(i) == c)
break;
return i;
}
Eine Accountklasse, und die dazughörige Testroutine. Die gegebene Implementation enthält 6 Fehler.
[6 Punkte]
public class Account {
private double value;
private String name;
Account(String name, double value) {
name = name;
value = value;
}
public String toString() {
"Account: " + name + " contains " + value + "chf";
}
public static void testAccount() {
Account accounts[];
accounts[0] = new Account("Petra", 111);
accounts[1] = new Account("Klaus", 999);
for (i=0; i <= accounts.length; ++i)
System.out.println(accounts[i]);
}
}