Anweisungen mit Schleifen wiederholen

for ... in ... do ... end | for ... from ... to ... do ... end | while ... do ... end

Mit einer Schleife können Sie einen Code-Block automatisch mehrmals hintereinander ausführen. Sie können zum Beispiel die Anweisungen eines Code-Blocks auf jedes Element eines Arrays anwenden.

for ... in ... do ... end

Das ist die wichtigste Schleife, die Sie sich auf jeden Fall merken sollten. Sie wird Ihnen seeeeehr oft das Leben ein bisschen leichter machen.

Wählen Sie nach dem for einen passenden Variablen-Namen für das jeweilige Element in der Liste aus, an der etwas geändert werden soll.

Die for-Schleife ist wie folgt aufgebaut:

Zeile 1: Das ist noch nicht Teil der Schleife, aber hilfreich, da besser lesbar: Wir speichern unsere Datensätze in einer Variablen.

Zeile 2: Die Schleife fängt an mit for [es folgt eine Bezeichnung für ein einzelnes Element aus der zu durchlaufenden Liste] in [es folgt die Liste] do.

Zeile 3: Anweisung, was zu tun ist.

Zeile 4: end Die Schleife wird beendet (Terminierung).

Beispiel

Sie möchten allen Kunden, die den Status 2 haben, einen neuen, den Status 1 geben. Dafür wählen Sie in der Tabelle Kunden (neu) die Kunden mit Status 2 aus. Dann weisen Sie jedem dieser Kunden (kunde) den Status 1 zu.

let kunden := select 'Kunden (neu)' where Status = 2;
for kunde in kunden do 
    kunde.Status := 1;
end

Ergebnis: Allen Kunden, die den Status 2 haben, wird der Status 1 zugewiesen.

for ... from ... to ... do ... end

Diese Schleife eignet sich vor allem bei der Arbeit mit numerischen Werten, da anstelle eines Arrays eine Zahlenfolge verwendet wird, die von der Schleife durchlaufen wird.

Bei jedem Durchgang wird zu der Schleifenvariablen 1 addiert (Inkrement = 1). Es fängt dabei mit dem Wert nach from (inklusive) und hört vor dem Wert nach to (exklusive).

Beispiel

let array := [10, 20, 30, 20, 10];
let result := 0;
for i from 0 to 3 do
	result := result + item(array, i)
end;
result

Ergebnis: 60

Die Werte des Arrays mit den Indizes 0, 1 und 2 werden addiert. 10 + 20 + 30 = 60.

Durch step kann man die Höhe des Inkrements ändern.

Beispiel

let array := [10, 20, 30, 20, 10];
let result := 0;
for i from 0 to 5 step 2 do
	result := result + item(array, i)
end;
result

Ergebnis: 50

Die Werte des Arrays mit den Indizes 0, 2 und 4 werden addiert. 10 + 30 + 10 = 50.

for i in range(0, 10) ist das Äquivalent zu for i from 0 to 10.

while ... do ... end

Diese Schleife wird so lange ausgeführt, bis die Bedingung nach while nicht mehr erfüllt ist.

Dafür deklarieren Sie zum Beispiel eine Zählervariable, die bei jedem Schleifendurchgang inkrementiert wird, bis die Bedingung nicht mehr stimmt. Die Bedingung stimmt so lange (true) die Variable kleiner als ein festgelegter Wert ist.

Falls die Bedingung sich in keinem Durchgang auf false setzt, besteht die Gefahr in einer Endlos-Schleife zu enden. Es könnte sein, dass Ninox dann explodiert. 😉

Beispiel

let i := 0;
let result := "";
while i < 10 do 
    result := result + " " + i;
    i := i + 1
end;
result

Ergebnis: 0 1 2 3 4 5 6 7 8 9

In den meisten Fällen ist for ... in ... do ... end die beste Wahl.

Last updated