Sprungbefehle

Mit Sprungbefehlen können Teile des Codes übersprungen werden.

Vorzeitiges Verlassen

Der Befehl BREAK verlässt die momentane Mehrfachverzweigung (SWITCH) oder Schleife (WHILE/UNTIL/FOR). In Mehrfachverzweigungen muss dies getan werden, wenn die CASEs nach dem, der eingetreten ist, nicht mit ausgeführt werden sollen.

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

Die Schleife wird verlassen, wenn Variable #1 einen Wert von 5 erreicht, obwohl die Rahmenbedingung, dass sie weniger als 10 betragen muss, noch nicht überschritten wurde. Variable #2 endet mit einem Wert von 4, da sie keine Gelegenheit bekommt, im abbrechenden Durchlauf hochzuzählen.

Vorzeitiges Wiederholen

Der Befehl CONTINUE sorgt in einer Schleife (WHILE/UNTIL/FOR) dafür, dass der aktuelle Durchlauf abgebrochen und falls möglich, der nächste begonnen wird.

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

Das Hochzählen von Variable #2 wird in dem Durchlauf, in dem Variable #1 einen Wert von 5 hat, übersprungen und direkt zur Überprüfung des nächsten Durchlaufs übergegangen.

Verschachtelte Verwendung

Die Sprungbefehle BREAK sowie CONTINUE können mit einer in Klammern angehängten positiven Zahl (eine 1 funktioniert genau so wie das Weglassen dieser) mehrere Mehrfachverzweigungs- (SWITCH) und/oder Schleifen-Ebenen (WHILE/UNTIL/FOR) in der Verschachtelung nach außen springen. Einfachverzweigungs-Ebenen zählen nicht mit, Mehrfachverzweigungen werden nur von BREAK, nicht aber von CONTINUE berücksichtigt.

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

Während die äußere Schleife noch im ersten Durchlauf ist, werden, sobald Variable #2 in der inneren einen Wert von 5 erreicht, beide Schleifen komplett abgebrochen.

Unterbrechen und Verlassen

Die Anweisung PAUSE unterbricht das laufende Script und kehrt im nächsten Frame wieder zur Ausführung zurück. EXIT hingegen bricht die Ausführung komplett ab, springt sozusagen direkt an deren Ende.

$
// Aktuellen Zeitstempel in Millisekunden merken
v[1] = Time.Tick;

// Schleife höchstens fünf Sekunden lang ausführen
do
  v[2] = Time.Tick;
  if(Keyboard.GetKeyState(VK_ESCAPE) != 0)
    // Abbrechen, falls ESC gedrückt wurde
    a[1] = "Abgebrochen";
    exit;
  pause;
  endif;
loop while(v[2] - v[1] < 5000);

// In a[1] die aufgewendete Wartezeit eintragen
a[1] = "Gewartete Zeit: " .. (v[2] - v[1]) / 1000.0 .. " s";