1 Departamento de Visualización y Documentación Electrónica (VIDO)
Prototipo de visualización de
técnicas de diseño de algoritmos
Antonio Pérez Carrasco
Prototipo de visualización de técnicas de diseño de algoritmos - Antonio Pérez Carrasco
0. Índice
• 1. ¿Qué es?
• 2. Objetivos
• 3. Casos de uso
• 4. Arquitectura y funcionamiento
• 5. Ejemplo de procesado
• 6. Demostración
3 Departamento de Visualización y Documentación Electrónica (VIDO)
1. ¿Qué es?
Programa .java
Método Parámetros
Opciones Formato
Prototipo de visualización de técnicas de diseño de algoritmos - Antonio Pérez Carrasco
1. ¿Qué es?
• Visualiza algoritmos en función de la técnica de diseño
– Backtracking
– Divide y vencerás
– Programación dinámica
– Algoritmos voraces
5 Departamento de Visualización y Documentación Electrónica (VIDO)
2. Objetivos
• Reducir esfuerzo de generación de ejemplos para profesores
• Facilitar la comprensión de los algoritmos a los estudiantes:
mediante
animaciones cambios en configuración
dónde
en clase en casa
Prototipo de visualización de técnicas de diseño de algoritmos - Antonio Pérez Carrasco
3. Casos de uso
Ver código Generar
visualización
Cargar visualización
Guardar visualización
Configurar visualización
Inicio de visualización
Atrás en visualización
Adelante en visualización Final de
visualización Activar
animación Detener
animación Visualización
múltiple
7 Departamento de Visualización y Documentación Electrónica (VIDO)
4. Arquitectura y funcionamiento
Visualizador FactoriaVentana
Ventana
VentanaArbol VentanaInducción
FactoríaCelda
Celda Traza
RegistroActivacion
Estado CeldaNodo CeldaFlecha
Factoría para creación de ventanas
Representación (común) Modelo (datos)
PanelVentana
Prototipo de visualización de técnicas de diseño de algoritmos - Antonio Pérez Carrasco
4. Arquitectura y funcionamiento
Traza
Código Java orig.
Repr. XML código or.
Repr. XML código tr.
Código Java tr.
Aplicación
Gestor procesado
Parser Java-XML
Transformador ad-hoc
Generador Java
Árbol DOM (memoria)
9 Departamento de Visualización y Documentación Electrónica (VIDO)
5. Ejemplo de procesado
• Generación de ficheros y procesado
.java
.xml
.class
Árbol DOM (memoria)
.java .class
La aplicación solicita método y valores para los parámetros. Ejecutamos y Visualizamos.
Prototipo de visualización de técnicas de diseño de algoritmos - Antonio Pérez Carrasco
5. Ejemplo de procesado
• Clase java original
class Fibbonaci {
public static int fibbonaci (int n) {
int resultado = 0;
if (n==1)
resultado = 1;
else if (n==2) resultado = 1;
else
resultado = fibbonaci(n-1)+fibbonaci(n-2);
return resultado;
} }
11 Departamento de Visualización y Documentación Electrónica (VIDO)
5. Ejemplo de procesado
• Clase java generada
class Fibbonaci {
public static int fibbonaci (int n) {
Object pppppp01[] = new Object[1];
pppppp01[0]=n;
Traza.singleton().anadirEntrada(new Estado(pppppp01));
int resultado = 0;
if (n==1)
resultado = 1;
else if (n==2) resultado = 1;
else
resultado = fibbonaci(n-1)+fibbonaci(n-2);
int zzzzzz01 = resultado;
Object rrrrrr01[] = new Object[1];
rrrrrr01[0]=zzzzzz01;
Traza.singleton().anadirSalida(new Estado(rrrrrr01));
return zzzzzz01;
} }
Prototipo de visualización de técnicas de diseño de algoritmos - Antonio Pérez Carrasco
5. Ejemplo de procesado
• Representación XML
<java-class-file>
<class name="Fibbonaci" visibility="protected">
<method name="fibbonaci" visibility="public" static="true">
<type primitive="true" name="int"/>
<formal-arguments>
<formal-argument name="n">
<type primitive="true" name="int"/>
</formal-argument>
</formal-arguments>
<block>
<local-variable name="resultado">
<type primitive="true" name="int"/>
<literal-number kind="int" value="0"/>
</local-variable>
<if>
<test>
<binary-expr op="==">
<var-ref name="n"/>
<literal-number kind="int" value="1"/>
</binary-expr>
</test>
<true-case>
...
13 Departamento de Visualización y Documentación Electrónica (VIDO)