[i]Script [/i]è una sequenza di comandi che vengono eseguiti nell'ordine in cui sono scritti.[br][br][i]GeoGebra [/i]supporta due linguaggi di scripting - [i]GGBScript e[/i] [i]Javascript[/i]. Gli script vanno inseriti nella scheda [i]Scripting [/i]della [img width=16,height=16]https://wiki.geogebra.org/uploads/thumb/3/30/Menu-options.svg/16px-Menu-options.svg.png[/img] f[url=https://wiki.geogebra.org/en/Properties_Dialog]inestra di dialogo Proprietà[/url] dell'oggetto a cui si vuole assegnare uno script.[br][br][b]Nota:[/b] Gli script vengono eseguiti solo quando la finestra di dialogo [i]Proprietà[/i] è chiusa.
Oggetti distinti supportano tipi di scripting distinti, la cui esecuzione può essere attivata da:[br][br][list][*]un clic del mouse su un determinato oggetto (scheda [i]Al clic[/i])[/*][*]l'aggiornamento di un determinato oggetto (cioè una modifica del relativo valore o delle proprietà) (scheda [i]All'aggiornamento[/i])[/*][*]la modifica del contenuto di un campo di inserimento (scheda [i]Alla modifica[/i])[/*][*]il rilascio del pulsante del mouse (o la rimozione del dito da uno schermo touch) dopo il trascinamento di un oggetto (scheda [i]A fine trascinamento[/i] )[/*][*]il caricamento di un file (solo Javascript - scheda [i] Globali Javascript[/i])[/*][*]i listener Javascript (vedere [url=https://wiki.geogebra.org/it/Riferimenti:JavaScript]Riferimenti:JavaScript[/url])[/*][/list][br]La differenza tra uno script inserito nella scheda [i]All'aggiornamento[/i] e uno nella scheda [i]Alla modifica[/i] 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 [i]Alla modifica[/i] viene eseguito appena il contenuto del campo di inserimento cambia, ma il focus è ancora sul campo di inserimento. [br][br][br] [b]Note:[/b] [br][list][*]Questa [url=https://www.geogebra.org/m/bek5uqah]https://www.geogebra.org/m/bek5uqah[/url] è una demo degli script [i]Alla modifica[/i] e [i]All'aggiornamento[/i] per un campo di inserimento.[/*][*]Questa [url=https://www.geogebra.org/m/kxgvyqvj]https://www.geogebra.org/m/kxgvyqvj[/url] è una demo dello script [i]A fine trascinamento[/i] applicato a un punto libero.[/*][/list][br]
È possibile creare degli script contenenti i comandi di GeoGebra, cioè i comandi che tipicamente vengono digitati nella [url=https://wiki.geogebra.org/it/Barra_di_inserimento]barra di inserimento[/url]. Dopo l'attivazione di uno script, i comandi vengono eseguiti sequenzialmente, nell'ordine in cui sono stati inseriti.[br][br][br][b]Esempio:[/b] [br][list][*][i]a[/i] è uno [url=https://wiki.geogebra.org/it/Strumento_Slider]slider[/url] a valori interi, variabile tra 1 e 3[/*][*]Inserire [code]lista1={"rosso","verde","blu"}[/code][/*][*]nella scheda [i]All'aggiornamento[/i] delle [i]Proprietà[/i] di [i]a[/i], digitare [code]ImpColore(a,Elemento(lista1,a))[/code][/*][*]muovendo lo slider, questo cambierà colore[/*][/list][br][br][b]Spiegazione[/b]: 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".[br][br][b]Nota:[/b] Utilizzare il carattere [code]#[/code] per indicare l'inizio di un commento.[br][br][b][img width=18,height=22]https://wiki.geogebra.org/uploads/thumb/6/60/Bulbgraph.png/18px-Bulbgraph.png[/img] Suggerimento:[/b] Alcuni comandi sono utilizzabili solo negli script: l'elenco è disponibile nella pagina wiki [url=https://wiki.geogebra.org/it/Comandi_Scripting]Comandi_Scripting[/url].
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: [url=https://developer.mozilla.org/en/JavaScript/Guide]developer.mozilla.org[/url]. [br][br]In GeoGebra, è possibile utilizzare molti metodi speciali JavaScript per modificare la costruzione. [br]Tali metodi appartengono all'oggetto ggbApplet: ciò significa che possono essere chiamati con [code]ggbApplet.nome_metodo(parametro,..,parametro)[/code]. [br]Per l'elenco completo dei metodi disponibili, vedere [url=https://wiki.geogebra.org/it/Riferimenti:JavaScript]Riferimenti:JavaScript[/url].[br][br][b]Esempio:[/b] for(var i =0;i<10;i++) [br] ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");[br][br]Questo script crea 10 punti, da [i]A[sub]0[/sub][/i] ad [i]A[sub]9[/sub][/i], aventi coordinate casuali.[br][br][b]Nota:[/b] Lo scripting con JavaScript è molto versatile, ma molte funzionalità sono disponibili anche utilizzando [i]GeoGebraScript[/i], che è un linguaggio molto più semplice.
[br]Nella sezione [i]Globali JavaScript[/i] della scheda [i]Scripting[/i] della [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/it/Finestra_di_dialogo_Propriet%C3%A0]finestra di dialogo Proprietà[/url] è possibile definire [b]funzioni[/b] (non variabili) che saranno disponibili da altri script. [br][br]È inoltre possibile definire la funzione [i]ggbOnInit(name, api)[/i], che viene chiamata automaticamente appena viene caricata la costruzione. [br]La funzione [i]ggbOnInit[/i] può essere utilizzata per registrare i [i]listener[/i], come illustrato nell'esempio seguente.[br][br][b]Esempio:[/b] function onAdd(nome){[br] alert("L'oggetto "+nome+" è stato aggiunto.");[br]}[br][br]function ggbOnInit(name, api){[br] api.registerAddListener("onAdd");[br]}[br][br]Nell'esempio è stata definita una funzione [i]onAdd[/i], che, data una stringa, visualizza un messaggio dipendente da tale stringa. [br]In seguito, utilizzando la funzione [i]ggbOnInit[/i], abbiamo detto a GeoGebra di chiamare questa funzione ogni volta in cui viene aggiunto un nuovo oggetto. [br]La funzione [i]ggbOnInit[/i] viene chiamata al caricamento del file GeoGebra, e da quel momento in poi quando un utente aggiunge ad es. un punto [i]A[/i], verrà visualizzato "L'oggetto [i]A[/i] è stato aggiunto".[br][br]L'utilizzo dei [i]listener[/i] è utile anche per le azioni del tipo [i]rinomina[/i], [i]elimina[/i] e [i]svuota costruzione[/i]. [br]L'elenco completo è disponibile in [url=https://wiki.geogebra.org/it/Riferimenti:JavaScript]Riferimenti:JavaScript[/url].[br][br][br][b]Nota:[/b] L'utilizzo di qualsiasi metodo ggbApplet in [i]Globali JavaScript[/i] al di fuori di [i]ggbOnInit[/i] non avrà l'effetto atteso, in quanto tali metodi vengono chiamati prima del caricamento della costruzione.