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