30/04/2013. Prof. Hudson Costa

Documentos relacionados
EXERCÍCIOS DE PROGRAMAÇÃO EM LÓGICA

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de Exercícios de Programação Lógica.

INTELIGÊNCIA ARTIFICIAL LISTA DE EXERCÍCIOS

Introdução. Inteligência Artificial. Prolog x Outras Linguagens. Programação em Prolog. Programar em Prolog envolve:

03/04/2016 LÓGICA MATEMÁTICA. Prof. Esp. Fabiano Taguchi. Introdução ao Prolog

Programação Lógica. A Linguagem Prolog. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia

Prolog. MATA56 - Paradigmas de Linguagens de Programação, UFBA, Prof. Rodrigo Rocha Prolog. Iniciando.

Linguagens de Programação Aula 15

Inteligência Artificial. Prolog. Aula 2 Introdução (cont.)

CENTRO UNIVERSITÁRIO LUTERANO DE PALMAS PROLOG. Elias Melgaço Chaves Júnior Jonatas Luiz da Costa Rafael Gonçalves Barreira

Introdução à Programação em Prolog

SCC Capítulo 5 Representação de Conhecimento através do Prolog

Inteligência Artificial. Sistemas Baseados em Conhecimento. Representação de Conhecimento (continuação)

Aula 2 Programação Lógica Sintaxe Prolog. Profa. Elaine Faria UFU -2014

Programação Lógica. Programação Lógica PROLOG

Roteiro de Aula Prática

BUSCA DE SOLUÇÕES EM PROLOG

EXPRESSÕES RELACIONAIS

Fundamentos da Computação 1. Aula 03

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

Fundamentos de Lógica Matemática

SCC Capítulo 2 Lógica de Predicados

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Prof. Dr. Silvio do Lago Pereira

Métodos para a construção de algoritmo

Expandindo o Vocabulário. Tópicos Adicionais. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antônio Caminha Muniz Neto. 12 de junho de 2019

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Lógica. Professor Mauro Cesar Scheer

Linguagem C Entrada/Saída (console)

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II. Prof. Dr. Daniel Caetano

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

2. Linguagem de Programação Prolog

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

Introdução à Lógica Proposicional Sintaxe

Objetivo: Desenvolver algoritmos a partir de problemas

Programação Orientada a Objetos. Programação Lógica

Lógica predicados. Lógica predicados (continuação)

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II. Prof. Dr. Daniel Caetano

Português Estruturado

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

Entrada/Saída, Operadores. Curso: Técnico em Informática Disciplina: Algoritmos Prof. Abrahão Lopes

Linguagem C: Introdução

Algoritmos e Programação

Matemática Discreta - 01

Prof. Esp. Andrew Rodrigues 1

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PROLOG PROF. CESAR A. TACLA UTFPR/CURITIBA

Capítulo 3 Lógica de Primeira Ordem

Unidade 4: Introdução à Lógica de Programação - Parte II

INTRODUÇÃO A ALGORITMOS

Introdução aos Algoritmos

Fundamentos 1. Lógica de Predicados

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

Cálculo proposicional

Prof. A. G. Silva. 24 de agosto de Prof. A. G. Silva Programação em Lógica 24 de agosto de / 1

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012

18/01/2016 LÓGICA MATEMÁTICA. Lógica é usada para guiar nossos pensamentos ou ações na busca da solução. LÓGICA

Introdução aos Algoritmos

Compiladores. Análise Léxica

Introdução à Ciência da Computação

Lógica Formal. Matemática Discreta. Prof. Vilson Heck Junior

Cálculo de Predicados

Computação e Programação Exame Época de recurso

Programação Lógica. Controle (Bactracking, Cut, Fail) Paulo Henrique Ribeiro Gabriel

INF 1771 Inteligência Artificial

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II. Prof. Dr. Daniel Caetano

Fundamentos de Lógica e Algoritmos. Aula 3.1 Introdução a Programação. Prof. Dr. Bruno Moreno

Linguagens de Programação Princípios e Paradigmas

Não sou o melhor, sei disso, mas faço o melhor que posso!! RANILDO LOPES

Um conjunto é uma coleção de objetos. Esses objetos podem ser qualquer coisa. Costumamos chamar esses objetos de elementos do conjuntos.

LÓGICA DE PROGRAMAÇÃO INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE II PARA ENGENHARIA. Prof. Dr. Daniel Caetano

Paradigmas de Linguagem de Programação. Aspectos Básicos

C Operadores e Expressões

PROLOG Resumo. 1. Introdução.

Prof. Jorge Cavalcanti

Algoritmos e Lógica de Programação 80 horas // 4 h/semana. Para começar... Strings. Para começar... Strings. Exemplo...

Transcrição:

Prof. Hudson Costa PROLOG é uma linguagem de programação que é utilizada para resolver problemas que envolvam objetos e relações entre objetos. Em PROLOG o que se define basicamente são objetos e relações entre esses objetos. Para se referir a objetos, usamos termos. Um termo é uma constante, uma variável ou um termo composto. Para baixar: www.swi-prolog.org 1

Lógica como linguagem de programação. Raciocínio dedutivo sobre fatos e regras. Processamento simbólico, Semântica declarativa, procedimental e operacional. Programas = Lógica + Controle. Programas = Especificações Formais. Programas = Protótipos. Programas = Bases de dados. Programas = Programas... Declaração de fatos sobre objetos e suas relações; Definições de regras sobre os objetos e suas relações; Questões que são feitas sobre os objetos e suas relações 2

Sócrates é homem. Todo homem é mortal. Quem é mortal? Sócrates é mortal. homem(sócrates). mortal(x) homem(x).?- mortal(z). Z = sócrates. Átomos Da mesma forma que o Português, PROLOG possui palavras e frases. O tipo de palavra mais comum em PROLOG é denominado átomo. Alguns exemplos de átomos são: lápis, ana, brasil, livro, tesoura, guarda-roupa. Note que os átomos começam com letra minúscula até mesmo quando são nomes próprios. Predicado Predicado é a construção usada para declarar algo a respeito de objetos. Em PROLOG, a declaração é representada por um átomo e é seguida pelos objetos, que devem ser colocados entre parênteses e estar separados uns dos outros por vírgulas. Frases As frases mais simples da linguagem PROLOG são constituídas por um único predicado. Quando estas frases são usadas para dizer alguma coisa ao computador, elas são afirmativas e terminam com um ponto final. A seguir, mostramos vários exemplos de frases simples afirmativas. 3

Fatos Os fatos são os elementos fundamentais da programação em PROLOG, pois determinam as relações que existem entre os objetos conhecidos. Questões Uma questão é escrita da mesma maneira que um fato, sendo diferenciada pelo interpretador ou por sua colocação em um local previamente definido e separado dos fatos. Quando uma questão é feita, o PROLOG realiza uma busca na Base de Conhecimento, procurando um Fato que seja igual ao da questão. Dizemos que dois fatos (ou um fato e uma questão) são unificam (são iguais) se: Seus predicados são os mesmos, Eles possuem o mesmo número de argumentos e, Os argumentos são iguais. O PROLOG encontra um fato que se iguala a questão, ele retorna "YES", indicando que a questão tem resposta verdadeira; caso contrário, ele retorna "NO". NOTA: Para padronizar a criação de predicados (tanto os fatos quanto as regras), devemos sempre pensar que o predicado é uma propriedade do primeiro objeto do argumento. Assim, "gosta (joão, maria)." deve ser lido como "João gosta de Maria". 4

Uma variável em PROLOG sempre começa com uma letra maiúscula. Uma variável pode estar instanciada ou não-instanciada. Dizemos que ela está instanciada quando estiver assumindo o valor de um objeto e, caso contrário, não-instanciada. As regras são utilizadas para construir relações entre fatos, explicitando as dependências entre eles. Ao contrário dos fatos, que são incondicionais, as regras especificam coisas que podem ser verdadeiras se algumas condições forem satisfeitas. As regras possuem duas partes: o corpo, que define as condições e se encontra na parte direita da regra, e a cabeça, que define a conclusão, e se encontra na parte esquerda da regra. A cabeça e o corpo são separados pelo símbolo ":-", que é lido como "se". Uma regra sempre é terminada com um ponto final. 5

Suponha a seguinte base de conhecimento: Continuação... 6

Continuação... 7

Seja a árvore genealógica mostrada abaixo... Maria João Como seria uma base de fatos para representar essa árvore? José Ana Júlia Íris Jorge 8

Suponha a seguinte Base de Fatos Prolog: cargo(tecnico, rogerio). cargo(tecnico, ivone). cargo(engenheiro, daniel). cargo(engenheiro, isabel). cargo(engenheiro, oscar). cargo(engenheiro, tomas). cargo(engenheiro, ana). cargo(supervisor, luis). cargo(supervisor_chefe, sonia). cargo(secretaria_exec, laura). cargo(diretor, santiago). chefiado_por(tecnico, engenheiro). chefiado_por(engenheiro, supervisor). chefiado_por(analista, supervisor). chefiado_por(supervisor, supervisor_chefe). chefiado_por(supervisor_chefe, director). chefiado_por(secretaria_exec, director). Agora faça as seguintes perguntas à base de dados:?- chefiado_por(tecnico, X), chefiado_por(x,y).?- chefiado_por(tecnico, X), cargo(x,ivone), cargo(y,z).?- cargo(supervisor, X); cargo(supervisor, X).?- cargo(j,p), (chefiado_por(j, supervisor_chefe); chefiado_por(j, supervisor)).?- chefiado_por(p, director), not(cargo(p, carolina)). 9

Considere a seguinte base de fatos: aluno(joao, paradigmas). aluno(maria, paradigmas). aluno(joel, lab2). aluno(joel, estruturas). frequenta(joao, feup). frequenta(maria, feup). frequenta(joel, ist). professor(carlos, paradigmas). professor(ana_paula, estruturas). professor(pedro, lab2). funcionario(pedro, ist). funcionario(ana_paula, feup). funcionario(carlos, feup). Escreva as seguintes regras em PROLOG: Quem são os alunos do professor X? Quem são as pessoas da universidade X? (alunos ou docentes) Quem é colega de quem? Se aluno: é colega se for colega de disciplina ou colega de curso ou colega de universidade. Se professor: se for professor da mesma universidade. Considere a seguinte base de factos exemplo: comprou(joao, honda). ano(honda, 1997). comprou(joao, uno). ano(uno, 1998). valor(honda, 20000). valor(uno, 7000). Crie uma regra pode_vender onde o primeiro argumento é a pessoa, o segundo o carro e o terceiro é o ano actual (não especificar homem ou carro nas regras), onde a pessoa só pode vender o carro se o carro for comprado por ela nos últimos 10 anos e se seu valor for menor do que 10000 Euros. 10