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

  • Cómo editar escenas con el editor básico de líneas

    Hay que completar este artículo

    En la ventana del editor podemos distinguir tres zonas:

    • La superior que cuenta con cinco botones:
      • Agregar
      • Remover
      • Duplicar
      • Subir
      • Bajar
    • La inferior con dos botones:
      • Aceptar que bien confirma una acción realizada (agregar, duplicar, remover) o bien confirma los cambios realizados, cierra el editor y se reflejan estos en la escena
      • Cancelar que omite una acción o cambio efectuado.
    • La central que distribuye y presenta el código de la escena por líneas alternando dos tonos de color para clarificar cada parámetro de la escena. Dentro de cada línea en letras blancas con fondo negro se sitúan los campos modificables por el usuario. Al seleccionar una línea, se destaca con un fondo rojo, y se permite la edición.
  • Referencia, localización y ubicación de los intérpretes

    Para que una escena se pueda interpretar ha de referenciarse y ubicar el intérprete que se desea usar. El gestor de escenas incluye el código necesario de acuerdo a la opción seleccionada en el submenú «Opciones», pero puede modificarse si el usuario lo desea.

    1. En el intérprete Java la referencia va descrita en el parámetro de la escena denominado «jnlp_href» cuya sintaxis es:

    <param name=»jnlp_href» value=»https://arquimedes.matem.unam.mx/Descartes5/lib/Descartes5.jnlp«>

    En el ejemplo anterior se accede a una dirección de Internet para descargar el intérprete. En este caso se ha reflejado la correspondiente al directorio de distribución ubicado en el servidor arquimedes de la UNAM en México y se trata de una escena de Descartes5, si fuera un discurso habría que poner

     https://arquimedes.matem.unam.mx/Descartes5/lib/Arquimedes.jnlp 

    y para una escena de la versión 2 sería

     https://arquimedes.matem.unam.mx/Descartes5/lib/Descartes2.jnlp.

    Para una referencia local relativa a la ubicación de la página html que contiene a la escena basta cambiar el parámetro value. Por ejemplo:

    <param name=»jnlp_href» value=»./lib/Descartes5.jnlp«>

    indica que el archivo Descartes5.jnlp está en un directorio denominado lib al nivel de la página de llamada (en este mismo directorio habrá de ubicarse el archivo Descartes5.jar que es referenciado por el anterior). Análoga situación ha de contemplarse, cuando sea necesario, para discursos y escenas de la versión 2.

    2. En el intérprete DescartesJS es necesario incluir la llamada al archivo descartes-min.js  que contiene el código javascript del intérprete. Para ello, en cualquier posición de una página html y previamente al código de la primera escena a interpretar se incluirá:

    <script type=’text/javascript’ src=’https://arquimedes.matem.unam.mx/Descartes5/lib/descartes-min.js’></script>

    En este caso el intérprete se localizaría y descargaría desde el servidor arquímedes de la UNAM. Si se desea que la localización sea a nivel local podría ponerse:

    <script type=’text/javascript’ src=‘./lib/descartes-min.js‘></script>

    y se buscará en el directorio denominado lib ubicado en el árbol de directorios al mismo nivel donde está la página que incluye esta llamada. Obviamente ha de existir ese directorio y en él ha de estar el archivo descartes-min.js.

    ____________________________________________________________________

    Independiente de la modalidad del intérprete (Java o javascript) en:

     https://arquimedes.matem.unam.mx/Descartes5/lib/

    estará siempre la última versión del intérprete. Por tanto, si se utiliza esta referencia siempre se interpretará la escena con la última versión existente.

    Si se utiliza una referencia a un servidor propio obviamente se estará interpretando con la versión que se aloje ahí y que no tiene por qué coincidir con la última existente.

    Si se aloja en una librería local ./lib/descartes-min.js se ejecutará con la versión local ahí referenciada.

    Cada opción tiene sus ventajas y es decisión del usuario desarrollador optar por una u otra. Si se utiliza una versión local se tiene garantía que una escena que cuando fue desarrollada era bien interpretada por el intérprete ahí alojado, seguirá interpretándose siempre igual, es decir, no surgirán posibles incompatibilidades hacia atrás como consecuencia de nuevas versiones del intérprete. Si se utiliza un servidor propio se mantendrían todas las escenas que apuntan a él en la misma versión y si se usa el servidor arquimedes se accede siempre a la última que puede incorporar mejoras.

  • Editores de configuración de Descartes

    El diseño, escritura o modificación del código de una escena puede efectuarse de diferentes maneras:

    1. Si se conoce la sintaxis de los parámetros correspondientes a los objetos cartesianos que se quieren incorporar basta usar un editor de texto plano, es decir, que éste no incorpore códigos de formato ajenos a los caracteres a registrar, o bien usar un editor de páginas html en la modalidad de edición de código. Se incluirán o modificarán los parámetros deseados y el código de la escena resultante habrá de incluirse o estará incluido en el cuerpo de una página html, es decir, entre las etiquetas <body> y </body>. También tendrá que incorporarse la referencia para localizar el intérprete de Descartes que se desea usar.

    Para las escenas a interpretar con Java el código de las mismas estará comprendido entre la etiqueta <applet> y </applet> y para el intérprete DescartesJS las etiquetas son <ajs> y </ajs>.

    Página html con una escena

    Página html con una escena y esquema conceptual

    2. Se puede partir de una escena y usar el editor de configuración que está integrado en el propio intérprete,  a él se accede posicionando el ratón sobre la escena y pulsando el botón auxiliar del mismo (el derecho para configuraciones diestras) se mostrará una ventana que contiene un botón etiquetado como config (ver acceso al código de una escena). El editor integrado es:

    acceso al código

    Acceso al código desde el editor de configuración integrado en el intérprete de Descartes Java

    Los cambios que se realicen a la escena pueden aplicarse y observarse en el navegador, pero no hay posibilidad de grabación directa de ellos, es decir si se cierra o recarga la página se perderán. Para poder guardar los cambios es necesario copiar el código de la escena (en el editor Java hay que pulsar el botón código y en el de javascript el código es sobre el se está trabajando directamente) y utilizar un editor de textos, como se ha indicado en la opción anterior, para pegarlo y guardarlo en un archivo html.

    3. Utilizar el gestor de escenas desarrollado en Java.

    4. Optar por el  editor interactivo desarrollado en javascript.

  • Intérpretes de Descartes

    Conceptual y prácticamente un intérprete de Descartes lo que hace es leer el código de una escena de Descartes y lo transforma en otro código que es el que efectúa la representación y aporta la interactividad de los objetos cartesianos en el software y hardware del usuario.

    Descartes cuenta con dos intérpretes del código de una escena.

    • Uno en Java al que denominamos Descartes y que se distribuye en un archivo de extensión jar que según la versión o utilidades que incluye tiene diferente nombre (ver las librerías de Descartes en este enlace).
      • Si este intérprete no se localiza el navegador informará de que no se han encontrado las clases Java referenciadas.
      • Desde la versión 7.13 de Java, Oracle como desarrollador de este producto ha introducido filtros de seguridad que pueden bloquear las escenas en Windows y en Mac. En Linux con Open Java esto no acontece.
      • Descartes en su versión 5 es un applet firmado y con certificación, por tanto, las escenas desarrolladas con esta versión no deberían bloquearse, pero en la web pueden encontrarse miles de escenas que están en versiones anteriores.
      • Por limitaciones de Android e iOS, Java no es ejecutable en tabletas y smartphones, por ello el intérprete de Descartes en Java no permite ver las escenas de Descartes en esos dispositivos.
      • El intérprete y el software del editor de configuración de Descartes en Java es software libre, está bajo la licencia EUPL v.1.1. El código fuente se encuentra en : https://arquimedes.matem.unam.mx/Descartes5/
    • Uno en javascript al que denominamos DescartesJS y que se distribuye en un archivo nombrado descartes-min.js que puede enlazarse o descargarse desde el directorio de librerías de Descartes.  En el nombre de ese archivo el prefijo descartes es obvio, la extensión es js porque es código en javascript,  y el sufijo min es de minimizado, es decir que el código previamente a la distribución se ha compactado quitando espacios y denominaciones más extensas que son necesarias en el desarrollo, pero no en la ejecución.
      • Si éste intérprete no es localizado el navegador omitirá ese código, no se observará la escena y no habrá ningún rastro de esa omisión en lo que muestra el navegador.
      • El intérprete DescartesJS, software desarrollado en JavaScript y HTML5, está bajo licencia LGPL. El código fuente se encuentra en https://github.com/jlongi/DescartesJS.
      • DescartesJS lee el código de una escena de Descartes y lo transforma en un código javascript que es ejecutable sobre cualquier navegador compatible HTML5. HTML5 que es el actual estándar del lenguaje de marcas para páginas web y al que progresivamente van adaptándose todos los navegadores en todos los sistemas operativos, pero hay que ser conscientes que cada navegador tiene diferente nivel de estandarización y que pueden encontrarse comportamientos distintos dependientes no sólo del navegador que se esté usando, sino también de la versión del mismo en cada sistema operativo, de la versión de éste e incluso del fabricante que lo distribuye. Ello ocurre especialmente en las tabletas y smartphones. ¡Ciertamente es un handicap usual en la informática!, pero es de esperar que vayan confluyendo todos hacia lo establecido.
      • La compatibilidad HTML5 permite que las escenas se vean en cualquier ordenador, tableta y smartphone  independientemente del sistema operativo que porte.

    A priori, en lo que atañe a la eficiencia, ambos intérpretes se ubican en igual estatus inicial. Experimentalmente puede comprobarse que la carga de una escena con el intérprete en javascript suele manifestarse como más rápida que el intérprete en Java. Ello es consecuencia de que Java opera con un JIT (just in time compiler) que en principio retrasa un poco el inicio de la ejecución para conseguir que ésta sea después más rápida, pero nada impide a javascript funcionar de la misma manera, y seguramente irá mejorando.

    La ventaja mayor de DescarteJS se encuentra en que todo el proceso de interpretación e interacción con la escena se realiza exclusivamente en el navegador sin utilizar ningún software adicional. Adicionalmente, es bien conocida la dificultad que a los usuarios siempre le ha supuesto la instalación de Java y los problemas de compatibilidad con los complementos en los navegadores, si bien últimamente los sistemas operativos de ordenadores suelen incorporarlo y esa dificultad ha ido disminuyendo, pero las continuas actualizaciones en las que se ha ido embarcando Oracle (actual desarrollador de Java) han generado problemas adicionales en los applet Java y en Windows y Mac las escenas que usan la versión instalada (plugin de Descartes) a partir de la versión 7.13 de Java quedan bloqueadas y en la nueva versión de Descartes5 aún sigue ocasionando incompatibilidades a pesar de ser un applet firmado y certificado. Así pues, independientemente de reconocer la innovación que Java introdujo en los años 90 del pasado siglo y que a Descartes ha aportado muchísimo, en RED Descartes centramos nuestra labor en el intérprete DescartesJS.

    También hay que señalar que no hay una equivalencia exacta entre el tratamiento a bajo nivel que hace Java y el que hace javascript, consecuentemente determinados objetos cartesianos no se visualizan de la misma forma si se ejecutan en el intérprete Descartes Java o con DescartesJS. Por ello, aunque el equipo de desarrollo de Descartes ha tratado de minimizar estas diferencias no ha podido conseguirse la deseada equivalencia total. Eso es especialmente negativo para escenas que estaban ya desarrolladas y que ahora quieran interpretarse con DescartesJS, ya que ello requerirá una revisión y adaptación individual de cada escena, pero obviamente no lo es para escenas que se desarrollen en el nuevo entorno, más si éstas se desarrollan usando el editor en javascript.

    El intérprete de Descartes Java incorpora el editor de configuración estándar que cuenta con paneles de edición interactiva, sin embargo DescartesJS sólo incorpora un editor de líneas y por tanto, en este caso, si se desea esa edición interactiva hay que usar el gestor de escenas o el editor en javascript citado. El acceso a los editores integrados se realiza ubicando el ratón sobre la escena y pulsando el botón auxiliar del ratón (botón derecho, para ratones configurados como diestros).