Índice Próximo

3.Programa em Prolog

 

 

 

Fazendo uso das definições dos operadores e regras utilizados neste projeto, segue a descrição do programa, que foi

Implementado utilizando a ferramenta LPA.

 

Passo 1: Leitura da entrada:

Realizada através do predicado neg, cujo parâmetro deve ser a expressão que se deseja negar.

Ela é responsável por chamadas a predicados para realização de uma saída gráfica, e utiliza o predicado

negacao para emitir a resposta ao usuário.

 

Passo2. De acordo com a precedência dos operadores verificar qual clausula será executada sobre a entrada:

 

negacao(X => Y, W and Z):- !, simplifica(X,W), negacao(Y,Z).

negacao(X and Y,K or F):-!,negacao(X,K), negacao(Y,F).

negacao(X or Y, K and F):-!, negacao(X,K), negacao(Y,F).

negacao(X, Y):- simplifica(not X,Y).

 

O predicado negacao executa a negação dos termos recursivamente até que sejam apenas um único átomo

not (a) <=> not a .

 

Passo 3. Realizar a simplificação dos operandos caso estes se apresentem na forma not not x que é reduzido para x.

 

simplifica(not ( not X),Y):- !,simplifica(X,Y).

 

Passo3.1. Realizar a verificação da validade da entrada, reportando erro quando a sintaxe estiver errada ( não seguir o

padrão: operando operador operando, para operadores diferentes de not)

 

simplifica(X,X):- !, X\==not,X\== or, X\== and, X\== =>, X\== not not,

X\== not (and), X\== not (or), X\== not ( => ).

 

Passo 4. Emitir a resposta ao usuário.

Isso é realizado pelo procedimento create_resp_win chamado pelo predicado neg.

Ele reporta a saída estabelecida pelo predicado negação em uma janela gráfica.

 

(Veja o código do programa no Apêndice.)