summaryrefslogtreecommitdiffstats
path: root/Bachelor/Prog1/Prakt3/index.htm
diff options
context:
space:
mode:
Diffstat (limited to 'Bachelor/Prog1/Prakt3/index.htm')
-rw-r--r--Bachelor/Prog1/Prakt3/index.htm197
1 files changed, 197 insertions, 0 deletions
diff --git a/Bachelor/Prog1/Prakt3/index.htm b/Bachelor/Prog1/Prakt3/index.htm
new file mode 100644
index 0000000..367abf1
--- /dev/null
+++ b/Bachelor/Prog1/Prakt3/index.htm
@@ -0,0 +1,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> \ No newline at end of file