StructorizerHandbuch DE

Controller-Aliase

Motivation für Alias-Routinennamen

In einer Programmierumgebung haben eingebaute Routinen normalerweise einen festen Namen und eine gegebene Argumentreihenfolge. Wenn man sich nicht an diese „Details" hält, funktionieren sie schlicht nicht ...

Um z. B. die Quadratwurzel einer Zahl x zu berechnen, für die es eine Funktion sqrt gibt, muss man sqrt(x) verwenden, während „square_root(x)" natürlich nicht funktioniert.

Bei einigen eingebundenen Demo-Controller-Modulen wie Turtleizer ist das (seit Version 3.27-05) anders: Lehrende haben eine Möglichkeit erbeten, die verfügbaren Turtle-Befehle zu „übersetzen" (allgemeiner: umzubenennen), um den Lernprozess ihrer Schüler zu erleichtern, sodass z. B. Benutzer in Spanien „adelante" statt „forward" eingeben könnten, um die Turtle vorwärts zu bewegen.

Diese Aliasnamen sollten sich jedoch nicht automatisch mit der gewählten Dialogsprache ändern. Daher war ein separater Präferenzmechanismus erforderlich.

Die Controller-Alias-Spezifikation

Version 3.27-05 führte einen zusätzlichen Präferenzen-Dialog ein, der über den Menüpunkt „Preferences › Controller Aliases ..." (Präferenzen › Controller-Aliase ...) zugänglich ist:

Menüpunkt „Controller Aliases"

Bei Auswahl erscheint der folgende Dialog, in dem Sie Ihre bevorzugten Aliasnamen für die verfügbaren Routinen eingebundener Controller-Module angeben können (derzeit gibt es nur Turtleizer, aber es könnten eines Tages mehr werden):

Dialog „Diagram Controller Aliases
Dialog „Diagram Controller Aliases"

Der Dialog enthält eine Registerkarte für jedes eingebundene Diagramm-Controller-Modul mit einer lexikografisch sortierten Tabelle aller verfügbaren Prozeduren und Funktionen. Die linke Spalte zeigt die originalen Signaturen (d. h. Namen, erwartete Argumenttypen und den Ergebnistyp – falls die Routine einen Wert zurückgibt). Die rechte Spalte ist zunächst leer, kann aber mit Ihren bevorzugten Alias-Routinennamen gefüllt werden, die die ursprünglichen Namen virtuell ersetzen sollen. Schreiben Sie dort keine Klammern und Typnamen, nur den alternativen Routinennamen. Argumentanzahl und -typen können nicht geändert werden. Die Aliasnamen müssen Bezeichner sein, d. h. sie dürfen nur aus (englischen) Buchstaben, Ziffern und möglicherweise Unterstrichen bestehen, wie this_is_4_you. Andere Zeichen wie Leerzeichen, Bindestriche, Operatorsymbole oder spezielle alphanumerische Zeichen (z. B. ä, ú, ß) dürfen nicht vorkommen. Andernfalls wird Ihr eingegebener Name abgelehnt:

Fehlermeldung bei Verstoß gegen die Bezeichner-Syntax
Fehlermeldung bei Verstoß gegen die Bezeichner-Syntax

Der Dialog prüft nicht nur die Bezeichner-Syntax, sondern auch, dass es keine Namenskonflikte unter den Controller-Routinen gibt. Diese Prüfung erfolgt nur, wenn Sie die Schaltfläche „OK" drücken oder versuchen, den Dialog mit <Ctrl><Enter> oder <Shift><Enter> zu verlassen (was ebenfalls das Bestätigen der Änderungen bedeutet). Wenn die Kombination eines Aliasnamens mit der Argumentanzahl der zugehörigen Routine einer originalen Routinen-Signatur oder einem anderen angegebenen Alias entspricht (ohne Berücksichtigung der Groß-/Kleinschreibung), erscheint eine Fehlermeldung, die alle widersprüchlichen Routinen-Sätze auflistet und Sie bittet, die aufgelisteten Konflikte zu lösen (durch Wahl anderer Namen oder durch Löschen widersprüchlicher Aliase):

Konfliktmeldung bei mehrdeutigen Signaturen
Konfliktmeldung bei mehrdeutigen Signaturen

Sie können denselben Aliasnamen für Routinen mit unterschiedlicher Argumentanzahl verwenden, aber nicht für Routinen mit gleicher Argumentanzahl.

(Übrigens wird die Konfliktliste in die Systemzwischenablage kopiert, wenn die Schaltfläche „OK" des obigen Meldungsfelds gedrückt wird, sodass Sie diese speichern und beim Ändern der konfliktierenden Namen nachschlagen können.)

Eine leere Zelle in der rechten Spalte bedeutet „kein Alias" für die Routine dieser Zeile. Durch Löschen einer Zelle können Sie einen angegebenen oder widersprüchlichen Alias entfernen.

Wenn Sie den Dialog mit <Esc> oder durch Drücken der Schließen-Schaltfläche ([x]) verlassen, werden alle Ihre Änderungen verworfen (vergessen).

Die Auswirkungen

Um die Alias-Definitionen wirksam zu machen, müssen Sie das Kontrollkästchen „Apply the specified aliases on display etc." (Angegebene Aliase bei der Anzeige usw. anwenden) oberhalb des Registerkartenbereichs im Dialog „Diagram Controller Aliases" aktivieren (siehe Screenshot weiter oben).

In diesem Fall ersetzen die definierten Aliasnamen sofort die ursprünglichen Routinennamen in der Darstellung des Diagramms und beim Bearbeiten:

Originaldiagramm zum Zeichnen eines Mäandermusters
Originaldiagramm zum Zeichnen eines Mäandermusters
Diagramm mit aktivierten Alias-Namen
Diagramm mit aktivierten Alias-Namen

Im Syntax-Hervorhebungsmodus werden die Aliasnamen zur leichteren Unterscheidung unterstrichen.

Im Elementeditor können Sie entweder den Original- oder den Aliasnamen eingeben, ohne einen Unterschied zu machen: Das Diagramm zeigt stets den Alias an, und wenn Sie ein entsprechendes Element bearbeiten, finden Sie den Alias im Editor-Textbereich.

Intern werden jedoch weiterhin die ursprünglichen Routinennamen im Diagramm gespeichert, sodass Ausführung, Code-Export usw. nicht beeinträchtigt werden, d. h. sie funktionieren wie zuvor. Auf diese Weise sehen Sie sogar geladene Diagramme, die ohne Alias oder mit einem anderen Alias-Satz erstellt wurden, mit Ihrem Satz von Aliasen.