Gymnasium Löbau/Vertiefungsklasse 2013/Wiederholung: Datentypen und Programmstrukturen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</language>
An einfachen Problemstellungen wollen wir ausgewählte Datentypen und Programmstrukturen in JavaScript wiederholen.
<code id="5b82c1c29711d" hidden>
function runden(x, n) {
return Math.round(x * Math.pow(10, n)) / Math.pow(10, n);
}
function intKorrekt(z, min, max) {
var korrekt = false;
var i = min;
do {
korrekt = (z == i);
i++;
}
while (i <= max && !korrekt);
return korrekt;
}
function randomKorrekt(z, min, max) {
var korrekt = false;
for (var i = 1; i <= 100; i++)
korrekt = intKorrekt(z, min, max);
return korrekt;
}
</code>
== Fakultät einer natürlichen Zahl ==
Die Fakultät einer natürlichen Zahl berechnet sich aus:
<blockquote><math>n! = 1 \cdot 2 \cdot 3 \cdot ... \cdot n</math></blockquote>
Implementiere diese Bildungsvorschrift mit einer Funktion und teste diese mit (kleinen) Argumenten.
<code id="5b82646eb3149">
function fakultaet(n) {
var produkt = 1;
// -- weitere Anweisungen --
return produkt;
}
</code>
<check execute="(fakultaet(2) == 2 && fakultaet(6) == 720)">true</check>
<run id="5b82646eb31d2">
fakultaet(6);
</run>
== Das Heron-Verfahren ==
Das Heron-Verfahren ist ein Näherungsverfahren zur Bestimmung der ''Quadratwurzel'' einer beliebigen positiven reellen Zahl <math>z</math>.
Aus einem beliebigen Startwert <math>x</math> ergibt sich aus der nachfolgenden Gleichung mit <math>x_0</math> ein erster Näherungswert für <math>\sqrt{z}</math>:
<blockquote><math>x_0 = \frac{x + \frac{z}{x}}{2}</math></blockquote>
Wird <math>x_0</math> als neuer Startwert in diese Gleichung eingsetzt, erhält man einen besseren Näherungswert.<br />
Durch mehrfaches Anwenden dieses Verfahrens kann der Wert von <math>\sqrt{z}</math> mit beliebiger Genauigkeit angenähert werden. <br />
Vervollständige dazu die entsprechende Funktion.
<code id="5b826f3a1ca84">
function heron(z, x) {
var x0 = x;
// -- weitere Anweisungen --
return x0;
}
</code>
<check execute="(runden(Math.sqrt(2), 6) == runden(heron(2, 1), 6) && runden(Math.sqrt(13), 6) == runden(heron(13, 71), 6))">true</check>
<run id="5b826dc024ec9">
heron(2, 1);
</run>
== Zufallszahlen ==
Mit den nachfolgenden Funktionen lassen sich beliebige Zufallszahlen ereugen:
Math.random() ... erzeugt eine (rationale) Zufallszahl <math>z</math> im Intervall <math>0 \le z < 1</math>
Math.floor(z) ... rundet die Zahl <math>z</math> auf die nächstniedrigere ganze Zahl ab
Experimentiere mit diesen Funktionen, so dass große ''ganze'' Zufallszahlen generiert werden.
<run id="5b82c1c29723c">
Math.floor(Math.random() * 10);
</run>
Vervollständige nun die nachfolgende Funktion, mit der das Werfen eines Würfels simuliert werden soll.
<code id="5b82c1c2971b4">
function wuerfelzahl() {
var w;
return w;
}
</code>
<check execute="(randomKorrekt(wuerfelzahl(), 1, 6))">true</check>
<run id="5b82c1c2972a1">
wuerfelzahl();
</run>