• Ciclos o bucles anidados

    La anidación de ciclos o bucles es necesaria para hacer determinados procesamientos un poco más complejos que los que realiza un ciclo simple. En Descartes, el ciclo simple es del tipo DO-WHILE (véase http://descartesjs.org/documentacion/?cat=37).

    No obstante, existen otras estructuras para definir un ciclo, entre ellas, las de tipo FOR/NEXT. En Javascript, un ciclo anidado tiene una estructura como la que sigue:

    for (i=0;i<10;i++){ 

        for (j=0;j<10;j++) { 

        document.write(i + «-» + j) 

        } 

    }

    La ejecución de este ejemplo funcionará de la siguiente manera. Para empezar se inicializa el primer ciclo, con lo que la variable i valdrá cero,  a continuación se inicializa el segundo ciclo, con lo que la variable j valdrá también cero. En cada iteración se imprime el valor de la variable i, un guión («-«) y el valor de la variable j, como las dos variables valen cero, se imprimirá el texto «0-0» en la página web.  Debido al flujo del programa, el ciclo que está anidado es el que más veces se ejecuta; por ejemplo, cuando la variable i toma el valor de uno, se ejecuta el ciclo interno con j desde 0 hasta 10, obteniéndose la siguiente impresión en la web:

    1-0
    1-1
    1-2
    1-3
    1-4
    1-5
    1-6
    1-7
    1-8
    1-9

    Para cada iteración del ciclo externo se ejecutarán las 10 iteraciones del ciclo interno o anidado.

    Siguiendo este estructura, veamos dos ejemplos con Descartes:

    Ejemplo 1. Cálculo de los factoriales de los primeros nueve números naturales

    El código que resuelve el problema es:

    for ( i=1; i < 9; i++)  {

                    Factorial[i]=1

                         for (j=1; j< i; j++)  {

                               Factorial[i]=Factorial[i]*j

                        }

    }

    En el editor de Descartes haríamos lo siguiente:

    En el algoritmo de INICIO, invocamos la función factorial()

    ciclo2

    Definimos el vector Factorial, que almacenará los números factoriales:

    ciclo3

    Creamos el ciclo externo a través de la función Factorial():

    ciclo4

    El ciclo externo invoca al ciclo interno, a través de la función Calcula(). Creamos, entonces, este ciclo así:

    ciclo5

    Luego, con una familia de textos, imprimimos el resultado:

    ciclo6

    Finalmente, ejecutamos y obtenemos:

    ciclo7

    Ejemplo 2. Algoritmo de ordenamiento y la Mediana

    Joel Espinosa Longi propone cuatro tipos de algoritmos de ordenamiento (véase http://proyectodescartes.org/Un_100/materiales_didacticos/_Un_081_AlgoritmosDeOrdenamiento/index.html). Para este ejemplo, hemos escogido el tipo burbuja.

    Este algoritmo es útil para algunas aplicaciones; por ejemplo, Si deseamos calcular la mediana de N números dados, almacenados en el vector A, el algoritmo propuesto por Joel, sería:

    for (i=0; i<N; i++) {

                    for (j = 0; j<N-1-i; j++) {

                                   if (A[j] > A[j+1]) {

                                                   intercambia(A[j], A[j+1])

                                   }

                    }

    }

    En el editor Descartes lo haríamos así:

    En el algoritmo de INICIO, hemos definido el valor de N e invocado tres funciones, que explicamos a continuación:

    eje1

    La función datos() se encarga de generar 20 números aleatorios (previamente, definimos el vector A con un tamaño de 21):

    eje2

    La función ordena() genera el ciclo externo para la variable i, en el que se invoca el ciclo interno compara():

    eje3

    La función compara() se encarga de verificar la condición del algoritmo tipo burbuja, que de cumplirse, realiza el intercambio:

    eje4

    Finalmente, creamos una familia de textos que nos muestra los resultados, uno de ellos es:

    eje5

    Escena de aplicación. A continuación, se presenta una escena interactiva que utiliza el algoritmo anterior:

    (Puede descargar esta escena desde este enlace)

  • Algoritmos – Ejemplos de aplicación

    En la siguiente presentación de diapositivas, podrás observar dos ejemplos de aplicación de algoritmos. El primer ejemplo es un sumatorio, que incluye un escena interactiva y el código del algoritmo. El segundo ejemplo es una aplicación para el Cálculo Integral que incluye una escena interactiva para calcular la integral definida, en la cual puedes modificar algunos valores como los límites de integración e incluso la función.

    Haz clic en la flecha de la esquina inferior derecha para pasar a la siguiente diapositiva.

    (Puede descargar esta presentación desde este enlace)