
Die do-while-Schleife ist wie eine while-Schleife mit einem wichtigen Unterschied: Sie führt den Code mindestens einmal aus – egal was! Danach wird die Bedingung geprüft. Perfekt für Menüs! 🎛️
🔁 do-while – Nachprüfende Schleife
Bei do-while wird der Code zuerst ausgeführt, dann die Bedingung geprüft:
do { // mindestens einmal! } while (Bedingung); ← Semikolon!
int i = 1; do { printf("%d\n", i); i++; } while (i <= 5);
⚖️ while vs. do-while – der entscheidende Unterschied
while – vorprüfend
Bedingung wird VOR dem ersten Durchlauf geprüft. Ist sie sofort falsch, wird der Block gar nicht ausgeführt.
int x = 10;
while (x < 5) {
printf("Nie!"); // wird nie ausgegeben!
}
do-while – nachprüfend
Der Block wird mindestens einmal ausgeführt, dann erst wird die Bedingung geprüft.
int x = 10;
do {
printf("Einmal!"); // wird EINMAL ausgegeben!
} while (x < 5);
⚠️ Das Semikolon nach while()
Bei do-while steht nach der schließenden Klammer ein Semikolon: } while (bed);
Das vergisst man leicht – aber der Compiler meldet einen Fehler, wenn es fehlt.
💻 Praktisches Beispiel: Menü
#include <stdio.h> int main() { int wahl; do { printf("\n=== MENÜ ===\n"); printf("1. Neu starten\n"); printf("2. Einstellungen\n"); printf("3. Beenden\n"); printf("Wahl: "); scanf("%d", &wahl); if (wahl == 1) printf("Neustart...\n"); if (wahl == 2) printf("Einstellungen...\n"); } while (wahl != 3); // Wiederholen bis "3" gedrückt printf("Auf Wiedersehen!\n"); return 0; }
✏️ Übungen
Unterschied erklären
Was ist der Unterschied zwischen while und do-while? In welcher Situation würdest du welche verwenden?
Ausgabe bestimmen
Was gibt dieser do-while-Code aus?
int n = 5;
do {
printf("%d\n", n);
n -= 2;
} while (n > 0);
Ausgabe:
Zahlen-Rate-Spiel
Schreibe ein einfaches Rate-Spiel: Die gesuchte Zahl ist 42. Der Benutzer tippt so lange, bis er die richtige Zahl eingegeben hat. Ausgabe: „Zu klein!", „Zu groß!" oder „Richtig!"
Quersumme berechnen
Schreibe ein Programm, das die Quersumme einer Zahl berechnet (z.B. 1234 → 1+2+3+4 = 10). Verwende do-while und den Modulo-Operator: