Die while-Schleife
Stell dir vor, du sollst die Zahlen von 1 bis 100 ausgeben. Du könntest hundertmal std::cout schreiben, aber das würde ewig dauern, und jede spätere Änderung wäre noch mühsamer. Programme wiederholen solche Arbeit ständig: Sie gehen jede Schülerin und jeden Schüler einer Klasse durch, prüfen jedes Produkt in einem Shop oder zeichnen den Bildschirm eines Spiels 60-mal pro Sekunde neu. Dafür sind Schleifen da. Eine Schleife ist ein Stück Code, das immer wieder ausgeführt wird.
Die einfachste Schleife ist while. Sie wiederholt einen Codeblock, solange ihre Bedingung wahr ist:
int zahl = 1;
while (zahl <= 5) {
std::cout << zahl << std::endl;
zahl++;
}Das gibt aus:
1
2
3
4
5Eine while-Schleife sieht aus wie ein if: das Schlüsselwort, eine Bedingung in runden Klammern und ein Codeblock in geschweiften Klammern. Der Unterschied: if führt seinen Block höchstens einmal aus, while kehrt dagegen immer wieder zur Bedingung zurück. Schritt für Schritt:
- Das Programm erstellt
zahlmit dem Wert1. - Es prüft die Bedingung
zahl <= 5. Sie ist wahr, also führt das Programm den Block aus: Es gibt1aus, undzahl++erhöhtzahlauf2. - Es geht zurück zur Bedingung.
2 <= 5ist immer noch wahr, also gibt es2aus und erhöhtzahlauf3. - Und so weiter, bis
zahlden Wert6hat. Dann ist die Bedingung falsch, die Schleife endet, und das Programm macht mit dem Code nach der schließenden Klammer}der Schleife weiter.
Jede Ausführung des Blocks heißt Durchlauf. Diese Schleife hat fünf Durchläufe. Um die Zahlen bis 100 auszugeben, müsstest du nur 5 durch 100 ersetzen.
Der Code nach der Schleife wird nur einmal ausgeführt, wenn die Schleife fertig ist:
int zahl = 1;
while (zahl <= 3) {
std::cout << zahl << std::endl;
zahl++;
}
std::cout << "Fertig" << std::endl;1
2
3
FertigAchte auf die Zeile zahl++. Etwas im Block muss die Variable in der Bedingung verändern, damit die Bedingung irgendwann falsch wird. Ohne diese Zeile würde die Schleife nie enden. Was dann passiert, siehst du in der nächsten Übung.
So schreibst du es:
Anweisungen
- 1
Lösche die drei Zeilen, die 1, 2 und 3 ausgeben. Erstelle an ihrer Stelle eine Variable
zahlvom Typintmit dem Wert10. Mit ihr zählt die Schleife. - 2
Schreibe darunter eine
while-Schleife, die läuft, solangezahlkleiner oder gleich20ist. Gib in der Schleifezahlin einer eigenen Zeile aus und erhöhe sie dann um 1. Das Programm gibt die Zahlen von 10 bis 20 aus, jede in einer eigenen Zeile. - 3
Gib nach der Schleife, unter ihrer schließenden Klammer
},Nach der Schleife:und den Wert vonzahlaus. Die letzte Zeile der Ausgabe istNach der Schleife: 21. Die Variable endet bei 21 und nicht bei 20, weil die Schleife erst stoppt, wenn die Bedingung falsch ist.