Z.u.L. > Dokumentation > Befehlsmodus
Z.u.L. kennt zwei Operations-Arten
Der visuelle Modus ist der normale Modus zum Konstruieren, während der beschreibende Modus eher didaktische Ziele hat. Zum Umschalten zwischen diesen Modi gibt es einen Menüpunkt und das Werkzeug . Das Werkzeug ist allerdings per Default ausgeblendet.
Die Modi sind dadurch erkennbar, dass im visuellen Modus die Statuszeile erscheint und im beschreibenden Modus eine Eingabezeile, in der Konstruktionsschritte eingegeben werden können.
Außerdem ist es möglich eine Konstruktion extern in einer Datei zu erstellen, und dann zu laden. Dort sind auch Makros definierbar, so dass sich eine regelrechte Programmiersprache für Konstruktionen mit Unterprogrammen ergibt.
Im visuellen Modus konstruiert man mit der Maus auf der Konstruktionsoberfläche. Objekte werden direkt durch Anklicken ausgewählt. Die meisten Teile dieser Anleitung beziehen sich auf den visuellen Modus.
In diesem Modus werden die Konstruktionsschritte in einer Eingabezeile unterhalb des Konstruktionsfensters eingegeben. Die Werkzeugleiste bleibt zwar erhalten, aber die Werkzeuge funktionieren anders.
Natürlich ist es nun notwendig, eine gewisse Syntax einzuhalten. Die allgemeine Form eines Konstruktionsschrittes ist.
name=function(parameter,...)
Diese Syntax wird durchgängig eingehalten. Der Name kann fehlen. Dann wird ein Name vom Programm vergeben. Übrigens werden im nicht-visuellen Modus normalerweise alle konstruierten Objekte mit Namen angezeigt.
Die folgende Liste gibt einen Überblick über die recht einfache Syntax der Funktionen. Außerdem existiert eine Hilfedatei, die diese Kommandos enthält, und die man direkt aus Z.u.L. heraus aufrufen kann.
Anstatt der deutschen Lang- oder Kurzform kann auch die englische Alternative verwendet werden. Bei den Langformen spielt Groß- oder Kleinschreibung keine Rolle.
Beispiel |
Langform |
Alternative |
Beschreibung |
---|---|---|---|
A=P() |
Punkt |
point |
Erzeugt einen Punkt, der zufällig irgendwo am Bildschirm erscheint. |
A=P(0,1) |
Punkt |
Erzeugt einen Punkt, der in (0,1) fixiert ist. |
|
a=s(B,C) |
Strecke |
segment |
Erzeugt die Strecke von B nach C. |
a=s(B,2) |
Erzeugt eine Strecke von B nach rechts, die auf die Länge 2 fixiert ist. Dabei entsteht ein weiterer Punkt. |
||
a=g(B,C) |
Gerade |
line |
Erzeugt die Gerade durch B und C. |
a=r(B,C) |
Strahl |
ray |
Erzeugt den Strahl von B aus durch C. |
k=k(A,B) |
Kreis |
circle |
Erzeugt den Kreis um A durch B. |
k=k(A,2) |
Erzeugt einen Kreis, dessen Radius auf 2 fixiert ist. Wieder kann 2 irgend ein Ausdruck sein. Ein Spezialfall ist es, wenn statt 2 die Länge einer Strecke verwendet wird. |
||
k=k(A,B,C) |
Erzeugt einen Kreis um A mit Radius BC. |
||
A=S(g,g) |
Schnitt |
intersection |
Erzeugt den Schnitt zweier Geraden. |
A,B=S(k,k) |
Erzeugt die beiden Schnitte von Kreisen, oder von Kreisen mit Geraden. Es kann auch nur ein oder kein Name angegeben werden. |
||
versch(A,P) |
Verschieden |
away |
Der Schnitt A soll verschieden vom Punkt P sein. |
nahe(A,P) |
Nahe |
close |
Der Schnitt A soll möglichst nahe beim Punkt P sein. |
M=M(A,B) |
Mitte |
midpoint |
Erzeugt den Mittelpunkt von AB. |
g=p(g,A) |
Parallele |
parallel |
Erzeugt die Parallele zu g durch A. |
g=l(g,A) |
Lot |
plumb |
Erzeugt das Lot zu g durch A. |
a=w(A,B,C) |
Winkel |
angle |
Erzeugt den Winkel ABC (Scheitel in B). |
a=w(A,B,90) |
Erzeugt einen 90-Grad Winkel an ABC. Statt 90 kann wie immer jeder Ausdruck verwendet werden. |
||
A=A(A,B,C) |
Polygon |
polygon |
Erzeugt ein gefülltes Vieleck mit diesen Ecken. |
wert(P,0,1) |
Wert |
value |
Fixiert den Punkt nach (0,1). |
wert(s,2) |
Fixiert die Strecke auf die Länge 2. |
||
wert(k,2) |
Fixiert den Radius des Kreises auf 2. |
||
wert(w,90) |
Fixiert den Winkel auf 90 Grad. |
||
wert(wahr,o) |
Stellt die Wertanzeige für das Objekt an und aus. |
||
wert(wahr) |
Stellt die Defaultanzeige für Werte ein und aus. |
||
name(o,p) |
Name |
name |
Setzt den Namen des Objektes o auf p. |
name(wahr,o) |
Stellt die Namensanzeige für das Objekt an und aus. |
||
name(wahr) |
Stellt die Defaultanzeige für Namen ein und aus. |
||
v(wahr,o) |
Verstecken |
hide |
Versteckt das Objekt und zeigt es wieder an. |
v(o) |
Versteckt das Objekt. |
||
v(wahr) |
Stellt den Defaultwert für das Verstecken von Objekten ein und aus. |
||
farbe(grün,o) |
Farbe |
color |
Färbt das Objekt mit einer der Farben Schwarz, Blau, Grün, Braun (black, blue, green, brown) |
farbe(grün) |
Stellt die Farbe als Defaultfarbe ein. |
||
dicke(dick,o) |
Dicke |
thickness |
Stellt die Darstellung des Objekts auf Dick, Normal oder Dünn (thick, normal, thin) |
dicke(dick) |
Stellt die Defaultdicke ein. |
||
typ(quadrat,P) |
Typ |
type |
Stellt die Darstellung des Punktes P auf Quadrat, Raute, Kreis oder Punkt (square, diamond, circle, point) |
typ(quadrat) |
Stellt die Defaultpunktdarstellung ein. |
||
partiell(wahr,k) |
Partiell |
partial |
Stellt die partielle Darstellung des Objekts k an oder aus. |
partiell(wahr) |
Stellt die Defaultdarstellung um. |
||
voll(true,o) |
Voll |
fill |
Stellt das Objekt o auf gefüllte oder nicht gefüllte Darstellung. |
zur(true,o) |
Zurück |
back |
Stellt das Objekt in den Hintergrund oder nicht. |
fenster(0,0,5) |
Fenster |
window |
Stellt das Sichtfenster auf das Zentrum (0,0) und die Breite 2*5. |
stumpf(true,a) stumpf(a) |
Stumpf | obtuse | Der Winkel a kann größer als 180 Grad werden oder nicht. |
solid(true,a) solid(a) |
solid | Das Objekt ist nicht transparent. | |
beschränkt(c,A,B) | restrict | Beschränkt einen Kreis auf den Bogen von A bis B. | |
gültig(true,o) gültig(o) |
valid | Lote und Schnitte werden nicht mehr ungültig, wenn der Schnitt außerhalb der Strecke oder des Bogens liegt. | |
name(A,B) | rename | Nenne A zu B um. |
Auch Makros können verwendet werden. Der Funktionsname ist in diesem Fall der Makroname. Namen können nur an die angegebene Makro-Zielobjekte vergeben werden. Es ist deswegen günstig, bei der Definition von Makros immer die wesentlichen Ziele anzugeben.
Bei Makros, die einen Prompt zur Größeneinstellung eines Objektes enthalten, kann diese Größe als zusätzlicher Parameter angegeben werden.
Damit ist es möglich, Konstruktionen in der beschreibenden Form in eine Datei zu schreiben. Außerdem kann die Datei Makrodefinitionen enthalten, die sich auch gegenseitig aufrufen dürfen. Damit entsteht eine einfache Programmiersprache für Konstruktionen. Solche Konstruktionen lassen sich direkt laden (wenn sie etwa in einem externen Editor erstellt wurden), oder vor dem Laden bearbeiten.
Diese Konstruktionsbeschreibungen sehen wie normale Konstruktionen aus. Sie können Kommentare enthalten die mit // eingeleitet werden und für den Rest der Zeile gelten. Die verwendete Sprache ist zeilenorientiert. Jeder Konstruktionsschritt nimmt genau eine Zeile ein.
Außerdem können sie Makros enthalten, die auch andere Makros aufrufen können. Ein typisches Beispiel ist
Makro U
// Kreis durch drei Punkte
Parameter A=P // Erster Punkt
Parameter B=P // Zweiter Punkt
Parameter C=P // Dritter Punkt
g1=MS(A,B)
g2=MS(A,C)
U=S(g1,g2)
Ziel k=k(U,A)
Ende
Die Einrückungen sind hier optional. Die Kommentarzeilen am Anfang werden als Makrokommentar gespeichert. Parameterpunkte sind mit dem Schlüsselwort Parameter (oder Param) gekennzeichnet, und Ziele mit dem Schlüsselwort Target (oder Ziel). Der Prompt für diese Parameter ist der evtl. vorhandene Einzeilenkommentar nach dem Parameter.
Das Makro im obigen Beispiel ruft das Makro MS auf, das die Mittelsenkrechte zwischen zwei Punkte konstruiert. Das Makro könnte etwa so aussehen.
Makro MS
// Mittelsenkrechte
Param A=punkt
Param B=punkt
partiell(wahr)
k1=kreis(A,B)
k2=kreis(B,A)
partiell(falsch)
P1,P2=schnitt(k1,k2)
Ziel g=gerade(P1,P2)
Ende
Da MS ein Zielobjekt hat (die Mittelsenkrechte), kann im Aufruf g1=MS(A,B) diesem Ziel ein Name zugewiesen werden. Ziele müssen separat definiert werden, wenn in einer Zeile mehr als ein Objekt entsteht.
A,B=schnitt(g,h)
Ziel B
Ein Makro kann mehrere Ziele haben, die dann aber auch alle beim Aufruf zugewiesen werden müssen.
A,B=test(...)
Prompts sind ebenfalls möglich. Dazu wird das Schlüsselwort Prompt verwendet. Wie bei der normalen Definition von Makros wird der Benutzer beim Aufruf des Makros nach dem Wert dieses Objekts gefragt, oder beim beschreibenden Aufruf wird der Wert von einem zusätzlichen Parameter gelesen. Das Objekt muss ein fixiertes Objekt sein.
Beachten Sie bei Makrodefinitionen, dass nur diejenigen Objekte konstruiert werden, die tatsächlich aus den Parametern konstruierbar sind. Andere Konstruktionsschritte werden nicht ausgeführt.
Verwendet man Kreise oder Geraden als Parameter, so müssen die Elternobjekte vorher definiert sein. Die Mittelsenkrechte könnte dann auch von einer Strecke abhängen.
Makro MS
// Mittelsenkrechte
A=punkt
B=punkt
Parameter s=strecke(A,B)
partiell(wahr)
k1=kreis(A,B)
k2=kreis(B,A)
partiell(falsch)
P1,P2=schnitt(k1,k2)
Ziel g=gerade(P1,P2)
Ende
Falls Kreise als Parameter verwendet werden, so kann man die spezielle Syntax
A=Punkt
Parameter k=Kreis(A)
verwenden. Diese Art von Kreisen macht nur als Parameter in Makros Sinn.
Das Kommando "sichtbar" (showall) zeigt auch die Zwischenschritte eines Makros an, die normalerweise versteckt werden. Das Kommando "unsichtbar" (invisible) versteckt Zwischenschritte vollständig.
Z.u.L. > Dokumentation > Befehlsmodus