C++ Kurs

while-Schleifen

Die Themen:

Sehen wir uns nun die zweite Schleifenart an, die while-Schleife. Während die for-Schleife hauptsächlich dann eingesetzt wird, wenn schon vor dem Eintritt in die Schleife die Anzahl der Schleifendurchläufe berechnet werden kann, so wird die while-Schleife hingegen eingesetzt wenn die Abbruchbedingung erst innerhalb der Schleife selbst festgestellt werden kann.

HinweisSelbstverständlich können Sie jederzeit eine for-Schleife gegen eine while-Schleife austauschen und umgekehrt, wenn Sie etwas mehr Aufwand spendieren.

Und damit es diesmal nicht gar zu einfach wird, gibt es zwei Arten von while-Schleifen:

while Schleife

Bei der while-Schleife wird vor dem Eintritt in die Schleife bereits abgeprüft, ob die Schleife überhaupt durchlaufen wird. Sie hat folgende Syntax:

while (AUSDRUCK)
   AKTION;

AUSDRUCK kann jeder C++ Ausdruck sein, der entweder ein ganzzahliges oder boolsches Ergebnis liefert.

HinweisSie erinnern sich doch noch: jeder Wert ungleich 0 wird auch als true interpretiert und der Wert 0 als false!

Der Ausdruck muss immer in Klammern stehen und nach der Klammer folgt kein Semikolon!

Die auf den Ausdruck folgende Aktion wird dann so oft wiederholt, solange die Auswertung des Ausdrucks true ergibt. Und auch hier gilt, wie bei der for-Schleife, dass die Aktion standardmäßig nur aus einer Anweisung besteht. Sollen mehrere Anweisungen ausgeführt werden, so müssen die Anweisungen in einem Block {...} eingeschlossen werden.

PgmHeader
...
// Abbruchkriterium initialisieren
auto done = false;
// Schleifenbeginn
while (!done)
{
   ... // Hier irgendwann done auf auf true setzen
   ... // damit Schleife beendet wird.
}
AchtungEine häufige Fehlerquelle bei diesem Schleifentyp ist das Vergessen der Initialisierung des Abbruchkriteriums. Wird das Abbruchkriterium, im obigen Beispiel die Variable done, nicht initialisiert, so wird die Schleife unter Umständen nicht durchlaufen!

do-while Schleife

Diese Schleife wird immer mindestens einmal durchlaufen, da das Abbruchkriterium erst am Ende der Schleife abgeprüft wird. Die Schleife besitzt folgende Syntax:

do
   AKTION;
while (AUSDRUCK);

Für den Ausdruck und die Aktion gilt das Gleiche wie bei der vorherigen while-Schleife. Die Aktion besteht ebenfalls standardmäßig aus einer Anweisung, mehrere Anweisungen sind also wieder in einem Block {...} einzuschließen. Und der Ausdruck kann ebenfalls jeder beliebige ganzzahlige oder boolsche C++ Ausdruck sein. Die Schleife wird auch hier so oft durchlaufen, solange die Auswertung des Ausdrucks true ergibt.

PgmHeader
...
// Abbruchkriterium initialisieren
auto done = false;
do
{
   ... // Hier wird irgendwann done auf auf true setzen
   ... // damit Schleife beendet wird.
} while (!done); 
AchtungBeachten Sie bitte, dass nach der Klammer des Ausdrucks jetzt ein Semikolon steht!

Auch mit while-Schleifen lassen sich Endlos-Schleifen erzeugen, wie die nachfolgenden Beispiele aufzeigen. Als Ausdruck wird hier ganz einfach der Wert true oder eine Ganzzahl-Konstante ungleich 0 eingesetzt.

PgmHeader
// Endlos while-Schleife
while (true)
{
   ...
}

// Endlos do-while Schleife
do
{
   ...
} while(1);

Beispiel und ÜbungUnd hier geht's zum Beispiel und zur Übung.