• 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)

     

  • Evento

    Los eventos son condiciones booleanas que, cuando se cumplen, pueden realizar una acción. En consecuencia, tienen asociado un identificador, una condición (expresión booleana) y la la acción a realizar. En la siguiente imagen se muestra el panel de configuración de eventos:

    evento

    Los elementos que aparecen son los siguientes.

    • id. Es el identificador del evento.
    • 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. 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.
      • iniciar 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.
    • 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ámetro 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. Hay tres formas de ejecución
      • 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.

      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».

    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.1, 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.1. 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.1 

     

    (Puede descargar la escena anterior desde este enlace)

    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.

     

    (Puede descargar la escena anterior desde este enlace)

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

      

    (Puede descargar la escena anterior desde este enlace)

  • CALCULOS

    CALCULOS  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 cada vez que haya un cambio de un control en la escena, ya sea numérico o gráfico.

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

    calculos

    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.

    El 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 se vuelve al paso 2, esto es se volverá 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 ha programado en CALCULOS el algoritmo de Euclides para obtener el máximo común divisor y se representa gráficamente la justificación de este algoritmo.

    (Puede descargar esta escena desde este enlace)