2.06) Schleifen

Schleifen werden verwendet, um einen Block mehrfach zu durchlaufen. JM° bietet hierfür einige Möglichkeiten. Für den Einstieg (und für Umsteiger) ist die Verwendung der nachfolgenden Steuer-Objekte empfehlenswert. In den nachfolgenden Kapiteln werden auch noch weitere Möglichkeiten gezeigt.

For

Die For-Schleife zählt von einem Start-Wert (Vorgabe: 1) bis zu einem End-Wert und führt jeweils den zugehörigen Block aus.

For( 10 )
"Hallo".print

Dies wird 10x "Hallo" ausgeben.
Im nächsten Beispiel läuft die Schleife von 3 bis 7. Hier würde allerdings nur 5x "Hallo" erscheinen, was irgendwie langweilig wäre. Doch wir können den aktuellen Wert der Schleife mit "_IT" auslesen.

For( 3, 7 )
( _IT + ". Punkt").print

"_IT" ist eine sogenannte magische Konstante. Mit diesen lassen sich aktuelle Zustände oder Werte auslesen und verwenden.
Das For-Objekt kann auch größere Schritte gehen:

For( 0, 50, 5 )
_IT.print

In diesem Fall ist es sogar möglich alles wieder in einer Zeile zu schreiben, wenn wir die ".each"-Funktion nutzen:

For( 0, 50, 5 ).each.print

Info:
Zielwert und Schrittweite werden bei jedem Durchlauf neu geprüft.

While

Bei While wird ein Block so lange wiederholt, wie der übergebene Parameter "true" ist.

b = true
While( b )
"b ist true".print
b = false

Hier wird der Block genau einmal durchlaufen, da mit dem letzten Befehl "b" auf false gesetzt wird.

Notiz:
Ein Block kann beliebig viele Zeilen und auch weitere Blöcke enthalten.

Damit der Block mehrfach durchlaufen wird, könnten wir eine Zahl oder auch Buchstaben verwenden:

c = 'a'
While( c <= 'h' )
c.echo
c++
"".print

Nun wird es schon etwas komplexer.
Mit einfachen Anführungszeichen kann ein Char-Object (ein Buchstabe) erzeugt werden. Die While-Schleife soll nun so lange laufen, wie der Wert in "c" kleiner oder gleich 'h' ist. Der Wert von "c" wird dann ohne Zeilenumbruch ausgegeben und in der nächsten Zeile mit ++ um 1 erhöht. Wenn 'a' um eins erhöht wird, ergibt das? Richtig ... 'b'!
Die letzte Zeile nutzen wir, um nach dem Abschluß der While-Schleife einen Zeilenumbruch auszugeben.

In diesem Fall würden wir natürlich mit einer For-Schleife zum selben Ergebnis kommen:

For( 'a', 'g').each.echo; "".print

Nicht zu empfehlen ist allerdings dies hier, da die Schleife somit endlos läuft 😇

While( true )
"Never ending story".print

Repeat

Die Repeat-Schleife ist sozusagen das Gegenstück von While. Denn der Block wird zuerst durchlaufen und erst danach der übergebene Wert geprüft.

Repeat( false )
"Buh!".print

Somit wird hier genau einmal "Buh!" ausgegeben. Danach stellt Repeat fest dass der Parameter "false" ist und bricht ab.

i = 5
Repeat( i > 0 )
i.echo
i--
"".print

Hier wird der Block so lange wiederholt, wie "i" größer als 0 ist. Somit wird "54321" ausgegeben.

Übrigens läßt sich mit einer For-Schleife ebenso abwärts zählen:

For(5, 1).do.echo
"".print