C++
VeröffentlichtRevision 1

Wiederholungen mit while, do-while und for

Eine Schleife führt Code wiederholt aus. Ein einzelner Durchlauf heißt Iteration. Die Abbruchbedingung legt fest, wann keine weitere Wiederholung mehr stattfinden soll.

Wiederholungen mit while, do-while und for#

Entscheidungen und Schleifen · Lektion 20 von 60

Voraussetzungen: if. Lernziel: Du formulierst Wiederholungen mit klarer Abbruchbedingung.

Eine Schleife führt Code wiederholt aus. Ein einzelner Durchlauf heißt Iteration. Die Abbruchbedingung legt fest, wann keine weitere Wiederholung mehr stattfinden soll.

C++
1#include <iostream>2 3int main() {4    for (int nummer{1}; nummer <= 3; ++nummer) {5        std::cout << "Runde " << nummer << '\n';6    }7    int rest{3};8    while (rest > 0) {9        std::cout << "Noch " << rest << '\n';10        --rest;11    }12}

Die drei Teile von for#

for (Start; Bedingung; Änderung) führt den Start einmal aus, prüft vor jedem Durchlauf die Bedingung und führt nach dem Körper die Änderung aus. Hier entsteht nummer mit 1, läuft bis einschließlich 3 und wird jeweils um eins erhöht. Danach ist nummer außerhalb der Schleife nicht sichtbar.

while (bedingung) prüft ebenfalls vor jedem Durchlauf. Ist die Bedingung anfangs falsch, läuft der Körper kein einziges Mal. do { ... } while (bedingung); prüft dagegen erst nach dem Körper und läuft mindestens einmal. Das Semikolon nach do-while gehört zur Syntax.

Endlosschleifen erkennen#

Eine Endlosschleife endet nicht von selbst. Sie kann absichtlich sein, etwa bei einem laufenden Dienst, aber auch durch eine vergessene Änderung entstehen. Wenn du im Beispiel --rest; entfernst, bleibt rest > 0 immer wahr.

break beendet die innerste Schleife. continue überspringt den Rest des aktuellen Durchlaufs. Bei for wird danach noch der Änderungsteil ausgeführt; bei while geht es direkt zur Bedingung. Liegt eine notwendige Erhöhung hinter continue, kann eine while-Schleife deshalb hängen bleiben.

Grenzen richtig zählen#

Für n Elemente mit Positionen ab 0 ist i < n üblich. i <= n würde eine zusätzliche Position besuchen. Ein solcher Fehler heißt Off-by-one-Fehler, also eine um eins falsche Grenze.

Vermeide rückwärts laufende vorzeichenlose Zähler mit i >= 0: Ein vorzeichenloser Wert wird nie negativ und kann beim Herunterzählen umlaufen. Für Sammlungen sind später Bereichsschleifen oder passende Iteratoren oft einfacher.

Übung#

Schreibe eine Schleife, die 2, 4, 6, 8 und 10 ausgibt.

Lösung

for (int zahl{2}; zahl <= 10; zahl += 2) { std::cout << zahl << '\n'; }. Start, Grenze und Schrittweite sind unmittelbar sichtbar.

Weiterlernen#

Zurück: Mehrere feste Fälle mit switch · Kursübersicht · Weiter: Eingaben wiederholen, ohne hängen zu bleiben

Mitwirkende 1

Menschen, deren Änderungen in dieser Seite veröffentlicht wurden.

Kommentare 0

Kommentare sind für diese Seite deaktiviert.