Iteration statements specify looping.— C++ Standard ISO 14882, Abs. 6.5 Satz 1
Schleifen erlauben die wiederholte Ausführung eines Programmabschnitts. Es sind Steueranweisungen, die aus einem Schleifenrumpf (einer Anweisung oder einem Anweisungsblock) und einem Ausführungstest mit einem logischen Ausdruck (Bedingung) bestehen. Ist der logische Ausdruck bei der Auswertung falsch, wird die Schleife verlassen. Je nach Lage der Testbedingung im Steuerfluss sind die Schleifen
Kopfgesteuerte Schleifen führen den Test vor jedem Schleifendurchlauf aus. Bei erfülltem Test wird der Schleifenrumpf abgearbeitet und zum Test zurückgekehrt. Ist die Testbedingung falsch, wird der Schleifenrumpf nicht (mehr) ausgeführt (abweisender Test).
while (
Bedingung)
Schleifenrumpf
Die "Zählschleifen"-Steueranweisung
for (
Start;
Bedingung;
Schleifenschritt)
Schleifenrumpf
ist gleichbedeutend mit
{
Start;
while (
Bedingung)
{
Schleifenrumpf
Schleifenschritt;
}
}
Start und Schleifenschritt sind beliebige Ausdrücke. Im Start-Ausdruck können Variablen definiert und / oder mit Anfangswerten versehen werden (Schleifenzähler). Im Schleifenschritt nach Ausführung des Schleifenrumpfes werden solche Zähler verändert.
Start, Bedingung und Schleifenschritt der
for
-Schleife dürfen auch leer bleiben:
for (;;)
… ist gleichbedeutend mit while(true)
…
Die range-based for-Anweisung (ab C++11)
for (
Typ Element:
Bereich)
Schleifenrumpf
führt den Schleifenrumpf für jedes Element (Wert oder Referenz) eines Bereiches (Feld oder Container) aus.
Siehe auch: Schlüsselwörter for, while, Beispiel Zählschleife, Beispiel while.
Fußgesteuerte Schleifen führen den Test erst nach jedem (mindestens einem) Schleifendurchlauf (nicht abweisender Test). Ist das Testergebnis wahr, wird die Programmbearbeitung beim Schleifenanfang (Schlüsselwort do) fortgesetzt. Bei nicht erfüllter Bedingung wird die Schleife verlassen.
Syntax:
do
Schleifenrumpf
while (
Bedingung);
Siehe auch: Schlüsselwörter do, while, Beispiel while.
Mit der Abbruchanweisung kann aus einer Schleife herausgesprungen werden. So entstehen Schleifen mit Abbruchbedingung in der Mitte des Blocks.
Syntax:
for(;;)
{
Anweisungen_Vorbereitung
if(
Abbruch_Bedingung) break;
Anweisungen_bei_Erfolg
}
Die Anweisung continue;
wird (selten) eingesetzt,
um ans innere Ende des Schleifenblocks zu springen.
Die Schleife wird dadurch nicht beendet.
Siehe auch: Schlüsselwörter break, continue, Beispiel break in Schleife, Beispiel continue.
Verzweigungen (Entscheidungen) erlauben die wahlweise Ausführung von Anweisungen.
Ein logischer Ausdruck (Bedingung) wird überprüft.
Ist die Bedingung wahr, wird die nachfolgende Anweisung1
(oder der Anweisungsblock) ausgeführt,
ansonsten die Anweisung2.
Der else
-Zweig kann weggelassen werden.
Der else
-Zweig bindet immer an das unmittelbar vorangehende if
.
Eine andere Zuordnung ist durch Blockklammern { }
möglich.
Syntax:
if(
Bedingung)
Anweisung1
else
Anweisung2
Siehe auch: Schüsselwörter if, else, Beispiel if ... else ....
Bei Mehrfachverzweigungen stehen mehr als zwei Programmzweige zur Auswahl. Nimmt der Testausdruck wenige ganzzahlige Werte an, ist die Formulierung als switch-Anweisung möglich. Andernfalls muss die Mehrfachverzweigung durch mehrere einfache Verzweigungen codiert werden (verschachtelte Verzweigungen oder if-else-Leiter).
Syntax:
switch(
Testausdruck)
{
case
Konstante:
Anweisungenbreak;
// : -"- weitere Fälle
default:
Anweisungenbreak;
}
Nach dem Schlüsselwort case darf immer nur eine ganzzahlige Konstante stehen. Jede Konstante darf nur einmal aufgeführt werden. Die Reihenfolge der Einsprungmarken ist beliebig.
Mit der break-Anweisung
wird die Mehrfachverzweigung verlassen.
Mehrere case
-Marken können gemeinsamen Code besitzen,
weil die break
-Anweisung nicht nach jedem case
-Zweig stehen muss
(Durchfallen, engl. fallthrough).
Die Angabe des Standardzweiges (default:) ist optional. Dieser wird ausgeführt, wenn keine der anderen Marken zutrifft.
Siehe auch: Schlüsselwörter break, case, default, switch, Beispiel switch.
Syntax:
goto
Sprungmarke;
Syntax:
Sprungmarke:
Die Sprungmarke ist ein beliebiger Name. Sprungmarke und Sprungbefehl müssen innerhalb derselben Funktion stehen. Der Sprung kann vorwärts oder rückwärts erfolgen. Durch den Sprungbefehl darf keine Variablendefinition übergangen werden.
Siehe auch: Schlüsselwort goto, Beispiel Sprunganweisung.