implementação dos módulos simuladores para ... - INF-Unioeste
implementação dos módulos simuladores para ... - INF-Unioeste
implementação dos módulos simuladores para ... - INF-Unioeste
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
PIRAMIDE – IMPLEMENTAÇÃO DOS MÓDULOS SIMULADORES PARA<br />
AUTÔMATO DE PILHA E MÁQUINA DE TURING PADRÃO UTILIZANDO<br />
PROGRAMAÇÃO EM LÓGICA<br />
Evaristo Wychoski Benfatti (PICV/UNIOESTE/PRPPG), Ana Paula Fredrich<br />
(UNIOESTE), Josué Pereira de Castro (UNIOESTE), Adriana Postal<br />
(Orientadora), e-mail: apostal@yahoo.com.br.<br />
Universidade Estadual do Oeste do Paraná/ Curso de Bacharelado em<br />
Informática - Cascavel – PR.<br />
Palavras-chave: Simulador, Autômato de Pilha, Máquina de Turing.<br />
Resumo:<br />
Neste trabalho apresentamos a segunda versão do Sistema PIRAMIDE –<br />
Programa Interpretador e Resolvedor de Autômato e MáquInas de esta<strong>dos</strong><br />
Finitos [1]. O sistema tem por objetivo ser uma ferramenta didática <strong>para</strong><br />
auxiliar disciplinas como Teoria da Computação e Linguagens Formais e<br />
Autômatos. Nesta versão acrescentamos dois novos Simuladores, o<br />
Simulador de Máquina de Turing Padrão (MT) e o Simulador de Autômato de<br />
Pilha (AP).<br />
Introdução<br />
O PIRAMIDE [1] foi desenvolvido em Java [2] juntamente com Prolog [3], e<br />
em sua primeira versão contava com o Simulador e o Resolvedor de<br />
Autômatos Finitos Determinísticos (AFDs) e Não-Determinísticos (AFNs).<br />
Nesta versão acrescentamos dois novos Simuladores, o Simulador de<br />
Autômato de Pilha (AP), <strong>para</strong> uma e <strong>para</strong> duas pilhas, e o Simulador de<br />
Máquina de Turing Padrão (MT), pois ambos englobam o reconhecimento<br />
mais amplo de linguagens formais.<br />
Materiais e Méto<strong>dos</strong><br />
A representação <strong>dos</strong> dois novos <strong>simuladores</strong> segue o formalismo<br />
apresentado em SudKamp [4]. Como o simulador <strong>para</strong> AP deve suportar<br />
tanto APs de uma pilha quanto APs de duas pilhas (A2P), suas transições<br />
são definidas da seguinte forma: SL,Pop0/Push0;Pop1/Push1, onde:<br />
− SL é o símbolo lido da string;<br />
Anais do XVII EAIC – 19 a 22 de Novembro de 2008 – ISSN:
−<br />
−<br />
−<br />
−<br />
Pop0 é o símbolo desempilhado da primeira pilha;<br />
Push0 é o símbolo empilhado na primeira pilha;<br />
Pop1 é o símbolo desempilhado da segunda pilha; e<br />
Push1 o símbolo empilhado na segunda pilha.<br />
A escolha do número de pilhas é realizada na representação gráfica.<br />
Caso o usuário decida pelo autômato de uma pilha, o sistema<br />
automaticamente completará a transição na execução, seguindo o<br />
formalismo acima.<br />
Para o simulador de MT, as transições são representadas da<br />
seguinte forma: SL/SE,Dir, onde:<br />
− SL é o símbolo lido;<br />
− SE o símbolo escrito; e<br />
− Dir a direção do cabeçote.<br />
Além da inclusão <strong>dos</strong> dois novos <strong>simuladores</strong>, o motor de inferência<br />
Prolog [3] do PIRAMIDE [1] foi modificado <strong>para</strong> o tuProlog, uma API Java<br />
livre <strong>para</strong> simulação de Prolog, <strong>para</strong> possibilitar que o mesmo executasse<br />
independente de plataforma e pudesse também ser livremente distribuído.<br />
Resulta<strong>dos</strong> e Discussão<br />
Na utilização do sistema, o usuário deve primeiramente escolher o simulador<br />
desejado, representar graficamente o AP ou a MT, utilizando-se da interface<br />
gráfica do sistema que oferece as opções <strong>para</strong> inserção de esta<strong>dos</strong> e<br />
transições, e então inserir a string a ser testada. A interface gráfica ainda<br />
permite que o AP ou a MT possa ser manipulada, excluindo esta<strong>dos</strong> e/ou<br />
transições, modificando os esta<strong>dos</strong> (tornando-os finais, por exemplo), entre<br />
outras opções disponíveis.<br />
Na figura 1, demonstramos o simulador de Autômato de Pilha<br />
utilizando uma pilha, que reconhece a linguagem L 1 = {a n b n | n >= 0}.<br />
Na figura 2, temos o simulador de Autômato de Pilha utilizando duas<br />
pilhas, que reconhece a linguagem L 2 = {w | w possui o mesmo<br />
número de a's e b's}. A figura 3 demonstra o simulador de Máquina de<br />
Turing que também reconhece L 1 .<br />
Anais do XVII EAIC – 19 a 22 de Novembro de 2008 – ISSN:
Figura 1 – Exemplo de utilização do Simulador de Autômato de Pilha – 1 pilha<br />
Figura 2 – Exemplo de utilização do Simulador de Autômato de Pilha – 2 pilhas<br />
Figura 3 – Exemplo de utilização do Simulador de Máquina de Turing.<br />
Anais do XVII EAIC – 19 a 22 de Novembro de 2008 – ISSN:
Para testar os <strong>simuladores</strong>, foram realiza<strong>dos</strong> baterias de testes com<br />
diferentes linguagens, em máquinas com configurações diferentes, e em<br />
Sistemas Operacionais Linux e Windows. Em to<strong>dos</strong> os testes, os<br />
<strong>simuladores</strong> reconheceram as linguagens projetadas. Nos testes com<br />
Sistemas Operacionais diferentes, verificou-se que não há necessidade de<br />
instalação de componentes extras, ou seja, os <strong>simuladores</strong> funcionam como<br />
pretendido, independente da plataforma.<br />
Conclusões<br />
Apresentamos aqui o desenvolvimento de uma ferramenta educacional<br />
criada com a finalidade de auxiliar no processo ensino-aprendizagem da<br />
disciplina de Teoria da Computação, a qual permite aos alunos meios<br />
interativos <strong>para</strong> a criação e simulação de autômatos. Tal ferramenta é capaz<br />
de simular os principais modelos de máquinas de esta<strong>dos</strong> finitos: autômatos<br />
finitos determinísticos e não-determinísticos, autômatos de pilha (com até<br />
duas pilhas) e Máquinas de Turing Padrão.<br />
Após a <strong>implementação</strong> <strong>dos</strong> <strong>módulos</strong> aqui apresenta<strong>dos</strong>, verificamos<br />
que o ambiente simulador ainda pode ser ampliado <strong>para</strong> incluir outras<br />
características importantes como: a minimização de autômatos finitos, e<br />
conversão de autômatos finitos não-determinísticos em autômatos finitos<br />
determinísticos. Outros modelos de máquinas (como Mealy e Moore)<br />
também podem ser implementa<strong>dos</strong>, ampliando assim as capacidades do<br />
simulador.<br />
Atualmente, os <strong>módulos</strong> apresenta<strong>dos</strong> aqui encontram-se em fase de<br />
testes, com objetivo de verificar a eficiência e a eficácia do sistema. Até o<br />
momento os resulta<strong>dos</strong> obti<strong>dos</strong> nos testes foram completamente<br />
satisfatórios, sem que nenhum erro relevante tenha sido encontrado.<br />
Referências<br />
1. A. Postal; C. C. Casagrande; E. W. Benfatti; J. P. Castro; P. A.<br />
Jaskowiak in Anais EPAC – Encontro Paranaense de Computação,<br />
Cascavel, 2007, v. I, 205-214.<br />
2. H. Deitel; P. J. Deitel. Java Como Programar, Porto Alegre, Bookman,<br />
2004, 4º edição.<br />
3. L. A. M. Palazzo. Introdução a Programação Prolog, Pelotas, UCPEL,<br />
1997.<br />
Anais do XVII EAIC – 19 a 22 de Novembro de 2008 – ISSN:
4. T. A. SUDKAMP. Languages and Machines - An Introduction to the<br />
Theory of Computer Science. Massachusetts: Addison Wesley, 1997, 2.<br />
ed.<br />
Anais do XVII EAIC – 19 a 22 de Novembro de 2008 – ISSN: