Universidade de Évora
Departamento de Matemática
Programa da disciplina:
- Programação em Lógica
do 5º semestre lectivo da licenciatura em Engenharia Informática
Semestre Ímpar de 1998/1999
Responsável: José Júlio Alves Alferes (Prof. Auxiliar)
Horas Teóricas: 2 por semana
Horas Práticas Laboratoriais: 2 por semana
Objectivos:
Os objectivos principais desta disciplina são:
- Confrontar os alunos com outro paradigma de programação, levando-os a aprofundar os conceitos de programação declarativa e a melhor compreenderem as suas vantagens e desvantagens face à programação imperativa.
- Familiarizar os alunos com o uso de relações, unificação, de recursividade e não determinismo na resolução de problemas.
- Dotar os alunos de competência no desenvolvimento de programas na linguagem Prolog.
Programa:
Para cumprir com os objectivos expostos, foram cobertas as seguintes matérias:
- Introdução e motivação para a disciplina
- Apresentação da disciplina
- Breve história da Programação em Lógica
- Conceitos básicos de Programação em Lógica
- Factos e regras
- Programas e perguntas
- Semântica declarativa e operacional
- Mecanismo de retrocesso ("backtracking")
- Termos
- Linguagem Prolog e seus constructores
- Programação de relações simples sobre números naturais (usando functor suc/1)
- Programação de predicados sobre listas
- Outras estruturas de dados recursivas
- Cálculo aritmético em Prolog
- Recursividade terminal e não-terminal
- Controlo procedimental e "cuts"
- Negação por falha finita
- Predicados Prolog de inspecção de termos e meta-lógicos
- Predicados de input/output
- Predicados de manipulação de programas
- Técnicas de Programação em Lógica
- Programação com uso de não-determinismo
- Listas de diferença e outras estruturas incompletas
- Meta-programação com Programação em Lógica
- Programação de interpretadores
- Programação de analisadores sintáticos e aplicação a "interfaces" de língua natural
- Tópicos avançados
- Mecanismos de tabulação
- Ilustração do uso de tabulação em programação de fechos transitivos e em representação de conhecimento
Bibliografia
Referências de base:
M. Covington, D. Nute and A. Vellino, "Prolog Programming in Depth". Prentice Hall, 1997.
L. Sterling and E. Shapiro. "The Art of Prolog", MIT Press, 1994.
- Referências complementares:
I. Bratko, "Prolog Programming for Artificial Intelligence", Addison Wesley, 1990.
Material disponível:
- PCs dos laboratórios de informática do Departamento de Matemática.
- XSB-Prolog para Linux e Windows. Implementação livre copiável pelos alunos.
Docentes:
Teóricas: José Alferes
Práticas: José Alferes
Avaliação:
Exame final, e um trabalho individual com enunciado livre, sendo a nota final a média pesada em que o trabalho vale 20%.