Home
Navigation
Impressum
Coder Welten - Programmierung und Optimierung
Coder Welten
 
 

 

 

Schleifen in C und C++ » Die while und do while-Schleife

Schleifen zur Programmsteuerung II

Übersicht / Seite:

  1. for-Schleife (mit Beispielen zur Berechnung von binären Werten)
  2. while-Schleife (Unterschiede und Gemeinsamkeiten mit der for Schleife)

Die while-Schleife

Neben der for-Schleife ist die while-Schleife von großer Bedeutung in C und C++, da diese sich noch vielseitiger als die for-Schleife von einem Programmierer zur Programmsteuerung einsetzen lässt. Wie bei Schleifen üblich, können mit Hilfe einer while-Schleife im Schleifenrumpf enthaltene Anweisungen so oft wiederholt und ausgeführt werden, wie die im Schleifenkopf formulierte Bedingung erfüllt wird.

Im Unterschied zu einer for-Schleife, enthält eine while-Schleife jedoch nur eine oder mehrere zu überprüfende Bedingungen im Schleifenkopf. Nachfolgend eine Gegenüberstellung der Syntax von einer for- und einer while-Schleife:

for Schleife:

for (Anfangswert; Prüfe Bedingung; Veränderung des Anfangswertes) {

    Anweisungen
}

while Schleife:

Anfangswert;

while (Prüfe ob Bedingung erfüllt bzw. auf true oder false) {

    Anweisungen
    Veränderung des Anfangswertes
}

Als praktisches Beispiel soll das erste Code-Listing von der vorherigen Seite dienen, welches auf dieser Seite lediglich an die veränderte Syntax angepasst wurde. Deutlich wird aus diesem Beispiel, dass die Variablen i und n bereits vor den Schleifen mit den entsprechenden Startwerten initialisiert werden. Weiterhin wurden der Inkrementor in den Rumpf der ersten Schleife und der Dekrementor in den Rumpf der zweiten Schleife verlagert.
Wichtig ist weiterhin die Position dieser Operatoren. Nur wenn eine Veränderung des Startwertes als letzte Anweisung innerhalb eines Anweisungsblocks ausgeführt wird, entspricht das Ergebnis dem Ergebnis einer for-Schleife.

Ein Beispiel mit der while Schleife in C:

#include <stdio.h>

int main() {

int wert = 10;
int rest[8];
int i, n;

    printf ("Berechnung des Bin\x84 \brwertes der Dezimalzahl 10: \r\n\r\n");

    i = 0;                                        // Startwert vor der while-Schleife festlegen

    while (i <= 7) {

        printf ("%d.) %2d : 2 = ", i, wert);      // %2d entspricht einer Dezimalzal mit 2 Stellen
        rest[i] = wert %2;                        // %2 Modulo bzw. Rest von dividiert durch 2
        wert   /= 2;                              // Der Wert dividiert durch 2
        printf ("%d (Rest %d)\n", wert, rest[i]);
        i++;                                      // Inkrementor am Ende der Schleife
    }

    printf ("\nIn 1 Byte mit 8 Bit: ");

    n = 7;                                        // Startwert vor der while-Schleife festlegen

    while (n >= 0) {

        printf ("%d", rest[n]);
        n--;                                      // Dekrementor am Ende der Schleife
    }

    getchar();
    return 0;
}

Berechnung eines
        Binärwertes
Berechnung eines Binärwertes mit einer while Schleife (Beispiel mit der Ganzzahl 10)

Die do while-Schleife

Bei der do-while-Schleife handelt es sich um eine Abwandlung der while-Schleife, da die Bedingung erst nach dem ersten Schleifen­durchlauf geprüft wird. Ein Schleifen­durchlauf findet somit immer statt, selbst wenn die anschließende Prüfung ergibt, dass die Bedingung nicht erfüllt wurde. Es handelt sich somit nicht um eine Bedingung für einen Durchlauf, sondern um eine Bedingung für die Wiederholung von Anweisungen.

Im Beispiel durchläuft die erste do-while-Schleife mit einer eingegebenen Zahl das kleine und große 1×1 bis die Summe 100 übersteigt. Wird eine Zahl größer als 50 eingeben, so finden nur zwei Schleifendurchläufe statt und bei Eingabe einer Zahl größer 100 nur noch ein Durchlauf.
Mit der zweiten do-while-Schleife kann die Konsolenanwendung durch Eingabe einer 0 mit Bestätigung sauber beendet werden.

Ein Beispiel mit zwei do-while Schleifen in C:

#include <stdio.h>

int main() {

    int n;
    int i = 1;
    int eingabe;
    int beenden;

    printf("Eingabe: ");
    scanf("%d", &eingabe);
    printf("\r\n");

    do {
        n = i * eingabe;
        printf("%3d x %d = %3d\n", i, eingabe, n);
        i++;
    }
    while (n < 100);

    do {
        printf("\nZum Beenden eine 0 eingeben und best\x84 \btigen: ");
        scanf("%d", &beenden);
    }
    while (beenden != 0);

    return 0;
}

Gleiches Beispiel mit zwei do-while Schleifen in C++:

#include <iostream>         // fuer cout und endl
#include <iomanip>          // fuer setw
using namespace std;

int main() {

    int n;
    int i = 1;
    int eingabe;
    int beenden;

    cout << "Eingabe: ";
    cin  >> eingabe;        // Die Eingabe
    cout << endl;           // Eine Leerzeile

    do {
        n = i * eingabe;
        cout << setw(3) << i << " x " << eingabe << " = " << setw(3) << n << endl;
        i++;
    }
    while (n < 100);

    do {
        cout << "\nZum Beenden eine 0 eingeben und best\x84 \btigen: ";
        cin  >> beenden;
    }
    while (beenden != 0);

    return 0
}

Eine Konsolenanwendung
        mit do-while-Schleifen
Ausgabe einer Konsolenanwendung mit do-while-Schleifen

zurück zu: for-Schleife

 

Copyright © Verlag Horst Müller - Stendal - 2006 - Impressum - Datenschutz - Nutzungsbedingungen