Trabalho Formais
Prof. Dr. Rafael Rieder
Lista de Exercícios
TRABALHO DISCENTE I – 2014/02
-
Formato de entrega da solução: individual ou em dupla
-
Enviar o código-fonte para rieder@upf.br até 13 de outubro de 2014
-
o
Encaminhe somente um único arquivo com todo o projeto
o
O professor enviará uma mensagem de resposta ao receber o e-mail
Assinar o e-mail com seu(s) nome(s)!
Desenvolva uma solução que leia diferentes palavras (números e expressões aritméticas) da linguagem TRABALHO, formadas por símbolos do alfabeto Σ = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, –, *, / }.
O programa deverá aceitar uma palavra, ou um conjunto destas, e avaliar se pertencem ou não a linguagem. Utilize o caractere de espaçamento como separador de cada palavra digitada.
Exemplos de palavras que pertencem a esta linguagem: 37, –4, 6+39, –12*85/5, 0, 3+100, 9+0–2.
Exemplos de palavras que NÃO pertencem a esta linguagem: +15, 4+–12, *6+10, –12*+85/, 00, 09+7.
Ao final do processamento, apresente na interface a lista de palavras que pertencem à linguagem
TRABALHO e aquelas que não pertencem. Trate também situações como área de texto vazia, ou string/arquivo vazio ou arquivo inexistente.
Para desenvolver este trabalho, utilize o conceito de gramática regular e autômato finito determinístico.
A plataforma e a linguagem de desenvolvimento são de escolha livre. Dúvidas, consultar o professor.
Seguem alguns exemplos para inspiração:
a) Interface gráfica: área de texto onde o reconhecimento ocorre durante a digitação (azul = palavra aceita, vermelho = palavra inválida, preto = em digitação pelo usuário);
b) Interface gráfica: área de texto onde o reconhecimento ocorre após pressionamento de um botão
(organização em colunas das palavras aceitas e não aceitas);
c) Modo console: reconhecimento após digitação de um conjunto de palavras (organização horizontal de palavras aceitas e não aceitas);
d) Modo console: