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

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

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

Apresentações semelhantes


Apresentação em tema: "Introdução à Linguagem Prolog Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada."— 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 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). Notação de Kowalski Programa Prolog Questionamento Fato ou Cláusula Unitária Regra

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 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.) Estrutura de um fato gosta(joao, maria). Estrutura de uma regra gosta(joao, X) :- gosta(X, vinho), gosta(X, futebol). Nome do predicado Parâmetros Conjunção

9 Questionamentos Dada a base de fatos: 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 1.?- emacs. 2.Editar e salvar o programa: gosta(julio,peixe). gosta(julio,maria). gosta(maria,livro). gosta(joao,livro). 3.Compilar o arquivo 4.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 = YX e Y são iguais; –X \= YX e Y são diferentes; –X < YX é menor que Y; –X > YX é maior que Y; –X =< YX é menor ou igual a Y; –X >= YX é maior ou igual a Y. –X =:= YX e Y são iguais (p/ números); –X =\= YX e Y são diferentes (p/ números).

12 Introdução ao SWI-Prolog (cont.) Operadores aritméticos –X+Ysoma de X e Y; –X – Ydiferença de X e Y; –X * Ymultiplicação de X por Y; –X / Ydivisão de X por Y; –X mod Yresto 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 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) x, y e z são variáveis; a, b e e são átomos chama(a,e) usa(a,e) chama(a,z), depende(z,e) depende(b,e) 1 Θ={z/b} chama(b,e) usa(b,e) chama(b,z), depende(z,e) Θ={x/b,y/e} depende(a,e) Θ={x/a,y/e}

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

15 Matching e Substituição (cont.) 3.X e Y não estão instanciados. Neste caso X e Y passam a ser a mesma variável. Ex: ?- X = Y. 4.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 Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada."

Apresentações semelhantes


Anúncios Google