Loops 🔁
Bisher sind unsere Programme geradlinig von oben nach unten durchgelaufen. Manchmal möchte man in einem Programm aber denselben Code häufig hintereinander ausführen. Dafür gibt es sogenannte Loops (Schleifen).
⚠️ Warnung: Wenn du eine Schleife schreibst, deren Bedingung nie
falsewird, läuft sie für immer (“Endlosschleife”). In diesem Notebook bricht der Browser nach 1 Sekunde automatisch ab — keine Sorge, dein Tab friert nicht ein.
while-Loop
Mit einem while-Loop können wir ein Stück Code ausführen, wenn eine Bedingung
gilt — genau wie mit einem if. Allerdings führt while den Code immer und
immer wieder aus, solange die Bedingung true bleibt.
Man liest allgemein while (A) { B } als “Solange A gilt, mach immer wieder B”.
Beachte die Zeile i = i + 1: ohne sie würde i immer 1 bleiben, die Bedingung
i <= 10 wäre immer true, und die Schleife würde nie aufhören. Probier es aus —
kommentiere die Zeile mit // aus und schau, was passiert.
for-Loop — die kompakte Alternative
Das Muster von oben — eine Variable setzen, eine Bedingung prüfen und die Variable
am Ende jeder Runde hochzählen — kommt so oft vor, dass es dafür eine kürzere
Schreibweise gibt: den for-Loop.
Ein for-Loop packt alle drei Teile in eine Zeile, getrennt durch Semikolons:
for (Startwert; Bedingung; Schritt) {
// Code, der wiederholt wird
}
- Startwert:
let i = 1— wird einmal am Anfang ausgeführt. - Bedingung:
i <= 10— wird vor jeder Runde geprüft (wie beiwhile). - Schritt:
i++— wird am Ende jeder Runde ausgeführt.i++ist eine Kurzform füri = i + 1.
Der folgende for-Loop macht exakt dasselbe wie unser erster while-Loop,
braucht aber weniger Zeilen und man kann das Hochzählen nicht mehr vergessen:
Beide Schleifen sind gleichwertig — nimm die, die dir besser gefällt. In der Praxis
verwendet man for, wenn man von vornherein weiß, wie oft gezählt werden soll,
und while, wenn man nur eine Bedingung hat und nicht weiß, wie viele Runden es
werden.
break — Schleife abbrechen
Mit break kannst du eine Schleife sofort abbrechen, mitten im Durchlauf.
continue — eine Runde überspringen
continue ist wie break, aber bricht nur die aktuelle Runde ab und springt
zur nächsten Runde der Schleife. Beispiel: nur ungerade Zahlen ausgeben.
Übung 🎯 — Collatz-Folge
Die Collatz-Folge ist eine berühmte Zahlenreihe:
- Starte mit irgendeiner Zahl
n. - Wenn
ngerade ist: teile sie durch 2. - Wenn
nungerade ist: rechne3 * n + 1. - Wiederhole, bis du bei
1ankommst.
Es ist eine offene Frage in der Mathematik, ob die Folge immer bei 1 endet —
aber für alle bisher getesteten Zahlen tut sie das.
Schreib ein Programm, das die Collatz-Folge für die Startzahl 123 berechnet
und jede Zahl mit console.log ausgibt. Stoppe, wenn du den sich wiederholenden
Zyklus 4, 2, 1 erreicht hast.
💡 Tipp anzeigen
- Verwende
letfür deine Variable, weil sie sich verändert. - In der Schleife: prüfe mit
%, ob die Zahl gerade ist. - Stoppe mit
break, wenn die Zahl1ist (oder mach es eleganter über diewhile-Bedingung).
🧐 Lösungshinweis: Die größte Zahl, die dein Programm auf dem Weg ausgeben sollte, ist
628.
💡 Trivia: Bis heute wird zwar vermutet, dass jede ganze positive Zahl irgendwann in der
4, 2, 1-Folge landet — bewiesen ist das aber noch nicht. Mit Computerprogrammen wie deinem hat man schon sehr, sehr viele Zahlen ausprobiert und noch kein Gegenbeispiel gefunden.
Geschafft! 🚀
Du beherrschst jetzt:
while— Schleifen mit einer Bedingungfor— die kompakte Variante mit Startwert, Bedingung und Schrittbreak— Schleife sofort abbrechencontinue— eine Runde überspringen
Als Nächstes: Scopes →