Klausurergebnisse - Programmierkurs Java (WS 97/98)
Ergebnisse
Aufgaben
Musterlösung zu Aufgabe 1
Musterlösung 1 zu Aufgabe 2 und 3
Musterlösung 2 zu Aufgabe 2 und 3
Ergebnisse
ACHTUNG:
Die zum Bestehen
der Klausur erforderliche Punktzahl wurde von 50 auf 40 Punkte
herabgesetzt !
Die untere Schranke
zur Zulassung zur Nachklausur entfällt, d.h. ALLE, die die
Klausur nicht bestanden haben, können die Nachklausur mitschreiben!
Einsicht in die
Klausur: MO, 23.02.98, 13 - 17 Uhr, OFFIS, Raum O71
Nachklausur: FR,
17.04.98, 10-12 Uhr, Hörsaal G
MatNr Punkte Schein
6797320 80 x
6796930 24
6435640 08
4896630 35
6816360 35
6723020 87 x
6801580 96 x
6663920 10
6730130 65 x
6700870 35
6770190 89 x
6699590 44 x
6699200 22
6653770 05
6771290 104 (!) x
6773070 31
6636250 63 x
6694960 50 x
6677860 17
6433730 35
6665380 77 x
6800220 61 x
6420280 15
6684840 42 x
6573300 42 x
6698810 88 x
6725640 46 x
6801900 29
6701000 48 x
6686880 92 x
6794600 22
6476540 35
6796770 16
6699620 31
6699880 17
6800060 99 x
6686460 51 x
6747950 34
6723860 27
6720980 37
6722180 55 x
6671420 74 x
6678410 33
6788140 48 x
6535700 14
6562050 00
6483230 30
6724960 Reversi x
6686620 68 x
6687300 58 x
6681120 48 x
6720690 36
6686200 57 x
6685490 83 x
6720430 10
6720850 68 x
6701420 92 x
6724120 61 x
6684970 Reversi x
6699910 42 x
6664990 87 x
6800510 59 x
6702100 04
6576280 59 x
6679770 36
6484460 26
6771030 45 x
6715810 52 x
6699040 71 x
6664570 75 x
6150130 29
6800800 14
6689470 14
6798970 15
6813930 65 x
6738770 33
6794860 83 x
6670030 54 x
6654580 40 x
6065270 26
6801870 78 x
6722500 48 x
6687720 58 x
6644170 42 x
6687010 37
6794280 27
6634890 27
6721820 29
6689630 60 x
6669360 50 x
6700160 100 x
6684680 35
6723280 15
5507830 41 x
Statistik:
bestanden: 50 (+2)
nicht bestanden: 42
Aufgaben
Aufgabe 1 (Puan-Puan): 50 Punkte
Puan-Puan ist ein Spiel, das von zwei Personen auf einem Spielbrett
von n mal n Feldern (n = 2, 3, 4, ..., 9) gespielt wird. Als Spielfiguren
stehen n mal n gleichfarbige Steine zur Verfügung. Die Spieler
ziehen abwechselnd. Bei einem Zug wird entweder ein Stein gesetzt
oder ein bereits gesetzter Stein weggenommen.
Wer eine Steinstellung erzeugt, die schon einmal im Verlauf des
aktuellen Spiels aufgetreten ist oder die bis auf eine Drehung
des gesamten Spielfeldes um 90, 180 oder 270 Grad mit einer bereits
aufgetretenen Stellung übereinstimmt, verliert das Spiel.
Das Spiel endet, wenn einer der beiden Spieler verliert bzw. nach
100 Zügen. In letzterem Falle endet das Spiel mit einem Unentschieden.
Vier (bis auf Drehung) gleiche Stellungen ("Puan-Gleichheit")
Schreiben Sie ein Java-Programm, das zuerst die Größe
des Spielbrettes einliest und dann abwechselnd die Spielzüge
beider Spieler entgegennimmt, bis das Spiel endet (generelle Spielabwicklung:
5 Punkte)! Eine Ausgabe des Spielbrettes auf dem Bildschirm ist
nicht erforderlich.
Implementieren Sie die Überprüfung der oben definierten
"Puan-Gleichheit" (25 Punkte)!
Wählen Sie geeignete Datenstrukturen (10 Punkte)!
Beachten und behandeln Sie fehlerhafte Nutzereingaben (5 Punkte)!
Wählen Sie aussagekräftige Bezeichner! Dokumentieren
Sie schwer verständliche Stellen (5 Punkte)! Eine Dokumentation
gemäß der javadoc-Dokumentationsrichtlinien ist jedoch
nicht erforderlich!
Aufgabe 2 (Bitset) 50 Punkte
Eine Bitmenge ist eine Datenstruktur, in der einzelne Bits gesetzt
(1), andere nicht gesetzt sind (0). Beispielsweise repräsentiert
die Bitfolge 10011, daß die Bits 1, 4 und 5 gesetzt und
alle anderen Bits nicht gesetzt sind.
Implementieren Sie in Java eine Klasse BitSet,
welche eine Bitmenge als ADT realisiert. Auf Objekten vom Datentyp
BitSet
sollen dabei folgende Funktionen ausführbar sein:
a) Initialisieren einer leeren Bitmenge, d.h. kein Bit ist gesetzt
(Default-Konstruktor) (3 Punkte)
b) Initialisieren einer Bitmenge mit einer bereits existierenden
Bitmenge, d.h. anschließend sind die beiden Bitmengen wertegleich
(siehe Teilaufgabe (e)) (Copy-Konstruktor) (3 Punkte)
c) Clonieren einer Bitmenge, d.h. initialisieren einer neuen Bitmenge
mit einer alten Bitmenge, d.h. anschließend sind die beiden
Bitmengen wertegleich (siehe Teilaufgabe (e)) (Überschreiben
der von der Klasse Object
geerbten Methode clone)
(3 Punkte)
d) Konvertieren einer Bitmenge in ein String-Objekt
(Bitfolge) (Überschreiben der von der Klasse Object
geerbten Methode toString)
(3 Punkte)
e) Überprüfen auf Wertegleichheit zweier Bitmengen (zwei
Bitmengen sind wertegleich, wenn in beiden Mengen exakt dieselben
Bits gesetzt sind) (Überschreiben der von der Klasse Object
geerbten Methode equals)
(3 Punkte)
f) Setzen eines einzelnen Bits der Bitmenge. Das zu setzende Bit
wird dabei als int-Wert
übergeben (3 Punkte)
g) Löschen eines einzelnen Bits der Bitmenge. Das zu löschende
Bit wird dabei als int-Wert
übergeben (3 Punkte)
h) Ausführung eines logischen ANDs mit einer anderen Bitmenge
(3 Punkte)
i) Ausführung eines logischen ORs mit einer anderen Bitmenge
(3 Punkte)
k) Abfrage, ob ein bestimmtes Bit gesetzt ist (3 Punkte)
Achten Sie darauf, daß prinzipiell beliebig große
Bits (bis MAXINT) gesetzt werden dürfen. Um nicht unnötig
Speicherplatz zu verschwenden, wählen Sie zur internen Repräsentation
der gesetzten und ungesetzten Bits daher bitte eine dynamische
Datenstruktur (verkettete Liste, Vector, "wachsendes Array",
...) (Wahl und Implementierung der Datenstruktur: 10 Punkte).
Dokumentieren Sie die Klasse und eine Methode mittels der
javadoc-Dokumentationsrichtlinien (5 Punkte).
Überlegen Sie sich jeweils, wie die Methoden in Fehlerfällen
reagieren sollen. Wählen Sie aussagekräftige Bezeichner.
Achten Sie auf Lesbarkeit, leichte Änderbarkeit und Erweiterbarkeit
Ihrer Klasse. Dokumentieren Sie schwer verständliche Stellen
(5 Punkte).
Aufgabe 3 (Test) max. 5 Bonuspunkte
Schreiben Sie ein Testprogramm für die in Aufgabe 2 entworfene
Klasse Bitset!
|