Differenze tra le versioni di "Scripting"

Da GeoGebra Manual.
 
(18 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
<noinclude>{{Manual Page|version=4.0}}</noinclude>{{objects|property}}
+
<noinclude>{{Manual Page|version=5.0}}</noinclude>{{objects|property|Scripting}}
:{{translate|Scripting}}
+
Uno script è una sequenza di comandi eseguiti nell'ordine in cui sono scritti.
GeoGebra supporta due linguaggi di scripting: GGBScript e Javascript. Uno script è una sequenza di azioni che possono essere attivate da:
+
 
* un clic del mouse o l'aggiornamento di un determinato oggetto
+
GeoGebra supporta due linguaggi di scripting: GGBScript e Javascript.  
* il caricamento di un file (in Javascript)
+
Gli script vanno inseriti nella scheda ''Scripting'' della [[File:Menu-options.svg|link=|16px]] [[Finestra di dialogo Proprietà]] dell'oggetto a cui si vuole assegnare uno script.
* i listener Javascript (vedere [[:en:Reference:JavaScript]])
+
{{Note|Gli script sono eseguiti solo quando la finestra di dialogo ''Proprietà'' è chiusa.}}
Per definire gli script utilizzare la scheda Scripting della [[finestra di dialogo Proprietà]].
+
 
 +
 
 +
Oggetti distinti supportano tipi di scripting distinti, la cui esecuzione può essere attivata da:
 +
* un clic del mouse su un determinato oggetto (scheda ''Al clic'')
 +
* l'aggiornamento di un determinato oggetto (cioè una modifica del relativo valore o delle proprietà) (scheda ''All'aggiornamento'')
 +
* la modifica del contenuto di un campo di inserimento (scheda ''Alla modifica'')
 +
* il rilascio del pulsante del mouse (o la rimozione del dito da uno schermo touch) dopo il trascinamento di un oggetto (scheda ''A fine trascinamento'' )
 +
* il caricamento di un file (solo Javascript - scheda '' Globali Javascript'')
 +
* i listener Javascript (vedere [[Riferimenti:JavaScript]])
 +
 
 +
La differenza tra uno script inserito nella scheda ''All'aggiornamento'' e uno nella scheda ''Alla modifica'' di un campo di inserimento è che nel primo caso lo script viene eseguito quando il campo non è più selezionato (ad es. facendo clic fuori da esso, o selezionando un pulsante, etc...), mentre uno script inserito nella scheda ''Alla modifica'' viene eseguito appena il contenuto del campo di inserimento cambia, ma il focus è ancora sul campo di inserimento.
 +
 
 +
{{Note|1=<div>
 +
* Questa https://www.geogebra.org/m/bek5uqah è una demo degli script ''Alla modifica'' e ''All'aggiornamento'' per un campo di inserimento.
 +
* Questa https://www.geogebra.org/m/kxgvyqvj è una demo dello script ''A fine trascinamento'' applicato a un punto libero.</div>}}
 +
 
 +
 
 
==GGBScript==
 
==GGBScript==
È possibile creare degli script contenenti i comandi di GeoGebra.
+
È possibile creare degli script contenenti i comandi di GeoGebra, cioè i comandi che tipicamente vengono digitati nella [[Barra di inserimento]]. Dopo l'attivazione di uno script, i comandi vengono eseguiti sequenzialmente, nell'ordine in cui sono stati inseriti.
 
{{Example|1=<div>
 
{{Example|1=<div>
 
* ''a'' è uno [[strumento Slider|slider]] a valori interi, variabile tra 1 e 3  
 
* ''a'' è uno [[strumento Slider|slider]] a valori interi, variabile tra 1 e 3  
* <code><nowiki>lista1={"rosso","verde","blu"}</nowiki></code>
+
* Inserire <code><nowiki>lista1={"rosso","verde","blu"}</nowiki></code>
* nella scheda ''All'aggiornamento'' delle Proprietà di ''a'', digitare <code>ImpColore[a,Elemento[lista1,a]]</code>
+
* nella scheda ''All'aggiornamento'' delle ''Proprietà'' di ''a'', digitare <code>ImpColore(a,Elemento(lista1,a))</code>
 
* muovendo lo slider, questo cambierà colore</div>}}
 
* muovendo lo slider, questo cambierà colore</div>}}
 +
 +
'''Spiegazione''': Ogni volta in cui lo slider viene mosso, si ha un aggiornamento dell'oggetto, quindi viene chiamato lo script che utilizza il valore di "a" per ottenere un colore dalla lista e modificare di conseguenza il colore dello slider "a".
 +
{{Note|È possibile utilizzare il carattere <code>#</code> per indicare l'inizio di un commento.}}
 +
 +
{{Hint|Alcuni comandi sono utilizzabili solo negli script: l'elenco è disponibile nella pagina [[Comandi_Scripting]].}}
  
 
==JavaScript==
 
==JavaScript==
JavaScript è un linguaggio di programmazione utilizzato da varie tecnologie basate su Internet. A differenza di GeoGebra Script, in Javascript i comandi non vengono eseguiti in sequenza, ma è possibile programmare un flusso di controllo (<code>if</code>, <code>while</code>, <code>for</code>). Un buon tutorial su JavaScript è disponibile qui: [https://developer.mozilla.org/en/JavaScript/Guide developer.mozilla.org]. In GeoGebra, è possibile utilizzare molti metodi speciali JavaScript per modificare la costruzione. Tali metodi appartengono all'oggetto ggbApplet: ciò significa che possono essere chiamati con <code>ggbApplet.nome_metodo(parametro,..,parametro)</code>. Per l'elenco completo dei metodi disponibili, vedere [[en:Reference:JavaScript]].
+
JavaScript è un linguaggio di programmazione utilizzato da varie tecnologie basate su Internet. A differenza di GeoGebra Script, in Javascript i comandi non vengono eseguiti in sequenza, ma è possibile programmare un flusso di controllo (<code>if</code>, <code>while</code>, <code>for</code>). Un buon tutorial su JavaScript è disponibile qui: [https://developer.mozilla.org/en/JavaScript/Guide developer.mozilla.org].  
 +
 
 +
In GeoGebra, è possibile utilizzare molti metodi speciali JavaScript per modificare la costruzione. Tali metodi appartengono all'oggetto ggbApplet: ciò significa che possono essere chiamati con <code>ggbApplet.nome_metodo(parametro,..,parametro)</code>. Per l'elenco completo dei metodi disponibili, vedere [[Riferimenti:JavaScript]].
  
 
{{Example|1=
 
{{Example|1=
Riga 25: Riga 48:
 
Questo script crea 10 punti, da ''A<sub>0</sub>'' ad ''A<sub>9</sub>'', aventi coordinate casuali.
 
Questo script crea 10 punti, da ''A<sub>0</sub>'' ad ''A<sub>9</sub>'', aventi coordinate casuali.
 
}}
 
}}
 +
{{note|Lo scripting con JavaScript è molto versatile, ma molte funzionalità sono disponibili anche utilizzando GeoGebraScript, che è molto più semplice.}}
 +
  
GeoGebra ha già al suo interno un motore JavaScript. Durante l'esportazione come [[foglio di lavoro dinamico]] è possibile scegliere se utilizzare tale motore o quello contenuto nelle applet del browser. Quando si modifica il codice JavaScript in una pagina HTML, la variabile ggbApplet non viene inizializzata. Tale operazione va effettuata manualmente, ad esempio inserendo all'inizio il codice <code>ggbApplet=document.applets[0];</code>.
+
===Globali JavaScript ===
===JavaScript globale===
+
Nella sezione ''Globali JavaScript'' della scheda ''Scripting'' della [[File:Menu-options.svg|link=|16px]] [[finestra di dialogo Proprietà]] è possibile definire '''funzioni''' (non variabili) che saranno disponibili da altri script. È inoltre possibile definire la funzione ''ggbOnInit(name, api)'', che viene chiamata automaticamente appena viene caricata la costruzione. La funzione ''ggbOnInit'' può essere utilizzata per registrare i ''listener'', come illustrato nell'esempio seguente.{{example|1=
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>
 
<pre>
function onAdd(name){
+
function onAdd(nome){
     alert("Object "+name+" was added.");
+
     alert("L'oggetto "+nome+" è stato aggiunto.");
}
 
 
 
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]].
+
function ggbOnInit(name, api){
{{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.}}
+
    api.registerAddListener("onAdd");
===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>
 
</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.
+
Nell'esempio è stata definita una funzione ''onAdd'', che, data una stringa, visualizza un messaggio dipendente da tale stringa. In seguito, utilizzando la funzione ''ggbOnInit'', abbiamo detto a GeoGebra di chiamare questa funzione ogniqualvolta viene aggiunto un nuovo oggetto. Al caricamento della costruzione viene chiamata la funzione ''ggbOnInit'',  e da quel momento in poi, quando un utente aggiunge ad es. un punto ''A'', viene visualizzato  "L'oggetto A è stato aggiunto". }}
 
 
  
L'elenco completo dei comandi utilizzabili è disponibile qui: [[Riferimenti:JavaScript]]. GeoGebra ha già al suo interno un motore JavaScript. Durante l'esportazione come [[foglio di lavoro dinamico]] è possibile scegliere se utilizzare tale motore o quello contenuto nelle applet del browser.
+
L'utilizzo dei ''listener'' è utile anche per le azioni del tipo ''rinomina'', ''elimina'' e ''svuota costruzione''. L'elenco completo è disponibile in [[Riferimenti:JavaScript]].
 +
{{Note|L'utilizzo di qualsiasi metodo ggbApplet in ''Globali JavaScript'' al di fuori di ''ggbOnInit'' non avrà l'effetto atteso, in quanto tali metodi vengono chiamati prima del caricamento della costruzione.}}

Versione attuale delle 09:33, 17 mag 2023


Uno script è una sequenza di comandi eseguiti nell'ordine in cui sono scritti.

GeoGebra supporta due linguaggi di scripting: GGBScript e Javascript. Gli script vanno inseriti nella scheda Scripting della Menu-options.svg Finestra di dialogo Proprietà dell'oggetto a cui si vuole assegnare uno script.

Note: Gli script sono eseguiti solo quando la finestra di dialogo Proprietà è chiusa.


Oggetti distinti supportano tipi di scripting distinti, la cui esecuzione può essere attivata da:

  • un clic del mouse su un determinato oggetto (scheda Al clic)
  • l'aggiornamento di un determinato oggetto (cioè una modifica del relativo valore o delle proprietà) (scheda All'aggiornamento)
  • la modifica del contenuto di un campo di inserimento (scheda Alla modifica)
  • il rilascio del pulsante del mouse (o la rimozione del dito da uno schermo touch) dopo il trascinamento di un oggetto (scheda A fine trascinamento )
  • il caricamento di un file (solo Javascript - scheda Globali Javascript)
  • i listener Javascript (vedere Riferimenti:JavaScript)

La differenza tra uno script inserito nella scheda All'aggiornamento e uno nella scheda Alla modifica di un campo di inserimento è che nel primo caso lo script viene eseguito quando il campo non è più selezionato (ad es. facendo clic fuori da esso, o selezionando un pulsante, etc...), mentre uno script inserito nella scheda Alla modifica viene eseguito appena il contenuto del campo di inserimento cambia, ma il focus è ancora sul campo di inserimento.

Note:


GGBScript

È possibile creare degli script contenenti i comandi di GeoGebra, cioè i comandi che tipicamente vengono digitati nella Barra di inserimento. Dopo l'attivazione di uno script, i comandi vengono eseguiti sequenzialmente, nell'ordine in cui sono stati inseriti.

Esempio:
  • a è uno slider a valori interi, variabile tra 1 e 3
  • Inserire lista1={"rosso","verde","blu"}
  • nella scheda All'aggiornamento delle Proprietà di a, digitare ImpColore(a,Elemento(lista1,a))
  • muovendo lo slider, questo cambierà colore

Spiegazione: Ogni volta in cui lo slider viene mosso, si ha un aggiornamento dell'oggetto, quindi viene chiamato lo script che utilizza il valore di "a" per ottenere un colore dalla lista e modificare di conseguenza il colore dello slider "a".

Note: È possibile utilizzare il carattere # per indicare l'inizio di un commento.
Note Suggerimento: Alcuni comandi sono utilizzabili solo negli script: l'elenco è disponibile nella pagina Comandi_Scripting.


JavaScript

JavaScript è un linguaggio di programmazione utilizzato da varie tecnologie basate su Internet. A differenza di GeoGebra Script, in Javascript i comandi non vengono eseguiti in sequenza, ma è possibile programmare un flusso di controllo (if, while, for). Un buon tutorial su JavaScript è disponibile qui: developer.mozilla.org.

In GeoGebra, è possibile utilizzare molti metodi speciali JavaScript per modificare la costruzione. Tali metodi appartengono all'oggetto ggbApplet: ciò significa che possono essere chiamati con ggbApplet.nome_metodo(parametro,..,parametro). Per l'elenco completo dei metodi disponibili, vedere Riferimenti:JavaScript.

Esempio:
for(var i =0;i<10;i++) 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
Questo script crea 10 punti, da A0 ad A9, aventi coordinate casuali.
Note: Lo scripting con JavaScript è molto versatile, ma molte funzionalità sono disponibili anche utilizzando GeoGebraScript, che è molto più semplice.


Globali JavaScript

Nella sezione Globali JavaScript della scheda Scripting della Menu-options.svg finestra di dialogo Proprietà è possibile definire funzioni (non variabili) che saranno disponibili da altri script. È inoltre possibile definire la funzione ggbOnInit(name, api), che viene chiamata automaticamente appena viene caricata la costruzione. La funzione ggbOnInit può essere utilizzata per registrare i listener, come illustrato nell'esempio seguente.

Esempio:
function onAdd(nome){
    alert("L'oggetto "+nome+" è stato aggiunto.");
}

function ggbOnInit(name, api){
    api.registerAddListener("onAdd");
}
Nell'esempio è stata definita una funzione onAdd, che, data una stringa, visualizza un messaggio dipendente da tale stringa. In seguito, utilizzando la funzione ggbOnInit, abbiamo detto a GeoGebra di chiamare questa funzione ogniqualvolta viene aggiunto un nuovo oggetto. Al caricamento della costruzione viene chiamata la funzione ggbOnInit, e da quel momento in poi, quando un utente aggiunge ad es. un punto A, viene visualizzato "L'oggetto A è stato aggiunto".

L'utilizzo dei listener è utile anche per le azioni del tipo rinomina, elimina e svuota costruzione. L'elenco completo è disponibile in Riferimenti:JavaScript.

Note: L'utilizzo di qualsiasi metodo ggbApplet in Globali JavaScript al di fuori di ggbOnInit non avrà l'effetto atteso, in quanto tali metodi vengono chiamati prima del caricamento della costruzione.
© 2024 International GeoGebra Institute