11.11.2014 Views

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

SHOW MORE
SHOW LESS

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:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!