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>