prolog programação lógica Ícaro a. souza. > roteiro: 1. surgimento 2. característica 3. tipo...

22
Prolog Programação Lógica Ícaro A. Souza

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

PrologProgramação Lógica

Ícaro A. Souza

Page 2: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

> Roteiro:

•1. Surgimento•2. Característica•3. Tipo de Dados•5. Fatos ( Base de Dados )•6. Consultas•7. Regras•8. Listas•9. Predicados do Prolog•10. Exercícios

Page 3: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

1. Surgimento

Foi criada em meados de 1972 por Alain Colmerauer e Philippe Roussel, baseados no conceito de Robert Kowalski da interpretação procedimental das cláusulas de Horn. A motivação para isso veio em parte da vontade de reconciliar o uso da lógica como uma linguagem declarativa de representação do conhecimento com a representação procedimental do conhecimento, que era popular na América do Norte no final da década de 1960 para início de 1970.

Page 4: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

2. Característica

•O Prolog é uma linguagem declarativa, significando que em vez de o programa estipular a maneira de chegar à solução, passo a passo, (como nas linguagens procedimentais ou imperativas), limita-se a fornecer uma descrição do problema que se pretende computar. Usa uma coleção de fatos ( base de dados )  e de relações lógicas ( regras ) que exprimem o domínio relacional do problema a resolver.

Page 5: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

•Ex: Base de Dados e Regra

2. Característica

Comentário

Operador de Negação

Page 6: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

3. Tipo de Dados

•Todos os dados são tratados como sendo de um único tipo, Termo, cuja natureza depende da forma como esse termo foi declarado. Ou seja, os elementos léxicos utilizados na sua declaração determinam se esse termo será um número, um texto, uma variável, uma estrutura complexa e assim por diante.

Page 7: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

3.1 Átomos

•As constantes de texto são introduzidas por meio de átomos. Um átomo é uma sequência constituída de letras, números, mas iniciando com uma letra minúscula. 

Ex: ana ana_maria ‘ana’ ‘ana maria’

Page 8: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

3.2 Números

•Um número é uma sequência de dígitos, permitindo também os sinais de . (para números reais), - (número negativo) e e (notação científica). Algumas implementações do Prolog não fazem distinção entre inteiros e números reais.

Ex: 321 3.21

Page 9: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

3.3 Variáveis

• Variáveis são declaradas da mesma forma que átomos, porém iniciando com uma letra maiúscula. No ambiente Prolog uma variável não é um contêiner cujo valor pode ser atribuído (como ocorre nas linguagens imperativas). Seu comportamento é mais próximo de um padrão, que é incrementalmente especificado pela unificação. Em outras palavras, uma variável Prolog é como uma incógnita, cujo valor é desconhecido a princípio, mas após descoberto, não sofre mais mudanças.

Ex: Ana X _X _Ana _ana

Page 10: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

4. Operadores

Operador Símbolo Exemplo

E , A , B

OU ; A ; B

Negação \+ \+ A

Igualdade = A = B

Diferença \== A \== B

Page 11: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

5. Fatos (Base de Dados)

•A unidade básica do Prolog é o predicado, que é postulado verdadeiro. Um predicado consiste de uma cabeça e um número de argumentos. 

Linha 5 se lê: cachorro é um animalLinha 6 se lê: jose é pai de antonio

Page 12: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

6. Consultas•Para recuperar informações de um

programa lógico, usamos consultas. Uma consulta pergunta se uma determinado relacionamento existe entre objetos.

Não Está na Base de Dados

Linha 19: cachorro é um animal?Linha 20: gato é um animal?Linha 21: Quem é animal?

Page 13: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

7. Regras

•O segundo tipo de predicado no Prolog é a regra, também chamada de "cláusula".

•Ex:

A luz está acesa se o interruptor estiver ligado.

Obs: ‘ :- ’ significa ‘ SE ’NomeRegra(Varivável(is) ) :-

Condições .

Page 14: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

8. Lista•Uma lista não é um tipo de dados à parte,

mas sim definida por uma construção recursiva (usando o termo '.'/2):

•o átomo [] é uma lista vazia;•se T é uma lista e H é um elemento, então

o termo '.'(H, T) é uma lista.

Page 15: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

8. Listas

findall(Variável, Condição, Lista). Insere na Lista sem ordenar e com repetição.

setof(Variável,Condicão,Lista). Insere na lista ordenadamente e sem repetir.

Page 16: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

9. Predicados do Prolog

Page 17: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

10. Exercícios

• 10.1 Suponha os seguintes fatos para registrar a média destes alunos:nota(joao,5.0).nota(maria,6.0).nota(joana,8.0).nota(mariana,2.0).

nota(pedro, -3). nota(antonio, 20).

Construa regras para identificar o estado dos alunos quanto a: aprovado (de 7.0 a 10.0), recuperação (de 5.0 até menor que 7.0), reprovado (de 0.0 a menor que 5.0) e erro se nenhuma das faixas anteriores.

Page 18: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

10.1 Solução:Consultas:

Page 19: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

•10.2 Faça uma Regra de nome subConj onde a mesma deve receber duas listas e indicar se a primeira é subconjunto da segunda ou não.

Page 20: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

• 10.3 Suponha os seguintes fatos:

Faça uma regra que determine os casais através da afinidade do gosto pelo filme. O nome da regra será afinidadeFilme que terá como parametros Homem e Mulher.Depois use a regra afinidadeFilme e faça a regra pessoasGeneroIguais que irá receber uma Lista de pessoas e um gênero, caso ao chamar a pessoa só seja passado por parametro o gênero a função retornará uma lista com todas as pessoas que gostam do mesmo gênero de Filme.

Page 21: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

Solução 10.3

Page 22: Prolog Programação Lógica Ícaro A. Souza. > Roteiro: 1. Surgimento 2. Característica 3. Tipo de Dados 5. Fatos ( Base de Dados ) 6. Consultas 7. Regras

Consultas 10.3: