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: __________________________________________________