Iterationen in JavaScript (Iterationen in JavaScript), Lektion, Seite 722814
https://www.purl.org/stefan_ram/pub/iterationen_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

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 |
'------------------------------------------------'

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722814 stefan_ram:722814 Iterationen in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722814, slrprddef722814, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/iterationen_javascript