Programação em Lógica

Ano lectivo 1999/00 (semestre ímpar)

Sumários das aulas teóricas

Aula: 1,2,3,4,5,6,7,8,9,10,11,12,13,14



Aula 1 (dia 15/10/99)

Sumário: Apresentação do docente e da disciplina. Programação declarativa versus programação imperativa. Breve história da Programação em Lógica..



Aula 2 (dia 22/10/99)

Sumário: Conceitos básicos da programação em lógica: programa como conjunto de factos (axiomas) e regras; interpretação universal das variáveis em factos e regras; perguntas/golos e interpretação existencial de variáveis. Primeira introdução à semântica  operacional da programação em lógica: derivação SLD; backtracking (ou retrocesso).



Aula 3 (29/10/99)

Sumário: Introdução às noções de termo e símbolo funcional. Ddescrição da sintaxe de programas Prolog "puros". Estruturas de dados recursivas. Programação de relações simples sobre números naturais. Introdução às listas em Prolog. Programação de predicados simples sobre listas.



Aula 4 (dia 5/11/99)

Sumário: Continuação de programação com listas. Outras estruturas de dados recursivas: programas sobre árvores binárias e fórmulas de lógica proposicional.



Aula 5 (dia 12/11/99)

Sumário: Primitivas Prolog para cálculo aritmético: predicado is/2, operadores aritméticos, comparadores. Uso das primitivas em programas simples. Recursividade terminal e versões "iterativas". "Tradução" de versões iterativas de programas em linguagens imperativas para programas em lógica com recursividade terminal.



Aula 6 (dia 19/11/99)

Sumário: Análise mais detalhada da semântica operacional de programas em lógica. Problemas de ciclos infinitos e de soluções redundantes. Controlo procedimental de programas: "cuts".



Aula 7 (dia 26/11/99)

Sumário:  Predicados de sistema para análise de tipo e estrutura de dados: integer/1, atom/1, compound/1, real/1, atomic/1, functor/3, arg/3 e =../2. Predicados de sistema meta-lógicos: var/1, nonvar/1, ground/1, ==/2, copy_term/2 e call/1. Variáveis e predicados como objectos. Negação por falha finita.



Aula 8 (dia 10/12/99)

Sumário: Predicados extra-lógicos com efeitos colaterais: processamento de input/output; predicados de manipulação/alteração de programas.



Aula 9 (dia 17/12/99)

Sumário: Técnicas de programação aproveitando o uso de não determinismo.