• Bloqueo de escenas en Java

    Aproximadamente en en enero de 2013 Oracle, como desarrollador de Java, introdujo a partir de la versión 7.13 estrictos filtros de seguridad que procedieron al bloqueo de las escenas. Esto acontece en sistemas Windows y Mac. También ocurre en Linux salvo que se use Open Java. Apoyándonos en esto último le planteamos una alternativa de trabajo basada en una máquina virtual con la que podrá trabajar con las escenas construidas con Java sin problema. Aquí tiene un enlace.

    mv

    El bloqueo de las escenas aconteció en un momento en el que en Descartes ya teníamos bastante avanzado el intérprete DescartesJS por lo que lo que se hizo fue acelerar su desarrollo. No obstante, también se introdujo la versión 5 de Descartes en Java utilizando la firma del applet, y la certificación del mismo por una empresa externa (Symantec), mediante la que se introduce una garantía al usuario y se salva dicho bloqueo.

     

  • Recomendaciones, indicaciones y elementos prefabricados

    En este artículo incluimos algunas recomendaciones y trucos interesantes para el desarrollo de escenas de Descartes. Pulse en la siguiente imagen para acceder o bien puede descargar este contenido desde este enlace.

    Recomendaciones

     

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

  • Embeber como iframe en una escena o discurso

    Como se ha descrito en otros artículos toda escena es un código html que va embebido en una página de ese tipo. Por otra parte, las escenas pueden incluir espacios del tipo HTMLIframe los cuales permiten mostrar el contenido de un archivo referenciado en ellos. De esta forma podemos generar un encadenamiento en el que una escena muestra el contenido de un archivo que contiene una escena y por tanto a ella.

    En la escena siguiente podemos observar al pulsar el botón «miscelánea» como se muestra un fichero que contiene una escena.

    Obviamente si lo único que incluye ese archivo es el código de una escena tenemos inscrustada ésta en la primera

  • Embeber como iframe en entorno html

    En el servidor de contenidos de RED Descartes cada material tiene un artículo específico en el que se hace una descripción y se reflejan sus características específicas y catalogación. En él también se incluye un campo en el que se recoge el código necesario para embeber como «iframe» en una página html o en cualquier lugar en el que sea admisible el código html (blogs, wikis, Moodle).

    Código para embeber como iframe

    Código para embeber como iframe

    Basta copiar ese código y pegarlo en el editor html o de texto del soporte en el que se quiere ubicar y se genera un marco en el que se muestra el enlace ahí referenciado. Es lo que observa a continuación:

    El código tiene la siguiente estructura:

    <iframe src=»https://proyectodescartes.org/ASIPISA/materiales_didacticos/caramelos-JS/caramelos.html» width=»700» height=»900«></iframe>

    donde los literales reflejados en rojo son los específicos de cada material. Son la dirección web del recurso y  el ancho y el alto del marco que lo acoge.

    Obviamente este código puede usarse para cualquier otro recurso sin más que cambiar esos valores.