Die while-Schleife
Stell dir vor, du sollst die Zahlen von 1 bis 100 ausgeben. Du könntest hundertmal printf schreiben, aber das würde ewig dauern, und jede spätere Änderung wäre noch mühsamer. Programme wiederholen ständig solche Arbeit: Sie gehen alle 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 gibt es Schleifen. 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) {
printf("%d\n", zahl);
zahl++;
}Das gibt Folgendes aus:
1
2
3
4
5Eine while-Schleife sieht aus wie eine if-Anweisung: das Schlüsselwort, eine Bedingung in 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
zahlgleich6ist. 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.
Rücke den Block einer Schleife um 4 Leerzeichen ein, genau wie den Block einer if-Anweisung. Dann siehst du auf einen Blick, was sich wiederholt. Der Code nach der Schleife wird nur einmal ausgeführt, wenn die Schleife fertig ist:
int zahl = 1;
while (zahl <= 3) {
printf("%d\n", zahl);
zahl++;
}
printf("Fertig\n");1
2
3
FertigBeachte die Zeile zahl++. Irgendetwas im Block muss die Variable aus 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 ist am Ende 21 und nicht 20, weil die Schleife erst endet, wenn die Bedingung falsch ist.