Eine gern gestellte Aufgabe in der Programmierung ist die Berechung der Fakultät. Noch einmal kurz zur Erinnerung: Die Fakultät einer Zahl ist das Produkt aller Zahlen bis zur gesuchten Zahl. Also die Fakultät von 6 (Schreibweise: „6!“) ist 1 * 2 * 3 * 4 * 5 * 6. Und das Ergebnis lautet: 720. Auch hier würde sich eine For-Schleife anbieten, doch auch mittels While-Schleife können wir das Ergebnis erzielen.
Zu unserem Beispiel. Wir fragen eine Zahl mittels Prompt ab, deren Fakultät wir gerne berechnen möchten. Auch hier haben wir keinerlei Sicherheit, dass der User keine Falscheingabe tätigt.
Wir legen zwei weitere Variablen („fakultaet“ und „lauf“) an, die wir beide sofort mit einer „1“ initalisieren. Nun folgt die While-Schleife mit den Bedingung „lauf <= eingabe“. Wenn die Eingabe des Users größer Null ist, trifft die Bedingung zu. Selbst bei der Eingabe einer „1“, auch wenn dieser Durchlauf wenig Sinn macht.
Widmen wir uns dem Schleifeninhalt. In der ersten Zeile berechnen wir nun die Fakultät anhand des Durchlaufes, der beim ersten Schleifendurchlauf „1“ beträgt. Danach erhöhen wir die Laufvariable „lauf“ um „1“ auf „2“. Wenn die Usereingabe der Fakutätsberechnung größer als „1“ war, erfolgt ein weiterer Schleifendurchlauf, da „lauf“ nun den Wert „2“ hat. Wieder erfolgt die Berechung. In diesem Schritt sind wir bei „1“ aus dem ersten Durchlauf mit „*2“ aus dem zweiten Durchlauf.
Die Schleife wird nun sooft durchlaufen, bis die Laufvariable „lauf“ größer als die Eingabe ist, bei Fakultät 6 zum Beispiel also bei „7“. Wenn die Schleife abgebrochen wird, erfolgt die Ausgabe der Variablen.
Beachten Sie bitte, dass Sie mit While-Schleifen gerne auch „Endlosschleifen“ generieren, also Schleifen, die bis unendlich laufen. Wenn Sie dies produzieren, hilft Ihnen nur noch, den Browser zu schließen.
<script type="text/javascript">// <![CDATA[ var eingabe = prompt("Geben Sie bitte eine Zahl ein, deren Fakultät Sie berechnen möchten",""); var fakultaet = 1; var lauf = 1; while (lauf <= eingabe) { fakultaet = fakultaet * lauf; lauf++; } document.write("Die Fakultät von " + eingabe + " lautet: " + fakultaet); </script>