Kapitel 3 Unit 1 von 5 Theorie + Übungen Dauer: ~45 Min.
Ömer
Ömer sagt:

Stell dir vor, du musst 100 Zahlen ausgeben. Mit allem was du bisher weißt, müsstest du 100 printf-Zeilen schreiben. Mit der while-Schleife schreibst du 3 Zeilen – und sie erledigt die Arbeit für dich! 🔁

while-Syntax verstehen Schleifenbedingung formulieren Schleifenzähler verwalten Endlosschleife erkennen Typische Anwendungen

🔁 Die while-Schleife

Eine while-Schleife wiederholt ihren Block so lange, wie die Bedingung wahr ist. Vor jedem Durchlauf wird die Bedingung geprüft:

SYNTAX
while (Bedingung) {
    // wird wiederholt
    // solange Bed. wahr ist
}
BEISPIEL
int i = 1;
while (i <= 5) {
    printf("%d\n", i);
    i++;
}

🔍 Ablauf einer while-Schleife

Ablauf – i von 1 bis 5
1
Initialisierung (vor der Schleife)
int i = 1; → Zähler starten
?
Bedingung prüfen
i <= 5 → wahr? → weiter · falsch? → fertig
Schleifenkörper ausführen
printf("%d\n", i); → Ausgabe
Zähler aktualisieren → zurück zu ②
i++; → i wird 2, 3, 4, 5, 6 → bei 6 endet die Schleife
summe.cC
#include <stdio.h>
int main() {
    int summe = 0;
    int i     = 1;

    while (i <= 10) {
        summe += i;   // 1+2+3+...+10
        i++;
    }
    printf("Summe 1 bis 10: %d\n", summe);
    return 0;
}
▶ Ausgabe
Summe 1 bis 10: 55

🚨 Endlosschleife – der gefährlichste Fehler!

Wenn die Bedingung niemals falsch wird (z.B. weil i++ vergessen wurde), läuft die Schleife für immer und das Programm hängt. Stoppe mit Ctrl+C im Terminal.

int i = 1;
while (i <= 5) {
    printf("%d\n", i);
    // i++ VERGESSEN → Endlosschleife!
}

✏️ Übungen

Übung 1

Schleife nachverfolgen

Was gibt dieser Code aus? Trage die Werte von i und ausgabe in die Tabelle ein:

int i = 10;
while (i > 0) {
    printf("%d ", i);
    i -= 3;
}

Durchlauf 1: i = _______ → Ausgabe: _______

Durchlauf 2: i = _______ → Ausgabe: _______

Durchlauf 3: i = _______ → Ausgabe: _______

Durchlauf 4: i = _______ → Schleife endet weil: _______

i -= 3 bedeutet: i = i - 3. Starte mit i=10 und ziehe jedes Mal 3 ab.
Übung 2

Endlosschleife finden

Welche dieser while-Schleifen ist eine Endlosschleife? Begründe:

A: int x = 1; while (x < 10) { printf("%d", x); x++; }

B: int x = 1; while (x < 10) { printf("%d", x); x--; }

C: int x = 10; while (x > 0) { printf("%d", x); x--; }

Antwort:

Begründung:

Übung 3 – Programm

Eingabe-Validierung

Schreibe ein Programm, das den Benutzer so lange nach einer Zahl zwischen 1 und 10 fragt, bis die Eingabe gültig ist. (Tipp: while-Schleife mit Bedingung: Eingabe < 1 oder > 10)

#include <stdio.h> int main() { int zahl; printf("Zahl (1-10): "); scanf("%d", &zahl); while (/* Bedingung: ungültig */) { printf("Ungültig! Nochmal (1-10): "); scanf("%d", &zahl); } printf("Gültige Eingabe: %d\n", zahl); return 0; }
Übung 4 – Programm

Multiplikationstabelle

Schreibe ein Programm, das eine Zahl einliest und die Multiplikationstabelle (1×n bis 10×n) ausgibt.

#include <stdio.h> int main() { int n, i; printf("Zahl: "); scanf("%d", &n); i = 1; /* while-Schleife für 1×n bis 10×n */ return 0; }
Format: printf("%d x %d = %d\n", i, n, i*n);
Übung 5 – Bonus

Collatz-Folge

Die Collatz-Folge startet mit einer beliebigen Zahl n und wendet immer wieder die Regel an: wenn n gerade → n = n / 2, wenn n ungerade → n = n * 3 + 1. Die Folge endet wenn n = 1 erreicht wird. Schreibe das Programm und zähle die Schritte:

#include <stdio.h> int main() { int n = 27; /* Startfert: 111 Schritte bis zur 1! */ int schritte = 0; printf("Collatz(%d): ", n); while (n != 1) { printf("%d ", n); if (n % 2 == 0) { n = n / 2; } else { n = n * 3 + 1; } schritte++; } printf("1\n"); printf("Anzahl Schritte: %d\n", schritte); return 0; }
Teste auch mit n=6 (8 Schritte) oder n=27 (111 Schritte!). Die Collatz-Vermutung sagt: Jede Zahl erreicht irgendwann 1 – aber niemand hat das bisher bewiesen!