Skripting: Unterschied zwischen den Versionen

Aus GeoGebra Manual
Wechseln zu: Navigation, Suche
(Autogenerated from properties)
 
Zeile 1: Zeile 1:
 
<noinclude>{{Manual Page|version=4.0}}</noinclude>{{objects|property}}
 
<noinclude>{{Manual Page|version=4.0}}</noinclude>{{objects|property}}
 
:{{translate|Scripting}}
 
:{{translate|Scripting}}
 +
GeoGebra unterstützt zwei Skriptsprachen -- GGBScript und Javascript. Skripte sind eine Abfolge von Aktionen die ausgelöstw erden durch:
 +
* Klicken oder Update eines bestimmten Objektes
 +
* Laden der Datei (im Fall von JavaScript)
 +
* Javascript listeners (siehe auch [[Referenz:JavaScript]])
 +
Sie können die Skript-Funktion mithilfe des [[Eigenschaften-Dialog]] erreichen. Gehen Sie dazu auf den Kartenreiter ''Erweitert'' und setzten Sie ein Häkchen bei ''Ermögliche Skripting''.
 +
 +
==GGBScript==
 +
Sie können Skripte erzeugen, die GeoGebra-Befehle enthalten.
 +
{{Example|1=<div>
 +
* ''a'' ist ein [[Schieberegler_(Werkzeug)|Schieberegler]] von 1 bis 3, der nur ganzzahlige Werte zulässt
 +
* <code><nowiki>liste1 = {"rot", "grün", "blau"}</nowiki></code>
 +
* in den Eigenschaften von ''a'' setzen Sie das Skript "Bei Update" auf <code>SetzeFarbe[a, Element[liste1, a]]</code>
 +
* wenn Sie nun den Schieberegler bewegen ändert er seine Farbe</div>}}
 +
 +
==JavaScript==
 +
JavaScript ist eine Programmiersprache die in zahlreichen Internettechnologien eingesetzt wird. Im Gegensatz zu GeoGebra Script müssen die Befehle nicht als einfache Sequenzen ausgeführt werden, sondern es können auch Kontrollstrukturen wie (<code>if</code>, <code>while</code>, <code>for</code>) verwendet werden. Sie finden ein gute Anleitung zur Verwendung von JavaScript auf [https://developer.mozilla.org/de/JavaScript developer.mozilla.org]. In GeoGebra können Sie aber spezielle JavaScriptmethoden benutzen, um die Konstruktion zu verändern. Diese Methoden gehören zu den ggbApplet Objekten, was bedeutet, dass Sie diese durch <code>ggbApplet.method_name(parameter,..,parameter)</code> aufrufen können. Die vollständige Liste dieser Methoden finden Sie unter [[Referenz:JavaScript]].
 +
 +
{{Example|1=
 +
<pre>
 +
for(var i =0;i<10;i++)
 +
  ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
 +
</pre>
 +
 +
Dieses Skript erzeugt 10 Punkte von ''A<sub>0</sub>'' bis ''A<sub>9</sub>'' mit zufälligen Koordinaten.
 +
}}
 +
 +
GeoGebra beinhaltet seine eigene JavaScript engine. When exported as [[Dynamic Worksheet]] one can choose whether to use this engine or the one contained in browser applets. If you edit JavaScript in a HTML page, the ggbApplet variable will not be initialized, you have to initialize it e.g. using <code>ggbApplet=document.applets[0];</code> first.
 +
===Global JavaScript===
 +
In the Global JavaScript part of Scripting tab in [[Properties Dialog]] you may define some functions or do some assignments that will be done before the construction is loaded. You can also define function ''ggbOnInit()'', which is called automatically once the construction is loaded. The ggbOnInit function can be used for registering some listeners, as shown below.{{example|1=
 +
<pre>
 +
function onAdd(name){
 +
    alert("Object "+name+" was added.");
 +
}
 +
 +
function ggbOnInit(){
 +
    ggbApplet.registerAddListener("onAdd");
 +
}
 +
</pre>
 +
First we defined function ''onAdd'' that given a string shows a message depending on that string. After that, using the ''ggbOnInit'' function, we told GeoGebra to call this function whenever a new object is added. Once we reload our construction, function ggbOnInit will be called and since then, when user adds a point named e.g. ''A'', message "Object A was added" will appear. }}
 +
 +
You can also use listeners for actions like rename, delete and clear construction. Complete list is available in [[Reference:JavaScript]].
 +
{{Note|Using any ggbApplet methods in Global JavaScript outside of ggbOnInit will not work as intended since they will be called before the construction is loaded.}}
 +
===USB Logging===
 +
For logging data from from some Vernier USB Data Loggers, eg ''Go!Motion'' and ''Go!Temp'' one can define a logger listener using the registerLoggerListener method. Such listener can look like this:
 +
<pre>
 +
function logger(value) {
 +
  var d = value * 1;
 +
  ggbApplet.evalCommand("(CopyFreeObject[a],"+d+")");
 +
  ggbApplet.evalCommand("SetValue[a,a+1]");
 +
}
 +
</pre>
 +
This script assumes that there is a free number ''a'' in the construction. Each time number ''d'' is logged, point ''(a,d)'' is constructed and ''a'' is increased.

Version vom 27. Juli 2011, 08:44 Uhr


Dieser Text ist noch nicht übersetzt. Sie können das englische Original en:Manual:Scripting lesen. Wenn sie Übersetzer-Rechte haben, können sie den Text ergänzen.

GeoGebra unterstützt zwei Skriptsprachen -- GGBScript und Javascript. Skripte sind eine Abfolge von Aktionen die ausgelöstw erden durch:

  • Klicken oder Update eines bestimmten Objektes
  • Laden der Datei (im Fall von JavaScript)
  • Javascript listeners (siehe auch Referenz:JavaScript)

Sie können die Skript-Funktion mithilfe des Eigenschaften-Dialog erreichen. Gehen Sie dazu auf den Kartenreiter Erweitert und setzten Sie ein Häkchen bei Ermögliche Skripting.

GGBScript

Sie können Skripte erzeugen, die GeoGebra-Befehle enthalten.

Beispiel:
  • a ist ein Schieberegler von 1 bis 3, der nur ganzzahlige Werte zulässt
  • liste1 = {"rot", "grün", "blau"}
  • in den Eigenschaften von a setzen Sie das Skript "Bei Update" auf SetzeFarbe[a, Element[liste1, a]]
  • wenn Sie nun den Schieberegler bewegen ändert er seine Farbe

JavaScript

JavaScript ist eine Programmiersprache die in zahlreichen Internettechnologien eingesetzt wird. Im Gegensatz zu GeoGebra Script müssen die Befehle nicht als einfache Sequenzen ausgeführt werden, sondern es können auch Kontrollstrukturen wie (if, while, for) verwendet werden. Sie finden ein gute Anleitung zur Verwendung von JavaScript auf developer.mozilla.org. In GeoGebra können Sie aber spezielle JavaScriptmethoden benutzen, um die Konstruktion zu verändern. Diese Methoden gehören zu den ggbApplet Objekten, was bedeutet, dass Sie diese durch ggbApplet.method_name(parameter,..,parameter) aufrufen können. Die vollständige Liste dieser Methoden finden Sie unter Referenz:JavaScript.

Beispiel:
for(var i =0;i<10;i++) 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
Dieses Skript erzeugt 10 Punkte von A0 bis A9 mit zufälligen Koordinaten.

GeoGebra beinhaltet seine eigene JavaScript engine. When exported as Dynamic Worksheet one can choose whether to use this engine or the one contained in browser applets. If you edit JavaScript in a HTML page, the ggbApplet variable will not be initialized, you have to initialize it e.g. using ggbApplet=document.applets[0]; first.

Global JavaScript

In the Global JavaScript part of Scripting tab in Properties Dialog you may define some functions or do some assignments that will be done before the construction is loaded. You can also define function ggbOnInit(), which is called automatically once the construction is loaded. The ggbOnInit function can be used for registering some listeners, as shown below.

Beispiel:
function onAdd(name){
    alert("Object "+name+" was added.");
}

function ggbOnInit(){
    ggbApplet.registerAddListener("onAdd");
}
First we defined function onAdd that given a string shows a message depending on that string. After that, using the ggbOnInit function, we told GeoGebra to call this function whenever a new object is added. Once we reload our construction, function ggbOnInit will be called and since then, when user adds a point named e.g. A, message "Object A was added" will appear.

You can also use listeners for actions like rename, delete and clear construction. Complete list is available in Reference:JavaScript.

Anmerkung: Using any ggbApplet methods in Global JavaScript outside of ggbOnInit will not work as intended since they will be called before the construction is loaded.

USB Logging

For logging data from from some Vernier USB Data Loggers, eg Go!Motion and Go!Temp one can define a logger listener using the registerLoggerListener method. Such listener can look like this:

function logger(value) {
   var d = value * 1;
   ggbApplet.evalCommand("(CopyFreeObject[a],"+d+")");
   ggbApplet.evalCommand("SetValue[a,a+1]");
}

This script assumes that there is a free number a in the construction. Each time number d is logged, point (a,d) is constructed and a is increased.

Kommentare

Ausführliche Anleitungen[Bearbeiten]

Spezielle Anwendungen[Bearbeiten]

Skripting mit Kontrollkästchen verwenden[Bearbeiten]

Mit Skripting kann man die Möglichkeiten der Kontrollkästchen erweitern. Beispiele und eine Anleitung finden Sie auf der Seite zum Kontrollkästchen.

Zufallszahlen mit Skripten verwenden[Bearbeiten]

Bei der Verwendung von Skripten und Zufallszahlen gilt es eine Grundregel bzgl. der Zufallszahlen zu beachten:

Sobald ein Objekt neu berechnet wird, in dessen Definition eine Zufallszahl vorkommt, wird auch die Zufallszahl neu berechnet.
Beispiel: Hat man eine Zahl definiert durch z=Zufallszahl[1,2]*a, wobei a ein Schieberegler ist, dann wird z auch dann neu berechnet, inklusive neuer Zufallszahl, wenn man den Wert des Schiebereglers verändert.

Man muss deshalb beim Erstellen einer Zeichnung darauf achten, dass das Objekt, das die Zufallszahl enthält, nicht neudefiniert wird, wenn man die "alte" Zufallszahl behalten will. Das ist zum Beispiel dann der Fall, wenn man per Zufall Aufgaben erstellen und sie dann automatisch kontrollieren lassen will.

Mögliche Lösungen:

  1. Man sichert das gesuchte Ergebnis in einer Variable, die nicht mehr von einer Zufallszahl abhängig ist. Dazu nutzt man den Befehl KopiereFreiesObjekt und merkt sich so das Ergebnis, auch wenn sich die Zufallszahl ändert.
  2. Man verwendet gleich KopiereFreiesObjekt , um das Objekt vor einer Neuberechnung zu bewahren.


© 2024 International GeoGebra Institute