Informatik/Jahrgangsstufe Eph/001 Klausuren/2013-2014

Transcrição

Informatik/Jahrgangsstufe Eph/001 Klausuren/2013-2014
2. INFORMATIKKLAUSUR
Name:
Aufgabe 1:
17.03.2014
 Seite 1 
Bearbeitungszeit: 90 min.
Informatik Eph IFG1/2 (GA)
Kniffel  Modellierung und Implementierung
Im Folgenden sollen Teile eines kleinen "Kniffel"-Spiels modelliert, analysiert und
implementiert werden. Sollten Sie das Spiel nicht kennen, so finden Sie die Spielregeln im
Anhang.
a) Zur Simulation eines einzelnen Würfels soll eine eigene Klasse Wuerfel modelliert
werden:
Wuerfel
+
+
+
augenzahl: int
Wuerfel()
wuerfeln()
gibAugenzahl(): int
Erläutern Sie die Funktionalität der angegebenen Methoden.
Implementieren Sie die Klasse Wuerfel vollständig.
( 8 Punkte )
b) Gegeben seien weiterhin die nachfolgend abgebildeten Klassen Spieler und
Wuerfelbecher:
Spieler
- name: String
- becher: Wuerfelbecher
+ Spieler(pName: String, pBecher: Wuerfelbecher)
+ gibName(): String
+ setzeName(pName: String)
Wuerfelbecher
-
augenzahlen: int[]
w1: Wuerfel
w2: Wuerfel
w3: Wuerfel
w4: Wuerfel
w5: Wuerfel
+
+
+
+
+
+
+
+
+
+
+
+
Wuerfelbecher()
gibAugenzahlen(): int[]
gibAugenzahl(index: int): int
gibAugensumme(): int
schuetteln()
wuerfelSindDreierPasch(): boolean
wuerfelSindViererPasch(): boolean
wuerfelSindKleineStrasse(): boolean
wuerfelSindGrosseStrasse(): boolean
wuerfelSindKniffel(): boolean
wuerfelSindFullHouse(): boolean
sortiereWuerfel()
Zeichnen Sie ein UML-Implementationsdiagramm der Klassen Spieler,
Wuerfelbecher und Wuerfel, welches die Beziehungen der Klassen verdeutlicht.
Hinweis: Stellen Sie die Klassendiagramme ohne deren Methoden dar.
( 4 Punkte )
c) Erläutern Sie den Unterschied der drei getter-Methoden (gib...) der Klasse
Wuerfelbecher.
( 6 Punkte )
d) Nach Ablauf der Methode schuetteln der Klasse Wuerfelbecher sollen im
Datenfeld augenzahlen die Augenzahlen der fünf gewürfelten Würfel enthalten sein.
Implementieren Sie diese Methode unter Zuhilfenahme der Methoden der Klasse
Wuerfel.
( 8 Punkte )
2. INFORMATIKKLAUSUR
Name:
17.03.2014
 Seite 2 
Bearbeitungszeit: 90 min.
Informatik Eph IFG1/2 (GA)
e) Analysieren Sie die folgende Methode der Klasse Wuerfelbecher, indem Sie die
Funktion der beiden ineinander geschachtelten Schleifen erläutern und den Zweck der
gesamten Methode beschreiben.
1 public boolean xxx() {
2
for (int zahl = 1; zahl <=6; zahl++) {
3
int anzahl = 0;
4
for (int i = 0; i < 5; i++) {
5
if (augenzahlen[i] == zahl) {
6
anzahl++;
7
}
8
}
9
if (anzahl == 3) {
10
return true;
11
}
12
}
13
return false;
14 }
( 7 Punkte )
f) Implementieren Sie die Methode wuerfelSindKniffel der Klasse
Wuerfelbecher, welche überprüft, ob die im Datenfeld augenzahlen gespeicherten
Würfelaugen einen Kniffel bilden.
( 6 Punkte )
g) Implementieren Sie die Methode wuerfelSindGrosseStrasse der Klasse
Wuerfelbecher, welche überprüft, ob die im Datenfeld augenzahlen gespeicherten
Würfelaugen eine große Straße bilden.
Hinweis: Sie dürfen die Methode sortiereWuerfel nutzen, welche die im Datenfeld
augenzahlen gespeicherten Würfelaugen nach Größe aufsteigend sortiert.
( 6 Punkte )
h) Gegeben sei die folgende Methode der Klasse Wuerfelbecher:
1 public void sortiereWuerfel() {
2
for (int x = 1; x <= 4; x++) {
3
int hilf = augenzahlen[x];
4
int y = x - 1;
5
while (y >= 0 && augenzahlen[y] > hilf) {
augenzahlen[y + 1] = augenzahlen[y];
6
7
y--;
8
}
augenzahlen[y + 1] = hilf;
9
10
}
11 }
// *** //
// *** //
Das Datenfeld augenzahlen habe die folgende Zahlenbelegung:
index
augenzahlen[index]
0
1
2
3
4
6 3 2 5 2
Veranschaulichen Sie die Sortierung der Augenzahlen, indem Sie jeweils die
Veränderungen des Arrays augenzahlen an den mit // *** // markierten Stellen
protokollieren.
( 8 Punkte )
2. INFORMATIKKLAUSUR
Name:
Informatik Eph IFG1/2 (GA)
Aufgabe 2:
Bearbeitungszeit: 90 min.
17.03.2014
 Seite 3 
Kniffel - Grafische Oberflächen
Für das Kniffelspiel existiere die folgende grafische Oberfläche (Klasse Gui).
a) Erläutern Sie, welche Datenfelder in der Klasse Gui enthalten sein müssen, um dem
Spieler das Eintragen eines Würfel-Ergebnisses in den Wertungsblock zu ermöglichen.
Erläutern Sie auf der Grundlage Ihrer Datenfelder umgangssprachlich, welche Aktionen
in der Ereignismethode des Buttons "eintragen" durchzuführen sind.
( 8 Punkte )
b) Drückt der Benutzer auf den Button "Gewinn auszahlen", so sollen die Gesamtpunkte
(Datenfeld gesamtpunkte) in Cent ausgezahlt werden.
Leider stehen dem Kniffelspiel nur
Münzen mit den Werten 1 €, 10 Cent
und 1 Cent zur Verfügung, so dass die
rechts abgebildete Ausgabe erscheint.
Implementieren Sie die EreignisMethode des Buttons
"Gewinn auszahlen":
public void jbGewinnAuszahlen_ActionPerformed(ActionEvent evt)
Hinweis: Mit dem Befehl JOptionPane.showMessage(this, "Hallo") wird
ein neues Nachrichten-Fenster mit dem Text "Hallo" geöffnet.
( 8 Punkte )
2. INFORMATIKKLAUSUR
Name:
Bearbeitungszeit: 90 min.
Informatik Eph IFG1/2 (GA)
Spielregeln
17.03.2014
 Seite 4 
[Quelle: http://de.wikipedia.org/wiki/Kniffel (letztes Abrufdatum: 05.03.2014)]
Jeder Spieler hat einen kleinen Zettel, auf dem er seine Ergebnisse eintragen muss.
Gewinner ist, wer am Ende die höchste Summe auf seinem Zettel erzielen kann.
Gespielt wird mit fünf Würfeln. Es wird reihum gewürfelt. In jeder Runde darf man bis
zu drei Mal hintereinander würfeln. Dabei darf man „passende“ Würfel zur Seite
legen und mit den verbleibenden weiter würfeln. Spätestens nach dem dritten Wurf
muss man sich für ein freies Feld auf dem Spielzettel entscheiden, welches nun mit
dem Ergebnis dieses Wurfes bewertet wird.
Auf dem Zettel werden folgende Eintragungen gezählt:
Oberer Block („drinnen“ oder Sammeln):
Wenn man beim Sammeln in der Summe mindestens 63 Punkte (beispielsweise für
jedes Feld drei Würfel) bekommen hat, gibt es einen Bonus von 35 Punkten (Jargon:
man „kommt raus“, „man liegt im Soll“).
Unterer Block („draußen“):
Wenn man ein Ergebnis in ein Feld einträgt, bei dem die Bedingung nicht erfüllt ist
(zum Beispiel wenn beim Feld Dreierpasch nicht drei Würfel gleich sind), dann wird
das Feld gestrichen oder die Punktzahl „0“ eingetragen.
Wenn man bereits einen Kniffel unter „Kniffel“ mit 50 Punkten eingetragen hat und
noch einen weiteren Kniffel erhält, dann kann dieser Kniffel in ein beliebiges freies
Feld unter „Andere Spiele“ eingetragen werden mit 100 Punkten, unter „Sammeln“
mit 100 + den zu zählenden Würfeln – wobei die 100 Punkte aber bei der
Berechnung des Bonus nicht mitgezählt werden.
Ist der Spielzettel voll, so ist das Spiel beendet und die Punkte vom Sammeln und
den anderen Spielen und eventuell der Bonus werden zusammengezählt. Es gewinnt
der Spieler mit den meisten Punkten.
2. INFORMATIKKLAUSUR
Name:
Bearbeitungszeit: 90 min.
Informatik Eph IFG1/2 (GA)
17.03.2014
 Seite 5 
Lösung:
Aufgabe 1:
Kniffel  Modellierung und Implementierung
a) Die Methode Wuerfel entspricht dem Konstruktor, d. h. die Methode sorgt dafür, dass
ein neues Objekt erzeugt wird.
Die Methode wuerfeln belegt das Datenfeld augenzahl mit einer Zufallszahl
zwischen 1 und 6.
Die Methode gibAugenzahl liefert die zuvor gewürfelte Augenzahl zurück, d. h., die
Methode ist die getter-Methode des Datenfeldes augenzahl.
Die Implementierung könnte wie folgt aussehen:
public class Wuerfel {
private int augenzahl;
public Wuerfel() {
augenzahl = 0;
}
public void wuerfeln() {
augenzahl = (int)(Math.random()*6+1);
}
public int getAugenzahl() {
return augenzahl;
}
}
b) Wichtig ist bei dieser Lösung, dass die Datenfelder an die Beziehungen zwischen den
Klassen geschrieben werden. Die Datenfelder zu den Grunddatentypen bleiben in den
Klassenboxen enthalten.
Spieler
- name: String
Wuerfelbecher
- becher
- augenzahlen: int[]
-
w1
w2
w3
w4
w5
Wuerfel
- augenzahl: int
c) Die erste Methode gibt das komplette Array mit allen Augenzahlen zurück.
Die zweite Methode gibt die Augenzahl eines einzelnen Würfels zurück - hier kann man
den Index angeben, welche Augenzahl zurückgegeben werden soll.
Die dritte Methode liefert die Augensumme aller Würfel als eine Zahl zurück.
d)
public void schuetteln() {
w1.wuerfeln();
w2.wuerfeln();
w3.wuerfeln();
w4.wuerfeln();
w5.wuerfeln();
augenzahlen[0] = w1.gibAugenzahl();
augenzahlen[1] = w2.gibAugenzahl();
augenzahlen[2] = w3.gibAugenzahl();
augenzahlen[3] = w4.gibAugenzahl();
augenzahlen[4] = w5.gibAugenzahl();
}
Name:
2. INFORMATIKKLAUSUR
17.03.2014
 Seite 6 
Bearbeitungszeit: 90 min.
Informatik Eph IFG1/2 (GA)
e) Die Äußere Schleife durchläuft alle möglichen Augenzahlen von 1 bis 6.
Die Innere Schleife durchläuft nun alle fünf Würfel und prüft, ob die Augenzahl des
jeweiligen Würfels die Zahl zeigt, welche durch die äußere Schleife vorgegeben ist. Ist
dies der Fall, so wird ein Zähler erhöht.
Nach Abschluss der inneren Schleife wird überprüft, ob der Zähler den Wert 3 hat, dies
würde bedeuten, dass insgesamt drei Würfel die Augenzahl zeigen, welche durch die
äußere Schleife vorgegeben ist.
Insgesamt überprüft die Methode deshalb, ob die fünf Würfel einen Dreierpasch
aufweisen.
f)
public boolean wuerfelSindKniffel() {
for (int i = 0; i < 4; i++) {
if (augenzahlen[i] != augenzahlen[i+1]) {
return false;
}
}
return true;
}
g)
public boolean wuerfelSindGrosseStrasse() {
sortiereWuerfel();
for (int i = 0; i < 4; i++) {
if (augenzahlen[i+1] != augenzahlen[i] + 1) {
return false;
}
}
return true;
}
h) Die Veränderung des Arrays augenzahlen gestaltet sich wie folgt:
Start:
Zeile 6
Zeile 9
Zeile 6
Zeile 6
Zeile 9
Zeile 6
Zeile 9
Zeile 6
Zeile 6
Zeile 6
Zeile 9
6
6
3
3
3
2
2
2
2
2
2
2
3
6
6
6
3
3
3
3
3
3
3
2
2
2
2
6
6
6
6
5
5
5
3
3
5
5
5
5
5
5
6
6
6
5
5
5
2
2
2
2
2
2
2
2
6
6
6
6
2. INFORMATIKKLAUSUR
Name:
Informatik Eph IFG1/2 (GA)
Aufgabe 2:
Bearbeitungszeit: 90 min.
17.03.2014
 Seite 7 
Kniffel - GrafischeOberfläche
a) Die Gui benötigt Datenfelder für jeden Eintrag des Wertungsblocks. Alle Datenfelder
könnten vom Typ int gewählt werden, wobei der Wert -1 bedeuten würde, dass der
Eintrag noch nicht gesetzt wurde, und somit eine Unterscheidung zu einem Null-Eintrag
möglich wäre.
Drückt der Anwender auf den Button "eintragen", so müsste zunächst überprüft werden,
welches Optionsfeld der Anwender gewählt hat. Ist keines gewählt, so sollte nichts
passieren. Andernfalls müsste bei den ersten sechs Optionsfeldern Die Anzahl der Würfel
bestimmt werden, die mit der gewählten Augenzahl übereinstimmen, und der
entsprechende Punktwert müsste im zugehörigen Datenfeld gesetzt werden.
Bei den unteren Optionsfeldern müsste über die entsprechenden Methoden
(wuerfelSind…) der Klasse Wuerfelbecher getestet werden, ob die Würfel das gewünschte
Ergebnis zeigen und entsprechend des Resultats müsste das zugehörige Datenfeld mit dem
zugehörigen Punktwert (z. B. 40 Punkte bei große Straße) gesetzt werden.
b) Eine mögliche Implementierung wäre die folgende:
public void jbGewinnAuszahlenActionPerformed(ActionEvent evt) {
String s = "";
while (gesamtpunkte >= 100) {
s = s + "1 €";
gesamtpunkte = gesamtpunkte - 100;
if (gesamtpunkte > 0) {
s = s + " + ";
}
}
while (gesamtpunkte >= 10) {
s = s + "10 Cent";
gesamtpunkte = gesamtpunkte - 10;
if (gesamtpunkte > 0) {
s = s + " + ";
}
}
while (gesamtpunkte >= 1) {
s = s + "1 Cent";
gesamtpunkte = gesamtpunkte - 1;
if (gesamtpunkte > 0) {
s = s + " + ";
}
}
JOptionPane.showMessageDialog(this,s);
}
Name:
Informatik Eph IFG1/2 (GA)
2. INFORMATIKKLAUSUR
17.03.2014
 Seite 8 
Bearbeitungszeit: 90 min.
Bewertungsbogen für ______________________________
Aufgabe 1: Kniffel  Modellierung und Implementierung
Die Schülerin/der Schüler...
max. Pkt.
a) erläutert die Funktion der Methoden
3
implementiert die Klasse vollständig
5
b) zeichnet das Implementationsdiagramm
2
verdeutlicht die Beziehungen
2
c) erläutert die Unterschiede der drei getter-Methoden
6
d) implementiert die Methode schuetteln
8
e) erläutert den Zweck der äußeren Schleife
2
erläutert den Zweck der inneren Schleife
2
beschreibt den Zweck der gesamten Methode
3
f) implementiert die Methode wuerfelSindKniffel
6
g) implementiert die Methode wuerfelSindGroßeStraße
6
h) veranschaulicht die Sortierung des Datenfeldes
8
Summe
53
Aufgabe 2: Kniffel - GrafischeOberfläche
Die Schülerin/der Schüler...
a) erläutert die Notwendigkeit der Datenfelder
erläutert die prinzipielle Vorgehensweise beim
Eintragen
b) implementiert die Ereignismethode
max. Pkt.
3
5
Summe
Gesamtsumme
in Prozent
erreichte Pkt.
erreichte Pkt.
8
16
69
100%
abschließende Bewertung: __________________________________________________

Documentos relacionados