Programação Lógica com Prolog

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Advertisements

Lógica de Predicados e Representação de Conhecimento
Introdução à Linguagem Prolog
Concepção da linguagem, ou seja, porque e como ela é como é?
Data: 10 a 12 de fevereiro de 2009 e
Introdução à Ciência da Computação Linguagens de Programação.
3 Paradigmas e Linguagens de Programação
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Linguagem de Montagem Visão geral.
Elsa Carvalho 163 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Teoria dos Modelos.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Linguagens de Programação
Software Básico Silvio Fernandes
Introdução à Programação Lógica
Introdução a Informática
INTRODUÇÃO À PROGRAMAÇÃO
Programação Lógica: PROLOG
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Construção de Compiladores
6. Backtracking e Controle
2. A Linguagem Prolog.
Introdução à Modelagem Conceitual 3. Prolog
Luiz A. M. Palazzo Pelotas, maio de 2010
SIMULAÇÃO EM COMPUTADOR: O PENSAMENTO COMO PROCESSAMENTO DE INFORMÇÕES
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
A Lógica das Sentenças Abertas Profa. Ana Florencia Aula 9
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
INF 1771 – Inteligência Artificial
Inteligência Artificial
Paradigmas de programação
Inteligência Artificial: A Linguagem Prolog (parte 2)
Sintaxe e Semântica do PROLOG.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Prolog Programação Lógica Ícaro A. Souza.
Aula Prática - Prolog Sistemas Inteligentes /~if684
Compiladores, Aula Nº 5 João M. P. Cardoso
Informática Teórica Engenharia da Computação
Conceitos e Linguagens de Programação
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
Modelos Matemáticos Usados como tipos em especificações baseadas em modelos Apresentados como teorias ou sistemas formais Uma teoria é definida em termos.
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Teoria da Computação Aula 5 Prof. Fabiano Sabha.
Sistemas Especialistas
André Luiz da Costa Carvalho
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Princípios da Programação em Prolog
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Programação de PIC em C Exposição das funções básicas para
Lógica para Computação
Métodos Formais.
Aula 1 – Profª Danielle Costa
Linguagens de Programação Introdução Prof. Renato Melo.
Semântica de Linguagens de Programação
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Métodos Formais Juan Andrés Mussini.
Introdução à Programação
Linguagens de Programação
ALGORITMOS.
Vinicius Ponte Machado
Módulo II Capítulo 1: Orientação a Objetos
Revisão 2º Bimestre Inteligência Artificial - IA Nome: Leonardo Brussolo de Paula.
SISTEMAS DE INFORMAÇÃO Inteligência Artificial 2011/01 UNIPAC - FACAE Faculdade de Ciências Administrativas e Exatas Araguari - MG.
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Informática Teórica Engenharia da Computação. Teoria da Computação Contexto do que vamos começar a estudar As linguagens também podem ser definidas formalmente.
1 Lógica de Predicados BCC101 Matemática Discreta I.
Lógica de programação Introdução à lógica de programação
Transcrição da apresentação:

Programação Lógica com Prolog Curso de Sistemas de Informação 2º Período – 2010/02 Prof.:Edmilson Ferreira

O que é diferente na Programação Lógica Num algoritmo qualquer identificamos dois principais componentes: lógica - o que solucionar (problema) controle - como solucionar (solução). Na programação em lógica o programador deve descrever somente o componente lógico. O controle é exercido pelo sistema usado.

INTRODUÇÃO Alguns fatos sobre Prolog: O termo Prolog é derivado da expressão “Programming in Logic”; Foi criado em 1973, na Universidade de Marseille, França Propósito da criação: criar programas para tradução de linguagem natural (linguagens faladas). Não é uma linguagem padronizada: padrão ANSI esta sendo formalizado. Enquanto isso, o livro de Clocksin e Mellish, “Programming in Prolog” (1984) é um padrão não oficial. Geralmente é interpretado, mas pode ser compilado. Escolhida para o projeto japonês da linguagem de 5a. Geração.

APLICAÇÕES Lógica matemática, prova automática de teoremas e semântica; Solução de equações simbólicas; Bancos de dados relacionais; Linguagem Natural; Sistemas Especialistas; Planejamento Automático de Atividades; Aplicações de “General Problem Solving”, como jogos (Xadrez, Damas, Jogo da Velha, etc.); Compiladores; Análise Bioquímica e projetos de novas drogas.

PROLOG E OUTRAS LINGUAGENS C, Pascal, Basic: são linguagens Procedimentais (ou imperativas) - especificam como deve ser feita alguma coisa. Codificam algoritmos. C++, SmallTalk, Eiffel: são linguagens Orientadas a Objetos - especificam objetos e seus métodos. Prolog: é uma linguagem declarativa - especifica o quê se sabe e o quê deve ser feito. Prolog é mais direcionada ao conhecimento, menos direcionada aos algoritmos.

Continuação Prolog não possui estruturas de controle como do-while, repeat-until, if-then-else, for, case ou switch como os encontrados em outras linguagens: em Prolog utiliza-se métodos lógicos para declarar como o programa atinge seu objetivo. O Prolog reside em sua capacidade de Busca.

CONCEITOS BÁSICOS Definição: Prolog é uma linguagem de programação que é utilizada para resolver problemas que envolvam objetos e relações entre objetos. Um programa em Prolog consiste basicamente de: declaração de fatos/Cláusulas (facts) sobre objetos e suas relações; definições de regras (rules)sobre os objetos e suas relações; Questões/Consultas (goals) que são feitas sobre os objetos e suas relações.

Argumento do Predicado, com vários Objetos FATOS/CLÁUSULAS Os fatos são os elementos fundamentais da programação em Prolog, pois determinam as relações que existem entre os objetos conhecidos. Exemplo: gosta (josé, maria). Predicado ou Relação Argumento do Predicado, com vários Objetos

Características dos fatos: Os nomes dos predicados e dos objetos devem começar com letra minúscula. Por exemplo: joão, casa, gosta. Os predicados são escritos primeiro e os objetos são escritos depois, separados por vírgulas. Os objetos são escritos dentro de parênteses. Todo fato é terminado com um ponto final.

Características dos fatos: A ordem dos objetos é importante: gosta (maria, josé).  gosta (josé, maria). Uma coleção de fatos é chamada de “banco de conhecimento” ou “banco de dados”. Os fatos podem ter um número arbitrário de objetos como argumento. 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”.

Exemplos progenitor(maria, josé). % Maria é progenitor de José. progenitor(joão, josé). progenitor(joão, ana). progenitor(josé, júlia). progenitor(josé, íris). progenitor(íris, jorge). masculino(joão). % João é do sexo masculino. masculino(josé). masculino(jorge). feminino(maria). % Maria é do sexo feminino. feminino(ana). feminino(júlia). feminino(íris).

O que é diferente na Programação Lógica Um programa não é a descrição de um procedimento para se obter a solução do problema. Somente descreve o que solucionar. O responsável pelo procedimento a ser adotado na execução da solução é o sistema usado no processamento dos programas.

O que é diferente na Programação Lógica Um programa em lógica (programação declarativa) é a representação de determinado problema através de um conjunto finito de sentenças lógicas denominadas cláusulas. As cláusulas componentes dos programas em PROLOG podem ser fatos ou regras.

O que é diferente na Programação Lógica A programação declarativa engloba também a programação funcional (LISP e Haskell, por exemplo). Programar em uma linguagem funcional consiste em construir funções, expressas obedecendo a princípios matemáticos, para resolver um problema dado.

Cláusulas, Fatos, Regras e Predicado Cláusulas são as sentenças lógicas componentes dos programas. Um fato denota uma verdade incondicional. As regras definem as condições a serem satisfeitas para que uma certa declaração seja considerada verdadeira. O conjunto completo de cláusulas (fatos e regras) empregados para descrever uma relação, é denominado predicado.

Objetos e suas Relações A programação em lógica reforça a tese de que a lógica é um formalismo conveniente para representar e processar conhecimento. Para tanto faz-se necessário identificar nos problemas objetos (entidades) relação entre estes compondo os fatos (verdades incondicionais).

Objetos e suas Relações A programação em lógica reforça a tese de que a lógica é um formalismo conveniente para representar e processar conhecimento. Para tanto faz-se necessário identificar nos problemas objetos (entidades) relação entre estes compondo os fatos (verdades incondicionais).

Objetos e suas Relações É possível definir, entre os objetos (indivíduos) uma relação chamada progenitor. progenitor(jo, ze). progenitor(iris, gal).

Objetos e suas Relações Cláusula: progenitor(jo, ze). Sendo:   RELAÇÃO ARGUMENTOS

Objetos e suas Relações Cláusulas: progenitor(jo, ze). progenitor(jo, ana). progenitor(ze, beth). Estas constituem três cláusulas que denotam três fatos acerca da relação progenitor.

Objetos e suas Relações Cláusulas: progenitor(jo, ze). progenitor(jo, ana). progenitor(ze, beth). Exercício 1: Usando o compilador SWI-ProLog, implementar a árvore ao lado.