FOR-Schleife
Schleifenstile
Ein Element des Typs FOR-Schleife wird verwendet, um bestimmte Anweisungen eine vorher festgelegte Anzahl von Malen zu wiederholen. Structorizer unterstützt zwei Varianten der FOR-Schleife:
-
ZÄHLSCHLEIFE (Counting loop) — der traditionelle Stil. Die Schleife inkrementiert (oder dekrementiert) eine Zahl zwischen einem Anfangs- und einem Endgrenzwert eines Intervalls. Es muss daher eine Zählvariable sowie ihr Anfangs- und Endwert angegeben werden. Standardmäßig wird die Zählvariable nach jeder Ausführung des Schleifenrumpfs automatisch um eins erhöht.
Sie können einen anderen Inkrementwert (Schrittweite) angeben, der negativ sein kann, aber eine von null verschiedene ganzzahlige Konstante sein muss, wenn die Schleife ausführbar oder sinnvoll in eine Programmiersprache Ihrer Wahl exportiert werden soll. All diese Parameter bilden den Steuerausdruck, getrennt durch konfigurierbare Schlüsselwörter.
Beispiele für Zähl-FOR-Schleifenköpfe:for i <- 1 to 15pour j <- 10 à -10, pas = -2
-
TRAVERSIERENDE SCHLEIFE (Traversing loop) — der Schleifenrumpf wird für jedes einzelne Element einer gegebenen Kollektion wiederholt. Die Elemente müssen keine Zahlen sein, sie können jeden Datentyp haben. Daher muss eine Variable für das aktuelle Element und natürlich eine Kollektion angegeben werden, die offensichtlich ein Array sein muss. (Siehe Executor für Details zum Umgang mit Array-Variablen und Array-Ausdrücken in Structorizer.)
Beispiele für traversierende FOR-Schleifenköpfe:foreach elem in {"good", "better", "best"}para numero en numeros(wobeinumeroseine Array-Variable sein sollte)
Die unterstrichenen Schlüsselwörter (oder Schlüsselzeichenfolgen), die die Parameter der Schleife trennen und unterscheiden, sind in den Parser-Einstellungen konfigurierbar.
So können Sie eine FOR-Schleife zu Ihrem Diagramm hinzufügen:
-
Wählen Sie ein Element in Ihrem Diagramm aus, nach (oder vor) dem die FOR-Schleife eingefügt werden soll:

FOR-Schleife einfügen -
Wählen Sie nun das FOR-Schleifen-Symbol in der Symbolleiste aus (beachten Sie, dass das FOR-Schleifen-Symbol und ebenso sein Erscheinungsbild im Diagramm unterschiedlich aussehen kann, je nachdem, ob die DIN-Darstellung gewählt wurde oder nicht), oder öffnen Sie das Kontextmenü, wählen Sie das Untermenü „Add", dann „Before" oder „After" und wählen Sie schließlich den entsprechenden FOR-Schleifen-Eintrag. Alternativ können Sie die Taste
<F7>oder<Shift><F7>drücken (siehe Tastenbelegungen). -
Wenn der Editor erscheint, sehen Sie das folgende Formular. Der Screenshot zeigt es vorbereitet für die Angabe einer Zählschleife (oberes Optionsfeld ausgewählt). Die Beschriftungen und Standardfeldinhalte werden sowohl durch die Parser-Einstellungen als auch durch die Struktureinstellungen beeinflusst (dies wird weiter unten erläutert). Sie haben nun mehrere Möglichkeiten, Ihre Schleife einzurichten.

FOR-Schleifen-Editor -
Füllen Sie die Textfelder im durch den grünen Rahmen markierten Formularabschnitt aus. Geben Sie bei einer Zählschleife der Zählvariablen einen Namen, legen Sie ihren Anfangswert (Start) und Endwert (End) fest. Zusätzlich können Sie eine andere Inkrementkonstante angeben (negativ zum Dekrementieren). Seit Version 3.32-11 erhalten Sie Autovervollständigungsvorschläge für bekannte Variablennamen. Der Editor setzt sofort den resultierenden Steuerausdruck aus Ihrer Eingabe zusammen und zeigt ihn im (deaktivierten) Textbereich darunter an. Die Schrittangabe im Steuerausdruck wird weggelassen, solange das Inkrementfeld die Standardkonstante 1 enthält:

FOR-Schleife über separate Textfelder bearbeiten -
Wenn Sie das untere der beiden Optionsfelder (hier mit „foreach" beschriftet) auswählen, wird stattdessen das Formular für eine traversierende Schleife angezeigt. Auch hier müssen Sie den Namen der Schleifenvariablen angeben, dann jedoch eine Werteliste, vorzugsweise durch Kommas getrennt und in geschweiften Klammern. Es kann sich auch um den Namen einer Array-Variablen oder eine leerraumgetrennte Aufzählung von Werten handeln. Die aufgelisteten Werte müssen keine Zahlen, nicht einmal Literale sein. Wie zuvor setzt der Editor sofort den Steuerausdruck zusammen und zeigt ihn an.

FOR-Schleifen-Editor im traversierenden Formular-Modus -
Durch Aktivieren des Kontrollkästchens „Full Text Editing" ändert sich die Synchronisationsrichtung des Editors: Nun wird der Textbereich (markiert durch einen grünen Rahmen) aktiviert, während die Optionsfelder und Formularfelder im oberen Bereich lediglich die Schlussfolgerungen zeigen, die Structorizer aus dem Parsen des eingegebenen Steuerausdrucks ableitet. Der Parsing-Erfolg hängt von den in den Parser-Einstellungen konfigurierten Schlüsselwörtern für Zähl- (FOR) und traversierende (FOR-IN) Schleifen ab.

FOR-Schleife über den zusammengesetzten Textbereich bearbeiten -
Sobald der eingegebene Text eher dem Steuerausdruck einer traversierenden Schleife (d. h. einer FOR-IN-Schleife) ähnelt, wechseln die Optionsfelder und der obere Teil des Editors ändert sein Erscheinungsbild, d. h. die Menge der Formularfelder einschließlich der Beschriftungen wird angepasst, wie der nächste Screenshot zeigt.

FOR-IN-Schleife über den zusammengesetzten Textbereich bearbeiten
-
Füllen Sie die Textfelder im durch den grünen Rahmen markierten Formularabschnitt aus. Geben Sie bei einer Zählschleife der Zählvariablen einen Namen, legen Sie ihren Anfangswert (Start) und Endwert (End) fest. Zusätzlich können Sie eine andere Inkrementkonstante angeben (negativ zum Dekrementieren). Seit Version 3.32-11 erhalten Sie Autovervollständigungsvorschläge für bekannte Variablennamen. Der Editor setzt sofort den resultierenden Steuerausdruck aus Ihrer Eingabe zusammen und zeigt ihn im (deaktivierten) Textbereich darunter an. Die Schrittangabe im Steuerausdruck wird weggelassen, solange das Inkrementfeld die Standardkonstante 1 enthält:
- Füllen Sie bei Bedarf eine nützliche Beschreibung im Kommentarbereich ein — dies wird offensichtlich der Schleifenkommentar. Bestätigen Sie dann die Daten durch Klicken auf „OK" oder Drücken der Tastenkombination
<Shift><Enter>. -
Fügen Sie Anweisungen zum Rumpf Ihrer Schleife hinzu. Wählen Sie dazu zunächst das leere Element aus und dann einen beliebigen Elementtyp zum Einfügen.

Element in den FOR-Schleifen-Rumpf einfügen 
FOR-Schleife mit Rumpf -
Wenn Sie Anweisungen nach der Schleife (statt in den Schleifenrumpf) hinzufügen möchten, wählen Sie zunächst den oberen oder linken äußeren Teil des Schleifenelements aus:

FOR-Schleife – Einfügen nach der Schleife
Dies könnte das vollständige Diagramm zur Berechnung des Durchschnittswerts (Mittelwerts) der in valueArray eingefügten Zahlen sein. Die beiden ähnlichen FOR-Schleifen sind hellblau eingefärbt:

Hinweise:
- Anfangs- und Endwert können beliebige Ausdrücke sein (obwohl sie zu ganzzahligen Werten berechnet werden sollten), während die Schrittweite (d. h. das Inkrement) stets ein ganzzahliges Literal sein muss, da es sonst keine vorhersagbare Zählung wäre und Sie stattdessen eine WHILE-Schleife verwenden sollten. (Hinweis: Sie können eine FOR-Schleife des Zähltyps leicht durch den Zauberstab in ein äquivalentes WHILE-Schleifenkonstrukt transmutieren.)
- Der Executor lehnt jeden Versuch ab, die Schleifenvariable innerhalb des Schleifenrumpfs zu manipulieren (ab Version 3.25-10). Siehe auch Analyser-Einstellungen.
Beziehung zwischen Einstellungen und Editor
Die folgende Abbildung erklärt, woher die verschiedenen Beschriftungen und Einstellungen stammen. Die Schlüsselwörter und Zeichenketten in den grünen Rahmen (auch die „foreach"-Beschriftung) stammen aus den Parser-Einstellungen und steuern die Erkennung der FOR-Schleifen-Parameter innerhalb des Steuerausdrucks (Schleifenkopf). Mit anderen Einstellungen können sie also anders aussehen! Der blau umrahmte Text im Volltexttextbereich ist der in den Struktureinstellungen konfigurierte Standardtext. Dieser ist bereits eingetragen, wenn Sie eine neue FOR-Schleife hinzufügen, und entscheidet, welcher Satz von Formularfeldern dargestellt wird.

Fehlermeldungen und Hinweise
Der Editor hat ein nicht bearbeitbares Feld, in dem er eine Meldung anzeigen kann, wenn Sie z. B. einen nicht-ganzzahligen Wert (oder einen Ausdruck) als Inkrement im Volltextmodus eingeben oder wenn er eine syntaktisch fehlerhafte Werteliste bei einer traversierenden Schleife erkennt.


Wenn Sie den Schleifenstil über die Optionsfelder zwischen Zähl- und traversierender Schleife wechseln, sind die bisher eingegebenen Schleifenparameter in den meisten Fällen nicht mehr sinnvoll und müssen verworfen werden. Zum Schutz vor unbeabsichlichem Datenverlust zeigt der Editor einen Warndialog, der Ihnen ermöglicht, die Änderung rückgängig zu machen:

Beim Wechsel von einer Zählschleife mit ausschließlich konstanten Parametern würde der Editor sie jedoch in eine äquivalente traversierende Schleife umwandeln, wenn die Anzahl der Elemente ein vernünftiges Limit nicht überschreitet (derzeit 25). Das Beispiel zeigt eine solche Zählschleife vor dem Ändern des Schleifenstils ...

... und danach:

Diese Umwandlung ist nicht umkehrbar, d. h. der Editor wird nicht versuchen herauszufinden, ob eine Wertefolge ein kontinuierlich aufzählbares Ganzzahlintervall ist.
Weitere Beispiele und syntaktische Möglichkeiten
Im folgenden Diagramm sehen Sie eine Zählschleife und mehrere traversierende Schleifen (hier mit dem Schlüsselwort foreach konfiguriert), sogar verschachtelte (grün).

Wie Sie sehen, werden neben Array-Variablen und Array-Initialisierungslisten auch bloße Elementaufzählungen (durch Komma oder sogar Leerzeichen getrennt) akzeptiert (gelbe Schleifen).
Eine Liste, die von vornherein aus einem einzigen atomaren Element besteht, wie z. B.:
foreach elem in 23
macht offensichtlich keinen Sinn und wird daher syntaktisch nicht unterstützt.
Wenn die Liste jedoch aus einem einzigen String besteht, wird der Schleifenrumpf für jedes Zeichen des Strings ausgeführt (seit Version 3.27):
foreach c in "This string will be split"
Wenn der Kollektionsteil aus einer einzigen Variablen besteht, wie in:
foreach elem in some_variable
dann muss die Variable eine Array- oder String-Variable sein und wird entsprechend behandelt. Wenn es zwei oder mehr Variablen gibt, werden sie im Gegensatz dazu als Elemente behandelt, d. h. als wären sie in geschweifte Klammern eingeschlossen.
Hinweis: Sie können eine zählende FOR-Schleife in eine äquivalente Folge aus einer Initialisierungsanweisung und einer WHILE-Schleife zerlegen, indem Sie den Zauberstab (Transmutations-Symbol) verwenden.