StructorizerHandbuch DE

Jump / EXIT (Sprung)

Das Jump- (oder EXIT-)Element kennzeichnet eine Art expliziten Austritt aus einer Schleife, einer Routine oder dem Programm. Es ist eigentlich kein Mittel der strukturierten Programmierung, sondern widerspricht den Ideen dieses Konzepts. Es kann immer vermieden werden (siehe Beispiel unten), kann jedoch manchmal ein pragmatischer und bequemer Weg sein, Algorithmen zu formulieren, die andernfalls einen komplizierten Workaround mit logischen Variablen, zusätzlichen Bedingungen usw. erfordern würden.

Version 3.29-07/-08 führte eine vierte Variante des Jump-Elements ein: Die throw-Anweisung (auch raise-Anweisung). Sie dient dazu, den aktuellen algorithmischen Kontext im Fall eines erkannten Problems (einer Ausnahme) zu verlassen, das auf der aktuellen Ebene nicht gelöst werden kann, aber möglicherweise von einem höheren Kontext mit einer allgemeineren Perspektive behandelt werden kann, wenn die notwendigen Informationen dorthin weitergegeben werden. Wenn das geworfene Problem auf einer höheren Ebene gelöst werden kann, kann die Ausführung auf dieser Ebene fortgesetzt werden, andernfalls bricht das Programm ab (als hätten Sie einen exit-Befehl verwendet). Diese Verwendung eines EXIT-Elements ist möglicherweise die am besten gerechtfertigte.

Die Verwendung von Jump-Elementen wird jedoch nicht empfohlen.

Die folgenden Sprungtypen werden sowohl bei der Ausführung als auch beim Code-Export unterstützt:

  1. Schleifenausstieg: Ein leeres Jump-Element oder ein Jump-Element, das lediglich das Schlüsselwort leave enthält, verlässt einfach vorzeitig die nächste umgebende Schleife, unabhängig von ihrem Typ. (Diese Form entspricht in etwa der break-Anweisung in Sprachen wie C, Java usw.) Wenn das Jump-Element von mehreren verschachtelten Schleifen umgeben ist, verlässt eine Anweisung leave n (n als positive ganze Zahl) im Jump-Element aus den innersten n Schleifen, sodass die Ausführung mit der nächsten Anweisung nach der äußersten der verlassenen Schleifen fortgesetzt wird.
    Hinweis: leave 1 ist äquivalent zu leave oder einem leeren Jump-Element.
  2. Routinenausstieg: Um eine Routine (das aktuelle Diagramm) sofort zu verlassen, schreiben Sie return in das Jump-Element. Dies kann auch zur Rückgabe eines Ergebniswerts verwendet werden. Wenn die Routine also ein Ergebnis liefern soll, schreiben Sie einfach einen Ausdruck zur Beschreibung des Ergebniswerts oder seiner Berechnung nach dem Schlüsselwort return, z. B. return a * (b + 3).
  3. Programmausstieg: Das Schlüsselwort exit ermöglicht das sofortige Beenden des gesamten Programms, auch aus einer Unterroutine heraus. Es wird erwartet, dass ein ganzzahliger Wert als Exit-Code angehängt wird (standardmäßig würde 0 übergeben), z. B. exit 17.
  4. Ausnahme werfen: Seit Version 3.29-08 ermöglicht eine experimentelle Erweiterung die Modellierung einer Art vereinfachter strukturierter Ausnahmebehandlung. In Kombination mit TRY-Elementen können Sie eine Zeichenkette als Ausnahme (Fehlermeldung) auslösen (oder „werfen"), die vom catch-Abschnitt eines dynamisch einschließenden TRY-Elements abgefangen werden kann. Um einen Fehler auszulösen, schreiben Sie z. B.:
    throw "Problem with file " + filename

Hinweis: Seit Version 3.29 sind die oben erwähnten vorkonfigurierten Schlüsselwörter (leave, return, exit, throw) anpassbar, siehe Parser-Einstellungen, z. B.:

Schlüsselwortkonfiguration für Exit-Anweisung bei Fehler
Schlüsselwortkonfiguration für Exit-Anweisung bei Fehler

Seit Version 3.32-11 bietet der Textbereich des Element-Editors einen Autovervollständigungsmechanismus, der die Eingabe der oben konfigurierten Schlüsselwörter am Anfang der Elementtextzeile erleichtert und nach einer kleinen Anzahl eingetippter Bezeichnerzeichen nach dem Schlüsselwort auch passende Namen verwendeter Variablen vorschlägt. Weitere Details finden Sie auf der Seite Content Assist.

Beispiel für einen bedingten Sprung zum vorzeitigen Verlassen einer FOR-Schleife:

Der Sprung könnte natürlich leicht vermieden werden, indem die FOR-Schleife in eine WHILE-Schleife (grüne und gelbe Elemente) zerlegt wird, wobei sowohl die negierte Bedingung der Alternative als auch das Limit maxIterations als (Wieder-)Eintrittsbedingung verwendet werden (siehe Transmutation für eine automatische FOR-Schleifen-Zerlegung):

Schleife, die einen Sprung vermeidet
Schleife, die einen Sprung vermeidet

Anweisungstransmutation

Wenn Sie versehentlich eine Jump-Anweisung einer der unterstützten Arten in ein einfaches Instruction-Element geschrieben haben, müssen Sie das Element nicht löschen, ein EXIT-Element einfügen und die gesamte Anweisung erneut eingeben. Durch Klicken auf die Zauberstab-Schaltfläche (Transmutationsschaltfläche) (bei ausgewähltem fehlerhaften Instruction-Element) können Sie es in ein EXIT-Element (mit demselben Inhalt) transmutieren. Dies kann auch als einfacher Test dienen, ob die Anweisung den oben genannten Syntaxregeln entspricht. (Andernfalls funktioniert die Transmutationsschaltfläche einfach nicht.)