Iterationen in JavaScript
Syntax der while-Anweisung (vereinfacht)
“while ” (englisch) /ʍɑɪl/ „solange[ wie]“
- Syntax der while-Anweisung
Anweisung
.-----. .-. .----------. .-. .-----------.
--->( while )--->( ( )--->| Ausdruck |--->( ) )--->| Anweisung |--->
'-----' '-' '----------' '-' '-----------'
Nach ihrem einleitenden Schlüsselwort while („während“) wird die Anweisung zur bedingten Ausführung auch while-Anweisung genannt.
Die while-Anweisung ist eine Anweisung.
»while« ist ein Schlüsselwort.
Semantik der while-Anweisung
Die Anweisung wird ausgewertet, wenn der Ausdruck wahr ist. Nach jeder Auswertung der Anweisung wird der Ausdruck erneut ausgewertet. Ergibt sich dann wieder der Wert wahr, wird die Anweisung erneut ausgewertet.
- Syntax der while-Anweisung
Anweisung
.-----. .-. .-----------. .-. .--------.
--->( while )--->( ( )--->| Bedingung |--->( ) )--->| Inhalt |--->
'-----' '-' '-----------' '-' '--------'
Der Wert einer while-Schleife ist der Wert der letzten ausgewerteten Anweisung, die einen Wert hat.
- Konsole
"use strict";
{ let i = 0;
console.log( eval( "while( i === 0 ){ i = i + 1; 91; 32; {} }" )); }32
Aussprache
- JavaScript
while( x )console.log( "z" );
- auf deutsch:
- „solange »x« (gilt), schreibe »z«“
Anmerkungen
Eine Wiederholung eines Programmteils ohne entsprechende Wiederholung von Anweisungen im Quelltext wird auch ein Schleife genannt. Daher nennt man die while -Anweisung aus while-Schleife.
Unter einer Iteration verstehen wir hier die Implementation von Schleifen durch solche speziellen Schleifenanweisungen.
Beispiel Endlosschleife
Das folgende Skript mit einer Endlosschleife gibt viele Zahlen aus (bis es irgendwie unterbrochen wird).
main.js
"use strict";
while( true )console.log( Math.random() );
Endlosschleifen können im Browser oft nicht mit Strg-C angehalten werden. Manche Browser fragen bei einem lange laufenden Skript nach einer Weile, ob die Ausführung weiter fortgesetzt werden soll. (Siehe auch: Variable »dom.max_script_run_time« unter der URI »about:config« in Mozialla Firefox ) Manchmal reagiert der Browser auch dauerhaft nicht mehr und muß mit Mitteln des Betriebssystems beendet werden.
- Warnung
- Warning: Unresponsive Script
A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete.
Beispiel Zählschleife
Das folgende Programm zählt in Zweierschritten von 10 (einschließlich) bis 20 (einschließlich). Da die Variable »i« die einzige und entscheidende Variable für diese Schleife ist, kann man »i« auch als „Schleifenvariable “ bezeichnen.
Konsole
"use strict";
{ let i = 10; /* Schleifenvorbereitung */
while
(
i < 16 /* Schleifenpruefung */
)
{ /* Schleifeninhalt */
console.log( i ); /* Nutzlast */ /* Schleifeninhalt */
i = i + 2; /* Schleifenschritt */ /* Schleifeninhalt */
} /* Schleifeninhalt */
console.log( "Fertig!" ); /* Hinter der Schleife */ }transcript
10
12
14
Fertig!Konsole
"use strict";
{ let i = 10; while( i < 16 ){ console.log( i ); i = i + 2; }
console.log( "Fertig!" ); }transcript
10
12
14
Fertig!
In diesem Programm erkennen wir für Schleifen typische Bestandteile: Einen Teil zur Vorbereitung der Schleife (die Schleifenvorbereitung ); die Prüfung zur Entscheidung, ob die Schleife erneut durchlaufen werden soll (die Schleifenprüfung ); den zu wiederholenden Schleifeninhalt; die zu wiederholende Nutzlast der Schleife; und den Schleifenschritt, welcher den Übergang zum nächsten Schleifendurchlauf realisiert.
Schreibt man die Schleifeninhalte mit den jeweiligen Werten der Schleifenvariablen hintereinander, so kommt man zu einem Ersatzprogramm, welches dasselbe Verhalten wie das Originalprogramm zeigt, aber keine while-Anweisung mehr enthält.
main.js
console.log( 10 );
console.log( 12 );
console.log( 14 );
console.log( "Fertig!" ); }
Die Vieldeutigkeit der Variablennamen
Konsole
"use strict";
{ let i = 10; while( i < 16 ){ console.log( i ); i = i + 2; }
console.log( "Fertig!" ); }transcript
10
12
14
Fertig!
In einer Schleife, wie der voranstehenden, kann man nicht mehr sagen, für welchen Wert ein bestimmter, als Ausdruck verwendeter, Variablenname an einer bestimmten Stelle, wie beispielsweise das »i« in »println( i )«, steht. Diese Stelle wird mehrfach durchlaufen, und »i« kann jedes Mal einen anderen Wert haben.
Beispiel Zeichentabelle
Das folgende Programm gibt eine Zeichentabelle aus.
Konsole
"use strict";
{ let i = 32; while( i < 127 )
{ console.log
( String.fromCharCode( i ) + " " +
i + " " +
i.toString( 16 ).toUpperCase() );
i = i + 1; }}32 20
! 33 21
" 34 22
# 35 23
- …
| 124 7C
} 125 7D
~ 126 7E
127
»window.alert«
Durch Verwendung von »window.alert« in Schleifen können diese vorübergehend angehalten werden.
Wenn Informationen über eine länger laufende Schleifen ausgegeben werden sollen, so kann »window.alert« eher verwendet werden, wenn man die ersten Durchläufe sehen will, und »console.log« eher, wenn man die letzten sehen will.
Wenn ein Programm mehrere Alerts anzeigt, dann erlauben manche Browser es dem Bediener, die Anzeige weiterer Alerts zu unterbinden.
Übungsfragen
Übungsfrage
Was gibt das folgende Skript aus?
- Script
{ let v = true;
while( v )console.log( v = false ); }
Übungsfrage
Was gibt das folgende Skript aus?
- Script
{ let v = false;
while( v == false )console.log( v ); }
Übungsfrage
Was gibt das folgende Skript aus?
- Script
{ let v = false;
while( v = false )console.log( v ); }
Übungsfrage
Was gibt das folgende Skript aus?
- Script
{ let v = true;
while( v = true )console.log( v == false ); }
Übungsfrage
Was gibt das folgende Programm aus?
- Script
{ let v = 0;
while( v == 0 )console.log( v = 2 ); }
Übungsfrage
Was gibt das folgende Programm aus?
- Script
{ let v = 0;
while( v != 2 )console.log( v = v + 1 ); }
Übungsaufgaben
Weitere Übungsaufgaben, zu deren Lösung auch Schleifen geschrieben werden können, finden sich in einer separaten Lektion mit Übungsaufgaben am Ende des Grundkurses.
/ Schreiben einer while-Anweisung
Schreiben Sie eine while-Anweisung mit der Bedingung »v« und dem Inhalt »console.log( "Ok." );«.
- Syntax der while-Anweisung
Anweisung
.-----. .-. .-----------. .-. .--------.
--->( while )--->( ( )--->| Bedingung |--->( ) )--->| Inhalt |--->
'-----' '-' '-----------' '-' '--------'
/ Übersetzung
Übersetzen Sie die (nicht ganz) deutschsprachige Formulierung „Solange f(), Ausgabe des Textes ‚f()‘. “ in eine while-Anweisung.
- JavaScript
while( x )console.log( "z" );
- auf deutsch:
- „solange »x« (gilt), schreibe »z«“
Diagramme ⃗
Programmablaufplan zur Zählschleife ⃗
|
V
.---------.
| i := 10 |
'---------'
| .------------.
|<------| i := i + 2 |<-------.
| '------------' |
v |
.-'-. .---------- |
.-' '-. true / Ausgabe / |
.-' i < 16 ? '-.---->/ i /----'
'-. .-' / /
'-. .-' -----------
'.'
| false
|
V
Struktogramm zur Zählschleife ⃗
.------------------------------------------------.
| i := 10 |
|------------------------------------------------|
| Wiederhole solange wie i kleiner als 16 |
| .-------------------------------------------|
| | Ausgabe i |
| |-------------------------------------------|
| | Erhoehe i um 2 |
'------------------------------------------------'