
Jetzt kennst du alle drei Schleifen! Aber wann nimmst du welche? Das ist keine Glaubensfrage – es gibt klare Regeln. Lerne heute, die richtige Schleife für jede Situation zu wählen! 🧭
⚖️ Die drei Schleifen im Direktvergleich
🔁 while
Vorprüfend – Bedingung wird zuerst geprüft. Kann 0 Mal laufen.
Wählen wenn: Anzahl der Durchläufe unbekannt, Bedingung könnte von Anfang an falsch sein.
while (eingabe != 0) {
/* Verarbeiten */
}
🔄 do-while
Nachprüfend – Körper läuft mindestens 1 Mal. Bedingung danach.
Wählen wenn: Mindestens 1 Durchlauf sicher, z.B. Menü-Anzeige.
do {
/* Menü anzeigen */
} while (wahl != 0);
🔢 for
Zählergesteuert – Anzahl der Durchläufe bekannt. Kompakte Syntax.
Wählen wenn: Feste Anzahl, Arrays durchlaufen, Zähler nötig.
for (int i=0; i<10; i++) {
/* 10 Mal ausführen */
}
📊 Entscheidungstabelle
| Situation | Empfohlene Schleife | Warum? |
|---|---|---|
| 10 Mal etwas ausgeben | for ✅ | Feste Anzahl bekannt |
| Array mit n Elementen durchlaufen | for ✅ | Indexzähler i natürlich |
| Bis Benutzer "0" eingibt | while ✅ | Anzahl unbekannt, könnte sofort 0 sein |
| Menü anzeigen bis "Beenden" | do-while ✅ | Mindestens 1 Anzeige garantiert |
| Zahl solange halbieren bis < 1 | while ✅ | Anzahl unbekannt |
| Eingabe-Validierung (mind. 1 Versuch) | do-while ✅ | Mindestens 1 Eingabe nötig |
💻 Dasselbe Programm – drei Wege
Alle drei Schleifen geben 1 bis 5 aus:
/* while-Version */ int i = 1; while (i <= 5) { printf("%d ", i); i++; } /* do-while-Version */ i = 1; do { printf("%d ", i); i++; } while (i <= 5); /* for-Version */ for (i = 1; i <= 5; i++) { printf("%d ", i); }
✏️ Übungen
Richtige Schleife wählen
Welche Schleife ist am besten geeignet? Begründe kurz:
- Ausgabe der ersten 100 Primzahlen:
- Benutzer gibt Zahlen ein bis er "0" tippt:
- Passwort-Abfrage (mind. 1 Mal):
- Alle Elemente eines 10er-Arrays ausgeben:
Umschreiben
Schreibe diese for-Schleife als while-Schleife um:
for (int k = 100; k >= 10; k -= 10) {
printf("%d\n", k);
}
Wie oft läuft die Schleife?
Trage die Anzahl der Durchläufe ein:
for (int i=0; i<10; i++)→ _______ Durchläufefor (int i=1; i<=10; i++)→ _______ Durchläufefor (int i=0; i<10; i+=2)→ _______ Durchläufeint x=5; while(x<3) {...}→ _______ Durchläufe
Alle drei Schleifen im Vergleich
Schreibe dasselbe Programm (Ausgabe 1 bis 5) mit allen drei Schleifenarten – direkt hintereinander in main(). So siehst du den Unterschied in der Praxis: