Schleifen werden verwendet, um Logik wiederholt auszuführen.
Die zwei häufigsten Arten sind die while loop (unbestimmtes Wiederholen) und die for loop (bestimmtes oder gezähltes Wiederholen).
Es gibt außerdem die for each-Schleife, die in einem späteren Konzept auftauchen wird.
Die for loop besteht aus einem Kopf und einem Block, der den Schleifenblock enthält und in geschweifte Klammern gesetzt ist.
Der Kopf besteht aus 3 Komponenten, die durch Semikolons ; getrennt sind: Initialisierungsanweisung, Bedingung und ein weiterer Ausdruck.
Jede davon darf leer sein.
for (init-statement; condition; expression) {
some_statement;
}
Die while loop führt ihren Schleifenblock aus, solange ihre Bedingungsprüfung wahr ist.
Der folgende Codeausschnitt zeigt, wie du eine for-Schleife in eine while-Schleife umwandelst.
init-statement;
while(condition) {
some_statement;
expression;
}
Bei der Arbeit mit Schleifen ist es oft nötig, 1 zu einer Zählvariable zu addieren oder 1 davon zu subtrahieren.
Das ist so üblich, dass es für diese Operation spezielle Operatoren gibt: ++ und --.
Sie gibt es in einer Präfix- und einer Postfix-Form. Die Präfix-Form ändert die Variable vor der Verwendung in der Anweisung, die Postfix-Form danach. Meistens willst du wahrscheinlich die Präfix-Form.
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
Die Init-Komponente richtet üblicherweise eine Zählvariable ein, die Bedingung prüft, ob die Schleife fortgesetzt oder beendet werden soll, und die Post-Komponente erhöht den Zähler üblicherweise am Ende jeder Wiederholung.
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
Diese Schleife summiert die Zahlen von 1 bis 9 (inklusive 9).
Innerhalb eines Schleifenblocks kannst du das Schlüsselwort break verwenden, um die Ausführung der Schleife vollständig zu beenden:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
Im Gegensatz dazu beendet das Schlüsselwort continue nur die Ausführung der aktuellen Iteration und fährt mit der nächsten fort:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
Hinweis: Die Logik der Schleife ist meist leichter zu verstehen, wenn
breakundcontinuesparsam eingesetzt oder ganz vermieden werden.