Skripting: Unterschied zwischen den Versionen

Aus GeoGebra Manual
Wechseln zu: Navigation, Suche
Zeile 45: Zeile 45:
 
{{Note|Wird eine ggbApplet-Methode in ''Global JavaScript'' außerhalb von ''ggbOnInit'' benutzt, so funktioniert diese Methode erst richtig, wenn sie aufgerufen wird bevor die Konstruktion geladen wird.}}
 
{{Note|Wird eine ggbApplet-Methode in ''Global JavaScript'' außerhalb von ''ggbOnInit'' benutzt, so funktioniert diese Methode erst richtig, wenn sie aufgerufen wird bevor die Konstruktion geladen wird.}}
  
===USB Logging===
+
===USB Datenerfassung===
Für Data-Logging von Vernier USB Data Loggers, z. B. ''Go!Motion'' und ''Go!Temp'' können Sie einen Logger-Listener definieren, indem Sie die Mehtode ''registerLoggerListener'' verwenden. So ein Listeenr kann folgendermaßen aussehen:
+
Für Datenerfassung von Vernier USB Data Loggers, z. B. ''Go!Motion'' und ''Go!Temp'' können Sie einen Logger-Listener definieren, indem Sie die Methode ''registerLoggerListener'' verwenden. So ein Listener kann folgendermaßen aussehen:
 
<pre>
 
<pre>
 
function logger(value) {
 
function logger(value) {
Zeile 54: Zeile 54:
 
}
 
}
 
</pre>
 
</pre>
Dieses Skript nimmt an, dass es eine freie Zahl ''a'' in der Konstruktion gibt. Jedes mal, wenn ''d'' geloggt wird, wird der Punkt ''(a,d)'' konstruiert und ''a'' wird erhöht.
+
Dieses Skript nimmt an, dass es eine freie Zahl ''a'' in der Konstruktion gibt. Jedes mal, wenn ''d'' erfasst wird, wird der Punkt ''(a,d)'' konstruiert und ''a'' wird erhöht.

Version vom 27. Juli 2011, 09:52 Uhr


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

  • Klicken oder Update eines bestimmten Objektes
  • Laden der Datei (im Fall von JavaScript)
  • Javascript Listeners (siehe auch [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 eine 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 der Methoden finden Sie unter [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. Wenn Sie dynamische Arbeitsblätter exportieren, können Sie zwischen dieser Engine oder derjenigen, die im Browser verwendet wird, auswählen. Wenn Sie JavaScript auf einer HTML Seite bearbeiten, so wird die ggbApplet-Variable nicht initialisiert. Sie müssen zuerst ggbApplet=document.applets[0]; eingeben, um das ggbApplet korrekt verwenden zu können.

Global JavaScript

Im Global JavaScript Teil des Skripting Kartenreiters im Eigenschaften-Dialog können auch Funktionen oder Anweisungen definiert werden, die vor dem Laden der Konstruktion ausgeführt werden. Sie können auch Funktionen wie ggbOnInit() eingeben, welche automatisch ausgerufen werden, sobald Ihre Konstruktion geladen wird. Die Funktion ggbOnInit() kann auch für Listeners benutzt werden, wie das folgende Beispiel zeigt:

Beispiel:
function onAdd(name){
    alert("Objekt "+name+" wurde hinzugefügt.");
}

function ggbOnInit(){
    ggbApplet.registerAddListener("onAdd");
}
Zuerst haben wir die Funktion onAdd definiert, die eine Nachricht zeigt, die vom gegebenen String abhängt. Danach legen wir fest, dass GeoGebra die Funktion ggbOnInit aufruft, sobald ein neues Objekt hinzugefügt wird. Wird unsere Konstruktion neu geladen, so wird die Funktion ggbOnInit aufgerufen. Ab diesem Zeitpunkt wird, wenn der Benutzer einen Punkt A hinzufügt, die Nachricht "Objekt A wurde hinzugefügt" angezeigt.

Sie können Listeners aber auch benutzen um Obejekte umzubennen, zu löschen oder Konstruktionen zu löschen. Eine komplette Auflistung finden Sie unter [JavaScript].

Anmerkung: Wird eine ggbApplet-Methode in Global JavaScript außerhalb von ggbOnInit benutzt, so funktioniert diese Methode erst richtig, wenn sie aufgerufen wird bevor die Konstruktion geladen wird.

USB Datenerfassung

Für Datenerfassung von Vernier USB Data Loggers, z. B. Go!Motion und Go!Temp können Sie einen Logger-Listener definieren, indem Sie die Methode registerLoggerListener verwenden. So ein Listener kann folgendermaßen aussehen:

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

Dieses Skript nimmt an, dass es eine freie Zahl a in der Konstruktion gibt. Jedes mal, wenn d erfasst wird, wird der Punkt (a,d) konstruiert und a wird erhöht.

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