Diferencia entre revisiones de «Tutorial:Funciones y Subrutinas»

De GeoGebra Manual
Saltar a: navegación, buscar
Línea 4: Línea 4:
 
Las [http://es.wikipedia.org/wiki/Subrutina subrutinas] (también denominadas funciones o procedimientos) involucran un concepto central en la programación y brindan una ayuda crucial en el mantenimiento de los programas dado que facilitan la reutilización.  En este tutorial se describen mecanismos para emplearlas en GeoGebra.
 
Las [http://es.wikipedia.org/wiki/Subrutina subrutinas] (también denominadas funciones o procedimientos) involucran un concepto central en la programación y brindan una ayuda crucial en el mantenimiento de los programas dado que facilitan la reutilización.  En este tutorial se describen mecanismos para emplearlas en GeoGebra.
  
'''Método Nº 1.'''  [[Herramientas Propias|Herramientas Personales o ''Propias'']]: operan como una nueva función.  Requieren entradas y producen objetos de salida resultantes.  Se las puede incluir en la [[Barra de Herramientas]] como una más de las ofrecidas y/o se pueden poner en juego desde la [[Barra de Entrada]]  o incorporar a un [[Programas - Guiones (Scripting)|''guión'' o ''script'']].   
+
'''Método Nº 1.'''  [[Herramientas Propias|Herramientas Personales o ''Propias'']]: operan como una nueva función.  Requieren entradas y producen objetos de salida resultantes.  Se las puede incluir en la [[Barra de Herramientas]] como una más de las ofrecidas y/o se pueden poner en juego desde la [[Barra de Entrada]]  o incorporar a un [[Programas - Guiones (Scripting)|''guion'' o ''script'']].   
 
{{Note:Vewr también, para mayores detalles, el tutorial  [[Tutorial:Preparando Herramientas Propias en la Barra|Preparando Herramientas Propias en la Barra]].
 
{{Note:Vewr también, para mayores detalles, el tutorial  [[Tutorial:Preparando Herramientas Propias en la Barra|Preparando Herramientas Propias en la Barra]].
  
 
'''Método Nº 2.''' Cualquier función [[Referencia:JavaScript|''Javascript'']] definida en la sección Global de la pestaña de ''Guiones-Script'' quedará disponible para emplearse desde [[Referencia:JavaScript|''Javascript'']] en cualquier instancia de GeoGebra.
 
'''Método Nº 2.''' Cualquier función [[Referencia:JavaScript|''Javascript'']] definida en la sección Global de la pestaña de ''Guiones-Script'' quedará disponible para emplearse desde [[Referencia:JavaScript|''Javascript'']] en cualquier instancia de GeoGebra.
  
'''Método Nº 3.'''  Los guiones de GeoGebra no cuentan con respaldo para incluir subrutinas pero se pueden obtener los mismos resultados usando el comando [[Comando EjecutaAlClic|EjecutaAlClic[]]].<br>Al crear un objeto, llamado por ejemplo, '''''miObjeto''''' e ingresar algún código de ''guión'' o ''script'' '''''Al clic''''', se puede invocar el código desde otros objetos o desde la [[Barra de Entrada]] empleando el comando [[Comando EjecutaAlClic|EjecutaAlClic]][miObjeto].<br>Si se lo requiere, pueden ''pasarse'' entradas y salidas a la subrutina vía objetos adicionales.
+
'''Método Nº 3.'''  Los guiones de GeoGebra no cuentan con respaldo para incluir subrutinas pero se pueden obtener los mismos resultados usando el comando [[Comando EjecutaAlClic|EjecutaAlClic[]]].<br>Al crear un objeto, llamado por ejemplo, '''''miObjeto''''' e ingresar algún código de ''guion'' o ''script'' '''''Al clic''''', se puede invocar el código desde otros objetos o desde la [[Barra de Entrada]] empleando el comando [[Comando EjecutaAlClic|EjecutaAlClic]][miObjeto].<br>Si se lo requiere, pueden ''pasarse'' entradas y salidas a la subrutina vía objetos adicionales.
 
<h4>Ejemplo Detallado</h4>
 
<h4>Ejemplo Detallado</h4>
 
Aquí se desarrolla un ejemplo más detallado.<br>Dados cinco puntos '''''A''''', '''''B''''', '''''C''''', '''''D''''' y '''''E''''' si se requiere que cada uno de ellos se torne rojo al darle ''clic'', se lo puede lograr de diferentes maneras;
 
Aquí se desarrolla un ejemplo más detallado.<br>Dados cinco puntos '''''A''''', '''''B''''', '''''C''''', '''''D''''' y '''''E''''' si se requiere que cada uno de ellos se torne rojo al darle ''clic'', se lo puede lograr de diferentes maneras;
*Escribiendo un ''guión'' `por separado para cada punto.<br>Para '''''A''''' sería  <code>Color[A,1,0,0]</code>; para '''''B''''', <code>Color[B,1,0,0]</code>, etc.<br>Si se deseara cambiar de rojo a verde más adelante, sería preciso editar cada guión del correspondiente punto por separado. Lo que sería sumamente tedioso si se tratara de numerosos puntos.
+
*Escribiendo un ''guion'' `por separado para cada punto.<br>Para '''''A''''' sería  <code>Color[A,1,0,0]</code>; para '''''B''''', <code>Color[B,1,0,0]</code>, etc.<br>Si se deseara cambiar de rojo a verde más adelante, sería preciso editar cada guion del correspondiente punto por separado. Lo que sería sumamente tedioso si se tratara de numerosos puntos.
  
 
En cambio, todo es más ágil usando una subrutina que, por ejemplo, creando un objeto llamado '''''destino''''' ingresando lo siguiente:<br>
 
En cambio, todo es más ágil usando una subrutina que, por ejemplo, creando un objeto llamado '''''destino''''' ingresando lo siguiente:<br>
Línea 22: Línea 22:
 
A continuación, se crea un botón llamado '''''miBotón'''''.  
 
A continuación, se crea un botón llamado '''''miBotón'''''.  
 
{{OJo|1=No es preciso emplear un [[Botones|botón]]; cualquier tipo de objeto operaría de la misma manera.}}  
 
{{OJo|1=No es preciso emplear un [[Botones|botón]]; cualquier tipo de objeto operaría de la misma manera.}}  
A  '''''miBotón''''' se le asocia un guión ''Al clic'' como el que se anota a continuación:
+
A  '''''miBotón''''' se le asocia un guion ''Al clic'' como el que se anota a continuación:
  
 
<code>
 
<code>
Línea 28: Línea 28:
 
</code>
 
</code>
  
Así, al dirigirse al punto '''''A''''' y asociarle el siguiente guión ''Al clic'':
+
Así, al dirigirse al punto '''''A''''' y asociarle el siguiente guion ''Al clic'':
  
 
<pre>
 
<pre>
Línea 36: Línea 36:
 
Se hace lo mismo para cada uno de los puntos restantes, reemplazando en la primera línea la '''''A''''' por la letra correspondiente ('B', 'C', 'D', 'E' respectivamente).<br>
 
Se hace lo mismo para cada uno de los puntos restantes, reemplazando en la primera línea la '''''A''''' por la letra correspondiente ('B', 'C', 'D', 'E' respectivamente).<br>
 
Ahora, un ''clic'' en uno de los puntos lo tornará rojo.
 
Ahora, un ''clic'' en uno de los puntos lo tornará rojo.
Si más adelante se prefiere el verde al rojo, sólo se precisa cambiar la línea correspondiente en el guión '''''Al clic''''' asociado a '''''miBotón''''' y dicha modificación afectará a todos y cada uno de los puntos en juego.<br>
+
Si más adelante se prefiere el verde al rojo, sólo se precisa cambiar la línea correspondiente en el guion '''''Al clic''''' asociado a '''''miBotón''''' y dicha modificación afectará a todos y cada uno de los puntos en juego.<br>
Este método será mucho más adecuado que el de un guión individual por punto cuanto más numerosos sean.
+
Este método será mucho más adecuado que el de un guion individual por punto cuanto más numerosos sean.
  
¿Cómo opera este procedimiento?  Un ''clic'' en el punto 'B', por ejemplo, desencadena el guión 'Al clic' vinculado al nombre 'B' en el objeto de texto <code>destino</code>.  Esto ejecuta la subrutina almacenada en  <code>miBotón</code> como guión 'Al clic' usando el comando <code>EjecutaAlClic[miBotón]</code>.
+
¿Cómo opera este procedimiento?  Un ''clic'' en el punto 'B', por ejemplo, desencadena el guion 'Al clic' vinculado al nombre 'B' en el objeto de texto <code>destino</code>.  Esto ejecuta la subrutina almacenada en  <code>miBotón</code> como guion 'Al clic' usando el comando <code>EjecutaAlClic[miBotón]</code>.
  
El guión ''Al clic'' de <code>miBotón</code> se concreta. La línea  <code>Ejecuta[{"Color[" + destino + ",1,0,0]"}]</code> constituye un comando  GeoGebra como:<br>
+
El guion ''Al clic'' de <code>miBotón</code> se concreta. La línea  <code>Ejecuta[{"Color[" + destino + ",1,0,0]"}]</code> constituye un comando  GeoGebra como:<br>
 
<code>"Color[" + destino + ",1,0,0]"</code><br>
 
<code>"Color[" + destino + ",1,0,0]"</code><br>
 
... que se ejecuta usando <code>Ejecuta[]</code>.<br>
 
... que se ejecuta usando <code>Ejecuta[]</code>.<br>
Línea 54: Línea 54:
  
 
'''Texto previo a  la construcción'''<br>
 
'''Texto previo a  la construcción'''<br>
Este ejemplo muestra un modo de usar un guión de tipo 'Al clic' asociado a objetos como subrutina que puede emplearse en cualquier lugar usando el comando correspondiente.<br>
+
Este ejemplo muestra un modo de usar un guion de tipo 'Al clic' asociado a objetos como subrutina que puede emplearse en cualquier lugar usando el comando correspondiente.<br>
  
 
'''Texto posterior a la construcción'''<br>
 
'''Texto posterior a la construcción'''<br>
Con un clic en cualquier punto A, B, C, D o E se establece cuál es el 'destino'  que toma el nombre del punto. Ese 'clic' también desencadena el guión asociado al botón 'miBotón' que es el que provoca el cambio de color en el punto de 'destino' indicado por el 'clic'.<br>
+
Con un clic en cualquier punto A, B, C, D o E se establece cuál es el 'destino'  que toma el nombre del punto. Ese 'clic' también desencadena el guion asociado al botón 'miBotón' que es el que provoca el cambio de color en el punto de 'destino' indicado por el 'clic'.<br>
 
<br>El ejemplo puede verse [http://www.geogebra.org/student/87569?mobile=false aquí]<br>
 
<br>El ejemplo puede verse [http://www.geogebra.org/student/87569?mobile=false aquí]<br>
  
<center>'''<ggb_applet width="237" height="188"  version="4.4" ggbBase64="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"/>'''</center><hr>
+
<center>'''<ggb_applet width="237" height="188"  language="es" version="5.0" ggbBase64="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"/>'''</center><hr>
  
 
<h4>Ejemplo Previo</h4>
 
<h4>Ejemplo Previo</h4>
Línea 75: Línea 75:
  
 
... obviamente, cambiando la ''A'' por el correspondiente nombre del punto.
 
... obviamente, cambiando la ''A'' por el correspondiente nombre del punto.
 +
 +
 +
  
 
<ggb_applet width="942" height="400" version="4.4" id="87569" enableRightClick="true" showAlgebraInput="false" language="es" enableShiftDragZoom="true" showMenuBar="true" showToolBar="false" showToolBarHelp="true" enableLabelDrags="false" showResetIcon="true" />
 
<ggb_applet width="942" height="400" version="4.4" id="87569" enableRightClick="true" showAlgebraInput="false" language="es" enableShiftDragZoom="true" showMenuBar="true" showToolBar="false" showToolBarHelp="true" enableLabelDrags="false" showResetIcon="true" />

Revisión del 07:18 26 nov 2014

Tutorial: Funciones y Subrutinas vía Guiones (scripts)

Las subrutinas (también denominadas funciones o procedimientos) involucran un concepto central en la programación y brindan una ayuda crucial en el mantenimiento de los programas dado que facilitan la reutilización. En este tutorial se describen mecanismos para emplearlas en GeoGebra.

Método Nº 1. Herramientas Personales o Propias: operan como una nueva función. Requieren entradas y producen objetos de salida resultantes. Se las puede incluir en la Barra de Herramientas como una más de las ofrecidas y/o se pueden poner en juego desde la Barra de Entrada o incorporar a un guion o script. {{Note:Vewr también, para mayores detalles, el tutorial Preparando Herramientas Propias en la Barra.

Método Nº 2. Cualquier función Javascript definida en la sección Global de la pestaña de Guiones-Script quedará disponible para emplearse desde Javascript en cualquier instancia de GeoGebra.

Método Nº 3. Los guiones de GeoGebra no cuentan con respaldo para incluir subrutinas pero se pueden obtener los mismos resultados usando el comando EjecutaAlClic[].
Al crear un objeto, llamado por ejemplo, miObjeto e ingresar algún código de guion o script Al clic, se puede invocar el código desde otros objetos o desde la Barra de Entrada empleando el comando EjecutaAlClic[miObjeto].
Si se lo requiere, pueden pasarse entradas y salidas a la subrutina vía objetos adicionales.

Ejemplo Detallado

Aquí se desarrolla un ejemplo más detallado.
Dados cinco puntos A, B, C, D y E si se requiere que cada uno de ellos se torne rojo al darle clic, se lo puede lograr de diferentes maneras;

  • Escribiendo un guion `por separado para cada punto.
    Para A sería Color[A,1,0,0]; para B, Color[B,1,0,0], etc.
    Si se deseara cambiar de rojo a verde más adelante, sería preciso editar cada guion del correspondiente punto por separado. Lo que sería sumamente tedioso si se tratara de numerosos puntos.

En cambio, todo es más ágil usando una subrutina que, por ejemplo, creando un objeto llamado destino ingresando lo siguiente:

destino = "A"

En la Barra de Entrada, se puede emplear este objeto como entrada de una función propia.

A continuación, se crea un botón llamado miBotón.

Bulbgraph.pngAtención: No es preciso emplear un botón; cualquier tipo de objeto operaría de la misma manera.

A miBotón se le asocia un guion Al clic como el que se anota a continuación:

Ejecuta[{"Color[" + destino + ",1,0,0]"}]

Así, al dirigirse al punto A y asociarle el siguiente guion Al clic:

destino = A
EjecutaAlClic[miBotón]

Se hace lo mismo para cada uno de los puntos restantes, reemplazando en la primera línea la A por la letra correspondiente ('B', 'C', 'D', 'E' respectivamente).
Ahora, un clic en uno de los puntos lo tornará rojo. Si más adelante se prefiere el verde al rojo, sólo se precisa cambiar la línea correspondiente en el guion Al clic asociado a miBotón y dicha modificación afectará a todos y cada uno de los puntos en juego.
Este método será mucho más adecuado que el de un guion individual por punto cuanto más numerosos sean.

¿Cómo opera este procedimiento? Un clic en el punto 'B', por ejemplo, desencadena el guion 'Al clic' vinculado al nombre 'B' en el objeto de texto destino. Esto ejecuta la subrutina almacenada en miBotón como guion 'Al clic' usando el comando EjecutaAlClic[miBotón].

El guion Al clic de miBotón se concreta. La línea Ejecuta[{"Color[" + destino + ",1,0,0]"}] constituye un comando GeoGebra como:
"Color[" + destino + ",1,0,0]"
... que se ejecuta usando Ejecuta[].
El resultado final es el comando Color[B,1,0,0] que opera tornando rojo al punto B.

Ejemplo de Hoja Dinámica

El boceto ilustra animadamente el funcionamiento de esta hoja de trabajo dinámica cuyo título e indicaciones se copian a continuación:

Título
Ejemplo empleando EjecutaAlClic para emular una subrutina

Texto previo a la construcción
Este ejemplo muestra un modo de usar un guion de tipo 'Al clic' asociado a objetos como subrutina que puede emplearse en cualquier lugar usando el comando correspondiente.

Texto posterior a la construcción
Con un clic en cualquier punto A, B, C, D o E se establece cuál es el 'destino' que toma el nombre del punto. Ese 'clic' también desencadena el guion asociado al botón 'miBotón' que es el que provoca el cambio de color en el punto de 'destino' indicado por el 'clic'.

El ejemplo puede verse aquí


Ejemplo Previo

En un registro previo de un ejemplo anterior, pueden verificarse diversos guiones.

El ejemplo puede verse aquí
Estos son los guiones empleados:

Ejecuta[{"SetColor[" + destino + ",1,0,0]"}] ---- en el botón miBotón

y en cada uno de los puntos:

destino = "A" EjecutaAlClic[miBotón]

... obviamente, cambiando la A por el correspondiente nombre del punto.



en:Tutorial:Scripting:Functions and subroutines

© 2024 International GeoGebra Institute