summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog1/Prakt4/index.htm
blob: 6989787b138cacb7f3b201ad2ad575fdb43e13bb (plain)
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
250
251
252
253
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Praktikum 4</title>
</head>

<body>

&nbsp;
<table BORDER CELLSPACING=0 WIDTH="100%" >
<caption>&nbsp;</caption>

<tr>
<td WIDTH="25%" BGCOLOR="#EFEFDE">FH Darmstadt&nbsp;
<br>FB Informatik&nbsp;
<br>Prof.Dr. H.P.Weber</td>

<td>
<center><font size="+3">Programmieren I&nbsp;</font>
<br><font size=+3>Praktikum</font></center>
</td>

<td WIDTH="25%" BGCOLOR="#EFEFDE">
<center><font size=+4>4</font></center>
</td>
</tr>
</table>

<br>
<table border WIDTH="100%" >
<tr VALIGN=TOP>
<td>Ziel:</td><td>
 Sie sollen die Verwendung von Arrays, Funktionen und Rekursion &uuml;ben sowie
 grundlegende Sortierverfahren kennen.&nbsp;
</td>
</tr>
</table>

<br>
<table BORDER CELLSPACING=0 WIDTH="100%" >
<tr>
<td>
<h3>
<b>1&nbsp;&nbsp;&nbsp; Analyse von Craps</b></h3>

<ul>
<li>
Schreiben Sie ein Programm, das 1000000-mal das W�rfelspiel Craps simuliert.
Ihr Programm soll folgende Fragen beantworten:</li>
<ul>
<li>
Wieviele Spiele werden gewonnen beim ersten Wurf, beim zweiten Wurf,
...(usw)..., beim 20.
Wurf und nach dem 20.Wurf?</li>

<li>
Wieviele Spiele werden verloren beim ersten Wurf, beim zweiten Wurf,
...(usw)..., beim 20.
Wurf und nach dem 20.Wurf?</li>

<li>
Wie gro� sind die Chancen Craps zu gewinnen? (Sie sollten herausfinden, dass
Craps eines der fairsten in Spielkasinos gespielten Spiele ist. Was bedeutet
diese Aussage?)</li>

<li>
Wie lang dauert ein Craps-Spiel im Durchschnitt?</li>

<li>
Erh�hen sich die Gewinnchancen mit der Dauer eines Craps-Spieles?</li>
</ul>
</ul>
</td>
</tr>
</table>

<br>
<table BORDER="1" CELLSPACING=0 WIDTH="100%" >
<tr>
<td>
<h3>
<b>2&nbsp;&nbsp;&nbsp; Sortierverfahren 'Direkte Auswahl (Selection Sort)' und
'Direktes Einf�gen </b>
<b>(Insertion Sort)'&nbsp;</b></h3>

<ul>
<li>
Das Sortierverfahren 'Direkte Auswahl' durchsucht ein unsortiertes Array nach dem kleinsten
Element in dem Array. Danach wird das kleinste Element mit dem ersten Element
des Arrays ausgetauscht. Dieser Prozess wird f�r das unsortierte Teilarray, das mit dem
zweiten Element des Arrays beginnt, wiederholt. Jeder derartige Durchlauf durch
das Array bewirkt, dass ein weiteres Element an die Stelle kommt, an die es
geh�rt. Sobald das unsortierte Teilarray nur noch ein Element enth�lt, ist das Array
sortiert.</li>

<li>
Schreiben Sie eine iterative Funktion <b><font face="Courier New">selectionSort</font></b>
f�r diesen Algorithmus.</li>

<li>
Das Sortierverfahren 'Direktes Einf�gen' fasst das erste Element eines
unsortierten Arrays als bereits sortiertes Teilarray auf, in das sukzessive die
weiteren Elemente eingef�gt werden. Bei diesem Einf�geprozess muss das immer
gr��er werdende Teilarray zu jedem Zeitpunkt sortiert bleiben. Jedes weitere
Element muss also an die richtige Stelle eingef�gt werden. Damit dies m�glich
ist, m�ssen alle Elemente, die gr��er sind als das Einf�geelement, jeweils
um einen Platz verschoben werden. Sobald das sortierte Teilarray alle Elemente enth�lt, ist das Array
sortiert.</li>

<li>
Schreiben Sie eine iterative Funktion <b><font face="Courier New">insertionSort</font></b>
f�r diesen Algorithmus.</li>

</ul>
</td>
</tr>
</table>

<br>
<table BORDER CELLSPACING=0 WIDTH="100%" >
<tr>
<td>
<h3><b>3&nbsp;&nbsp;&nbsp; Verteilung der Augenzahlen bei W�rfen mit vielen
W�rfeln&nbsp;</b></h3>

<ul>
<li>
Entwickeln Sie ein Programm, das es dem Benutzer erm&ouml;glicht, W�rfe mit mehreren W&uuml;rfeln zu simulieren. Das Simulationsergebnis
ist dann eine Gesamt-Augenzahl, die sich als Summe der Augenzahlen der
einzelnen W&uuml;rfel ergibt. Werden viele dieser W&uuml;rfe mit mehreren
W&uuml;rfeln durchgef&uuml;hrt, ergibt sich eine H&auml;ufigkeitsverteilung
f&uuml;r die Gesamt-Augenzahlen. Diese H&auml;ufigkeitsverteilung soll
im Konsolenfenster in Form einer Tabelle und als einfache &Uuml;bersichtsgraphik
ausgegeben werden.</li>

<li>
Zu Beginn sollen vom Benutzer folgende Eingaben abgefragt werden:</li>

<ul>
<li>
Die Zahl der W&uuml;rfel, die er bei einem Wurf werfen m&ouml;chte.</li>

<li>
Die Zahl der W&uuml;rfe, die er mit der gew&auml;hlten Anzahl von W&uuml;rfeln
durchf&uuml;hren m&ouml;chte.</li>
</ul>

<li>
Die H&auml;ufigkeitsverteilung f&uuml;r die erzielten Gesamt-Augenzahlen
soll auf zwei verschiedene Arten dargestellt werden:</li>

<ul>
<li>
Tabellarische Darstellung als Gegen&uuml;berstellung von erzielter Augenzahl
und zugeh&ouml;riger H&auml;ufigkeit. Dabei sollen sowohl die Absolutwerte
der H&auml;ufigkeit als auch normierte Werte, die sich bei Division der
Absolutwerte durch die Gesamtzahl der W&uuml;rfe ergeben, ausgegeben werden.</li>

<li>
Graphische Darstellung als ein einfaches (um 90 Grad gekipptes) S&auml;ulendiagramm
(z.B. entsprechende Anzahl von *).</li>
</ul>

<li>
Strukturieren Sie Ihr Programm mit Hilfe von geeignet gew&auml;hlten Funktionen
f&uuml;r einzelne Teilaufgaben.&nbsp;</li>
</ul>
</td>
</tr>
</table>

<br>
<TABLE BORDER CELLSPACING=0 width="100%">
<tr>
<td>
  <b><h3>4&nbsp;&nbsp;&nbsp; Galton-Brett (fakultativ)</h3></b>
    Entwickeln Sie ein Programm, das ein &quot;Galton-Brett&quot; und dessen Benutzung simuliert. Das
    Simulationsergebnis soll im Konsolenfenster in Form von Zahlenkolonnen und als einfache �bersichtsgraphik ausgegeben werden.
    <br><h4>Funktionsprinzip des Galton-Bretts</h4>
      <TABLE>
        <TBODY>
        <TR vAlign=top>
          
            <TD>
            <p class="MsoNormal">Mit Hilfe eines Galton-Bretts (nach Sir Francis
            Galton, 1822-1911) lassen sich wichtige Verteilungen aus der
            Statistik experimentell erzeugen. Dabei laufen auf einem geneigt
            aufgestellten Nagelbrett Kugeln durch die Nagelreihen. In Sammelbeh�ltern am Fu� des Nagelbretts werden die
            Kugeln aufgefangen. Sind die N�gel im Brett so angeordnet, da�
            der Abstand zweier nebeneinander liegender N�gel durch den dar�berliegenden
            Nagel genau halbiert wird, so ist als Verteilung der Kugeln in den
            Sammelbeh�ltern die Normalverteilung (Gau�sche Glockenkurve) zu
            erwarten.</TD>
          <TD width=250 bgcolor="#EFEFDE">
            <div style="mso-element:frame;mso-element-frame-hspace:7.05pt;mso-element-wrap:
auto;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:page;
mso-element-left:368.95pt;mso-element-top:2.05pt;mso-height-rule:exactly">
              <p class="MsoNormal"><img src="index.1.gif" v:shapes="_x0000_i1025" width="192" height="138">
            </div>
          </TD></TR></TBODY></TABLE>
      <h4>Darstellung des Simulationsergebnisses</h4>
      <p class="MsoNormal">Das Ergebnis der Simulation soll durch Angabe der
      Anzahl von Kugeln, die in 25 Sammelbeh�ltern jeweils aufgefangen werden,
      ausgegeben werden (Funktion <b><font face="Courier New">textOutput</font></b>).
      Dabei sollen sowohl die Absolutwerte als auch normierte Werte, die sich
      bei Division der Absolutwerte durch die Gesamtanzahl der Kugeln ergeben,
      ausgegeben werden. Zus�tzlich soll durch eine Funktion <b>
      <font face="Courier New">graphicalOutput</font></b><i> </i>ein
      einfaches (um 90 Grad gekipptes) S�ulendiagramm (z.B. entsprechende
      Anzahl von <span style="font-family:Courier">*</span><span style="mso-bidi-font-family:Arial">)
      im Konsolenfenster ausgegeben werden k�nnen.<o:p>
      </o:p>
      </span></p>
  <p class="MsoNormal">Die Bedienung des Programms erfolgt im
      Konsolenfenster durch Angabe der gew�nschten Anzahl von Kugeln und der
      gew�nschten Darstellungsart des Ergebnisses. Wenn Sie wollen, k�nnen Sie
  nat�rlich auch die Anzahl der Sammelbeh�lter nicht auf genau 25
  beschr�nken, sondern vom Benutzer des Programms vorgeben lassen.</p>
      <div style="border:none;border-top:solid windowtext .75pt;padding:1.0pt 0cm 0cm 0cm">
        <h4>Implementierungshinweis</h4>
      </div>
      <TABLE>
		<TBODY>
        <TR vAlign=top>

      <TD><p class="MsoNormal" style="tab-stops:134.7pt">Es ist Zufall, ob eine
      Kugel an einem Nagel nach links oder rechts rollt. Deshalb sollen
      Zufallszahlen, die die Funktion 
      <span style="font-family:&quot;Letter Gothic&quot;; font-weight:700">
      <font face="Courier New">rand</font></span><span style="font-family:&quot;Letter Gothic&quot;"> </span>liefert, verwendet werden. Bedenken Sie, dass an jedem Nagel (d.h. auf
      jeder Ebene) nur eine Entscheidung (links oder rechts) zu
      treffen ist. Mit jeder Ebene, die die Kugel passiert, wird dadurch die
      Menge der noch erreichbaren Sammelbeh�lter sukzessive eingeschr�nkt.
      Dieses Verhalten soll in eine <b> rekursive</b> Funktion abgebildet werden.</p>
        &nbsp;</TD>
      <TD width=250 bgcolor="#EFEFDE">
            <div style="mso-element:frame;mso-element-frame-hspace:7.05pt;mso-element-wrap:
auto;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:page;
mso-element-left:368.95pt;mso-element-top:2.05pt;mso-height-rule:exactly">
              <p class="MsoNormal">
              <img src="index.2.gif" v:shapes="_x0000_i1025" width="192" height="143">
            </div>
          </TD></TR></TBODY></TABLE>
</td>
</tr>
</TABLE>

</body>

</html>