1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
|
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Praktikum 6</title>
</head>
<body>
<table BORDER CELLSPACING=0 WIDTH="100%" >
<caption> </caption>
<tr>
<td WIDTH="25%" BGCOLOR="#EFEFDE">FH Darmstadt
<br>FB Informatik
<br>Prof.Dr. H.P.Weber</td>
<td>
<center><font size="+3">Programmieren I </font>
<br><font size=+3>Praktikum</font></center>
</td>
<td WIDTH="25%" BGCOLOR="#EFEFDE">
<center><font size=+4>6</font></center>
</td>
</tr>
</table>
<br>
<table border WIDTH="100%" >
<tr VALIGN=TOP>
<td>Ziel:</td><td>
Sie sollen problemangepasste Datentypen als Klassen entwerfen und ein
Anwendungsprogramm als System aus Objekten implementieren können.
</td>
</tr>
</table>
<br>
<table BORDER="1" CELLSPACING=0 WIDTH="100%" height="608" >
<tr>
<td COLSPAN = "2" height="60">
<h3 ALIGN = "left">
<b>1 Erw�rmen eines Tiefk�hlgerichts in einer Mikrowelle
</b>
</h3>
Realisieren Sie eine Klasse <i>Microwave</i> sowie eine Klasse <i>FrozenMeal</i>:
</td>
</tr>
<tr>
<td WIDTH="370" height="269">
<table BORDER COLS=1 BGCOLOR="#EFEFDE" ALIGN="center">
<tr>
<td>
<center><b>Microwave</b></center>
</td>
</tr>
<tr>
<td>- power : int
<br>- volume : int
<br>- period : double</td>
</tr>
<tr>
<td><i>Constructor</i>(a certain volume)
<br><i>Destructor</i>()
<br>+ morePower() : void
<br>+ lessPower() : void
<br>+ setPeriod(a certain period) : void
<br>+ heatMeal(a certain FrozenMeal) : void
<br>+ getPower() : int
<br>+ getPeriod() : double</td>
</tr>
</table>
</td>
<td WIDTH="400" height="269">
<table BORDER="1" COLS=1 BGCOLOR="#EFEFDE" ALIGN="center">
<tr>
<td>
<center><b>FrozenMeal</b></center>
</td>
</tr>
<tr>
<td>- name : char* (or string)
<br>- volume : int
<br>- temperature : double
<br>- coeffizient : double</td>
</tr>
<tr>
<td><i>Constructor</i>(a certain name, a certain volume)
<br><i>Destructor</i>()
<br>+ changeTemperature(a certain temperature) : void
<br>+ getName() : char* (or string)
<br>+ getVolume() : int
<br>+ getCoeffizient() : double
<br>+ getTemperature() : double</td>
</tr>
</table>
</td>
</tr>
<td COLSPAN = "2" height="267">
<br>
Besonderheiten der Methoden sind:
<ul>
<li>
Durch morePower() und lessPower() soll die Leistung im Bereich
von minimal 200 W bis maximal 1000 W in Schritten von 200 W geändert
werden.</li>
<li>
Das Erwärmen eines Gerichtes wird durch folgenden Zusammenhang beschrieben:<br>
Temperatur = Anfangstemperatur + ( Koeffizient * Leistung * Zeitdauer
/ Volumen)</li>
<li>
Als Erwärmungskoeffizient soll der Wert für Wasser verwendet
werden: Koeffizient = 0.24 cm<sup>3</sup> * Grad / Ws.</li>
<li>
Achten Sie auf die Einheiten: am einfachsten ist es, wenn Volumen von Mikrowelle
und Tiefk�hlgericht in cm<sup>3</sup> vom Anwendungsprogramm �bernommen
werden.</li>
<li>
Beim Erzeugen soll ein Tiefkühlgericht eine Temperatur von -18 Grad
haben.</li>
<li>
Die Destruktoren sollen den Endzustand des jeweiligen Objektes am Bildschirm
ausgeben.</li>
<li>
Keine Methode der beiden Klassen liest irgendwelche Daten von Tastatur ein oder
gibt etwas auf den Bildschirm aus. Daf�r ist allein das Anwendungsprogramm
zust�ndig.</li>
</ul>
<p>Realisieren Sie zum Testen Ihrer Klassen ein <b>Anwendungsprogramm</b>, das mit verschiedenen
Tiefkühlgerichten und einer geeigneten Mikrowelle die vorhandenen Methoden benutzt.
</td>
</table>
<br>
<table BORDER="1" CELLSPACING=0 WIDTH="100%" >
<tr>
<td>
<h3>
<b>2 Tic-Tac-Toe</b></h3>
<p>Entwickeln Sie einen Datentyp <font face="Courier New"><b>TicTacToe</b></font>,
der es erm�glicht ein vollst�ndiges Programm zum Spielen von Tic-Tac-Toe zu
schreiben.
<ul>
<li>Die Klasse <font face="Courier New"><b>TicTacToe</b></font> soll als <b><font face="Courier New">private</font></b>
Attribut
ein <b><font face="Courier New">char</font></b>-Array mit neun Elementen enthalten.
</li>
<li>
Der Konstruktor soll ein leeres Spielfeld initialisieren.
</li>
<li>
Die <font face="Courier New"><b>public</b></font> Methode <font face="Courier New"><b>playOneGame</b></font>
soll den Ablauf eines Tic-Tac-Toe-Spieles realisieren. Dabei soll sie
verschiedene <b><font face="Courier New">private</font></b> Methoden aufrufen,
die die verschiedenen Teilaufgaben w�hrend des Spielablaufs (Eingaben,
Ausgaben, Ermitteln eines Siegers, Realisierung einer Strategie f�r die
Computerz�ge) erledigen.
</li>
<li>
Das Spiel soll f�r zwei Spieler realisiert werden, wobei der Computer einen der
beiden Spieler spielt. Der menschliche Spieler soll aussuchen k�nnen, ob er
erster oder zweiter Spieler ist.Wenn der erste
Spieler zieht, soll ein <b><font face="Courier New">X</font></b> in das
entsprechende K�stchen gesetzt werden, wenn der zweite Spieler zieht, soll ein <b><font face="Courier New">O</font></b>
in das entsprechende K�stchen gesetzt werden. Es darf nur in ein leeres
K�stchen gezogen werden.
</li>
<li>
Nach jedem Zug soll bestimmt werden, ob ein Spieler gewonnen hat oder ob das
Spiel unentschieden endete.
</li>
</ul>
</td>
</tr>
</table>
<br>
<table BORDER="1" CELLSPACING=0 WIDTH="100%" >
<tr>
<td>
<h3>
<b>3 Gro�e Integer-Zahlen (fakultativ)</b></h3>
<p>Entwickeln Sie einen Datentyp <font face="Courier New"><b>Integer40</b></font>,
der ein Array mit 40 Elementen benutzt, um ganze Zahlen mit bis zu 40 Dezimalstellen zu
speichern.
<ul>
<li>Implemetieren Sie die Methoden <b><font face="Courier New">read</font></b>,
<b><font face="Courier New">write</font></b>, <font face="Courier New"><b>add</b></font>,
<font face="Courier New"><b>subtract</b></font>.
</li>
<li>
F�r den Vergleich von <font face="Courier New"><b>Integer40</b></font>-Objekten
sollen die Methoden <font face="Courier New"><b>isEqual</b></font>, <font face="Courier New"><b>isNotEqual</b></font>,
<font face="Courier New"><b>isGreaterThan</b></font>, <font face="Courier New"><b>
isSmallerThan</b></font>,
<font face="Courier New"><b>isGreaterOrEqual</b></font>,
<font face="Courier New"><b>isSmallerOrEqual</b></font>
zur Verf�gung stehen. Jede dieser Methoden ist eine Pr�dikat-Funktion, die <font face="Courier New"><b>true</b></font>
zur�ckgibt, wenn die entsprechende Beziehung zwischen zwei Objekten stimmt und <font face="Courier New"><b>false</b></font>,
wenn sie nicht stimmt. Realisieren Sie au�erdem eine Pr�dikat-Funktion <font face="Courier New"><b>
isZero</b></font>.
</li>
</ul>
<p>Testen Sie Ihre Klasse in einem <b>Anwendungsprogramm</b>, das die
vorhandenen Operationen mit geeignet gew�hlten <font face="Courier New"><b>Integer40</b></font>-Objekten
ausf�hrt.
</td>
</tr>
</table>
<br>
<table BORDER="1" CELLSPACING=0 WIDTH="100%" >
<tr>
<td>
<h3>
4<b> �bungsklausur (fakultativ)</b></h3>
<p>
Als Klausurvorbereitung k�nnen Sie die <a href="PG1Klaus.htm">PG 1-Klausur vom letzten Jahr</a> bearbeiten.
Am besten halten Sie sich dabei auch schon an die <a href="Hinweise.pdf">allgemeinen Hinweise</a>, die Sie
bei der Klausur am 10.02.05 beachten m�ssen.</table>
<br>
</body>
</html>
|