Diferencia entre revisiones de «Programa (guion-scripting)»

De GeoGebra Manual
Saltar a: navegación, buscar
m
 
(No se muestran 8 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
<noinclude>{{Manual Page|version=5.0}}</noinclude>{{Objetos|script}}
 
<noinclude>{{Manual Page|version=5.0}}</noinclude>{{Objetos|script}}
{{revisar}}
 
==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
 
*la apertura de un archivo (en caso de Javascript)
 
*vías pertinentes tendientes a Javascript (ver [[Referencia:JavaScript|''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.
 
===GGBScript===
 
Pueden crearse guiones que consistan en una secuencia de comandos de '''''GeoGebra'''''.
 
{{Example|1=<br>
 
*''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>
 
*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.}}
 
  
===Guiones a Botón===
+
Un Guión o Script es una secuencia de comandos, que son ejecutados uno tras otro. GeoGebra soporta dos lenguajes - GGBScript y Javascript. La ejecución puede ser disparada por :
Es habitual establecer un guion que se desencadene '''''Al clic''''' de un [[Herramienta de Botón|''botón'']].
+
* hacer clic sobre un objeto particular
{{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>
+
* actualizar un objeto particular (es decir, cuando el valor o las propiedades del objeto son modificadas)
'''<code>Si[ Resto[ round(10 x(B)) , 2] == 0, Coordenadas[A, y(B), 0], Coordenadas[A, x(B), 1]]</code>'''<br>
+
* cargar el archivo (en el caso de JavaScript)
''<code>Si[ Resto[ round(10 x(B)) , 2] == 0, Colores[A, "verde oscuro"], Colores[ A,"azul" ]]</code>'''<br><hr>
+
* Javascript ''listeners'' (ver [[Reference:JavaScript]])
}}
+
 
 +
Puedes establecer un Guión en la pestaña "Programa de guión (Scripting)'' que se encuentra en el [[File:Menu-options.svg|link=|16px]] [[Cuadro de Propiedades]].
 +
 
 +
==GGBScript==
 +
Puedes crear guiones o scripts que consisten en secuencias de comandos de GeoGebra, como los que utilizas en la [[Barra de Entrada]]. Luego de disparar el guión, cada comando se ejecuta uno tras otro.
 +
 +
{{Example|1=<div>
 +
* ''a'' es un [[Herramienta de Deslizador|deslizador]] que toma valores enteros entre 1 y 3 (es decir, que el Incremento está fijado en 1)
 +
* tipea: <code><nowiki>lista1 = {"rojo", "verde", "azul"}</nowiki></code> en la barra de entrada
 +
* en propiedades de ''a'', establece el siguiente guión en la pestaña "Al actualizar" <code>Color(a, Elemento(lista1, a))</code>
 +
* al mover el deslizador su color irá cambiando de acuerdo al valor</div>}}
 +
 
 +
'''Explicación:''' Cada vez que el deslizador se mueve, ocurre una actualización. Por lo tanto, se ejecuta el guión y el valor de ''a'' es utilizado para obtener un color de la lista definida, y el comando Color cambia el color del deslizador ''a''.
 +
 
 +
{{Note|Puedes utilizar <code>#</code> para iniciar un comentario}}
 +
{{Hint|Hay comandos que solamente pueden ser utilizados para construir guiónes. Puedes encontrarlos en [[Comandos_de_Guiones_-_Scripting]].}}
 +
 
 +
==JavaScript==
 +
JavaScript es un lenguaje de programación utilizado por muchas tecnologías asociadas a Internet. A diferencia del lenguaje GeoGebra Script, en Javascript los comandos no necesitan ser ejecutados como una secuencia simple, pueden utilizarse controladores de flujo (<code>if</code>, <code>while</code>, <code>for</code>). Puedes encontrar un lindo tutorial de JavaScript en [https://developer.mozilla.org/en/JavaScript/Guide developer.mozilla.org].
 +
En GeoGebra, puedes utilizar métodos de JavaScript especiales, que permiten modificar tu construcción. Estos pertenecen al objeto ggbApplet, lo que significa que puedes llamarlos como <code>ggbApplet.method_name(parameter,..,parameter)</code>. Para ver una lista completa de estos métodos consulta [[Reference:JavaScript]].
  
===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 <code>si/if</code>, <code>mientras/while</code>, <code>para/for</code>). Un interesante tutorial genérico sobre JavaScript aparece en ingles en [https://developer.mozilla.org/en/JavaScript/Guide developer.mozilla.org].<br>
 
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 <code>ggbApplet.nombre_del_método(parámetro, .. , parámetro)</code>.
 
Una  lista completa de los comandos disponibles puede encontrarse en [[Referencia:JavaScript]].
 
 
{{Example|1=
 
{{Example|1=
 
<pre>
 
<pre>
Línea 31: Línea 32:
 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
 
</pre>
 
</pre>
Este guion (script) crea 10 puntos ''A<sub>0</sub>'' a ''A<sub>9</sub>'' dispuestos en  coordenadas aleatorias.
+
 
 +
Este guión crea 10 puntos ''A<sub>0</sub>'' a ''A<sub>9</sub>'' con 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>
+
{{note|Escribir guiones con JavaScript es muy versátil, pero muchas tareas pueden lograrse de un modo más sencillo utilizando GeoGebraScript.}}
Para editar JavaScript en una página HTML, la  variable ggbApplet no será inicializada  automáticamente sino que debe hacérselo primero  <code>ggbApplet=document.applets[0];</code>.
+
 
{{Note|1=La interfaz JavaScript de '''''GeoGebra''''' es de particular interés para quienes tienen cierta experiencia en la edición en HTML.}}
+
===JavaScript Global===
Para desarrollar una ''hoja dinámica'' y aumentar su interactividad, los ''applets'' de '''''GeoGebra''''' ofrecen una interfaz JavaScript.<br>Por ejemplo, se puede crear un botón para generar aleatoriamente nuevas configuraciones de una construcción dinámica. <br><br>
+
En la sección de ''JavaScript Global'' de la pestaña ''Programa de guión (Scripting)'' que se encuentra en el cuadro [[File:Menu-options.svg|link=|16px]] ''Propiedades'' puedes definir '''funciones''' (no variables) que estarán disponibles para los otros programas de guión. Puedes definir la función ''ggbOnInit()'', que será llamada automáticamente al cargar la construcción. La función ''ggbOnInit'' puede ser utilizada para registrar algunos ''listeners'', como se muestra a continuación.
Se pueden consultar los documentos Applets de '''''GeoGebra''''' Applets y JavaScript ([http://www.geogebra.org en Ayuda]) para explorar los ejemplos y encontrar información con relación al uso de uso de JavaScript con ''applets'' de '''''GeoGebra'''''.
+
{{example|1=
==Global JavaScript==
 
En la pestaña "Global JavaScript" de la de "Programas de guion - Scripting", del [[Cuadro de Propiedades]], pueden definirse algunas '''<u>funciones</u>''' (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.
 
{{Example|1=
 
 
<pre>
 
<pre>
function onAdd(nombre){
+
function onAdd(name){
     alert("Objeto "+nombre+" añadido.");
+
     alert("Objeto "+name+" fue añadido.");
 
}
 
}
  
Línea 51: Línea 49:
 
}
 
}
 
</pre>
 
</pre>
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".}}
+
En primer lugar, se define la función ''onAdd'' que, dada una cadena, muestra un mensaje que depende de esa cadena. A continuación, utilizando la función ''ggbOnInit'', se le indica a GeoGebra que llame a esta función cada vez que un nuevo objeto es añadido. Al recargar la construcción, la función ''ggbOnInit'' será llamada y a partir de es momento, cuando el usuario añada un punto llamado, por ejemplo ''A'', el mensaje "Objeto A fue añadido" aparecerá. }}
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|''Referencia:JavaScript'']]
+
 
{{Note| 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.}}
+
También puedes utilizar ''listeners'' para acciones como renombrar, eliminar y limpiar una construcción. Se puede encontrar una lista completa en [[Reference:JavaScript]].
===Captación de Datos (Data Logging) USB (Próximamente en '''''GeoGebra''''' 5.0)===
+
{{Note|Utilizando cualquier método ggbApplet en ''JavaScript Global'' por fuera de ggbOnInit no funcionará como se espera dado que deben ser llamados antes de que la construcción sea cargada.}}
Para captar datos de un Vernier USB (Data Logger como ''Go!Motion'' y''Go!Temp'' ) se puede definir un espectador de captación usando un método de registro ''LoggerListener'' como este:
 
<pre>
 
function logger(value) {
 
  var d = value * 1;
 
  ggbApplet.evalCommand("(CopyFreeObject[a],"+d+")");
 
  ggbApplet.evalCommand("SetValue[a,a+1]");
 
}
 
</pre>
 
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.
 
;<hr>
 
{{Notes|1=<div>
 
*Consultar los Tutoriales [[Introducción a Guiones GeoGebraScript]] y [[Tutorial:Listas, Secuencias y Guiones para Jugar|Listas, Secuencias y Guiones para Jugar]]
 
*Ver también los [[Comandos de Guiones - Scripting]] y las [[Referencia:Jython|Referencias de Jython]]
 
</div>}}
 

Revisión actual del 23:26 15 abr 2018





Un Guión o Script es una secuencia de comandos, que son ejecutados uno tras otro. GeoGebra soporta dos lenguajes - GGBScript y Javascript. La ejecución puede ser disparada por :

  • hacer clic sobre un objeto particular
  • actualizar un objeto particular (es decir, cuando el valor o las propiedades del objeto son modificadas)
  • cargar el archivo (en el caso de JavaScript)
  • Javascript listeners (ver Reference:JavaScript)

Puedes establecer un Guión en la pestaña "Programa de guión (Scripting) que se encuentra en el Menu-options.svg Cuadro de Propiedades.

GGBScript

Puedes crear guiones o scripts que consisten en secuencias de comandos de GeoGebra, como los que utilizas en la Barra de Entrada. Luego de disparar el guión, cada comando se ejecuta uno tras otro.

Ejemplo:
  • a es un deslizador que toma valores enteros entre 1 y 3 (es decir, que el Incremento está fijado en 1)
  • tipea: lista1 = {"rojo", "verde", "azul"} en la barra de entrada
  • en propiedades de a, establece el siguiente guión en la pestaña "Al actualizar" Color(a, Elemento(lista1, a))
  • al mover el deslizador su color irá cambiando de acuerdo al valor

Explicación: Cada vez que el deslizador se mueve, ocurre una actualización. Por lo tanto, se ejecuta el guión y el valor de a es utilizado para obtener un color de la lista definida, y el comando Color cambia el color del deslizador a.

Nota: Puedes utilizar # para iniciar un comentario
Note Aviso: Hay comandos que solamente pueden ser utilizados para construir guiónes. Puedes encontrarlos en Comandos_de_Guiones_-_Scripting.


JavaScript

JavaScript es un lenguaje de programación utilizado por muchas tecnologías asociadas a Internet. A diferencia del lenguaje GeoGebra Script, en Javascript los comandos no necesitan ser ejecutados como una secuencia simple, pueden utilizarse controladores de flujo (if, while, for). Puedes encontrar un lindo tutorial de JavaScript en developer.mozilla.org. En GeoGebra, puedes utilizar métodos de JavaScript especiales, que permiten modificar tu construcción. Estos pertenecen al objeto ggbApplet, lo que significa que puedes llamarlos como ggbApplet.method_name(parameter,..,parameter). Para ver una lista completa de estos métodos consulta Reference:JavaScript.

Ejemplo:
for(var i =0;i<10;i++) 
   ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");
Este guión crea 10 puntos A0 a A9 con coordenadas aleatorias.
Nota: Escribir guiones con JavaScript es muy versátil, pero muchas tareas pueden lograrse de un modo más sencillo utilizando GeoGebraScript.

JavaScript Global

En la sección de JavaScript Global de la pestaña Programa de guión (Scripting) que se encuentra en el cuadro Menu-options.svg Propiedades puedes definir funciones (no variables) que estarán disponibles para los otros programas de guión. Puedes definir la función ggbOnInit(), que será llamada automáticamente al cargar la construcción. La función ggbOnInit puede ser utilizada para registrar algunos listeners, como se muestra a continuación.

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

function ggbOnInit(){
    ggbApplet.registerAddListener("onAdd");
}
En primer lugar, se define la función onAdd que, dada una cadena, muestra un mensaje que depende de esa cadena. A continuación, utilizando la función ggbOnInit, se le indica a GeoGebra que llame a esta función cada vez que un nuevo objeto es añadido. Al recargar la construcción, la función ggbOnInit será llamada y a partir de es momento, cuando el usuario añada un punto llamado, por ejemplo A, el mensaje "Objeto A fue añadido" aparecerá.

También puedes utilizar listeners para acciones como renombrar, eliminar y limpiar una construcción. Se puede encontrar una lista completa en Reference:JavaScript.

Nota: Utilizando cualquier método ggbApplet en JavaScript Global por fuera de ggbOnInit no funcionará como se espera dado que deben ser llamados antes de que la construcción sea cargada.
© 2024 International GeoGebra Institute