Auxiliares


Auxiliares.

  1. Variables.
  2. Constantes.
  3. Vectores.
  4. Matrices
  5. Funciones.
  6. Sucesiones.
  7. Algoritmos.
  8. Eventos.

Auxiliares.

Se llama auxiliares al conjunto de constantes, variables, vectores (listas de variables), funciones, sucesiones, algoritmos y eventos que el autor de una escena de Descartes puede definir y utilizar. Los auxiliares de una escena pueden editarse usando el panel de configuración de auxiliares, al que se accede precisamente seleccionando "Auxiliares" en la ventana de edición.

El Panel de configuración de Auxiliares tiene este aspecto.

A la izquierda aparece la lista de todos los auxiliares de la escena (en el ejemplo sólo aparece la constante pi). A la derecha aparece un panel, diferente para cada tipo de auxiliar, en el que se pueden editar todos los parámetros que definien al auxiliar seleccionado en la lista. Más adelante se muestran y explican los diversos paneles.

Nota: Si se hace un clic sobre la etiqueta azul de Auxiliares, aparecerá una ventana con un área de texto que contiene el código de todos los auxiliares, uno en cada línea. Este texto se puede editar manualmente y pulsando aceptar se actualiza el editor con los cambios realizados. Los autores experimentados pueden encontrar este método de edición muy cómodo y útil para cierto tipo de modificaciones.

Para crear un auxiliar nuevo hay que pulsar el botón + que se encuentra arriba a la izquierda de la lista. Al pulsarlo aparece una ventana de diálogo con un selector y un campo de texto. El selector sirve para elegir el tipo de auxiliar que se desea definir. Las opciones son: variable, constante, vector, matriz, función, sucesión, algoritmo y evento (ver la figura).

Una vez elegido el tipo de auxiliar deseado el usuario debe escribir en el campo de texto el nombre del auxiliar que servirá de referencia para usarse en otros auxiliares, en los gráficos o en la animación. El programa ofrece al autor un nombre por defecto que consta de una letra: v (variable), c (constante), V (vector), matriz (M),f (función), S (sucesión), a (algoritmo) o e (evento) según el tipo del auxiliar, seguida de un número que corresponde a la posición del nuevo auxiliares en la lista. Se recomienda al autor no utilizar los nombres por defecto sino asignar nombres adecuados al contenido de la escena y al significado del auxiliar. El ejemplo siguiente corresponde a una nueva variable a la que se le ha dado el nombre ángulo.

El resto de esta página se dedica a explicar en detalle el funcionamiento y los paneles de configuración de cada tipo de auxiliar.


1. Variables.

Las variables son los auxiliares más flexibles. Su valor puede ser cualquier expresión definida en términos de los parámetros de los controles de otros auxiliares que aparezcan antes en la lista o de x e y.

Las variables se evalúan cada vez que se utilizan, esto es lo que las hace tan útiles. Por ejemplo, si se define una variable como R=raíz(x^2+y^2), y se define una gráfica de tipo ecuación con la expresión R=2, entonces se obtiene la gráfica de la circunferencia de radio 2. En otras palabras, las variables pueden utilizarse como abreviaturas de expresiones más o menos complejas.

Si se activa el selector editable entonces en la parte baja de la escena aparece un campo de texto que permite al usuario modificar la expresión que define a la variable. Para que el programa adopte esta expresión es necesario que el usuario pulse Intro en el campo de texto. Puede verse un ejemplo de aplicación de esta propiedad en mates/ecdif/ecdif.htm.

Las variables también pueden utilizarse como constantes pero no es recomendable hacerlo porque ello puede ralentizar el funcionamiento de la escena. En principio las variables deben utilizarse únicamente cuando dependen de x o y. En cualquier otro caso es preferible utilizar constantes (de las que se evalúan siempre).

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

expresión
Determina si debe aparecer en la escena un campo de texto
editable para cambiar la expresión.

editable

Es el número de elementos del vector

 


2. Constantes.

Las constantes son los auxiliares utilizados con mayor frecuencia. El valor de una constante puede definirse como una expresión cualquiera en términos de los identificadores de los controles y de otras constantes que aparezcan antes en la lista, pero no en términos de x e y.

Hay dos tipo de constantes:

1) las que se evalúan "una sola vez", que podrían llamarse constantes absolutas, y

2) las que se evalúan "siempre", es decir, cada vez que se toca un pulsador, se mueve un control gráfico o se va a dar un nuevo paso en la animación.

Las constantes que se evalúan siempre y las variables que no dependen de x o y son muy semejantes en apariencia, y de hecho pueden utilizarse en las mismas circunstancias, pero en tales casos siempre es preferible utilizar constantes. La razón es que las constantes que se evalúan siempre en realidad se evalúan solamente cuando hay un cambio en la escena, en cambio las variables, si aparecen en la definición de un gráfico, se tienen que evaluar muchas veces en cada cambio de la escena, lo cual pueden llegar a ralentizar la respuesta del programa.

El valor por defecto del parámetro evaluar es "una-sola-vez".

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

expresión
Determina si debe aparecer en la escena un campo de texto
editable para cambiar la expresión.

evaluar

Es un selector con dos posibles valores: siempre o una_sola_vez.

Permite definir si la constante, la expresión del vector o el
algoritmo deben evaluarse cada vez que el usuario modifica un
control o sólamente una vez al iniciarse la escena.

Es importante seleccionar una_sola_vez cuando sea factible para
que el funcionamiento de la escena sea más rápido.

 


3. Vectores.

Un vector es una lista de constantes. Un vector tiene un identificador y un tamaño, que es su longitud o número de elementos. El ejemplo de la figura siguiente corresponde a un vector con identificador vect y de tamaño 3

La manera de hacer referencia a un elemento de un vector es escribir el identificador del vector seguido del número del elemento entre corchetes. Los elementos de un vector se numeran siempre comenzando por 0.

El área de texto expresión, que aparece en el panel de configuración de un vector, sirve para asignar valores a (o inicializar ) los elementos del vector. No es necesario utilizar el área de texto, también se puede utilizar un algoritmo para inicializar un vector. En particular cuando un vector tiene muchos elementos la manera más conveniente de inicializarlos puede ser utilizando un algoritmo.

El autor puede decidir si la la expresión que se usa para inicializar los valores de un vector se realiza una sola vez o siempre (es decir cada vez que hay un cambio en la escena) seleccionado el valor correspondiente en el selector evaluar.

Los elementos no inicializados de un vector tienen por defecto el valor 0.

El contenido del área de texto expresión es por defecto el que muestra la imagen, asignando cero a los tres elementos del vector.

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

evaluar

Es un selector con dos posibles valores: siempre o una_sola_vez.

Permite definir si la constante, la expresión del vector o el
algoritmo deben evaluarse cada vez que el usuario modifica un
control o sólamente una vez al iniciarse la escena.

Es importante seleccionar una_sola_vez cuando sea factible para
que el funcionamiento de la escena sea más rápido.

tamaño

Es el número de elementos del vector

Área de texto

Es un campo de texto donde pueden escribirse asignaciones a los
valores del vector, separadas por saltos de línea o por ;

Por ejemplo, si el identificador del vector es v y tiene tamaño
3, entonces se puede escribir:

v[0]=1

v[1]=2.5

v[2]=-3.1

archivo

Archivo de texto (se recomienda que lleve extensión .txt) en el
que aparecen en orden los valores de los elementos del vector,
separados por un salto de línea.

Los valores pueden ser numéricos o de cadena, en cuyo caso deben
aparecer entre comillas sencillas, por ejemplo 'valor'.

 

 


4 Matrices

Una matriz es un arreglo bidimensional de constantes. Si M es una matriz entonces M[i,j] es el elemento que está en la columna i y en la fila j.

El panel de configuración de una matriz tiene este aspecto:

La siguiente tabla explica los campos específicos de las matrices:

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

evaluar

Es un selector con dos posibles valores: siempre o una_sola_vez.

Permite definir si la constante, la expresión del vector o el
algoritmo deben evaluarse cada vez que el usuario modifica un
control o sólamente una vez al iniciarse la escena.

Es importante seleccionar una_sola_vez cuando sea factible para
que el funcionamiento de la escena sea más rápido.

columnas

Es el número de columnas de la matriz

filas

Es el número de filas de la matriz

Área de texto

Es un campo de texto donde pueden escribirse asignaciones a los
valores del vector, separadas por saltos de línea o por ;

Por ejemplo, si el identificador del vector es v y tiene tamaño
3, entonces se puede escribir:

v[0]=1

v[1]=2.5

v[2]=-3.1

archivo

Archivo de texto (se recomienda que lleve extensión .txt) en el
que aparecen en orden los valores de los elementos del vector,
separados por un salto de línea.

Los valores pueden ser numéricos o de cadena, en cuyo caso deben
aparecer entre comillas sencillas, por ejemplo 'valor'.

Archivo de texto (se recomienda que lleve extensión .txt) en el
que aparecen en orden los valores de los elementos del vector,
separados por un salto de línea.

Los valores pueden ser numéricos o de cadena, en cuyo caso deben
aparecer entre comillas sencillas, por ejemplo 'valor'.


5. Funciones.

Las funciones asignan un número real a cada valor de su variable (o a cada conjunto de valores de sus variables). Las funciones tienen un identificador (o nombre), una o más variables (que no son más que una lista de identificadores) y  una expresión en términos de esas variables.

Estos son ejemplos de funciones de una variable con sus identificadores y sus variables:

expresión

identificador

variable

f(x)=sen(3*x+2) f x
g(y)=A*exp(-(y^2)/(s^2)) g y
Area(radio)=(pi*radio^2)/2 radio radio

Estos son ejemplos de funciones de dos o más variables con sus identificadores y sus variables:

expresión

identificador

variables

f(x,y)=raíz(x^2+y^2) f x,y
Fun(x,y,z) Fun x,y,z
Volumen(a,b,c)=4*pi*a*b*c/3 Volumen a,b,c

Los nombres específicos de las variables de una función no son importantes, sólo sirven para identificar las variables dentro de la expresión y asignarles allí un papel.

Las funciones se evalúan nada más cuando son llamadas explícitamente (por ejemplo por un algoritmo, por un gráfico, por la animación o por la constricción de un control gráfico que se mueve).

El panel de configuración de una función tiene este aspecto:

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

evaluar

Es un selector con dos posibles valores: siempre o una_sola_vez.

Permite definir si la constante, la expresión del vector o el
algoritmo deben evaluarse cada vez que el usuario modifica un
control o sólamente una vez al iniciarse la escena.

Es importante seleccionar una_sola_vez cuando sea factible para
que el funcionamiento de la escena sea más rápido.

dominio

Es una expresión booleana que determina el dominio de la función.

Cualquier intento de evaluar la función fuera de su dominio
lanzará una excepción, con lo cual, por ejemplo, su gráfica no se
dibuja en los puntos que no están en el dominio.

El valor por defecto es vacío, lo cual se interpreta como que el
dominio no está restringido.

algoritmo

Selector que indica si la función, para evaluarse, debe usar un
algoritmo; es decir, si necesita los cálculos indicados en
"inicio", "hacer" y "mientras".

inicio

En el campo "inicio" puede escribirse una serie de asignaciones
y llamadas a algoritmos separadas por ;

Todo lo que haya en este campo se ejecuta al inicio del cálculo.

hacer

En el campo "hacer" puede escribirse una serie de asignaciones y
llamadas a algoritmos separadas por saltos de línea.

Lo que hay en "hacer" se ejecuta repetidamente mientras la
condición "mientras" sea válida.

mientras


En el campo "mientras" se debe escribir una expresión booleana.

Lo que hay en "hacer" se ejecuta repetidamente mientras la
condición "mientras" sea válida.

 

El campo donde aparece el identificador de la función (a la izquierda del signo = ) debe incluir los identificadores de las variables entre paréntesis y separados por comas, para dar sentido a la expresión que aparece al lado derecho. La expresión que aparece a la derecha del signo = puede ser, o incluir, un término condicional, por ejemplo:

     func(x)=(x<0)?0:1.

es la función que vale 0 para x<0 y 1 para x>=0. Una expresión booleana vale 1 cuando es verdadera y 0 cuando es falsa por lo cual la función anterior también podría escribirse como

     func(x)=(x>=0),

o bien usando la función indicadora ind, también podría escribirse como:

     func(x)=ind(x>=0),

Al final de esta página se ofrece una lista de todas las funciones matemáticas y los operadores que reconoce el analizador de expresiones de Descartes, aparte de las que se definen explícitamente en cada escena. Estas funciones y operadores pueden usarse en cualquier sitio donde Descartes espera una expresión, incluyendo el campo de texto de un control numérico.

El dominio puede ser una expresión booleana en términos de las variables de la función. El programa utiliza el dominio para decidir si intenta evaluar la función. Si en un punto la expresión del dominio no se cumple, la evaluación no se intenta y el programa genera una excepción, con lo cual, si se está dibujando por ejemplo la gráfica de esta función, el dibujo que corresponde a este punto no se realiza  y se pasa al siguiente. Cuando el campo del domino está vacío se considera que el dominio de la función no tiene restricciones, es decir, cualquier conjunto de valores de sus variables está en el dominio.

Cuando el programa intenta evaluar una función en un punto donde tiene una singularidad, se genera una interrupción, igual que si el punto no estuviera en el dominio. Por lo tanto no es necesario excluir del dominio de una función sus puntos singulares, el programa ya lo hace automáticamente. Sólo hay que especificar el dominio si se desea restringir el dominio natural de una función.

A veces no se puede definir una función solamente mediante una expresión, sino que su evaluación requiere un proceso más complicado. En estos casos el autor puede marcar algoritmo, con lo cual la evaluación de la función realiza antes el algoritmo definido en los campos de texto etiquetados con inicio, hacer y mientras (consultar Algoritmos para el significado de estos términos).  En estos campos el autor puede describir el algoritmo de evaluación de la función. El siguiente ejemplo muestra cómo puede una función utilizar un algoritmo. Se trata de una función Fact(x) que calcula el factorial del mayor entero menor o igual que x, para x>=0.

El algoritmo que se define en este panel se ejecuta cada vez que se quiere evaluar la función, por lo cual los valores calculados en el algoritmo pueden utilizarse para definir el valor de la función.

Las funciones pueden tener cualquier número de variables, incluso cero. Para evaluar una función sin variables se debe escribir un par de paréntesis después de su nombre (por ejemplo func()).   Las funciones sin variables pueden servir como algoritmos de cálculo que devuelven un valor real. También puede haber funciones que no devuelven ningún valor, las cuales pueden usarse como algoritmos que admiten parámetros. En el ejemplo siguiente se presenta una función de siete variables  Euler(x,y,vx,vy,ax,ay,dt) llamada Euler, que en realidad es una implementación del método de integración de Euler para calcular la posición de una partícula que parte de la posición (x,y) con una velocidad (vx,vy) y que se mueve con aceleración constante (ax,ay) durante un tiempo dt y mientras y>0.

Esta función puede llamarse desde cualquier otra función, desde un algoritmo o desde la animación. y al llamarla no hay que asignarla a una variable, basta escribir su nombre y los parámetros que se le pasan separados por comas

 


6. Sucesiones.

Una sucesión es una función con dominio en los enteros (negativos y no negativos). Por tanto si se intenta evaluar con la variable distinta de un entero, da el error: "función no definida".

El panel de edición de una sucesión es idéntico al de una función y por tanto permite especificar su dominio, que siempre será un subconjunto de los números enteros, y también permite definir sus valores a través de un algoritmo.

 

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

expresión
Es un campo de texto donde debe escribirse la expresión mediante
la cual se define el valor de la constante, variable o función

dominio

Es una expresión booleana que determina el dominio de la función.

Cualquier intento de evaluar la función fuera de su dominio
lanzará una excepción, con lo cual, por ejemplo, su gráfica no se
dibuja en los puntos que no están en el dominio.

El valor por defecto es vacío, lo cual se interpreta como que el
dominio no está restringido.

algoritmo

Selector que indica si la función, para evaluarse, debe usar un
algoritmo; es decir, si necesita los cálculos indicados en
"inicio", "hacer" y "mientras".

Si S es una sucesión, entonces las ecuaciones y=S(x) y x=S(y) se dibujan sólo para valores enteros del argumento, lo cual permite dibujar gráficas de sucesiones con más facilidad que antes, como se ilustra en el ejemplo siguiente.

Nota: Se hizo un trabajo especial para que el programa dibuje todos los puntos de una ecuación de la forma y=S(x) cuando S es una sucesión. En realidad el programa reconoce que se trata de una sucesión y trata la ecuación de manera especial, pero esto es válido sólo si la ecuación tiene la forma explícita y=S(x), o al menos y=S(f(x)), sin embargo no funcionará en una ecuación de la forma y=f(S(x)) donde f no es una sucesión. Por ejemplo, sí funciona para y=S(raíz(x)) pero no para y=raíz(S(x)). La razón es que no es posible para el programa detectar que el dominio es discreto.

Nota: Si se desea que la sucesión sólo sea válida para enteros no negativos (números naturales)
entonces hay que definir S con dominio n>=0.

 


7. Algoritmos.

Los algoritmos constituyen un sistema sencillo para inicializar vectores y para programar procesos de cálculo más o menos complejos.

La figura muestra el panel de configuración de un algoritmo.

 

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

evaluar

Es un selector con dos posibles valores: siempre o una_sola_vez.

Permite definir si la constante, la expresión del vector o el
algoritmo deben evaluarse cada vez que el usuario modifica un
control o sólamente una vez al iniciarse la escena.

Es importante seleccionar una_sola_vez cuando sea factible para
que el funcionamiento de la escena sea más rápido.

algoritmo

Selector que indica si la función, para evaluarse, debe usar un
algoritmo; es decir, si necesita los cálculos indicados en
"inicio", "hacer" y "mientras".

inicio

En el campo "inicio" puede escribirse una serie de asignaciones
y llamadas a algoritmos separadas por ;

Todo lo que haya en este campo se ejecuta al inicio del cálculo.

hacer

En el campo "hacer" puede escribirse una serie de asignaciones y
llamadas a algoritmos separadas por saltos de línea.

Lo que hay en "hacer" se ejecuta repetidamente mientras la
condición "mientras" sea válida.

mientras


En el campo "mientras" se debe escribir una expresión booleana.

Lo que hay en "hacer" se ejecuta repetidamente mientras la
condición "mientras" sea válida.

 

El panel tiene un campo de texto etiquetado como inicio, un área de texto etiquetada como hacer y otro campo de texto etiquetado como mientras.

En el campo inicio pueden escribirse una serie de asignaciones y llamadas a otros algoritmos separadas por ; . Del mismo modo, en el área de texto hacer pueden escribirse una serie de asignaciones y llamadas a otros algoritmos separadas por ; o por un salto de línea. Para llamar a un algoritmo en el inicio o hacer de otro, basta escribir su nombre (como si fuera una asignación) y separarlo por ; en inicio o por un salto de línea en hacer. En el campo mientras se puede escribir una expresión booleana.

Un algoritmo funciona así: primero realiza las asignaciones y llamadas a otros algoritmos que se indican en inicio; luego realiza las asignaciones y llamadas a otros algoritmos indicadas en hacer y luego verifica si se cumple la condición contenida en mientras.  Si la condición mientras se cumple entonces vuelve a ejecutar hacer y vuelve a verificar la condición mientras. El proceso continúa hasta que la condición mientras deja de cumplirse o se ha llegado a 10000 repeticiones (este límite es una válvula de seguridad para proteger al autor y al usuario de errores que pudiesen bloquear el navegador). Si la condición mientras se deja en blanco el algoritmo realiza las asignaciones en hacer una sola vez.

La estructura de los algoritmos de Descartes es en realidad un bucle de programación, que corresponde al do .. while de los lenguajes C y Java y al repeat ... while de Pascal .

Para realizar una asignación condicional se puede utilizar la construcción:  A?a:b donde A es una expresión booleana y a y b son los dos valores que se asignarán según se cumpla o no la condición A. Por ejemplo y=(x>0)?sen(2*pi*x):0 asigna a y el valor sen(2*pi*x) si x>0 y asigna 0 si x<=0. Esta construcción corresponde (parcialmente) al if ... else ... de los lenguajes de programación.

La combinación de bucles  inicio - hacer - mientras , las asignaciones condicionales   A?a:b y la posibilidad de llamar algoritmos desde otros algoritmos ofrece muchas posibilidades para la programación de procesos de cálculo relativamente complejos.

El panel de algoritmos permite decidir si éstos se evalúan una sola vez o siempre. Los algoritmos pueden servir para inicializar vectores. Los que se evalúan una sola vez se ejecutan sólo al iniciarse la escena y cuando se pulsa el botón inicio, por lo que sirven para inicializar vectores que permanecen constantes durante toda la interacción del usuario con la escena. Los algoritmos que se evalúan siempre, se ejecutan cada vez que hay un cambio en un control, ya sea numérico o gráfico, con lo cual sirven para evaluar vectores que dependen de los parámetros de los controles. Cuando un algoritmo se llama desde otro, se ejecuta, independientemente de si está marcado como evaluar una sola vez o siempre.

La estructura de bucles inicio - hacer - mientras de los algoritmos se utiliza también en las funciones algorítmicas y en la animación. De hecho la animación es un algoritmo especial que refresca la escena después de cada paso por hacer.


8. Eventos.

Los eventos son condiciones booleanas que, cuando se cumplen, pueden realizar una acción.

El panel de configuración de eventos tiene este aspecto:

Los eventos tienen un nombre y una condición (expresión booleana) que cuando se cumple realizan la acción seleccionada.

id

Es el identificador del auxiliar.

En el caso de una función o algoritmo debe incluir los
parámetros de los que dependa escritos entre paréntesis y
separados por comas. Por ejemplo:

f(x,y,x).

condición

Condición que, cuando se cumple, genera la acción.

Una vez realizada la acción, ésta sólo vuelve a realizarse
cuando la condición deja de cumplirse y luego vuelve a cumplirse.

acción

Acción que se realizará si se pulsa el botón en un control
numérico con interfaz botón.

Existen las siguientes acciones: "mensaje", "calcular", "abrir
URL", "abrir Escena", "créditos", "config", "inicio", "limpiar",
"animar", "iniciar animación" y "reproducir".

parámetro

El parámetro de la acción.

Si la acción es "mensaje" entonces el parámetro es el contenido
del mensaje.

Si la acción es "calcular", entonces parámetro debe contener
cero o varias asignaciones (separadas por ; o salto de línea) que
el programa realizará cuando se ejecute la acción.

Si la acción es "abrir URL", el parámetro puede ser cualquier URL.

Si la acción es "abrir Escena" el parámetro debe ser una
dirección relativa y lo que hace es abrir la primera escena de
Descartes que encuentra en esa dirección.

Si la acción es "reproducir" entonces el parámtro debe llevar la acción relativa de un fichero de audio con extensión mp3 .

ejecución

Determina el modo de ejecución de la acción del evento.

Si ejecución=una-sola-vez, sólo se ejecuta la primera vez que se
cumple la condición.

Si ejecución=alternar entonces se ejecuta la primera vez que la
condición se cumple, pero si la condición deja de ser válida y
vuelve a serlo luego, entonces vuelve a ejecutarse la acción.

Si ejecución=siempre, la acción se ejecuta siempre que se cumpla
la condición.

El valor por defecto es alternar.

pos mensajes

Determina la posición donde aparecerá el mensaje si la acción
seleccionada es, precisamente, "mensaje".

Las opciones son: centro, arr_izq, arriba, arr_der, izquierda,
derecha, ab_izq, abajo y ab_der.

El valor por defecto es "centro".

 

Las acciones posibles son:

mensaje Abre una pequeña ventana con un mensaje de texto cuyo contenido es el del parámetro..
La posición de esta ventana puede determinarse con el valor de pos_mensajes que puede tomar los siguientes valores: centro, arr_izq, arriba, arr_der, izquierda, derecha, ab_izq, abajo y ab_der.
El valor por defecto de pos_mensajes es centro.
calcular Realiza los cálculos (asignaciones) indicadas en el parámetro y actualiza inmediatamente todos los controles con estos nuevos valores.
abrir URL Abre una página Web en una ventana nueva del navegador
abrir Escena Abre una escena de Descartes en una ventana autónoma
créditos Abre la ventana de créditos
config Abre la ventana de configuración
inicio Reinicia la escena
limpiar Borra todos los rastros dejados por los gráficos.
animar Comienza la animación, la detiene (pausa) o la continúa.
reiniciar animación Inicializa la animación, es decir, la devuelve a su punto inicial.
reproducir Inicia la reproducción del archivo de audio indicado en el parámetro.

Hay tres modos de ejecución: una-sola-vez, alternar y siempre. que se explican en la siguiente tabla.

una-sola-vez La acción sólo se ejecuta la primera vez que se cumple la condición.
alternar En este caso la acción se ejecuta una vez cuando la condición se cumple y no se vuelve a ejecutar hasta que la condición ha dejado de ser verdadera y vuelve a ser verdadera otra vez.
siempre Significa que la acción se ejecutará cada vez que la condición se cumpla.

Como un evento puede desencadenar una acción y una acción puede realizar cálculos, es fácil lograr que un evento realice cálculos. En la siguiente escena se define un evento con la condición "p>2", con acción calcular y con parámetro "p=0.05", de manera que cada vez que el usuario aumenta el valor de p más allá de 2, el programa lo devuelve a su valor mínimo 0.05. Si se mantiene pulsada la flecha azul del control p, se verá que la parábola va abriéndose hasta que alcanza el valor p=2 y, en ese momento, salta el valor de p a 0.05.

 

En el siguiente ejemplo, si el lector pone los valores de los pulsadores en a=500, b=50 y c=15.8, se produce un evento que abre una escena Descartes, confirmando que esos son los valores que dan la solución. ¡Pruébelo! y luego, en el editor de configuraciones mire cómo se definió el evento. En particular verá que la ejecución está en modo alternar, por lo cual si se elije un valor erróneo y luego vuelve a elegirse el correcto, la escena de confirmación vuelve a aparecer.

La siguiente escena ejemplifica cómo pueden aprovecharse los eventos en la enseñanza.

 


Apéndice.- Funciones matemáticas, operadores y palabras reservadas

Las funciones matemáticas que reconoce el analizador de expresiones de Descartes, aparte de las que estén explícitamente definidas en una escena, son las siguientes:

Funciones de una variable (x):

sqr         sqr(x)=x*x
sqrt        sqrt(x)=raíz cuadrada de x
raíz        sqrt(x)=raíz cuadrada de x
exp         exp(x)=exponencial natural de x=e^x
log         log(x)=logaritmo natural de x
log10       log10(x)=logaritmo base 10 de x
abs         abs(x)=valor absoluto de x
ent         ent(x)=mayor entero n tal que n<x
sgn         sgn(x)=signo de x (1 si x>0,-1 si x<0,0 si x=0)
ind         ind(b)=indicadora de b (1 si b=true, 0 si b=false)
sin         sin(x)=seno de x
sen         sen(x)=seno de x
cos         cos(x)=coseno de x
tan         tan(x)=tangente de x
cot         cot(x)=cotangente de x
sec         sec(x)=secante de x
csc         csc(x)=cosecante de x
sinh        sinh(x)=seno hiperbólico de x=(exp(x)-exp(-x))/2
senh        senh(x)=seno hiperbólico de x=(exp(x)-exp(-x))/2
cosh        cosh(x)=coseno hiperbólico de x=(exp(x)+exp(-x))/2
tanh        tanh(x)=tangente hiperbólica de x=sinh(x)/cosh(x)
coth        cot(x)=cotangente hiperbólica de x=cosh(x)/sinh(x)
sech        sech(x)=secante hiperbólica de x=1/cosh(x)
csch        csch(x)=cosecante hiperbólica de x=1/senh(x)
asin        asin(x)=ángulo cuyo seno es x
asen        asen(x)=ángulo cuyo seno es x
acos        acos(x)=ángulo cuyo coseno es x
atan        atan(x)=ángulo cuyo coseno es x

Funciones de dos variable (x,y):

min         min(x,y)=mínimo de x e y
max         max(x,y)=máximo de x e y

También hay un número aleatorio con distribución uniforme en el intervalo [0,1]:

    rnd

Los operadores y otros símbolos que el analizador de expresiones reconoce son:

(   paréntesis izquierdo
)   paréntesis derecho
==  igualdad, operador binario que da un resultado booleano.
!=  desigualdad, operador binario que da un resultado booleano.
#   desigualdad, operador binario que da un resultado booleano
|   operador binario de disyunción equivalente a OR ( O )
&   operador binario de conjunción equivalente a AND ( y )
>   mayor que, operador binario que da un resultado booleano
<   menor que, operador binario que da un resultado booleano
>=  mayor o igual que, operador binario que da un resultado booleano
<=  menor o igual que, operador binario que da un resultado booleano
+   signo mas, operador binario de suma
-   signo menos: binario de resta o unario de cambio de signo
*   por, operador binario de multiplicación
/   entre, operador binario de división
^   operador binario de exponenciación (a^b=ab )
%   módulo, operador binaro, residuo de una división
~   operador unario booleano de negación.
?   pregunta, sólo para asignaciones condicionales (P)?a:b
:   separador, sólo para asignaciones condicionales (P)?a:b

Hay varios identificadores reservados que tienen un significado especial para los espacios de una escena. Para espacios 2-D los identificadores reservados son: escala, O.x,O.y

Para espacios 3-D los identificadores reservados son: escala, observador, rot.y y rot.z. La tabla que sigue explica su significado y el de otras palabras reservadas..

Cuando hay más de un espacio o el espacio tiene un identificador no vacío, entonces estas variables deben ir precedidas por el identificador del espacio y un punto, es decir sus nombres son:  <id>.escala, <id>.O.x,   <id>.O.y,   <id>.observador,   <id>.rot.y,   <id>.rot.z,  donde  <id> es el identificador del espacio.

Palabras resevadas
Para espacios en general

escala

Es el tamaño de la escala de la escena y se expresa en pixeles.
Su valor por defecto en escenas 2-D es 48.

O.x

Es la distancia horizontal del centro de la escena al origen en pixels.
Los valores positivos desplazan el origen hacia la derecha.
El valor por defecto es 0.

O.y

Es la distancia vertical del centro de la escena al origen en pixels.
Los valores positivos desplazan el origen hacia abajo.
El valor por defecto es 0.

_x
La abcisa del vértice superior izquierdo del espacio (en pixeles)
_y
La ordenada del vértice superior izquierdo del espacio (en pixeles)
_w
El ancho del espacio (en pixeles)
_h
La altura del espacio (en pixeles)
ratón apretado (mouse_pressed)
Vale 1 si el botón izquierdo del ratón está apretado y cero en cualquier otro caso.
ratón_x (mouse_x)
Abcisa del punto en donde está el cursor del ratón, en las coordenadas propias del espacio. Sólo se registra el valor cuando el ratón está apretado o si el espacio tiene activada la casilla de _sensible_a_los_movimientos_del_ratón.
ratón_y (mouse_y)
Ordenada al origen del punto en donde está el cursor del ratón, en las coordenadas propias del espacio. Sólo se registra el valor cuando el ratón está apretado o si el espacio tiene activada la casilla de _sensible_a_los_movimientos_del_ratón.
clic_izquierdo
Vale 1 sólo cuando se ha hecho un clic izquierdo sobre el espacio. Vale cero en cualquier otro caso.
_selected_control_()
Da el número del control gráfico que está seleccionado. La numeración corresponde al orden en que los controles gráficos aparecen en la lista de controles.
Para espacios 2D
Para espacios 3D

observador

Distancia (en pixeles) aparente del origen al observador.

rot.y

Ángulo de giro (en grados) del espacio respecto al eje y a partir de la posición por defecto en la que el eje x apunta hacia el observador (ligeramente hacia abajo), el eje y hacia la derecha y el eje z hacia arriba.

rot.z

Ángulo de giro (en grados) del espacio respecto al eje z a partir de la posición por defecto en la que el eje x apunta hacia el observador (ligeramente hacia abajo), el eje y hacia la derecha y el eje z hacia arriba

 
Para espacios algebráicos
_reiniciar_
Es una variable para que el programador de la escena, cuando lo encuentre conveniente, ordene una reinicialización del espacio algebraico, eliminando todas las manipulaciones que hubiera hecho el usuario hasta entonces. Para ello basta asignar a esta variable el valor 1. Una vez hecha la reinicialización la variable recupera automáticamente el valor de 0 que tiene de inicio.
_ecuación_
Es una variable que contiene la cadena que define la ecuación que se propone para ser manipulada en la primera línea del espacio algebraico. Si se asiga una nueva cadena (entre comillas sencillas) con otra expresión o ecuación, el programa automáticamente reinicializa el espacio algebraico proponiendo la nueva ecuación.
Para controles númericos

_TexT_

(En desuso) Si se asigna la cadena '_TexT_' como valor inicial a un control de texto, éste interpreta todo lo que se escriba en él como texto y no como un número o una expresión a evaluar, que es el comportamiento por omisión. Ya no es necesario usar esto pues ahora hay un atributo de los campos de textos específico para tal propósito: solo texto.
_._ o _nada_ o _void_
Cualquiera de estas cadena, por ejemplo '_nada_', asignada como nombre a un pulsador, hace que la etiqueta del pulsador desaparezca. Esto sólo es necesario es pulsadores, en los otros controles numéricos basta dejar el atributo del nombre vacío. Si se deja vacío el nombre en un pulsador, la etiqueta toma el nombre del id.
_no_
 
VACIO.GIF
Si se da este nombre a una imagen de un botón, el botón se vuelve totalmente transparente, aunque no haya tal imagen.
Para controles gráficos
.activo (.active)
Sufijo que agregado al nombre de un control gráfico produce una variable que vale 1 si el control gráfico en cuestión está seleccionado y cero si no está seleccionado.
Para el Registro de Actividades de Descartes (RAD)
_ACIERTOS_
Es el número de aciertos en una actividad y es una variable que se registra en el RAD después de cada actividad. Si el creador de la escena no le asigna ningún valor, queda con valor 0.
_ERRORES_
Es el número de errores en una actividad y es una variable que se registra en el RAD después de cada actividad. Si el creador de la escena no le asigna ningún valor, queda con valor 0.
_NOTA_

Se registra en el RAD. Se calcula como

100*_ACIERTOS_/_TOTAL_.

Si el autor de la escena le asigna otro valor, en el RAD se registrará ése valor asignado por el autor.

_TOTAL_
es una variable a la que se le asigna la suma de _ACIERTOS_ y _ERRORES_
Aunque _TOTAL_ está reservada, su valor no se registra en el RAD.
_EQUIPO_
Adquiere un valor de cadena con el nombre del ordenador que se está usando. A continuación se presentan algunos ejemplos de los valores que adquiere la variable _EQUIPO_ en diferentes circunstancias.
_CONECTADO_AL_RAD_
Adquiere el valor 1 cuando la escena está conectada al RAD y está registrando los detalles de la actividad.
_ALUMNO1_
_ALUMNO1_, _ALUMNO_2, etc... son los nombres de los alumnos registrados como equipo de trabajo que se supone están realizando la actividad. Son los alumnos a quienes se les va a registrar como protagonistas de la actividad.
Para auxiliares
e
2.7182818284590452653602874...
pi (o la letra griega Pi)
3.14159...
_Eval_( c )
Si el argumento c es una constante cuyo valor es una cadena que representa una expresión matemática, esta función devuelve la evaluación de esa expresión. Por ejemplo, si c='sen(pi/6)' entonces _Eval_(c)=0,5 .
_Num_( var )
Si el argumento c es una constante cuyo valor es una cadena que representa una expresión decimal, esta función devuelve el número correspondiente a dicha expresión decimal. En cualquier otro caso devuelve NaN (No es un número). Por ejemplo, si c='3.14159' entonces _Eval_(c)=3,14159 . Sirve para saber si el usuario escribió un resultado numérico directamente sobre un campo de sólo texto, para evitar que use el campo de texto como calculadora.
.long
Sufijo que agregado al nombre de un vector devuelve el número de elementos del vector.
.filas
Sufijo que agregado al nombre de una matriz, devuelve el número de filas de la matriz.
.columnas
Sufijo que agregado al nombre de una matriz, devuelve el número de columnas de la matriz.

Las literales x,y,n,u y v tienen un significado especial dentro de las expresiones que definen algunos objetos gráficos.

x e y juegan el papel de la abscisa y la ordenada de puntos en el plano en el objeto gráfico "ecuación"
También estas mismas literales juegan el mismo papel en las expresiones que determinan las constricciones de los controles gráficos.

n juega el papel de la variable de una sucesión en el objeto gráfico "sucesión" y toma sólo valores enteros.

u y v juegan el papel de parámetros en la definición de las ecuaciones paramétricas de las superficies en 3D donde toman valores reales entre 0 y 1. Las literales x, y y z en este caso también tienen el significado especial de ser las coordenadas de los puntos de la superficie.
x, y y z se expresan paramétricamente en términos de u y v para representar todos los puntos de una superficie.

t y s no son literales reservadas.

La literal t suele usarse para definir las ecuaciones paramétricas de una curva en el plano o de una curva en el espacio. Sin embargo, a diferencia de u y v para las ecuaciones paramétricas de una superficie, esta literal puede cambiarse por cualquier otra letra o palabra y su rango de definición puede ser cualquiera y no necesariamente el intervalo [0,1].

Análogamente la literal s que se usa para definir las familias de gráficos en 2 D no es obligatoria, el autor de una escena puede cambiarla a su antojo y por tanto no es una variable reservada.


Autor: José Luis Abreu León
con la colaboración de Norma Apodaca, Lilia Morales, Deyanira Monroy y Mariana Villada