Eilmeldung aus dem Syntax-Ministerium
Die if-Schleife
gibt es nicht.
FEHLER 404: SCHLEIFE NICHT GEFUNDEN
Was ist ein if dann?
Ein
if ist eine Verzweigung (auch Selektion oder bedingte Anweisung). Wie eine Weggabelung: Der Code prüft eine Bedingung und geht dann genau einmal links (Plan A) oder rechts (Plan B) weiter. Danach ist Feierabend. Kein Zurück, kein „Und nochmal!“.
Start→Bedingung?→ja: links oder nein: rechts (oder direkt weiter)→Ende
Und was ist eine echte Schleife?
Eine Schleife (
for, while) springt zurück und wiederholt ihren Block, bis eine Bedingung nicht mehr gilt. Sie ist der Hamster im Laufrad. Das if ist eher der Türsteher: schaut kurz hin, winkt durch oder nicht, fertig.
if (Verzweigung)
„Ich schaue einmal in den Kühlschrank. Ist Käse da? Dann gibt es Käsebrot.“
while (Schleife)
„Ich schaue in den Kühlschrank, solange ich hoffe, dass dort neuer Käse erscheint.“ (Gefahr: Endlosschleife.)
Codebeispiele
Verzweigung: läuft höchstens einmal
// nur if: einmal prüfen, bei "ja" einmal ausführen int kaeseScheiben = 3; if (kaeseScheiben > 0) { System.out.println("Käse da! Ich mache ein Käsebrot."); } // Bei 0 Scheiben passiert einfach nichts
Verzweigung mit Alternative: if-else
// if-else: genau ein Zweig läuft, und zwar einmal int kaeseScheiben = 0; if (kaeseScheiben > 0) { System.out.println("Käse da! Ich mache ein Käsebrot."); } else { System.out.println("Kein Käse da. Es gibt Butterbrot."); } // Ausgabe: Kein Käse da. Es gibt Butterbrot.
Echte Schleifen: wiederholen
// for: 3 Käsebrote, i zählt 0, 1, 2 for (int i = 0; i < 3; i++) { System.out.println("Käsebrot Nr. " + (i + 1) + " fertig"); } // while: Käsebrote machen, solange noch Käse da ist int scheiben = 3; while (scheiben > 0) { scheiben--; System.out.println("Käsebrot gemacht! Übrig: " + scheiben + " Scheiben"); }
Verzweigung: läuft höchstens einmal
# nur if: einmal prüfen, bei "ja" einmal ausführen kaese_scheiben = 3 if kaese_scheiben > 0: print("Käse da! Ich mache ein Käsebrot.") # Bei 0 Scheiben passiert einfach nichts
Verzweigung mit Alternative: if-else
# if-else: genau ein Zweig läuft, und zwar einmal kaese_scheiben = 0 if kaese_scheiben > 0: print("Käse da! Ich mache ein Käsebrot.") else: print("Kein Käse da. Es gibt Butterbrot.") # Ausgabe: Kein Käse da. Es gibt Butterbrot.
Echte Schleifen: wiederholen
# for: 3 Käsebrote, i zählt 0, 1, 2 for i in range(3): print(f"Käsebrot Nr. {i + 1} fertig") # while: Käsebrote machen, solange noch Käse da ist scheiben = 3 while scheiben > 0: scheiben -= 1 print(f"Käsebrot gemacht! Übrig: {scheiben} Scheiben")
Die Unterschiede im Überblick
| if | for | while | |
|---|---|---|---|
| Art | Verzweigung | Schleife | Schleife |
| Durchläufe | 0 oder 1 | 0 bis n | 0 bis ∞ |
| Springt zurück? | Nie | Ja | Ja |
| Kann endlos laufen? | Nein, kein Rücksprung | Ja, bei fehlerhafter Bedingung oder Schrittanweisung (dazu braucht es schon viel negatives Talent) | Ja, wenn die Bedingung nie falsch wird |
| Metapher | Türsteher | Hamster mit Plan | Hamster ohne Plan |
Schleifen-Detektor
Tippe auf ein Stichwort. Ist es eine Schleife?
Warum sagen trotzdem alle „if-Schleife“?
Weil
if und while auf den ersten Blick wie Zwillinge aussehen: Schlüsselwort, Bedingung, Block darunter. Beide fragen „Stimmt die Bedingung?“ und führen dann den Block aus. Den entscheidenden Unterschied sieht man dem Quelltext nicht an: Nach dem Block springt while zurück zur Bedingung, if läuft einfach weiter. Dazu kommt, dass im Alltag jede Kontrollstruktur gern „Schleife“ heißt. Merkhilfe: Wenn der Code nicht zurückspringt, ist es keine Schleife.