Sistema Alma

Animação Sistemática de Algoritmos / Programas

Este sistema pretende explorar a importância da animação e da visualização de programas quer a nível científico, quer a nível pedagógico.

Com este projecto pretendemos defender a ideia de que é possível fazer a animação dos algoritmos subjacentes aos programas de uma forma sistemática, isto é, sem depender nem de um programa (ou classe de programas) específico, nem tão pouco de uma linguagem de programação determinada.

Para tal, propomo-nos recorrer a métodos, técnicas e ferramentas tradicionalmente usadas para reconhecer, representar e manipular o significado dos programas, no contexto do desenvolvimento formal e automático de compiladores.

Definições

A animação de um algoritmo é um tipo de visualização dinâmica das principais abstracções expressas pelo algoritmo subjacente a um programa
A importância da animação reside na habilidade de retratar a essência da lógica do programa.
É necessário ver a animação como um processo dinâmico e complexo, caracterizado por uma dimensão temporal, com misturas de mudanças contínuas e mudanças ocasionais que produzem uma evolução concorrente de vários objectos gráficos.

Por sistema de animação entende-se: uma ferramenta que permite construir animações de forma mais ou menos interactiva. Esse sistema deverá permitir a entrada de programas (textuais) e dos valores dos seus parâmetros e deverá produzir como resultado uma simulação visual ou textual do comportamento da sua execução.

Características do sistema ALMA

Genérico – pretende ser usado em programas escritos em diversos paradigmas

Versátil – fácil de adaptar a outras linguagens

Não altera o código fonte – não usa primitivas de desenho, anotações ou tipos de dados especiais

Permite obter vários tipos de visualizações para o mesmo programa – sob o ponto de vista operacional , sob o ponto de vista declarativo, etc.

Permite criar, para cada paradigma, um tipo de  visualização adequada às características que o distinguem dos outros paradigmas.
 

Finalidades

Do ponto de vista da sua utilização/aplicação, os principais objectivos do sistema Alma são:

• ensino da programação através da análise de programas / algoritmos,

• ensino da matemática através da visualização detalhada dos cálculos de um programa,

• análise de documentos, vendo um documento como sendo um programa escrito segundo um DTD

• análise de respostas a problemas, visualizando a solução gerada pelos programadores a serem avaliados.
 
 

Filosofia de funcionamento

Usa uma ASAD (Árvore de Sintaxe Abstracta Decorada) como representação interna e um conjunto de ferramentas (independentes da linguagem) que tiram partido dessa estrutura.
Um Tree Walker Animator efectua uma travessia na árvore (ASAD) e vai criando representações visuais de cada nodo, aglomerando os desenhos de forma a obter no final, um retrato do programa num determinado instante.
Uma sequência de retratos constitui a animação.
 

Implementação do sistema

 



1º A cada texto fonte corresponde uma gramática que deverá ser conhecida do sistema

Front-end – a sua criação tem por base a gramática de atributos subjacente ao programa
É alterado consoante a linguagem do programa
Reconhece  frases e constrói a representação interna (ASAD e a Tabela de Símbolos), disponibilizando nessas estruturas as informações necessárias para criar a animação.

Back-end – é genérico e é utilizado para todos os front-end’s
É independente da linguagem (trabalha sobre a representação interna universal gerada pelo front-end).
A animação é gerada sempre da mesma forma.

Para paradigmas diferentes podem ser geradas visualizações diferentes.
Para um só programa podem ser geradas várias visualizações.



Processo de construção de uma animação
 


 

 



 

 Exemplo


Programa em Pascal
...
read(a);
read(b);
if (a>b) then
a:=a-b
else
write(b/2);
...

Árvore de Sintaxe Abstracta

 

 

 

 

 

 



 

 

 

 

 

 

 

 

 

 

 

 

Visualização pretendida