UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE COMPUTAÇÃO BACHARELADO EM SISTEMAS DE INFORMAÇÃO PLANO DE DISCIPLINA DISCIPLINA: Programação Lógica ( X ) SEMESTRAL - ( ) ANUAL CÓDIGO: GSI010 PERÍODO: 2 o Período CARGA HORÁRIA: 72 horas-aula / semestre, 4 ( X )OBRIGATÓRIA - ( ) OPTATIVA horas-aula / semana - teóricas PRÉ-REQUISITOS: GSI005 - Lógica para CÓ-REQUISITOS: não há computação PROFESSOR: Marcelo Keese Albertini UNIDADE ACADÊMICA: Faculdade de Computação - FACOM CURSO: Sistemas de Informação EMENTA RESUMIDA Resolução em Lógica Proposicional e Lógica de Predicados de Primeira Ordem; O paradigma declarativo; Fatos e regras; Recursão; Controle; Estruturas de dados e operadores; Desenvolvimento de aplicações. JUSTIFICATIVA Programação lógica é um dos principais paradigmas de programação. Esse paradima é frequentemente associado a inteligência artificial e linguística computacional. Além diso, esse paradigma foi projetado com o objetivo de conciliar a representação de conhecimento de especialistas com a lógica empregada em seu processamento. Portanto, seu estudo é de grande importância prática para a resolução de problemas complexos. OBJETIVOS Esta disciplina tem como finalidade dar ao aluno uma noção sobre as características estruturais, sintáticas e lógica da linguagem de programação Prolog. Para sedimentar este conhecimento serão desenvolvidos programas aplicativos e por meio deles estudar as vantagens e desvantagens do Prolog. PROGRAMA DA DISCIPLINA
1. O que é Prolog (a) Cronologia (b) Linguagens Declarativas e Linguagens Imperativas (c) O que é programar em Prolog (d) Por quê Prolog? 2. Resolução em Lógica Proposicional (a) Linguagem (b) Resolução em Cláusulas de Horn 3. Descrição de Fatos e Relações (a) Fatos (b) Interrogação de Bases de Fatos (c) Regras (d) Versão Simplificada da Unificação 4. Sintaxe do Prolog (a) Termos (b) Avaliação de Expressões Aritméticas (c) Estilo de Programação 5. Recursividade 6. Estrutura e Gestão de Controle (a) Estrutura de Controle (b) Predicados para Controle da Resolução (c) A negação em Programação Lógica 7. Listas (a) Definição, Representação e Unificação de Listas (b) Operações Básicas Recursivas com Listas (c) Unificação de Listas (d) Uma Interpretação Matemática sobre Listas (e) Operações em Conjuntos (f) Ordenamento 8. Novos Operadores (a) Definição e Declaração de Operadores 9. Banco de Dados Aula 1-23/05/2013 Apresentação da disciplina e do professor Introdução ao Prolog: cronologia e diferenças entre as linguagens declarativas e as imperativas. Por quê utilizar Prolog? A linguagem Prolog, fatos, regras e consultas. Aula 2-24/05/2013 Introdução ao Prolog; exemplos Aula 3-31/05/2013 Introdução ao SWI-Prolog no laboratório de computação. Exercícios. Aula 4-06/06/2013 Sintaxe: átomo, número, variáveis, estruturas, unificação, comparação de termos e árvore de busca Aula 5-07/06/2013 2
Aula no laboratório: Exercícios sobre Sintaxe e Semântica Prolog. Aula 6-13/06/2013 Definições recursivas Semântica declarativa e procedimental em Prolog Aula 7-14/06/2013 Exercício: Recursão Aula 8-20/06/2013 Avaliação de expressões aritméticas em Prolog Operadores definidos pelo usuário. Aula 9-21/06/2013 Aula no laboratório: expressões aritméticas Aula 10-27/06/2013 Exercícios de revisão Aula 11-28/06/2013 1 o Exercício avaliativo Aula 12-04/07/2013 Revisão para a prova (solução da 1a e 2a lista) Aula 13-05/07/2013 1a prova Aula 14-11/07/2013 Resolução da prova Aula 15-12/07/2013 Processamento de Listas Aula 16-18/07/2013 Exercícios em sala: Listas Aula 17-19/07/2013 Recursão de cauda Aula 18-25/07/2013 Exercícios em sala: recursividade Aula 19-26/07/2013 Backtracking, CUT e negação por falha Aula 20-01/08/2013 Interface Gráfica no Prolog - XPCE (laboratório) Aula 21-02/08/2013 Exercícios: backtracking, CUT e negação por falha 3
Aula 22-08/08/2013 2o Exercício avaliativo Aula 23-09/08/2013 Revisão para a prova Aula 24-16/08/2013 2 a prova Aula 25-22/08/2013 Resolução da prova Aula 26-23/08/2013 Predicados de entrada e saída; arquivos Aula 27-29/08/2013 Predicados extra lógicos (assert, bagof, findall) Aula 28-30/08/2013 Aula no laboratório: Predicados de entrada e saída; arquivos Aula 29-05/09/2013 Exercícios: predicados extra-lógicos (assert, bagof, findall) Aula 30-06/09/2013 Banco de Dados Relacionais Aula 31-12/09/2013 Exercícios: Banco de Dados Relacionais Aula 32-13/09/2013 3 o Exercício avaliativo Aula 33-19/09/2013 Revisão para a prova Aula 34-20/09/2013 3a prova Aula 35-26/09/2013 Vista da prova Aula 36-27/09/2013 Atividade substitutiva (Apresentação de trabalho extra) 4
METODOLOGIA O conteúdo será apresentado na forma expositiva. Os conceitos serão explorados em listas de exercícios. O aprendizado será estimulado em projetos de implementação de sistemas. O aprendizado será avaliado através de provas, trabalhos práticos e exercícios conceituais. AVALIAÇÃO A avaliação do conhecimento será feita da seguinte forma: 3 provas teóricas, somando 85 pontos 1a. prova: 05/07/2013, valendo 25 pontos 2a. prova: 16/08/2013, valendo 30 pontos 3a. prova: 20/09/2013, valendo 30 pontos listas de exercícios preparatórios e trabalhos, somando 15 pontos ATENDIMENTO Atendimento com o professor em horário agendado e correio eletrônico. RECUPERAÇÃO A recuperação de aprendizagem será feita através de atendimento individual (ou em grupo) realizado pelo professor em horário extra-classe. A recuperação de aprendizagem também será realizada pela aplicação de exercícios extras e uso de material complementar para estudo dirigido. 5
BIBLIOGRAFIA BÁSICA BIBLIOGRAFIA Araribóia, G. Inteligência Artificial: um curso prático. 1988. Bratko, I. Prolog Programming for Artificial Intelligence, 2nd ed. 1990. Clocksin, W. E and Mellish, C.S. Programming in Prolog, 2nd ed. 1984. BIBLIOGRAFIA COMPLEMENTAR Blackburn, Patrick; Bos, Johan and Striegnitz, Kristina. Learn Prolog Now!. Disponível em http://www.learnprolognow.org Favero, Eloi L. Programação em Prolog: uma abordagem prática. Disponível em http://www3.ufpa.br/favero Lloyd, J.W., Foundations of Logic Programming, 2nd Edition. Springer-Verlag, 1987. Palazzo, Luiz A. M. Introdução à programação Prolog. Disponível em http://puig.pro.br/logica/palazzo.pdf Sterling, L. and Shapiro, E. The Art of PROLOG: Advanced Programming Techniques. 2.ed. MIT Press, 1994. van Le, T. ; Techniques of Prolog Programming with Implementation of Logical Negation and Quantified Goals; Wiley, 1992. Entregue em / /. Assinatura do Professor Aprovado pelo colegiado do curso em / /. Assinatura do Coordenador 6