diff options
Diffstat (limited to 'Bachelor/Prog1/Prakt4/index.htm')
| -rw-r--r-- | Bachelor/Prog1/Prakt4/index.htm | 253 |
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>
+
+
+<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>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 üben sowie
+ grundlegende Sortierverfahren kennen.
+</td>
+</tr>
+</table>
+
+<br>
+<table BORDER CELLSPACING=0 WIDTH="100%" >
+<tr>
+<td>
+<h3>
+<b>1 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 Sortierverfahren 'Direkte Auswahl (Selection Sort)' und
+'Direktes Einfügen </b>
+<b>(Insertion Sort)' </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 Verteilung der Augenzahlen bei Würfen mit vielen
+Würfeln </b></h3>
+
+<ul>
+<li>
+Entwickeln Sie ein Programm, das es dem Benutzer ermöglicht, Würfe mit mehreren Würfeln zu simulieren. Das Simulationsergebnis
+ist dann eine Gesamt-Augenzahl, die sich als Summe der Augenzahlen der
+einzelnen Würfel ergibt. Werden viele dieser Würfe mit mehreren
+Würfeln durchgeführt, ergibt sich eine Häufigkeitsverteilung
+für die Gesamt-Augenzahlen. Diese Häufigkeitsverteilung soll
+im Konsolenfenster in Form einer Tabelle und als einfache Übersichtsgraphik
+ausgegeben werden.</li>
+
+<li>
+Zu Beginn sollen vom Benutzer folgende Eingaben abgefragt werden:</li>
+
+<ul>
+<li>
+Die Zahl der Würfel, die er bei einem Wurf werfen möchte.</li>
+
+<li>
+Die Zahl der Würfe, die er mit der gewählten Anzahl von Würfeln
+durchführen möchte.</li>
+</ul>
+
+<li>
+Die Häufigkeitsverteilung für die erzielten Gesamt-Augenzahlen
+soll auf zwei verschiedene Arten dargestellt werden:</li>
+
+<ul>
+<li>
+Tabellarische Darstellung als Gegenüberstellung von erzielter Augenzahl
+und zugehöriger Häufigkeit. Dabei sollen sowohl die Absolutwerte
+der Häufigkeit als auch normierte Werte, die sich bei Division der
+Absolutwerte durch die Gesamtzahl der Würfe ergeben, ausgegeben werden.</li>
+
+<li>
+Graphische Darstellung als ein einfaches (um 90 Grad gekipptes) Säulendiagramm
+(z.B. entsprechende Anzahl von *).</li>
+</ul>
+
+<li>
+Strukturieren Sie Ihr Programm mit Hilfe von geeignet gewählten Funktionen
+für einzelne Teilaufgaben. </li>
+</ul>
+</td>
+</tr>
+</table>
+
+<br>
+<TABLE BORDER CELLSPACING=0 width="100%">
+<tr>
+<td>
+ <b><h3>4 Galton-Brett (fakultativ)</h3></b>
+ Entwickeln Sie ein Programm, das ein "Galton-Brett" 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:"Letter Gothic"; font-weight:700">
+ <font face="Courier New">rand</font></span><span style="font-family:"Letter Gothic""> </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>
+ </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 |
