• Programa

    En Programa se puede definir:

    1. Un algoritmo llamado INICIO que se ejecuta una vez.
    2. Un algoritmo llamado CALCULOS que se ejecuta siempre.
    3. Condiciones booleanas que cuando se cumplen permiten ejecutar una acción. Esto se conoce con el nombre de eventos.

    programa

    En INICIO se debe incluir todo lo que ha de hacerse al comenzar la escena: asignación de valores, cálculos previos, preparación de datos, etc. En CALCULOS se incluirá aquello que se quiere realizar cuando se produzca algún cambio por cualquier interacción con la escena.

  • INICIO

    INICIO es un algoritmo incluido en todas las escenas a partir de la versión 5 de Descartes. Éste permite programar procesos de cálculo más o menos complejos que se ejecutarán una sola vez al iniciarse la escena, cuando se pulse en el botón inicio o cuando se ejecute la acción inicio.

    En la siguiente figura se muestra el panel de configuración.

    inicio

    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.

    • inicio. En este campo se puede escribir asignaciones y llamadas a algoritmos separadas por ; Todo lo que haya en este campo se ejecuta al inicio del cálculo.
    • hacer. En este campo se pueden escribir  asignaciones y llamadas a algoritmos separadas por saltos de línea. Lo que hay en «hacer» se ejecuta repetidamente siempre que 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.

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

    • Paso 1. Se realiza las asignaciones y llamadas a otros algoritmos que se indican en inicio;
    • Paso 2. Se realiza las asignaciones y llamadas a otros algoritmos indicadas en hacer
    • Paso 3. Se comprueba si se cumple la condición 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.

    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 CALCULOS ofrece muchas posibilidades para la programación de procesos de cálculo relativamente complejos.

    En la siguiente escena se utiliza el algoritmo INICIO para asignar los valores que definen la posición inicial de las figuras que pueden desplazarse con los controles gráficos.

    (Puede descargar esta escena desde este enlace)

     

  • Definiciones

    En el panel del editor de configuración etiquetado como «Definiciones» el autor de una escena de Descartes puede definir varios tipos de datos: variables, funciones, vectores y matrices.

    panelDef

    A la izquierda del Panel aparece la lista con todas las definiciones realizadas en la escena y seleccionando cualquiera de ellas se mostrarán sus parámetros específicos que serán diferentes según el tipo de dato seleccionado.

    Para crear una definición nueva hay que pulsar el botón + que se encuentra arriba a la izquierda de la lista (ver figura siguiente). 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, función, vector y matriz.

    definiciones1

     Nota: Si se hace un clic sobre la etiqueta azul de Definiciones, aparecerá una ventana con un área de texto que contiene el código de todas las definiciones, una 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.

    Una vez elegido el tipo de definición deseada el usuario debe escribir en el campo de texto el nombre del auxiliar que servirá de referencia para usarse en otras definiciones, 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), V (vector), matriz (M), f (función) según el tipo de definición, seguida de un número que corresponde a la posición de la nueva definición 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 de la definición.

  • Animaciones

    Una animación en Descartes es un algoritmo especial que refresca la escena cada vez que realiza un ciclo. Como todo algoritmo tiene la estructura inicio – hacer – mientras.

    El Panel de configuración de la Animación tiene este aspecto.

    animacion1

    El panel de configuración de la animación tiene estos campos:

    Animación

    Activa o desactiva la animación.
    Cuando el selector no está marcado los demás campos del panel están desactivados. Cuando el selector está activado todos los campos del panel se activan y el autor puede escribir en ellos o elegir opciones. Cuando la animación está activada, en la escena aparece un botón animar abajo a la derecha, con el que el usuario puede arrancar la animación, ordenar una pausa y continuar la animación.La etiqueta del botón alterna entre animar y pausa

    pausa

    El tiempo (en milisegundos) que el programa espera en cada paso de la animación.El valor por defecto es 60.

    Los valores pequeños hacen que la animación sea más rápida y viceversa. En procesadores lentos los valores pequeños no necesariamente producen animaciones rápidas.

    auto

    Determina si la animación comienza automáticamente cuando la escena aparece en la pantalla y cada vez que se pulsa el botón de InicioSi el selector no está activado entonces para que comience es necesario que el desarrollador de la escena incluya algún evento u ofrezca un botón al usuario para que la active.

    repetir

    Determina si la animación se repite indefinidamente o bien se detiene cuando la condición «mientras» deja de ser verdadera.

    inicio

    Cálculos que se realizan al comenzar la animación.Puede incluir varias asignaciones separadas por «;”.

    hacer

    Cálculos que se realizan en cada paso de la animación.Puede incluir varias asignaciones separadas por un salto de línea.

    mientras

    Condición para que la animación continúe.Cuando esta condición deja de ser válida la animación se detiene o, si el selector «repetir» está activado, vuelve a comenzar.

    Los campos inicio, hacer y mientras funcionan igual que en  cualquier algoritmo.

    El siguiente ejemplo muestra una animación que representa una cuerda vibrante blanca con sus primeros armónicos en colores rojo, amarillo, verde, azul y los más altos en violeta. Para distinguir los de color violeta hay que aumentar mucho la amplitud.

    (Puede descargar la escena anterior desde este enlace)
  • Animaciones – Ejercicio

    Descripción del ejercicio

    Realizaremos un ejercicio que nos permitirá comprender cómo se anima una escena. Dicho ejercicio consiste en la construcción de una circunferencia unitaria (circunferencia goniométrica) y sobre ella un punto que se desplazará de acuerdo a un ángulo a que variará de 0 a 2pi Las coordenadas de este punto serán, entonces, (cos(a), sen(a)). Por otra parte, construiremos las funciones seno, coseno, tangente y secante, que serán animadas en función del ángulo a.

    Primera animación. Circunferencia unitaria

    En primer lugar, definiremos el tamaño de la escena en 600×400 píxeles. Para ello, debemos recordar que este cambio se hace pulsando en la opción código.

    animacion2

    Animación. Ahora, seleccionamos la opción animación, en la que incluiremos los valores que se observan en la imagen. Los valores el algoritmo sólo se pueden digitar si hemos activado la casilla de Animación.

    animacion3

    El contenido de la animación tiene la siguiente explicación:

    • Pausa. Tiempo de espera entre un paso y otro de la animación. Por defecto está en 60 milésimas de segundo. Usaremos para este ejercicio un valor de 30.
    • Inicio. Allí colocaremos nuestro ángulo a con un valor inicial de cero (0) radianes. Es posible “inicializar” varios parámetros separándolos por “;”. Por ejemplo: a=0; r=1;…
    • Hacer. Aquí escribimos los cálculos de nuestra animación. En nuestro ejercicio, haremos que el ángulo se incremente en cada paso una centésima. Podríamos practicar con otros incrementos para observar los efectos sobre la animación.
    • Mientras. Aquí escribimos la condición que permite que los pasos de “hacer” se sigan realizando. Es decir, mientras la condición sea verdadera, el ángulo se seguirá incrementando. En nuestro ejercicio la condición es a<2pi.

    Circunferencia goniométrica animada.  En la opción gráficos del editor de configuraciones, añadimos la circunferencia unitaria x2 + y2 = 1, tal como se observa en la imagen.

    animacion4

    Haremos algunas modificaciones al espacio de trabajo, para efectos de una mejor visualización de la escena. Cambiamos la escala a 75 y la ubicación del origen de coordenadas en O.x = -35%.

    animacion5

    Nuevamente, en gráficos,  añadiremos el siguiente punto: (cos(a), sin(a)), con color rojo y tamaño 5… ¡empieza la animación!

    animacion6

    Triángulo trigonométrico animado. Ahora añadimos el siguiente polígono que nos animará el triángulo trigonométrico: (0,0)(cos(a),sin(a))(cos(a),0)(0,0). Observemos que hemos activado el color de relleno (podemos usar el color que deseemos).

    animacion7

    Ahora, guardamos, ejecutamos y observamos esta primera animación.

    Segunda animación. Funciones trigonométricas animadas

    Vamos a animar la función seno añadiendo el siguiente punto (a, sin(a)). Para crear la animación activaremos la opción rastro con el color que queramos. Esta opción permite dejar la huella de los diferentes puntos que se dibujan con (a, sin(a)).

    animacion8

    Como tarea, no queda  incluir un control tipo menú para que muestre las demás funciones y un control tipo botón que pause o reanude la animación.

    Esta sería la escena final

    (Puede descargar la escena desde este enlace)

    Hemos  incluido algo adicional, ¿qué es? Observemos la animación.