Lógica Para a Programação
a negação na Programação em Lógica e no Prolog
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
1.
Lógica Para a Programação
1. a negação na Programação em Lógica e no Prolog
•
•
os programas em lógica descrevem o que é verdade; o falso é
omitido
no Prolog certas relações são mais fáceis de especificar com a
negação
•
operador not está denido na linguagem(\+)
Pedro Torres
Lógica Para a Programação
1. a negação na Programação em Lógica e no Prolog
/+ <termo> é verdadeiro se não for possivel provar <termo>
•
•
Negacão por falha: assume que o mundo é fechado, ou seja,
que tudo o que e verdadeiro pode ser inferido
Pedro Torres
Lógica Para a Programação
1. a negação na Programação em Lógica e no Prolog
•
Exemplo1:
•
legal(X) :- \+ ilegal(X).
pode ser avaliada somente pela busca exaustiva de todas as
coisas que são ilegais e comparando estas com X, e se nenhum
facto ilegal for descoberto, X é legal. Isso é chamado negação
por falha.
Pedro Torres
Lógica Para a Programação
1. a negação na Programação em Lógica e no Prolog
•
Exemplo2:
•
Como calcular a intersecção entre 2 conjuntos usando o predicado
percence?
•
•
pertence(X,[X|R]).
pertence(X,[Y|R]) :- pertence(X,R).
Pedro Torres
Lógica Para a Programação
1. a negação na Programação em Lógica e no Prolog
•
Exemplo2:
•
•
•
•
•
interseccao([X|Y],M,[X|Z]) :- pertence(X,M),interseccao(Y,M,Z).
interseccao([X|Y],M,Z) :- \+ pertence(X,M),interseccao(Y,M,Z).
interseccao([],M,[]).
pertence(X,[X|R]).
pertence(X,[Y|R]) :- pertence(X,R).
Pedro Torres
Lógica Para a Programação
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
•
INPUT e OUTPUT são dois termos muito comuns quando
falamos de computadores. Designa-se por INPUT a informação
transmitida a um programa. OUTPUT refere-se ao resultado
da execução de um programa.
Pedro Torres
Lógica Para a Programação
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
•
Até aqui, quando corremos os nossos programas em Prolog, só
usamos o terminal para INPUT e OUTPUT. Mas existem
maneiras de dizer ao Prolog para fazer o input através de um
ficheiro, ou mandar o output para um. Isto é util quando
queremos testar um programa, ou quando queremos analisar o
resultado deste mais tarde.
Pedro Torres
Lógica Para a Programação
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
•
Uso do write/1 e do read/1 (para termos)
•
•
•
•
Exemplos:
?- write(ola).
ola
True.
Pedro Torres
•
•
•
?- read(X).
|: 4.
X = 4.
Lógica Para a Programação
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
•
•
get/1 e put/1 (para caracteres, semelhante ao read e write)
Formatação do OUTPUT: nl(nova linha)e tab/1(tabulação)
Pedro Torres
Lógica Para a Programação
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
•
OUTPUT usando ficheiros.
tell(filename) – as operações de escrita passarão a ser feitas usando o ficheiro
filename (é o novo output stream).
telling(filename) – filename é o actual output stream.
told – fecha o output stream.
Pedro Torres
Lógica Para a Programação
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
•
INPUT usando ficheiros.
see(filename) – as operações de leitura passarão a ser feitas usando o ficheiro
filename (é o novo input stream).
seeing(filename) – filename é o actual input stream.
seen – fecha o intput stream.
Pedro Torres
Lógica Para a Programação
2. a comunicação utilizador/programa no Prolog
(via teclado/terminal e via ficheiros)
•
•
•
Outros predicados de INPUT/OUTPUT
consult(filename):-carrega o filename para o interpretador do Prolog
reconsult(filename):-re-carrega o filename para o interpretador do Prolog
Pedro Torres
Download

Lógica Para a Programação