Skripting in GeoGebra

Skripts sind Folgen von Befehlen, die nacheinander ausgeführt werden.[br][br][i]GeoGebra [/i]unterstützt zwei Skriptsprachen - [i]GGBScript u[/i]nd [i]JavaScript[/i]. Du kannst Skripts im [i]Skripting [/i]Tab des [img width=16,height=16]https://wiki.geogebra.org/uploads/thumb/3/30/Menu-options.svg/16px-Menu-options.svg.png[/img] [url=https://wiki.geogebra.org/de/Eigenschaften-Dialog]Eigenschaften-Dialogs[/url] des Objekts, welches du mit einem Skript versehen möchtest, hinzufügen und verändern.[br][br][b]Anmerkung:[/b] Die [i]Objekteigenschaften [/i]müssen wieder geschlossen sein, damit Skripts funktionieren.
Verschiedene Objekte können mit verschiedenen Skripttypen ausgestattet werden; das Ausführen von Skripts kann ausgelöst werden durch:[br][list][*]klicken auf ein bestimmtes Objekt ([i]beiMausklick[/i]-Tab)[/*][*]aktualisieren eines bestimmten Objekts, wenn Werte oder Objekteinstellungen verändert werden ([i]beiUpdate[/i]-Tab)[/*][*]verändern des Inhalts eines Eingabefelds ([i]beiÄnderung[/i]-Tab)[/*][*]beim Loslassen des Mausklicks (oder wenn sich der Finger vom Touchscreen löst), nachdem ein Objekt verschoben wurde ([i]beiZieh-Ende[/i]-Tab)[/*][*]laden der Datei (für JavaScript - [i]GlobalesJavaScript[/i]-Tab)[/*][*]Javascript listeners (siehe [url=https://wiki.geogebra.org/en/Reference:JavaScript]Reference:JavaScript[/url])[br][/*][/list]Der Unterschied zwischen [i]beiUpdate [/i]und [i]beiÄnderung [/i]Skripts eines Eingabefeldes ist, dass im Fall des Skripts im [i]beiUpdate[/i]-Tab, das Skript nur dann ausgeführt wird, wenn der Fokus vom Eingabefeld weggenommen wird (wenn man z.B. auf einen Button klickt, in die [i]Grafikansicht [/i]klickt, etc...), wobei aber Skripts im [i]beiÄnderung[/i]-Tab sofort ausgeführt werden, wenn der Inhalt des Eingabefelds verändert wird und der Fokus noch beim Eingabefeld selbst ist.[br][br][b]Anmerkungen:[/b][br][list][*]Finde mehr in der [url=https://www.geogebra.org/m/bek5uqah]Demo der [i]beiÄnderung [/i]und [i]beiUpdate Skripts[/i][/url] für ein Eingabefeld.[/*][*]Sieh dir die [url=https://www.geogebra.org/m/kxgvyqvj]Demo des [i]beiZieh-Ende[/i] Skripting[/url] für bewegliche Punkte an.[/*][/list]
GGBScript
Du kannst Skripts aus [i]GeoGebra [/i]Befehlen erstellen, die du sonst auch in der [url=https://wiki.geogebra.org/de/Eingabezeile]Eingabezeile [/url]verwenden würdest. Nachdem das Skript ausgelöst wird, werden alle Befehle in der Reihenfolge, in der sie geschrieben wurden, ausgeführt. [br][br][b]Beispiel:[/b][br][list=1][*][i][math]a[/math][/i] ist ein ganzzahliger Schieberegler mit Werten von [math]1[/math] bis [math]3[/math] (die Schrittlänge ist somit [math]1[/math])[/*][*]gib ein: [code]liste1 = {"rot", "grün", "blau"}[br][/code][/*][*]in den Objekteinstellungen von [i][math]a[/math][/i], setze das "On Update" Skript to [code]SetzeFarbe(a, Element(liste1, a))[br][/code][/*][*]indem du den Schieberegler bewegst, veränderst du somit die Farbe des Objekts[/*][/list][br]Jedes Mal, wenn der Schieberegler verändert wird, tritt ein Update auf. Also wird für jede Bewegung das Skript aktiviert und der Wert [math]a[/math] wird verwendet, um eine Farbe der Liste zu wählen und dem Schieberegler [math]a[/math] diese Farbe zuzuweisen.[br][br][b]Anmerkung:[/b] Verwende [math]#[/math], um einen Kommentar zu verfassen.[br][br][b]Hinweis:[/b] Manche Befehle können nur für Skripting verwendet werden. Diese findest du auf der [url=https://wiki.geogebra.org/de/Skripting_(Befehle)]Skripting (Befehle)-Seite[/url].
JavaScript
[i]JavaScript [/i]ist eine Programmiersprache, die von vielen Internettechnologien verwended wird. Anders als bei [i]GeoGebra Script[/i] werden Befehle in [i]JavaScript [/i]nicht als eine einfache Folge ausgeführt, man kann sie auch mit control flow Aussagen ([code]if[/code], [code]while[/code], [code]for[/code]) verwenden. Finde mehr dazu in einem der Tutorials auf [url=https://developer.mozilla.org/en/JavaScript/Guide]developer.mozilla.org[/url]. In [i]GeoGebra [/i]kannst du spezielle [i]JavaScript [/i]Methoden anwenden, um deine Konstruktion zu verändern. Diese gehören zu ggbApplet Objekten, also kannst du sie als [code]ggbApplet.method_name(parameter,..,parameter)[/code]bezeichnen. Eine komplette Liste der Methoden findest du auf [url=https://wiki.geogebra.org/en/Reference:JavaScript]Reference:JavaScript[/url].[br][br][b]Beispiel:[/b][br][*][code]for(var i =0;i<10;i++)[br] ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");[/code][/*][br]Dieses Skript erstellt 10 Punkte [i][math]A0[/math][sub][/sub][/i] bis [i][math]A9[/math][sub][/sub][/i] mit beliebigen Koordinaten.[br][br][b]Hinweis:[/b] Skripting mit [i]JavaScript [/i]ist sehr vielseitig, deswegen lohnt es sich oft, mit den viel einfacheren [i]GeoGebra [/i]Skripts auszukommen.
Global JavaScript
Im Reiter [i]Globales JavaScript[/i] in den [img width=16,height=16]https://wiki.geogebra.org/uploads/thumb/3/30/Menu-options.svg/16px-Menu-options.svg.png[/img] [i]Einstellungen[/i] kannst du [b]Funktionen [/b](keine Variablen) definieren, die für alle anderen Skripts verfügbar sind. Du kannst auch die Funktion [i]function ggbOnInit(name, api)[/i] definieren, die automatisch ausgeführt wird, wenn die Konstruktion lädt. Die [i]ggbOnInit [/i]Funktion kann genutzt werden, um [i]listeners[/i] einzuführen, wie im Beispiel unten.[br][br][b]Beispiel:[/b][br][code]function onAdd(name){[br] alert("Object "+name+" was added.");[br]}[br][br]function ggbOnInit(name, api){[br] api.registerAddListener("onAdd");[br]}[/code][br][br]Zuerst wurde die Funktion [i]onAdd[/i] definiert, die eine Nachricht basierend auf einem gegebenen String ausgibt. Danach wurde [i]GeoGebra [/i]mithilfe der Funktion [i]ggbOnInit [/i]mitgeteilt, dass diese Funktion aufgerufen werden soll, sobald ein neues Objekt hinzugefügt wird. Sobald die Konstruktion neu geladen wird, wird die Funktion [i]ggbOnInit[/i] aufgerufen und ab diesem Zeitpunkt erscheint die Nachricht "Objekt A wurde hinzugefügt", wenn ein Benutzer einen Punkt mit dem Namen z. B. [math]A[/math] hinzufügt.[br][br]Du kannst [i]listeners [/i]für Aktionen wie Umbenennen, Löschen oder Lösche Konstruktion verwenden. Eine komplette Liste findest du in [url=https://wiki.geogebra.org/en/Reference:JavaScript]Reference:JavaScript[/url].[br][br][b]Hinweis:[/b] Die Verwendung von ggbApplet-Methoden im [i]Globalen[/i] [i]JavaScript[/i] außerhalb von ggbOnInit funktioniert nicht wie beabsichtigt, da sie aufgerufen werden, bevor die Konstruktion geladen ist.

Information: Skripting in GeoGebra