📘 Kapitel 3 · Schleifen & Wiederholungen

Die for-Schleife

Zählergesteuert · Init, Bed., Update · Verschachtelt

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

Die for-Schleife ist kompakt und elegant – drei Dinge in einer Zeile. Du wirst sie am häufigsten in der Praxis sehen. Lerne sie in- und auswendig!

for-Schleife – 3 Teile in einer Zeile

SYNTAX
for ( Init ; Bedingung ; Update ) {
      int i=0    i<10    i++
    // Körper
}

Varianten

1 BIS 5
for(int i=1;i<=5;i++)
5 BIS 1
for(int i=5;i>=1;i--)
SCHRITTE
for(int i=0;i<=10;i+=2)

Verschachtelte for-Schleifen

tabelle.cC
for(int i=1;i<=3;i++){
    for(int j=1;j<=3;j++)
        printf("%d ",i*j);
    printf("\n");
}
▶ Ausgabe
1 2 3
2 4 6
3 6 9

Häufige Fehler

Off-by-one: i < n vs. i <= n

i < n — Endwert ausgeschlossen

Läuft für i = 0, 1, …, n-1. Genau n Durchläufe. Typisch beim Durchlaufen von Arrays (Index 0 bis n-1).

BEISPIEL
// 0, 1, 2, 3, 4 → 5 Durchläufe
for(int i=0; i<5; i++)

i <= n — Endwert eingeschlossen

Läuft für i = 0, 1, …, n. Genau n+1 Durchläufe. Typisch wenn der Endwert selbst verarbeitet werden soll.

BEISPIEL
// 1, 2, 3, 4, 5 → 5 Durchläufe
for(int i=1; i<=5; i++)

Schleifenvariable im Körper verändern

Die Laufvariable i im Schleifenkörper zu verändern ist schlechte Praxis – die Schleife verhält sich dann unerwartet und ist schwer zu debuggen.

VERMEIDEN
for(int i=0; i<10; i++) {
    i = i + 2; // ← schlechte Praxis!
    printf("%d\n", i);
}

for(;;) – intentionale Endlosschleife

Alle drei Teile von for leer zu lassen ist gültiges C und erzeugt eine Endlosschleife. Nur mit einem break im Körper sinnvoll – sonst gefährlich.

GÜLTIG ABER RISKANT
for(;;) {          // Endlosschleife
    // braucht break!
}

Semikolon nach for(...); — leerer Schleifenkörper

Genau wie beim if gilt: ein Semikolon direkt nach for(...) beendet die Schleife sofort. Der folgende Block wird nur einmal nach der Schleife ausgeführt.

FEHLER
for(int i=0; i<10; i++);   // ← Schleife ohne Körper!
{
    printf("nur einmal!\n");  // läuft nur 1×
}

Praktisches Beispiel – Summe gerader Zahlen

Eine for-Schleife mit Schrittweite 2 addiert alle geraden Zahlen von 2 bis 100. Der Schrittausdruck i += 2 sorgt dafür, dass nur gerade Werte durchlaufen werden.

gerade_summe.cC
int summe = 0;
for (int i = 2; i <= 100; i += 2) {
    summe += i;          // 2+4+6+...+100
}
printf("Summe gerader Zahlen 2-100: %d\n", summe);
▶ Ausgabe
Summe gerader Zahlen 2-100: 2550

Warum 2550?

Es gibt 50 gerade Zahlen zwischen 2 und 100. Ihr Durchschnitt ist (2 + 100) / 2 = 51. Summe = 50 × 51 = 2550. Die for-Schleife mit i += 2 ist die eleganteste Formulierung dafür.

⚡ Code-Simulator

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

C Simulator – Unit 13 – 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
Welche Teile hat eine for-Schleife?
ABedingung, Körper
BInit; Bedingung; Update
CStart, Stopp, Schritt
DHeader, Body, Footer
Frage 2
Was gibt 'for(int i=0;i<5;i++) printf("%d ",i);' aus?
A1 2 3 4 5
B0 1 2 3 4
C0 1 2 3 4 5
D1 2 3 4
Frage 3
Wie viele Male läuft 'for(int i=1;i<=10;i++)'?
A9
B10
C11
DUnbekannt
Frage 4
Was macht 'i+=2' als Update?
Ai um 1 erhöhen
Bi verdoppeln
Ci um 2 erhöhen
Di halbieren
Frage 5
Was bedeutet 'for(;;)'?
ACompilerfehler
BSchleife mit leerer Init/Bed/Update = Endlosschleife
CLeere Schleife
DKommentar
Frage 6
Was passiert bei for(int i=0; i<5; i++); (mit Semikolon nach der Klammer)?
ACompilerfehler
BDie Schleife läuft 5x mit Ausgabe
CLeerer Schleifenkörper – Schleife läuft 5x ohne Ausgabe
DEndlosschleife
Frage 7
Was bedeutet for(;;) in C?
ACompilerfehler
BSchleife wird nie ausgeführt
CSchleife läuft genau 3 mal
DIntentionale Endlosschleife
Frage 8
Kann die Schleifenvariable innerhalb einer for-Schleife geändert werden?
AJa, ist aber schlechte Praxis
BNein, das ist in C verboten
CJa, und es ist empfohlen
DNur bei while-Schleifen möglich

📋 Spickzettel

for-Syntax
for(Init;Bed;Up){}Grundstruktur
int i=0; iAufwärts zählen
int i=n; i>=0; i--Abwärts zählen
i += 22er-Schritte
Vergleich
forFeste Anzahl bekannt
whileAnzahl unbekannt
do-whileMind. 1 Durchlauf
AlleKönnen sich ersetzen

✅ Checkliste Unit 13

  • Ich kann eine for-Schleife mit allen 3 Teilen schreiben
  • Ich kann auf- und abwärts und in Schritten zählen
  • Ich kann for und while ineinander umschreiben
  • Ich kann verschachtelte for-Schleifen lesen