A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução à Linguagem Prolog

Apresentações semelhantes


Apresentação em tema: "Introdução à Linguagem Prolog"— Transcrição da apresentação:

1 Introdução à Linguagem Prolog
Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada

2 Conteúdo do Curso Introdução à Lógica e à Programação Lógica
Introdução ao Prolog e ao SWI-Prolog Matching e Backtraking Múltiplas soluções Listas e predicados recursivos Grafos em Prolog

3 Introdução ao Prolog Características
Provador de teoremas (Verdade ou Falso) Linguagem declarativa Linguagem não tipada Linguagem é interpretada Não determinístico Diferente de programação procedimental (definição lógica dos problemas) Não existe variáveis globais Muito usado em IA (rápida prototipação)

4 Da Notação de Kowalski para um programa Prolog
Fato ou Cláusula Unitária Programa Prolog Notação de Kowalski Regra chama(a,b)  usa(b,e)  depende(x,y)  chama(x,y) depende(x,y)  usa(x,y) depende(x,y)  chama(x,z), depende(z,y)  depende(a,e) chama(a,b). usa(b,e). depende(X,Y) :- chama(X,Y). depende(X,Y) :- usa(X,Y). depende(X,Y) :- chama(X,Z), depende(Z,Y). ?- depende(a,e). Questionamento

5 Elementos da Linguagem - Átomos
Definição: cadeias compostas pelos seguintes caracteres: Letras Maiúsculas: A,..., Z Letras Minúsculas: a,..., z Dígitos: 0, 1,..., 9 Caracteres especiais: *, +, _, -, >, <, =, :, , ~ Composição de Átomos: Cadeias começando com letras minúsculas. Ex.: x_y, maria, curso_de_IA Cadeias de caracteres especiais. Ex.: <---->, ::= Cadeias de caracteres entre apóstrofos. Ex.: ‘Maria’, ‘casa branca’, ‘a’

6 Elementos da Linguagem (cont.)
Números: 1, 2.45, -20 Variáveis: são cadeias de letras, dígitos e o caractere “_”. Ex.: X, Mapa_da_mina, _nome

7 Fatos e regras denotam relações entre objetos
Programa Prolog Declaração de fatos (cláusulas unitárias) Declaração de regras Interrogação a respeito desses elementos Fatos e regras denotam relações entre objetos

8 Programa Prolog (cont.)
Parâmetros Estrutura de um fato gosta(joao, maria). Estrutura de uma regra gosta(joao, X) :- gosta(X, vinho), gosta(X, futebol). Nome do predicado Conjunção

9 Questionamentos Dada a base de fatos: gosta(julio,maria).
gosta(julio,peixe). gosta(julio,maria). gosta(maria,livro). gosta(joao,livro). Quem gosta de livro? ?- gosta(X, livro). Quem gosta de livro e chocolate? ?- gosta(X, livro), gosta(X, chocolate). Quem gosta de livro ou chocolate? ?- gosta(X, livro); gosta(X, chocolate). Disjunção

10 Introdução ao SWI-Prolog
Utilização do Emacs para edição de programas ?- emacs. Editar e salvar o programa: gosta(julio,peixe). gosta(julio,maria). gosta(maria,livro). gosta(joao,livro). Compilar o arquivo Realizar os questionamentos Quem gosta de livro? Quem gosta de livro e chocolate? Quem gosta de livro ou chocolate?

11 Introdução ao SWI-Prolog (cont.)
Operadores relacionais X = Y X e Y são iguais; X \= Y X e Y são diferentes; X < Y X é menor que Y; X > Y X é maior que Y; X =< Y X é menor ou igual a Y; X >= Y X é maior ou igual a Y. X =:= Y X e Y são iguais (p/ números); X =\= Y X e Y são diferentes (p/ números).

12 Introdução ao SWI-Prolog (cont.)
Operadores aritméticos X+Y soma de X e Y; X – Y diferença de X e Y; X * Y multiplicação de X por Y; X / Y divisão de X por Y; X mod Y resto da divisão de X por Y. Atribuição de valores numéricos “is”: ?- X is Negação de predicados: \+ não

13 Matching e Substituição
 depende(a,e) Θ={x/a,y/e}  chama(a,e)  usa(a,e) chama(a,z), depende(z,e) 3 4 5  depende(b,e) 1 Θ={z/b}  chama(b,e)  usa(b,e) chama(b,z), depende(z,e) 3 4 5 Θ={x/b,y/e} Exemplo: 1. chama(a,b)  2. usa(b,e)  3. depende(x,y)  chama(x,y) 4. depende(x,y)  usa(x,y) 5. depende(x,y)  chama(x,z), depende(z,y) 6.  depende(a,e) 2 x, y e z são variáveis; “a”, “b” e “e” são átomos

14 Matching e Substituição (cont.)
O matching entre duas estruturas X e Y podem ocorrer em 4 situações X é uma variável desinstanciada e Y está instanciado com um valor qualquer. Ex: ?- X = a. X e Y estão instanciados com o mesmo valor. Ex.: ?- casa = casa.

15 Matching e Substituição (cont.)
X e Y não estão instanciados. Neste caso X e Y passam a ser a mesma variável. Ex: ?- X = Y. X e Y são estruturas com mesmo nome, número de parâmetros e uma das condições anteriores ocorre para todos os seus parâmetros. Ex.: ?- anda(joao,bicicleta(caloi)) = anda(joao, X).

16 Verificando o matching entre elementos
Verifique o resultado dos matchings ?- pilota(A, londres) = pilota(londres,paris). ?- ponto(X,Y,Z) = ponto(X1,Y1,Z1). ?- letra(G) = palavra(letra). ?- num(alpha) = alpha. ?- ‘caixa’ = caixa. ?- f(X,X) = f(a,b). ?- f(X,a(b,c)) = f(Z,a(Z,c))

17 Exercícios 1- Implemente os seguintes programas Prolog
soma(X,Y,Z) (Z é o resultado da soma de X e Y) maior(X,Y,Z) (Z é o maior entre X e Y) menor(X,Y,Z) (Z é o menor entre X e Y) par(X) (é verdade se X é par e falso se X é ímpar) impar(X) (é verdade se X é ímpar e falso se X é par)

18 Exercícios (cont.) 3- Declare uma base de fatos contendo várias cláusulas dos predicados a seguir relacionando pessoas da sua família: casado(X,Y) X é casado c/ Y pai(X, Y) X é pai de Y 4- A partir desses fatos crie os seguintes programas Prolog: a) mae(X,Y) e) avo_(X,Y) b) irmao(X,Y) f) primo(X,Y) c) tio(X,Y) g) cunhado(X,Y) d) avo(X,Y)

19 Exercícios (cont.) 5- Dada a base de fatos a seguir
governou(deodoro_da_fonseca,1891,1891). governou(floriano_peixoto,1891,1894). governou(prudente_de_moraes,1894,1898). governou(compos_sales,1898,1902). governou(rodrigues_alves,1902,1906). governou(afonso_pena, ). governou(nilo_pecanha,1909,1910). Escreva um programa Prolog chamado “presidente” que deve encontrar a(s) pessoa(s) que governavam o Brasil em um ano determinado. Ex. 1: ?- presidente(X, 1892). X = floriano_peixoto Ex. 2: ?- presidente(X, 1891). X = deodoro_da_fonseca ; X = floriano_peixoto ; no


Carregar ppt "Introdução à Linguagem Prolog"

Apresentações semelhantes


Anúncios Google