Diferencia entre revisiones de «Programas - Guiones (Scripting)»

De GeoGebra Manual
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
<noinclude>{{Manual Page|version=4.2}}</noinclude>{{Objetos|script}}
 
<noinclude>{{Manual Page|version=4.2}}</noinclude>{{Objetos|script}}
 
==Guiones: Script y Javascript==
 
==Guiones: Script y Javascript==
'''''GeoGebra''''' respalda sendos lenguajes de programación de guiones (scripting)  -- GGBScript y  Javascript. Un "script" es un guión de una secuencia de acciones que puede desencadenarse con:
+
'''''GeoGebra''''' respalda sendos lenguajes de programación de guiones (scripting)  -- GGBScript y  Javascript. Un "script" es un guion de una secuencia de acciones que puede desencadenarse con:
 
*un ''clic'' o actualización de un  objeto particular  
 
*un ''clic'' o actualización de un  objeto particular  
 
*una modificación de su valor o propiedades
 
*una modificación de su valor o propiedades
Línea 7: Línea 7:
 
*vías pertinentes tendientes a Javascript (ver [[Referencia:JavaScript]])
 
*vías pertinentes tendientes a Javascript (ver [[Referencia:JavaScript]])
 
Se puede fijar una vía a los guiones señalados a través de la pestaña correspondiente del [[Cuadro de Propiedades]] de un objeto.
 
Se puede fijar una vía a los guiones señalados a través de la pestaña correspondiente del [[Cuadro de Propiedades]] de un objeto.
{{OJo|1=Algunos comandos solo pueden emplearse en el marco de un ''guión'' o ''script'': este repertorio puede revisarse en la [[Comandos de Guiones - Scripting|página correspondiente]].}}
+
{{OJo|1=Algunos comandos solo pueden emplearse en el marco de un ''guion'' o ''script'': este repertorio puede revisarse en la [[Comandos de Guiones - Scripting|página correspondiente]].}}
 
===GGBScript===
 
===GGBScript===
 
Pueden crearse guiones que consistan en una secuencia de comandos de '''''GeoGebra'''''.
 
Pueden crearse guiones que consistan en una secuencia de comandos de '''''GeoGebra'''''.
Línea 13: Línea 13:
 
*''a'' es un entero cuyo valor lo establece un [[Herramienta de Deslizador|deslizador]] con un rango de 1 a 3 con un Incremento de 1.
 
*''a'' es un entero cuyo valor lo establece un [[Herramienta de Deslizador|deslizador]] con un rango de 1 a 3 con un Incremento de 1.
 
*<code><nowiki>Lista_1={"rojo","verde","azul"}</nowiki></code>
 
*<code><nowiki>Lista_1={"rojo","verde","azul"}</nowiki></code>
*en la pestaña  Programa de Guión - Secripting de Propiedades de ''a'', se establece en "Al Actualizar"  <code>Color[a, Elemento[Lista_1, a]]</code> y se selecciona  "Guión (Script) GeoGebra"   
+
*en la pestaña  Programa de guion - Secripting de Propiedades de ''a'', se establece en "Al Actualizar"  <code>Color[a, Elemento[Lista_1, a]]</code> y se selecciona  "guion (Script) GeoGebra"   
 
*al desplazar el deslizador, se modifica su color.}}
 
*al desplazar el deslizador, se modifica su color.}}
 
;<hr>
 
;<hr>
:'''Racional''': Cada vez que se  desplaza el deslizador, se efectúa una actualización de tal objeto,<br>Esto desencadena que el ''guión'' o ''script'' al que está asociado registre cuál es el valor de "a" para ''pintar'' '''"a"''' de el correspondiente color de la lista.  
+
:'''Racional''': Cada vez que se  desplaza el deslizador, se efectúa una actualización de tal objeto,<br>Esto desencadena que el ''guion'' o ''script'' al que está asociado registre cuál es el valor de "a" para ''pintar'' '''"a"''' de el correspondiente color de la lista.  
 
;<hr>
 
;<hr>
 
{{Note|1=Ver, para ilustrar la posibilidad de emplear el comando [[Comando ZoomAcerca|ZoomAcerca]] para ''limpiar rastros'', la aplicación diseñada en [http://www.centrobabbage.com Centro Babbage] que se detalla en el tutorial de [[Tutorial:Hacia el Algebra desde la Barra#Escenarios de Análisis|Escenarios de Análisis]]}}
 
{{Note|1=Ver, para ilustrar la posibilidad de emplear el comando [[Comando ZoomAcerca|ZoomAcerca]] para ''limpiar rastros'', la aplicación diseñada en [http://www.centrobabbage.com Centro Babbage] que se detalla en el tutorial de [[Tutorial:Hacia el Algebra desde la Barra#Escenarios de Análisis|Escenarios de Análisis]]}}
 
====Guiones a Botón====
 
====Guiones a Botón====
Es habitual establecer un guión que se desencadene '''''Al clic''''' de un [[Herramienta de Botón|''botón'']].
+
Es habitual establecer un guion que se desencadene '''''Al clic''''' de un [[Herramienta de Botón|''botón'']].
{{Example|1=<br>A continuación se copia el contenido de un [[Programa (guión-scripting)#Guiones: Script y Javascrip|''guión'']] en que ''Al clic'' se controla la abscisa de un punto [[Animación|''animado'']] sobre una semicircunferencia y acorde al resultado establecen las coordenadas del punto [[Objetos libres, dependientes y auxiliares|libre]] ''A'' y su color (''azul'' o ''verde oscuro''):<br><hr>
+
{{Example|1=<br>A continuación se copia el contenido de un [[Programa (guion-scripting)#Guiones: Script y Javascrip|''guion'']] en que ''Al clic'' se controla la abscisa de un punto [[Animación|''animado'']] sobre una semicircunferencia y acorde al resultado establecen las coordenadas del punto [[Objetos libres, dependientes y auxiliares|libre]] ''A'' y su color (''azul'' o ''verde oscuro''):<br><hr>
 
:'''<code>Si[ Resto[ round(10 x(B)) , 2] == 0, Coordenadas[A, y(B), 0], Coordenadas[A, x(B), 1]]</code>'''<br>
 
:'''<code>Si[ Resto[ round(10 x(B)) , 2] == 0, Coordenadas[A, y(B), 0], Coordenadas[A, x(B), 1]]</code>'''<br>
 
:'''<code>Si[ Resto[ round(10 x(B)) , 2] == 0, Colores[A,  "verde oscuro"], Colores[ A,"azul" ]]</code>'''<br><hr>
 
:'''<code>Si[ Resto[ round(10 x(B)) , 2] == 0, Colores[A,  "verde oscuro"], Colores[ A,"azul" ]]</code>'''<br><hr>
Línea 35: Línea 35:
 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
 
</pre>
 
</pre>
Este guión (script) crea 10 puntos  ''A<sub>0</sub>'' a ''A<sub>9</sub>'' dispuestos en  coordenadas aleatorias.
+
Este guion (script) crea 10 puntos  ''A<sub>0</sub>'' a ''A<sub>9</sub>'' dispuestos en  coordenadas aleatorias.
 
}}
 
}}
 
'''''GeoGebra''''' contiene su propia ''usina'' de JavaScript. Cuando se abre un [[Cuadro de Exportación]] de un boceto GGB, se puede elegir si emplear este ''motor' o la contenida en el explorador de aplicaciones ''applets''.<br>
 
'''''GeoGebra''''' contiene su propia ''usina'' de JavaScript. Cuando se abre un [[Cuadro de Exportación]] de un boceto GGB, se puede elegir si emplear este ''motor' o la contenida en el explorador de aplicaciones ''applets''.<br>
Línea 43: Línea 43:
 
Se pueden consultar los documentos Applets de '''''GeoGebra''''' Applets y JavaScript (en las [[Página Principal|páginas]] como la de [http://www.geogebra.org Ayuda]) para explorar los ejemplos y encontrar información con relación al uso de uso de JavaScript con ''applets'' de '''''GeoGebra'''''.
 
Se pueden consultar los documentos Applets de '''''GeoGebra''''' Applets y JavaScript (en las [[Página Principal|páginas]] como la de [http://www.geogebra.org Ayuda]) para explorar los ejemplos y encontrar información con relación al uso de uso de JavaScript con ''applets'' de '''''GeoGebra'''''.
 
===Global JavaScript===
 
===Global JavaScript===
En la pestaña "Global JavaScript" de la de "Programas de Guión - Scripting", del [[Cuadro de Propiedades]], pueden definirse algunas '''funciones''' (no variables)  que estarán disponibles desde otros ''guiones'' o ''scripts''. Establecer, así, asignaciones pasar a la construcción.<br>
+
En la pestaña "Global JavaScript" de la de "Programas de guion - Scripting", del [[Cuadro de Propiedades]], pueden definirse algunas '''funciones''' (no variables)  que estarán disponibles desde otros ''guiones'' o ''scripts''. Establecer, así, asignaciones pasar a la construcción.<br>
 
También se puede definir la función ''ggbOnInit()'', que se convoca automáticamente al recuperarse la construcción. La función  ggbOnInit puede emplearse para registrar algunos espectadores, como se expone en el ejemplo.
 
También se puede definir la función ''ggbOnInit()'', que se convoca automáticamente al recuperarse la construcción. La función  ggbOnInit puede emplearse para registrar algunos espectadores, como se expone en el ejemplo.
 
{{Example|1=
 
{{Example|1=
Línea 67: Línea 67:
 
}
 
}
 
</pre>
 
</pre>
Este guión asume que hay un número libre ''a'' en la construcción. Cada vez que el número ''d'' se contacta, el punto ''(a,d)'' se construye y ''a'' se incrementa.
+
Este guion asume que hay un número libre ''a'' en la construcción. Cada vez que el número ''d'' se contacta, el punto ''(a,d)'' se construye y ''a'' se incrementa.
  
 
{{Notes|1=<br>Consultar el Tutorial [[Introducción a Guiones GeoGebraScript]]<br>Ver también los [[Comandos de Guiones - Scripting]] y las [[Referencia:Jython|Referencias de Jython]]
 
{{Notes|1=<br>Consultar el Tutorial [[Introducción a Guiones GeoGebraScript]]<br>Ver también los [[Comandos de Guiones - Scripting]] y las [[Referencia:Jython|Referencias de Jython]]
 
}}
 
}}

Revisión del 07:19 26 nov 2014





Guiones: Script y Javascript

GeoGebra respalda sendos lenguajes de programación de guiones (scripting) -- GGBScript y Javascript. Un "script" es un guion de una secuencia de acciones que puede desencadenarse con:

  • un clic o actualización de un objeto particular
  • una modificación de su valor o propiedades
  • la apertura de un archivo (en caso de Javascript)
  • vías pertinentes tendientes a Javascript (ver Referencia:JavaScript)

Se puede fijar una vía a los guiones señalados a través de la pestaña correspondiente del Cuadro de Propiedades de un objeto.

Bulbgraph.pngAtención: Algunos comandos solo pueden emplearse en el marco de un guion o script: este repertorio puede revisarse en la página correspondiente.

GGBScript

Pueden crearse guiones que consistan en una secuencia de comandos de GeoGebra.

Ejemplo:
  • a es un entero cuyo valor lo establece un deslizador con un rango de 1 a 3 con un Incremento de 1.
  • Lista_1={"rojo","verde","azul"}
  • en la pestaña Programa de guion - Secripting de Propiedades de a, se establece en "Al Actualizar" Color[a, Elemento[Lista_1, a]] y se selecciona "guion (Script) GeoGebra"
  • al desplazar el deslizador, se modifica su color.

Racional: Cada vez que se desplaza el deslizador, se efectúa una actualización de tal objeto,
Esto desencadena que el guion o script al que está asociado registre cuál es el valor de "a" para pintar "a" de el correspondiente color de la lista.

Nota: Ver, para ilustrar la posibilidad de emplear el comando ZoomAcerca para limpiar rastros, la aplicación diseñada en Centro Babbage que se detalla en el tutorial de Escenarios de Análisis

Guiones a Botón

Es habitual establecer un guion que se desencadene Al clic de un botón.

Ejemplo:
A continuación se copia el contenido de un guion en que Al clic se controla la abscisa de un punto animado sobre una semicircunferencia y acorde al resultado establecen las coordenadas del punto libre A y su color (azul o verde oscuro):

Si[ Resto[ round(10 x(B)) , 2] == 0, Coordenadas[A, y(B), 0], Coordenadas[A, x(B), 1]]
Si[ Resto[ round(10 x(B)) , 2] == 0, Colores[A, "verde oscuro"], Colores[ A,"azul" ]]

JavaScript

JavaScript es un lenguaje de programación empleado en diversas plataformas de tecnología de Internet. A diferencia del Script de GeoGebra, los comandos en Javascript no requieren una ejecución secuencial dado que es posible controlar su desenvolvimiento (con condiciones fijadas por cada si/if, mientras/while, para/for). Un interesante tutorial genérico sobre JavaScript aparece en ingles en developer.mozilla.org.
En GeoGebra, pueden emplearse comandos especiales de JavaScript que permiten cambiar cualquier construcción. Estos métodos corresponden al objeto ggbApplet, lo que implica que se los puede convocar como ggbApplet.nombre_del_método(parámetro, .. , parámetro). Una lista completa de los comandos disponibles puede encontrarse en Referencia: JavaScript Reference:JavaScript.

Ejemplo:
for(var i =0;i<10;i++) 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
Este guion (script) crea 10 puntos A0 a A9 dispuestos en coordenadas aleatorias.

GeoGebra contiene su propia usina de JavaScript. Cuando se abre un Cuadro de Exportación de un boceto GGB, se puede elegir si emplear este motor' o la contenida en el explorador de aplicaciones applets.
Para editar JavaScript en una página HTML, la variable ggbApplet no será inicializada automáticamente sino que debe hacérselo primero ggbApplet=document.applets[0];.

Nota: La interfaz JavaScript de GeoGebra es de particular interés para quienes tienen cierta experiencia en la edición en HTML.

Para generar una hoja dinámica (web) y aumentar su interactividad, los applets de GeoGebra ofrecen una interfaz JavaScript.
Por ejemplo, se puede crear un botón para generar aleatoriamente nuevas configuraciones de una construcción dinámica.

Se pueden consultar los documentos Applets de GeoGebra Applets y JavaScript (en las páginas como la de Ayuda) para explorar los ejemplos y encontrar información con relación al uso de uso de JavaScript con applets de GeoGebra.

Global JavaScript

En la pestaña "Global JavaScript" de la de "Programas de guion - Scripting", del Cuadro de Propiedades, pueden definirse algunas funciones (no variables) que estarán disponibles desde otros guiones o scripts. Establecer, así, asignaciones pasar a la construcción.
También se puede definir la función ggbOnInit(), que se convoca automáticamente al recuperarse la construcción. La función ggbOnInit puede emplearse para registrar algunos espectadores, como se expone en el ejemplo.

Ejemplo:
function onAdd(nombre){
    alert("Objeto "+nombre+" añadido.");
}

function ggbOnInit(){
    ggbApplet.registerAddListener("onAdd");
}
En primer lugar se define la función onAdd que en tanto se le pase una cadena de texto, expone un mensaje dependiente de la cadena. Luego, usando la función ggbOnInit, se le puede indicar a GeoGebra que convoque a esta función cuando se añade un nuevo objeto. Una vez que se ha recuperado la construcción, la función ggbOnInit será convocada y a partir de ese momento, cuando se fuese a añadir un punto llamado, por ejemplo, A, aparecerá el mensaje "Objeto A añadido".

También pueden emplearse espectadores para acciones del orden de renombrar, eliminar y borrar una construcción. La lista completa está disponible en Referencia:JavaScript Reference:JavaScript

Nota: Al emplear un método ggbApplet cualquiera en Global JavaScript fuera de ggbOnInit, no operará como se pretende dado que será convocado antes de recuperar la construcción.

Captación de Datos (Data Logging) USB (Próximamente en GeoGebra 5.0)

Para captar datos de un Vernier USB (Data Logger como Go!Motion yGo!Temp ) se puede definir un espectador de captación usando un método de registro LoggerListener como este:

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

Este guion asume que hay un número libre a en la construcción. Cada vez que el número d se contacta, el punto (a,d) se construye y a se incrementa.

© 2021 International GeoGebra Institute