Algoritmos

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

Los algoritmos hasta la versión 4 de Descartes eran auxiliares de la escena y podían definirse en el panel de configuración de Auxiliares el cual no existe en la versión 5. Por compatibilidad hacia atrás entre las versiones, si una escena anterior a la versión 5 es editada con el gestor de escenas de esta versión,  éste incorpora todos los algoritmos al panel de Programa, donde podrán editarse, pero no pueden incorporarse más salvo que la edición se realice directamente en el campo de edición de texto. No obstante, es aconsejable no incorporar más algoritmos sino definirlos como funciones algorítmicas.

En la versión 5 hay dos únicos algoritmos, accesibles desde el panel de Programa, que son INICIO y CÁLCULOS.

Los parámetros de un algoritmo son los siguientes (ver imagen):

Parámetros de un algoritmo

Parámetros 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 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.

inicio
En el campo “inicio” puede escribirse una serie de asignaciones y llamadas a otros algoritmos o funciones separadas por punto y coma (;). 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 o funciones separadas por saltos de línea.

Lo que hay en “hacer” se ejecuta repetidamente hasta que la condición mientras deja de cumplirse o se ha llegado a 10000 repeticiones (este límite es un sistema de seguridad para proteger al autor y al usuario de errores que pudiesen bloquear el navegador). 

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

Si este campo se deja en blanco el algoritmo realiza las asignaciones especificadas en hacer, sólo una 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  iniciohacermientras, 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 iniciohacermientras 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.

Haz un comentario