Pro log

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

description

Pro log. Pro gramação Lóg ica. Ícaro A. Souza. > 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. 1. Surgimento. - PowerPoint PPT Presentation

Transcript of Pro log

Page 1: Pro log

PrologProgramação Lógica

Ícaro A. Souza

Page 2: Pro log

> 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: Pro log

1. SurgimentoFoi 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: Pro log

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: Pro log

•Ex: Base de Dados e Regra

2. CaracterísticaComentário

Operador de Negação

Page 6: Pro log

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: Pro log

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: Pro log

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: Pro log

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: Pro log

4. Operadores Operador Símbolo Exemplo

E , A , B

OU ; A ; B

Negação \+ \+ A

Igualdade = A = B

Diferença \== A \== B

Page 11: Pro log

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: Pro log

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: Pro log

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: Pro log

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: Pro log

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: Pro log

9. Predicados do Prolog

Page 17: Pro log

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: Pro log

10.1 Solução: Consultas:

Page 19: Pro log

•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: Pro log

• 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: Pro log

Solução 10.3

Page 22: Pro log

Consultas 10.3: