Saltar la navegación

11. Algoritmos

En ocasiones es necesario realizar operaciones más complejas que pueden requerir la realización de tareas iterativas, condicionales, que impliquen operaciones múltiples, tales como la asignación de valores a variables, vectores y matrices, la creación de nuevas funciones, en definitiva, los algoritmos permiten programar procesos de cálculo más o menos complejos. Las operaciones tipo algoritmo han sido tratadas anteriormente en el apartado de animaciones y en las funciones.

Las escenas de Descartes tienen definidos por defecto dos algoritmos llamados INICIO y CALCULOS en el menú Programa. La diferencia entre uno y otro es que el primero se ejecuta solamente una vez al principio de la escena y el otro se ejecuta siempre. Estos son los algoritmos que se recomienda usar (si se quiere se pueden definir otros mediante copia de los existentes). Dos capturas de imagen de los paneles de configuración de los algoritmos INICIO y CALCULOS son las siguientes:

Los campos configurables de los algoritmos se comentan en la siguiente tabla:

info Comentario para el programador que no se muestra en escena.
id
Es el identificador o nombre del algoritmo.

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 solamente 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 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, operaciones y llamadas a funciones separadas por saltos de línea. También pueden contener condicionales.
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 o condicional.
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.

La ejecución del algoritmo se lleva a cabo de la siguiente manera:

  • Paso 1. En el campo inicio pueden escribirse una serie de asignaciones y llamadas a otros algoritmos separadas por punto y coma (;).
  • Paso 2. Se realiza las asignaciones, llamadas a otros algoritmos indicadas y operaciones en hacer.
  • Paso 3. Se comprueba si se cumple la condición (expresión booleana) contenida en mientras. Si la condición mientras se cumple entonces vuelve al paso 2, esto es, vuelve a ejecutar hacer y a verificar la condición mientras. Este 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.

Para realizar una asignación condicional se puede utilizar la construcción: (A)?a:b donde A es una expresión booleana o condicional 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)?cos(4*pi*x):1, asigna a y el valor cos(4+pi*x) si x>0 y asigna 1 si x<=0.

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

En el siguiente ejemplo vamos a utilizar un algoritmo para que realice la suma de los 5 primeros números enteros, es decir x=5 (en general para cualquier número sería la función sumatorio). Pasamos a explicar cómo funciona el algoritmo. En inicio se asigna a las variables los valores n=1 y f=0. En hacer, se realizarán las operaciones f=f+n y n=n+1, mientras n<=x+0.01, comentamos el funcionamiento del algoritmo en cada ciclo.
  • En el primer ciclo de hacer f=0 y n=1, por lo que f=0+1=1 y n=1+1=2. La condición mientras n<=x+0.01 se sigue cumpliendo ya que 2<=5+0.01, por lo que se ejecutará otro ciclo de hacer.
  • En el segundo ciclo de hacer f=1 y n=2, por lo que f=1+2=3 y n=2+1=3. La condición mientras n<=x+0.01 se sigue cumpliendo ya que 3<=5+0.01, por lo que se ejecutará otro ciclo de hacer.
  • En el tercer ciclo de hacer f=3 y n=3, por lo que f=3+3=6 y n=3+1=4. La condición mientras n<=x+0.01 se sigue cumpliendo ya que 4<=5+0.01, por lo que se ejecutará otro ciclo de hacer.
  • En el cuarto ciclo de hacer f=6 y n=4, por lo que f=6+4=10 y n=4+1=5. La condición mientras n<=x+0.01 se sigue cumpliendo ya que 5<=5+0.01, por lo que se ejecutará otro ciclo de hacer.
  • En el quinto ciclo de hacer f=10 y n=5, por lo que f=10+5=15 y n=5+1=6. La condición mientras n<=x+0.01 ya no se cumple ya que 6 no es menor que 5+0.01, por lo que el algoritmo parará. En este punto f=15, que es el valor de la suma de los cinco primeros números. (Si en lugar de cinco números hubieran sido más, el ciclo se habría repetido más veces).

Mediante un texto mostraremos el valor de f, que es la variable del algoritmo que suma los cinco primeros números naturales. Se puede introducir como texto sin formato y la variable f se incluirá entre corchetes en el campo texto [f]. En nuestro ejemplo el valor de f será 15. Si x se hubiera puesto en un control, f nos hubiera devuelto la suma de todos los números naturales con valor menor o igual que el del valor introducido de x en el control.

Actividad

Definir algoritmos en escenas.