While Schleife

Mit dem Laden des Videos akzeptierst du die Datenschutzerklärung von YouTube. Wenn du die Menge an Daten reduzieren möchtest, die YouTube von dir sammelt, solltest du dich vorher aus deinem YouTube-Account ausloggen, das Speichern von Cookies für das Google-Ads-Programm deaktivieren und/oder Cookies im Browser blockieren.
YouTube immer automatisch ladenInhaltsverzeichnis
Als Text lesen
Stell dir vor du möchtest 1000 Zeilen auf der Konsole ausgeben. Dafür bräuchtest du 1000 Zeilen Code, in denen jeweils immer der gleiche Befehl steht. Das wäre ziemlich dämlich, oder?
Für Probleme dieser Art gibt es Schleifen, die die gleiche Abfolge von Statements wiederholt ausführen. Eine dieser Schleifen ist die while
-Schleife:
while
-Schleifen funktionieren ähnlich wie if
-Abfragen, nur mit dem Unterschied, dass nach Ausführung des inneren Blocks erneut die Bedingung überprüft wird. Der Inhalt der while
-Schleife wird also ausgeführt, solange die Bedingung wahr ist.
Schauen wir uns diesen Code an:
Folgende Dinge passieren:
- Im ersten Durchlauf ist
i == 0
, was kleiner als 3 ist. Also wird der Schleifenblock ausgeführt. Auf der Konsole erscheint0
undi
wird auf 1 erhöht. - Im zweiten Durchlauf ist
i == 1
. 1 ist kleiner als 3, also wird1
ausgegeben undi
auf 2 erhöht. - Im dritten Durchlauf ist
i == 2
, was immer noch kleiner als 3 ist. Ausgabe:2
,i
wird auf 3 gesetzt. - Im vierten Durchlauf ist
i == 3
. Da 3 nicht kleiner ist als 3, ist die Bedingung derwhile
-Schleife nicht mehr erfüllt. Das Programm springt zum Ende der Schleife.
Die Ausgabe ist also:
0 1 2
Falls die Bedingung einer while
-Schleife immer wahr ist, wird das Programm sich nicht selbst beenden.* Man spricht dann davon, dass das Programm nicht terminiert. Stattdessen wird es so lange weiter laufen, bis es durch einen anderen Prozess beendet wird.** Es kann durchaus gewünscht sein, dass ein Programm "unendlich" lange läuft. Beispielsweise ein Server, der auf Anfragen wartet, sollte sich (im Normalfall) nicht nach Bearbeitung einer einzigen Anfrage beenden, sondern auf weitere warten.
*Es gibt trotzdem noch Möglichkeiten, ein solches Programm zu beenden. Wir ignorieren das an dieser Stelle aber.
**Hier im Online-Editor gibt es aber trotzdem Limits, wie lange ein Programm maximal laufen darf, und wie viele Zeilen maximal ausgegeben werden können.
In dieser Aufgabe sollst du alle Vielfachen einer gegebenen Zahl n
bis zu einem gewissen Maximum max
auf der Konsole ausgeben. Beispielsweise sollen für die Eingabe n = 7
und max = 21
zeilenweise 7, 14, und 21 ausgegeben werden.

Mit dem Laden des Online Editors akzeptierst du die Datenschutzerklärung von JDoodle, einem Produkt der Nutpan pty Ltd (Australien). JDoodle verwendet die Tools reCAPTCHA und Google Analytics, wodurch Daten an Google übertragen werden können. Ich habe leider keinen Einfluss auf diesen Prozess. Du kannst Google Analytics über ein Browserplugin deaktivieren.
Online Editor immer automatisch ladenBonus
Teste was passiert, wenn n
kleiner ist als 1. Wie könntest du dieses Problem beheben?
Häufige Fehlerquellen
- Semikolon... du weißt schon
- Mit falscher Zahl begonnen: Die erste auszugebende Zahl ist
n
- Maximum falsch: Falls
max
durchn
teilbar ist, sollmax
die letzte Zahl sein, die ausgegeben wird. Du musst also mit<=
vergleichen. - Schrittweite falsch: Nach jedem Schleifendurchlauf muss die nächste Zahl genau
n
größer sein als die aktuelle