UAL - Unesa Algorithmic Language é um interpretador
animado que, através da execução e visualização das etapas de um algoritmo,
auxilia o aprendizado do aluno iniciante em Computação.
Com ele, os alunos poderão implementar seus próprios algoritmos utilizando
recursos gráficos, ou seja, a representação lógica desses algoritmos
através da animação, para compreender, de forma rápida e dinâmica, como
as estruturas por eles desenvolvidas se comportam.
Esta linguagem foi desenvolvida durante o Projeto Final do Curso de
Informática da Universidade Estácio de Sá - Campus
Friburgo.
Agradecemos ao mestre Juarez, pela sua paciência e dedicação,
e a Simon Marlow, desenvolvedor do Happy, pelas informações
prestadas.
Os tópicos a seguir esclarecem um pouco mais
sobre a linguagem.
1. Introdução
2. Descrição do Sistema
3. Funcionamento do Sistema
4. Conclusão
5. Referências
1.
Introdução:
Os alunos iniciantes em programação costumam experimentar, na maioria
das vezes, grande dificuldade para compreender a nova forma de raciocínio
que lhes é apresentada. Naturalmente, estamos acostumados a pensar de
forma não estruturada, ou seja, na comunicação cotidiana que habitualmente
utilizamos, não necessitamos aprimorar o raciocínio lógico.
Quando nos deparamos com as linguagens de programação, geralmente através
da construção de algoritmos, temos que aprender a raciocinar de forma
diferente. A grande dificuldade na concepção e no entendimento de algoritmos
é o problema do relacionamento dos aspectos ativos e passivos, ou seja,
como entender as estruturas dinâmicas das possíveis execuções do algoritmo
a partir de sua estrutura estática.
Com o avanço tecnológico, os computadores estão, cada vez mais, fazendo
parte do cotidiano das pessoas e, conseqüentemente, os programas utilizados
tornam-se mais intuitivos. Hoje em dia, utilizamos o computador como
uma ferramenta de ensino, isto é, o próprio computador exerce a função
de transmitir conhecimento. Este tipo de ensino, denominado ensino computadorizado,
permite maior interação entre usuário e computador tendo em vista os
novos recursos audiovisuais, a dinâmica das informações disponibilizadas
e o fato de permitir ao usuário escolher o enfoque desejado ao seu aprendizado.
O propósito desta linguagem é permitir ao aluno iniciante em
programação utilizar um instrumento capaz de auxiliá-lo visualmente
na execução de seus próprios algoritmos. A linguagem UAL vem de encontro
a esta necessidade, integrando os aspectos dinâmicos e estáticos em
uma só ferramenta, permitindo ao aluno escrever seus programas em Portugol
(pseudo-linguagem de programação), executando e visualizando, através
de gráficos animados, o comportamento ativo do seu algoritmo. O aluno
poderá então interagir com todo o processo de execução do programa,
desenvolvendo naturalmente sua lógica em programação.
Devido a sua interface simples e atrativa, esperamos que esta ferramenta
tenha importância para assegurar o interesse dos alunos no desenvolvimento
de programas, visto que, atualmente, é observado certo desprendimento
de determinados estudantes no aprendizado de uma linguagem de programação,
devido à inexistência de ferramentas de apoio ou pelo fato de seu primeiro
contato ser diretamente com uma linguagem de programação, como por exemplo,
o Pascal, utilizado para a implementação dos algoritmos.
A linguagem UAL é uma ferramenta de ensino computadorizado trazendo
todos os benefícios abordados anteriormente, inovando a metodologia
de ensino tradicional adotada, tendo como principal objetivo construir
uma base sólida de conhecimento lógico, que será importante para o crescimento
progressivo do aluno, fornecendo mais condições para agregar valor a
sua carreira profissional.
2. Descrição do Sistema:
O objetivo deste projeto foi facilitar a introdução dos conceitos de
programação, otimizando a metodologia de ensino tradicional e, conseqüentemente,
auxiliando o processo de aprendizagem do aluno.
Para isso, foi desenvolvido um sistema que consiste em uma nova linguagem
de programação, totalmente em Português, tendo por base o Portugol para
descrição de algoritmos.
Além das facilidades provenientes dessa nova linguagem, também foram
utilizados recursos gráficos, de forma a permitir que o aluno pudesse
visualizar, através de uma seqüência animada, as fases da execução do
seu algoritmo. Essa visualização encontra-se sob a forma de fluxogramas
gerados a partir do programa fonte, que irá animar cada instrução do
programa, permitindo ao aluno a compreensão visual do mesmo, que antes
só poderia ser observado sob o aspecto estático.
3. Funcionamento do Sistema:
Para o desenvolvimento do interpretador, inicialmente, definimos uma
gramática, que pode ser entendida como a descrição formal da sintaxe
de linguagens de programação.
A gramática utilizada é uma adaptação das linguagens de programação
Pascal e C, com vocabulário em Português, da classe LALR(1) (Lookahead
Left-to-Right Rightmost Derivation).
O passo seguinte foi a construção de uma árvore gramatical, também
chamada de árvore sintática, que possui as seguintes propriedades: a
raiz é o símbolo de partida, cada folha é rotulada por um terminal (símbolo
básico a partir do qual as cadeias são formadas) e cada nó interior
é rotulado por um não-terminal (variável sintática que denota uma cadeia
de caracteres). Cada nó da árvore representa uma operação e o filho
de um nó representa o argumento da operação.
Esta estrutura foi implementada utilizando-se a linguagem de programação
Haskell.
Com a estrutura gramatical definida, foram desenvolvidos os analisadores
léxico, sintático e semântico para a interpretação e averiguação do
programa fonte, gerado pelo usuário.
Para a integração com os módulos gráficos, foi utilizado o aplicativo
daVinci, que permite uma comunicação com a linguagem utilizada, de modo
a inserir os próprios comandos do daVinci juntamente com a avaliação
do programa fonte, permitindo assim, sua animação.
Para maior clareza, manutenibilidade e flexibilidade do sistema, o
sistema encontra-se subdividido em módulos.
Através da compilação dos módulos do sistema, foram gerados dois arquivos
executáveis. O primeiro permite a simples execução do algoritmo e o
segundo, além da execução, exibe um fluxograma animado.
É facultativo ao usuário a utilização de um editor desenvolvido especificamente
para essa linguagem, o qual permite a edição e execução do programa
por ele desenvolvido, contendo inclusive, o manual dessa linguagem.
Os aplicativos da linguagem UAL foram disponibilizados para a plataforma
"Linux". Porém a linguagem foi desenvolvida segundo
o conceito de portabilidade, ou seja, tanto o interpretador como o editor
podem ser compilados para outras plataformas, bastando para isso, utilizar
os respectivos Haskell e Tcl/Tk, sendo que o daVinci (utilizado no módulo
gráfico) no momento não está disponível
para a plataforma Windows.
4. Conclusão:
Esta linguagem representa uma nova abordagem para o ensino computadorizado,
evidenciando todos os benefícios de uma linguagem de programação em
Português que disponibiliza para o aluno a representação gráfica e animada
de seus algoritmos.
Nosso objetivo foi inovar a metodologia de ensino tradicional adotada,
visando a formação de uma base sólida de conhecimento lógico, importante
para o crescimento progressivo do aluno, fornecendo mais condições para
agregar valor a sua carreira profissional.
Com o intuito de difundir este novo sistema para a comunidade acadêmica,
informamos que a linguagem UAL encontra-se disponibilizada gratuitamente,
levando-se em consideração o leftright, ou seja, o sistema possui código
aberto, permitindo aos interessados o desenvolvimento de novas funcionalidades,
desde que mantida a filosofia inicial do mesmo e mencionadas as autorias.
5. Referências:
- Modern Compiler Implementation in ML Andrew W. Appel Cambridge
University, 1998
- Compiladores - Princípios, técnicas e ferramentas. Alfred V.
Aho, Ravi Sethi e Jeffrey D.Ullman Guanabara Koogan, 1995
- Técnicas Computacionais Juarez Muylaert Filho Notas de Aula,
IPRJ/UERJ, 1997
- A construção de um compilador Valdemar W. Setzer, Inês S. Homen
de Melo Editora Campus, 1987
- TCL - Tool Command Language e TK - Tool Kit de Interface para
TCL Rogério Dei Santi Notas de Aula, ICMSC/USP - São Carlos
- Tutorial de TCL/TK Jário de Araujo Universidad de Oviedo, Espanha,
1998 http://tritium.fis.unb.br/jario
- Anais do IX Congresso da SBC Uberlândia - MG, 1989 Fluxo - uma
ferramenta para testes de programas, Avelino F. Zorzo
- DaVinci V2.1 Online Documentation Michael Fröhlich and Mattias
Werner Universität Bremen, Germany, 1998
- The Glasgow Haskell Compiler User's Guide, Version 4.06 University
of Glasgow, 1999
- A Gentle Introduction to Haskell 98 Paul Hudak 1, John Peterson1,
Joseph H. Fasel2 Yale University1 and University of California2,
1999
- Report on the Programming Language - Haskell 98 Simon P. Jones,
John Hughes, Kevin Hammond, et all. Microsoft Research, Cambridge,
Chalmers University of Technology, University of St. Andrews, 1999
- Happy User Guide Simon Marlon and Andy Gill, 1999
- Hugs 98 - A functional programming system based on Haskell 98
User Manual Mark P. Jones and John C. Peterson Oregon Graduate Institute
and Yale University, 1999
- TclHaskell - User Manual Meurig Sage University of Glasgow, Scotland,
1999