📘 Kapitel 3 · Schleifen & Wiederholungen

Die while-Schleife

Vorprüfende Wiederholung · Zähler · Endlosschleife vermeiden

11 / 30 Units
Ömer
Kapitel 3: Schleifen & Wiederholungen ~45 Min. Theorie + Simulator + Quiz + Spickzettel
Ömer
Ömer sagt:

Die while-Schleife – dein erstes Automatisierungs-Werkzeug! Solange die Bedingung wahr ist, läuft der Block. Vergiss nie i++ – sonst läuft sie ewig!

while – Grundprinzip

SYNTAX
while (Bedingung) {
    // Schleifenkörper
}
BEISPIEL
int i=1;
while(i<=5){printf("%d\n",i);i++;}

Die 3 Bestandteile

BestandteilWo?Zweck
InitialisierungVor der while-ZeileZähler starten: int i = 1;
BedingungIn der while()-KlammerPrüfen: i <= 10
UpdateAm Ende des KörpersZähler verändern: i++;

🚨 Endlosschleife vermeiden!

Wenn der Zähler nie so verändert wird, dass die Bedingung falsch wird → Endlosschleife. Immer i++ oder ähnliches einfügen!

Praktisches Beispiel

zahlen.cC
int n=1, summe=0;
while(n<=100){ summe+=n; n++; }
printf("Summe: %d\n", summe); // 5050

Typische Anwendungen

Die while-Schleife passt zu drei klassischen Mustern – je nach dem was die Abbruchbedingung steuert:

TypBedingungTypisches Beispiel
Sentinel-SchleifeBenutzer gibt Sonderwert ein (z. B. -1)Eingaben sammeln bis Abbruch
Eingabe-ValidierungSolange ungültig: erneut fragenPasswort oder Bereichsprüfung
ZählergesteuertZähler < nGenau n Mal wiederholen

Sentinel-Schleife

sentinel.cC
int wert = 0;
scanf("%d", &wert);
while (wert != -1) {
    printf("Wert: %d\n", wert);
    scanf("%d", &wert);
}

Eingabe-Validierung

validierung.cC
int alter = -1;
while (alter < 0 || alter > 120) {
    printf("Alter (0-120): ");
    scanf("%d", &alter);
}

Häufige Fehler

Fehler 1 – i++ vergessen → Endlosschleife

FEHLER
int i = 0;
while (i < 5) {
    printf("%d\n", i);
    // i++ vergessen!
}

Fehler 2 – Off-by-one: < statt <=

Mit i < 5 läuft die Schleife für i = 0, 1, 2, 3, 4 (5 Durchläufe). Mit i <= 5 auch noch für i = 5 (6 Durchläufe). Genau überlegen, ob der Endwert eingeschlossen sein soll!

Fehler 3 – Bedingung schon beim Start falsch → 0 Durchläufe

Wenn die while-Bedingung von Anfang an nicht erfüllt ist, wird der Schleifenkörper kein einziges Mal ausgeführt. Das ist kein Fehler des Compilers, aber oft ein Logikfehler des Programmierers – z. B. wenn ein Zähler falsch initialisiert wurde.

BEISPIEL
int i = 10;
while (i < 5) {       // sofort falsch: 10 < 5 ist false
    printf("läuft nie\n");
}

⚡ Code-Simulator

Bearbeite den Code und führe ihn aus. Schleifendurchläufe werden simuliert:

C Simulator – Unit 11 – Schleifen
▶ Ausgabe
– Klicke AUSFÜHREN –
Ömer
Ömer sagt:

Ändere Start- und Endwert oder den Schritt und beobachte wie sich die Ausgabe verändert. Das ist der beste Weg, Schleifen zu verstehen!

🎯 Wissens-Quiz

Frage 1
Was muss VOR einer while-Schleife stehen, wenn man einen Zähler benutzt?
ADie Bedingung
BDer Schleifenkörper
CDie Initialisierung des Zählers
DDas break
Frage 2
Was passiert, wenn die Bedingung der while-Schleife sofort falsch ist?
ADer Körper wird einmal ausgeführt
BDer Körper wird nie ausgeführt
CCompilerfehler
DEndlosschleife
Frage 3
Wie stoppt man eine laufende Endlosschleife im Terminal?
ACtrl+Z
BCtrl+C
CCtrl+X
DCtrl+S
Frage 4
Welcher Code VERMEIDET eine Endlosschleife korrekt?
Aint i=1; while(i<=5){printf("%d",i);}
Bint i=1; while(i<=5){printf("%d",i);i++;}
Cwhile(true){printf("x");}
Dint i=10; while(i<=5){i++;}
Frage 5
Was gibt 'int i=0; while(i<3){i++;} printf("%d",i);' aus?
A0
B2
C3
DEndlosschleife
Frage 6
Was ist eine Sentinel-Schleife?
AEine Schleife die genau 10 mal läuft
BEine Schleife ohne Bedingung
CEine Schleife die bis zu einem bestimmten Eingabewert (Sentinel) läuft
DEine verschachtelte Schleife
Frage 7
Was ist der Unterschied zwischen i < 10 und i <= 10 als Schleifenbedingung?
AKein Unterschied
Bi < 10 führt einen Durchlauf mehr aus
Ci <= 10 führt einen Durchlauf mehr aus
Di <= 10 ist in C nicht erlaubt
Frage 8
Was passiert wenn die while-Bedingung von Anfang an falsch ist?
ADer Schleifenkörper wird kein einziges Mal ausgeführt
BDer Schleifenkörper wird einmal ausgeführt
CCompilerfehler
DEndlosschleife

📋 Spickzettel

while-Syntax
int i=0;Initialisierung
while(iSchleife
i++;Update – nicht vergessen!
while(1){}Endlosschleife
Typische Muster
Aufwärtsi=0; while(i
Abwärtsi=n; while(i>0) i--
Summesumme+=i; i++
Eingabewhile(x!=0) scanf...

✅ Checkliste Unit 11

  • Ich kann eine while-Schleife korrekt schreiben
  • Ich kenne die 3 Bestandteile: Init, Bedingung, Update
  • Ich erkenne und vermeide Endlosschleifen
  • Ich kann eine Summe mit while berechnen