Inhaltsverzeichnis

Steueranweisungen

Iteration statements specify looping.
— C++ Standard ISO 14882, Abs. 6.5 Satz 1

Schleifen

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

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).

Syntax: Quelle: Bart Simpson Chalkboard Wallpaper Generator

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

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.

Schleifenabbruch

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

Verzweigungen (Entscheidungen) erlauben die wahlweise Ausführung von Anweisungen.

Einfache Verzweigungen

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 ....

Mehrfachverzweigungen

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 : Anweisungen break;
// : -"- weitere Fälle
default: Anweisungen break;
}

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.

Sprunganweisungen

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.