summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog1/Prakt3/index.htm
blob: 367abf11ab5fee035f1d475478b8cf394c337355 (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
<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 3</title></head>

<body>

&nbsp;
<table border="1" cellspacing="0" width="100%">
<caption>&nbsp;</caption>

<tbody><tr>
<td bgcolor="#efefde" width="25%">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 bgcolor="#efefde" width="25%">
<center><font size="+4">3</font></center>
</td>
</tr>
</tbody></table>

<br>
<table border="1" width="100%">
<tbody><tr valign="top">
<td>Ziel:</td><td> Sie sollen den modularen Programmaufbau mit
Funktionen, die Simulation von Zufallsereignissen und einfache
Rekursion �ben.&nbsp;
</td>
</tr>
</tbody></table>

<br>
<table border="1" cellspacing="0" width="100%">
<tbody><tr>
<td>
<h3>
<b>1&nbsp;&nbsp;&nbsp; Verwenden einer einfachen Funktion</b></h3>

<ul>
<li>
Schreiben Sie eine Funktion, die die Uhrzeit als drei <b>
<font face="Courier New">integer</font></b>-Argumente �bernimmt (<b><font face="Courier New">hour</font></b>,
<b><font face="Courier New">minute</font></b>, <b><font face="Courier New">
second</font></b>) und die Anzahl der Sekunden seit 0 Uhr zur�ckgibt.</li>

<li>
Benutzen Sie diese Funktion, um die Zeitspanne in Sekunden zwischen zwei 
Zeitpunkten (am gleichen Tag) zu berechnen.</li>
</ul>
</td>
</tr>
</tbody></table>

<br>
<table border="1" cellspacing="0" width="100%">
<tbody><tr>
<td>
<h3>
<b>2&nbsp;&nbsp;&nbsp; Einfache Simulation und Analyse von Zufallsereignissen</b></h3>

<ul>
<li>
Schreiben Sie ein Programm, das simuliert, zwei W�rfel 6000mal
zu werfen.&nbsp;</li>

<li>
Erg�nzen Sie die Simulation um eine H�ufigkeitstabelle, die angibt,
wie oft die m�glichen Augenzahlen eines Wurfes (2 bis 12) gefallen sind.&nbsp;</li>
</ul>
</td>
</tr>
</tbody></table>

<br>

<table border="1" cellspacing="0" width="100%">
<tbody><tr>
<td>
<h3>
<b>3&nbsp;&nbsp;&nbsp; Vollkommene Zahlen&nbsp;</b></h3>

<ul>
<li>
Eine ganze Zahl wird eine <i>vollkommene Zahl</i> genannt, falls die Summe ihrer
Faktoren (also der Zahlen, durch die die Zahl ohne Rest teilbar ist) gleich der Zahl selbst
ist. Bei der Bildung der Summe wird die 1 eingeschlossen, aber nicht die Zahl
selbst. Zum Beispiel ist 6 eine vollkommene Zahl, denn es gilt 6 = 1 + 2 + 3.</li>

<li>
Schreiben Sie eine Funktion <b><font face="Courier New">isPerfect</font></b>,
die bestimmt, ob ihr Parameter <b><font face="Courier New">number</font></b> eine
vollkommene Zahl ist.</li>

<li>
Benutzen Sie diese Funktion in einem Programm, das alle vollkommenen Zahlen
zwischen 1 und 1000 bestimmt und ausgibt. Geben Sie die Faktoren jeder
vollkommenen Zahl mit aus, damit Ihr Ergebnis besser �berpr�ft werden kann.</li>

<li>
Fordern Sie die Rechenleistung Ihres Computers, indem Sie Zahlen testen, die
deutlich gr��er als 1000 sind.&nbsp;</li>
</ul>
</td>
</tr>
</tbody></table>



<br>
<table border="1" cellspacing="0" width="100%">
<tbody><tr>
<td>
  <b><h3>4&nbsp;&nbsp;&nbsp; Gr��ter gemeinsamer Teiler - rekursiv</h3></b>

<ul>
<li>
Der gr��te gemeinsame Teiler (greatest common divisor: gcd) zweier ganzer Zahlen 
x und y ist die gr��te ganze Zahl, die x und y ohne Rest teilt.</li>

<li>
Schreiben Sie eine rekursive Funktion <b> <font face="Courier New">gcd</font></b><font face="Times New Roman">, 
die </font>den gr��ten gemeinsamen Teiler von x und y zur�ckgibt. Nutzen Sie 
dabei folgende rekursive Beziehung:</li>

<li>
Falls y gleich 0 ist, dann ist <b> <font face="Courier New">gcd(x,y)</font></b> 
gleich <b> <font face="Courier New">x</font></b>.<br>
Sonst gilt: <b> <font face="Courier New">gcd(x,y)</font></b> ist <b> <font face="Courier New">
gcd(y,x%y)</font></b>.</li>

<li>
Testen Sie Ihre Funktion, indem Sie Werte f�r x und y einlesen und den 
zugeh�rigen gr��ten gemeinsamen Teiler ausgeben.</li>

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

<br>
<table border="1" cellspacing="0" width="100%">
<tbody><tr>
<td>
  <b><h3>5&nbsp;&nbsp;&nbsp; �gyptische Multiplikation (fakultativ)</h3></b>

<ul>
<li>
Schreiben Sie eine Funktion <font face="Courier New"><b>multIterative</b></font>,
die das Produkt zweier ganzer Zahlen a und b auf folgende Weise berechnet.<br>
Ausgehend von den der Funktion �bergebenen Werten a und b wird eine
Reihe von gleichartigen Schritten durchgef�hrt: 
<ul>
<li>
Falls b ungeradzahlig ist, wird der Wert von a zur Variablen 
<font face="Courier New"><b>product</b></font>
addiert.
</li>
<li> 
Danach wird der Wert von
a verdoppelt und der Wert von b halbiert (ohne Rest und
ohne Rundung). 
</li>
</ul>
Diese beiden Schritte werden solange wiederholt, bis b durch die fortlaufende Halbierung den Wert 0
annimmt. Die in <font face="Courier New"><b>product</b></font> gebildete Summe
ist dann gleich dem Produkt von a
und b. </li>

<li>
Hinweis: Realisieren Sie die Verdoppelung von a durch den Operator zur bitweisen
Linksverschiebung <b><font face="Courier New">&lt;&lt;</font></b> und die Halbierung von b ohne Rest und Rundung durch
den Operator zur bitweisen Rechtsverschiebung <b><font face="Courier New">&gt;&gt;</font></b>. </li>

<li>
Schreiben Sie ein Programm, das zwei ganze Zahlen von der Tastatur einliest und
das mit der Funktion <font face="Courier New"><b>multIterative</b></font>
berechnete Produkt ausgibt. </li>

<li>
Schreiben Sie eine zweite Funktion <font face="Courier New"><b>multRecursive</b></font>,
die die oben beschriebene Verdopplung, Halbierung und Summation durch rekursive
Aufrufe von sich selbst realisiert. Testen Sie auch diese Funktion mit von der
Tastatur eingegebenen Werten. </li>

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

</body></html>