Schleifen

Mit Schleifen wird der in selbigen eingebettete Code so lang ausgeführt und wiederholt, wie ihre gesetzten Rahmenbedingungen erfüllt bleiben. Dabei ist es auch wichtig, in den richtigen Fällen darauf zu achten, diese bereits am Anfang, bzw. erst am Ende zu definieren.

do while (...) loop

Eine While-Schleife wird so lange wiederholt, wie das am Anfang eingebettete Argument ein als TRUE-ähnlich klassifiziertes Ergebnis (alles außer 0, FALSE und leeren Strings) liefert. Diese Überprüfung wird vor jedem (auch bereits vor dem ersten) Durchlauf durchgeführt, das bedeutet, dass sie gegebenenfalls auch komplett übersprungen werden kann.

$
v[1] = 10000;
v[2] = 1;
do while(v[1] > 1)
  v[2]++;
  v[1] /= 10;
loop;

Sobald diese Schleife endet, wird Variable #2 einen Wert von 5 haben, da nach vier Durchgängen die Bedingung, dass Variable #1 größer als 1 sein muss, nicht mehr erfüllt sein wird.

do until (...) loop

Eine Until-Schleife wird so lange wiederholt, bis das am Anfang eingebettete Argument zum ersten Mal ein als TRUE-ähnlich klassifiziertes Ergebnis (alles außer 0, FALSE und leeren Strings) liefert. Auch hier gilt wie beim vorherigen Schleifentyp, dass sie komplett übersprungen wird, wenn dieses bereits bei der Überprüfung vor dem ersten Durchlauf eintritt.

$
v[1] = 10000;
v[2] = 1;
do until(v[1] > 1)
  v[2]++;
  v[1] /= 10;
loop;

Diese Schleife wird komplett übersprungen, da Variable #1 bereits vorher größer als 1 ist. Variable #2 behält somit den vor der Schleife gesetzten Wert von 1.

do (...) loop while

While-Schleifen mit einer Definition am Ende werden immer mindestens einmal ausgeführt, selbst dann, wenn die am Ende angegebenen Rahmenbedingungen kein als TRUE-ähnlich klassifiziertes Ergebnis (alles außer 0, FALSE und leeren Strings) liefern würden. Alle weiteren Durchläufe verhalten sich wie bei einer While-Schleife mit Definition am Anfang.

$
v[1] = 0;
v[2] = 1;
do
  v[2] *= 2;
  v[1]++;
loop while(v[1] == 10);

Nach einmaliger Ausführung des Codes wird diese Schleife direkt beendet, da Variable #1 nicht 10 beträgt, Variable #2 wird 2 betragen.

do (...) loop until

Until-Schleifen mit einer Definition am Ende werden immer mindestens einmal ausgeführt, selbst dann, wenn die am Ende angegebenen Rahmenbedingungen bereits ein als TRUE-ähnlich klassifiziertes Ergebnis (alles außer 0, FALSE und leeren Strings) liefern würden. Alle weiteren Durchläufe verhalten sich wie bei einer Until-Schleife mit Definition am Anfang.

$
v[1] = 0;
v[2] = 1;
do
  v[2] *= 2;
  v[1]++;
loop until(v[1] == 10);

Nach insgesamt 10 Durchläufen wird diese Schleife enden, da Variable #1 als Zähler sein Ziel von 10 erreicht haben wird. Bis dahin wurde der Wert von Variable #2 mit einem Endergebnis von 1024 insgesamt 10mal verdoppelt.

for (...) next

For-Schleifen nutzen eine in drei Abschnitte unterteilte, immer am Anfang festgelegte Grundlage zur Ausführung. Diese besteht aus einer gesetzten Ausgangssituation, einer Rahmenbedingung, die mit als TRUE-ähnlich klassifizierten Ergebnissen (alles außer 0, FALSE und leeren Strings) der Schleife das Wiederholen erlaubt, sowie einer Aktion, die zwischen den Durchläufen ausgeführt werden wird.

$
a[1] = "";
for(v[1] = 0; v[1] < 10; v[1]++)
  a[1] ..= v[1] .. ";";
next;

Diese Zählschleife wird so lang den immer aktuellen Wert von Variable #1 an ANSI-String #1 anhängen, bis dieser in hochzählenden Einserschritten sein Ziel von 10 erreicht hat, der String wird am Ende "0;1;2;3;4;5;6;7;8;9;" lauten. Die gestellten Rahmenbedingungen für diese Art von Schleife sind häufig ein Anfangswert, ein simpler Vergleich und ein stetiger Zähler, jedoch können sie jede beliebige Form abseits davon annehmen.

Endlosschleife

For-Schleifen können dauerhaft ohne jegliche Rahmenbedingungen wiederholt werden, indem man die dazugehörigen Angaben leerlässt.

$
for(;;)
  if(Keyboard.GetKeyState(VK_F10) != 0)
    Destiny.Debugger.Open();
  endif;
  pause;
next;

Dieser Code wird in Dauerschleife ausgeführt und öffnet immer dann den Destiny-Debugger, wenn ein Druck auf die F10-Taste erkannt wird. Die PAUSE-Anweisung danach sorgt dafür, dass das Script bis zum nächsten Frame wartet, bevor die Abfrage erneut ausgeführt wird.

Vorzeitiges verlassen

Soll eine Schleife (dies gilt für alle Arten) vorzeitig abgebrochen werden, obwohl noch darauffolgender Code sowie weitere Durchläufe der Schleife ausstehen würden, kann dies mit einem "BREAK" angeordnet werden.

$
v[1] = 0;
v[2] = 0;
do while(v[1] < 10)
  v[1]++;
  if(v[1] == 4)
    break;
  endif;
  v[2]++;
loop;

Diese Schleife wird, auch wenn die Rahmenbedingung weiterhin erfüllt werden würde, verlassen, sobald Variable #1 einen Wert von 4 hat, jedoch bevor Variable #2 ebenfalls die Gelegenheit hatte, hochzuzählen. Somit endet letztere auf einem Wert von 3.

Vorzeitiges Wiederholen

Soll an einer verfrühten Code-Stelle der aktuelle Durchlauf der Schleife abgebrochen und die Überprüfung des nächsten Durchlaufs gestartet werden, kann dies mit einem "CONTINUE" angeordnet werden.

$
v[2] = 0;
for(v[1] = 0; v[1] < 10; v[1]++)
  if(v[1] == 4)
    continue;
  endif;
  v[2]++;
next;

Der Durchlauf, in dem Variable #1 einen Wert von 4 aufweisen wird, wird abgebrochen, bevor Variable #2 die Möglichkeit dazu hat, hochzuzählen. Sobald alle Durchläufe fertig sind, wird damit Variable #2 um 1 kleiner sein als #1.