Immer dann, wenn der Computer auf das Schlüsselwort while
trifft,
true
ergibt, wird der Block in geschweiften Klammern ausgeführt und wieder bei 1. fortgefahren.false
ergibt, wird der Block in geschweiften Klammern übersprungen.
Kurz: Der Block in geschweiften Klammern wird so lange immer wieder ausgeführt, bis die Bedingung in runden Klammern false
ergibt.
Oft ist es nützlich, noch zusätzliche Variablen zu deklarieren, die bei jedem Wiederholungsschritt geändert werden. Wir schreiben ein Programm, das die ersten 10 Zweierpotenzen ausgibt, also $2^0 = 1$, $2^1 = 2$, $2^2 = 4$, $2^3 = 8$ usw.
Die while
-loop hat zwei große Nachteile:
int i = 0; // Deklaration der Zählvariable while(i <= 10){ // Bedingung // Anweisungen i++; // Erhöhung der Zählvariable }
Für alle Anwendungsfälle, in denen auf irgendeine Art und Weise gezählt wird, verwendet man daher üblicherweise eine Kurzschreibweise der while
-loop, die for
-loop. Hier eine Gegenüberstellung der beiden. Beide Programme sind gleichwertig:
While-loop | For-loop |
---|---|
int i = 1; while(i <= 10){ // Anweisungen i++; } | for(int i = 1; i <= 10; i++){ // Anweisungen } |
Die for
-loop ist eine Kurzform der while
-loop. Sie besteht aus drei Bestandteilen:
for(Startanweisung; Bedingung; Anweisung am Ende jedes Wiederholungsschrittes){ // Anweisungen }
true
, so werden die Anweisungen in den {}
ausgeführt. Ist der Wert false
, so werden die Anweisungen in den {}
übersprungen und es wird mit der Anweisung hinter der for-loop fortgefahren.
Für Einsteiger ist die for
-loop oft schwer zu verstehen, weil ihre drei Bestandteile jeweils ganz unterschiedliche Bedeutung haben. Noch dazu ist der 1. und 3. Bestandteil eine Anweisung, der 2. Bestandteil eine Bedingung (genauer: eine Aussage).
Lass' Dich nicht entmutigen: Meist wird die for
-loop zum Zählen benutzt und sieht so oder ähnlich aus:
for(int i = 1; i <= 10; i++){ // Anweisungen }
Dieses Muster (das in diesem Fall die Anweisungen für i
-Werte von 0 bis 9 durchführt) wirst Du sehr schnell beherrschen und - von diesem Muster ausgehend - bald auch schwierigere Konstruktionen mit for
verstehen.
Wir schreiben den Text "Hallo Welt!" 10-mal untereinander in die Ausgabe. Mit der Variablen i
zählen wir dabei, wie oft wir ihn schon ausgegeben haben.
Die for
-loop bewirkt, dass der Rechner folgendes macht:
Anweisung | Erklärung | Wert von i nach der Anweisung |
---|---|---|
int i = 1; | Die Startanweisung wird genau ein Mal zu Beginn ausgeführt. | 1 |
Prüfe: Ist i ⇐ 10 ? | Das Ergebnis der Prüfung ist true , da $1 \le 10$ ist. Daher wird als nächste die Anweisung in {} ausgeführt. | 1 |
println("Hallo Welt (zum " + i + "-ten Mal)!"); | Es wird ausgegeben: Hallo Welt (zum 1. Mal)! | 1 |
i++; | Am Ende des Wiederholungsschrittes wird i++ ausgeführt und damit der Wert von i um 1 erhöht. Der Rechner setzt die Ausführung in Zeile 1 fort. | 2 |
Prüfe: Ist i ⇐ 10 ? | Das Ergebnis der Prüfung ist true , da $2 \le 10$ ist. Daher wird als nächste die Anweisung in {} ausgeführt. | 2 |
println("Hallo Welt (zum " + i + "-ten Mal)!"); | Es wird ausgegeben: Hallo Welt (zum 2. Mal)! | 2 |
i++; | Am Ende des Wiederholungsschrittes wird i++ ausgeführt und damit der Wert von i um 1 erhöht. Der Rechner setzt die Ausführung in Zeile 1 fort. | 3 |
usw…
Die letzten Schritte sehen so aus:
println("Hallo Welt (zum " + i + "-ten Mal)!"); | Es wird ausgegeben: Hallo Welt (zum 9. Mal)! | 9 |
i++; | Am Ende des Wiederholungsschrittes wird i++ ausgeführt und damit der Wert von i um 1 erhöht. Der Rechner setzt die Ausführung in Zeile 1 fort. | 10 |
Prüfe: Ist i ⇐ 10 ? | Das Ergebnis der Prüfung ist true , da $10 \le 10$ ist. Daher wird als nächste die Anweisung in {} ausgeführt. | 10 |
println("Hallo Welt (zum " + i + "-ten Mal)!"); | Es wird ausgegeben: Hallo Welt (zum 10. Mal)! | 10 |
i++; | Am Ende des Wiederholungsschrittes wird i++ ausgeführt und damit der Wert von i um 1 erhöht. Der Rechner setzt die Ausführung in Zeile 1 fort. | 11 |
Prüfe: Ist i ⇐ 10 ? | Das Ergebnis der Prüfung ist false , da nicht $11 \le 10$ ist. Daher wird jetzt die Anweisung in {} übersprungen und es geht in Zeile 4 weiter! | 11 |
println("Fertig!", Color.lightgreen); |
Du erinnerst Dich sicher: n += 3
ist eine Kurzschreibweise für n = n + 3
und bewirkt, dass der Wert der Variable n
um 3
erhöht wird.
Berechnung von Fakultäten
Die Faktultät einer Zahl $n \in \mathbb{N}$, kurz $n!$, ist folgendermaßen definiert:
$$n! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot \ldots \cdot n$$
Es ist beispielsweise $5! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot 5 = 120$.
Probiere das Programm wieder in Einzelschritten aus und schau' Dir die Belegung der Variablen nach jedem Schritt an!
8
in der ersten Zeile natürlich auch durch eine andere Zahl ersetzen!fakultät
in Zeile 2 der Startwert 1
zugeordnet und nicht 0
? 1
im Programm durch 0
ersetzt!)