diff options
Diffstat (limited to 'Bachelor/Prog2/Prakt1/index.htm')
| -rw-r--r-- | Bachelor/Prog2/Prakt1/index.htm | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/Bachelor/Prog2/Prakt1/index.htm b/Bachelor/Prog2/Prakt1/index.htm new file mode 100644 index 0000000..4f896eb --- /dev/null +++ b/Bachelor/Prog2/Prakt1/index.htm @@ -0,0 +1,186 @@ +<html><head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="H.P.Weber">
+ <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+ <title>Praktikum 1</title></head>
+<body>
+
+<table border="1" cellspacing="0" width="100%">
+<caption> </caption>
+
+<tbody><tr>
+<td bgcolor="#efefde" width="25%">FH Darmstadt
+<br>FB Informatik
+<br>Prof.Dr. H.P.Weber</td>
+
+<td>
+<center><font size="+3">Programmieren II</font>
+<br><font size="+3">Praktikum</font></center>
+</td>
+
+<td bgcolor="#efefde" width="25%">
+<center><font size="+4">1</font></center>
+</td>
+</tr>
+</tbody></table>
+
+<br>
+
+<table border="1" width="100%">
+<tbody><tr valign="top">
+<td>Ziel:</td><td>
+Sie sollen die in Programmieren I erlernten Sprachelemente von C++
+(insbesondere Klassendefinition und Überladen von Operatoren) anwenden können.
+</td>
+</tr>
+</tbody></table>
+
+<br>
+<br>
+
+<table border="1" cellspacing="0" width="100%">
+<tbody><tr valign="top">
+<td>
+<h3><b>1 MasterMind-Spiel</b></h3>
+Realisieren Sie eine objektorientierte Version des in den 70er-Jahren
+des letzten Jahrhunderts beliebten Spieles
+<i>MasterMind</i>.
+<ul>
+<li>
+In der Version für diese Aufgabe 'denkt sich' der Computer eine
+vierstellige Zahl aus den Ziffern 1 bis 6 (Methode <b><font face="Courier New">
+makeDigitsToGuess</font></b> im Klassendiagramm unten). Der Mensch rät sie. Jeden
+Rateversuch bewertet der Computer, indem er angibt, wieviele Ziffern an der richtigen Stelle
+genannt worden sind (<b><font face="Courier New">locationRight</font></b>) und wieviele sonst noch richtig genannt wurden, ohne
+an der richtigen Stelle zu stehen (<b><font face="Courier New">locationWrong</font></b>).
+</li>
+<li>
+Nehmen wir einmal an, der Computer hat sich die Zahl 1434 ausgedacht.
+Ein Dialog könnte dann so aussehen:
+<br>Mensch rät: <font color="#3366ff">3654 </font>Computer-Antwort:
+<font color="#3366ff">1
+an der richtigen Stelle; sonst 1 richtig</font>
+<br>Mensch rät: <font color="#3366ff">4444 </font>Computer-Antwort:
+<font color="#3366ff">2
+an der richtigen Stelle; sonst 0 richtig</font>
+</li>
+<li>
+Neben der Standardvariante, bei der der Computer eine zu ratende Zahl
+vorgibt, soll auch ein Testmodus möglich sein, bei dem vom Tester
+eine beliebige vierstellige Zahl aus den Ziffern 1 bis 6 eingegeben werden
+kann, die dann zu 'raten' ist.
+
+Überlegen Sie sich <u>vor</u> der Realisierung Ihrer Lösung
+eine Reihe von Testfällen mit den zugehörigen Computer-Antworten.
+Welche Fälle sind besonders kritisch? Berücksichtigen Sie bei
+der Implementierung Ihrer Lösung auch diese kritischen Testfälle.
+</li>
+</ul>
+</td>
+</tr>
+<tr>
+<td>
+<ul>
+<li>
+Realisieren Sie anhand des folgenden Klassendiagramms eine Klasse
+<font face="Courier New"><b>MastermindDigits</b></font>, die die oben geschilderten
+Anforderungen erfüllt (achten Sie dabei auch auf möglichst weitgehende
+'<b><font face="Courier New">const</font></b>-correctness').</li>
+<li>
+Der (Konvertierungs-)Konstruktor erzeugt
+ein dynamisches int-Array <b><font face="Courier New">digits</font></b>, dessen Elemente die einzelnen Ziffern der
+vierstelligen int-Zahl enthalten. Er übernimmt diese int-Zahl als Parameter und
+speichert die einzelnen Ziffern der Zahl in die Elemente von <b><font face="Courier New">digits</font></b>.</li>
+<li>
+ Realisieren Sie außerdem die drei weiteren
+Methoden/Operatoren, die Bestandteil jeder Klasse sein sollten, deren Objekte
+Zeiger auf dynamisch zugewiesenen Speicher enthalten. (Sie sind im
+ Klassendiagramm unten nicht aufgeführt!) Dies sollen aber die
+einzigen Ergänzungen der öffentlichen Schnittstelle sein.<br>
+</li>
+<li>
+Schreiben Sie ein <b>Anwendungsprogramm</b>, das den oben beschriebenen
+Spielablauf und den Testmodus als Konsolenanwendung realisiert. Das Anwendungsprogramm
+soll mit nur einem <font face="Courier New"><b>MastermindDigits</b></font>-Objekt
+arbeiten, von dem aus die Methoden der Klasse aufgerufen werden. Die
+Nutzereingabe und der Vergleich soll daher mit int-Zahlen und den entsprechenden
+Typ-Konvertierungen der <font face="Courier New"><b>MastermindDigits</b></font>-Klasse
+arbeiten.</li>
+</ul>
+</td>
+</tr>
+
+<tr>
+<td height="240" width="579">
+<table align="center" bgcolor="#efefde" border="1" cols="1">
+<tbody><tr>
+<td>
+<center><b><font face="Courier New">MastermindDigits</font></b></center>
+</td>
+</tr>
+<tr>
+<td><b><font face="Courier New">-digits: int*</font></b></td>
+</tr>
+<tr>
+<td>
+<b><font face="Courier New">
++MastermindDigits(int)<br>
++makeDigitsToGuess(): void<br>
++locationRight(MastermindDigits&): int<br>
++locationWrong(MastermindDigits): int<br>
++operator int()
+</font></b> </td>
+</tr>
+</tbody></table>
+</td>
+</tr>
+</tbody></table>
+
+<br>
+<br>
+<br>
+<br>
+
+<table border="1" cellspacing="0" width="100%">
+<tbody><tr>
+<td>
+<h3>
+<b>2 Lösungsalgorithmus für MasterMind-Spiel (fakultativ)</b></h3>
+
+<table width="100%">
+<tbody><tr valign="top">
+<td><font color="#000000">In Aufgabe 1 wird das Mastermind-Spiel in der
+Form realisiert, dass ein menschlicher Benutzer eine vom Computer ausgedachte
+Zahl rät. Jetzt soll der Computer eine Zahl raten, die sich der menschliche
+Benutzer ausgedacht hat.
+<ul>
+<li>
+Versehen Sie Ihre Lösung mit
+einer Konsolen-Ausgabe und -Eingabe, über die ihr Programm seinen Tip ausgibt
+und ein menschlicher Gegenspieler die Zahl der Ziffern an der richtigen
+Stelle und die sonst noch richtigen Ziffern eingeben kann.
+</li>
+<li>
+Wieviele Versuche benötigt Ihr Programm im Mittel, um eine Zahl zu raten?
+Um Ihre Lösung besser testen zu können, lassen Sie den Computer auch die Rolle
+des Benutzers übernehmen: Er denkt sich eine Zahl aus, die er dann zu erraten
+versucht. Bestimmen Sie, wieviele Versuche hierbei im Mittel bei z.B. 10000
+Spielen gebraucht werden und wieviele Versuche ihr Programm dabei maximal
+braucht.</li>
+<li>
+ Anzustreben ist eine Lösung, die jedes Spiel gewinnt, d.h. mit maximal acht
+ Versuchen wird jede Zahl (mit vier Ziffern aus sechs möglichen) ermittelt, die sich der
+ menschliche Gegenspieler (oder der Rechner selbst) ausdenkt.
+</li>
+</ul>
+
+
+ </font>
+
+
+</td></tr></tbody></table>
+
+
+
+<br>
+</td></tr></tbody></table></body></html>
\ No newline at end of file |
