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