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.
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.
1º A cada texto
fonte corresponde uma gramática que deverá ser conhecida do sistema
2º 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.
3º 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
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