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 mit einer while Schleife
(Beispiel mit der Ganzzahl 10)
Bei der do-while-Schleife handelt es sich um eine Abwandlung der while-Schleife, da die Bedingung erst
nach dem ersten Schleifendurchlauf geprüft wird. Ein Schleifendurchlauf 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 }
Ausgabe einer Konsolenanwendung mit
do-while-Schleifen
zurück zu: for-Schleife
Einstieg in C/C++
Win32-API
NET Framework