DEPARTAMENTO DE MATEMÁTICA
LIVRO DE SUMÁRIOS
Cadeira Programação em Lógica
Ano lectivo: 1998/99 Semestre Ímpar
Horário
Teóricas |
3ª feiras |
11:00 |
13:00 |
|
Práticas |
4ª feiras |
9:00 |
11:00 |
|
Docente: José Júlio Alves Alferes
Frequências e exames
25/01/99 |
14:00 |
Sala 128 |
CLAV |
19/02/99 |
14:00 |
Sala 128 |
CLAV |
Júri: José Júlio Alves Alferes
Irene Pimenta Rodrigues
Salvador Pinto Abreu
Aula N. 1 (teórica) Data 06/10/1998 |
Sumário: Breve história da Programação em Lógica. Conceitos básicos: programa como conjunto de regra e factos; interpretação universal de 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 N. 1 (prática) Data 07/10/1998 |
Sumário: Familiarização com o XSB-Prolog e suas funcionalidades. Breve discussão sobre outros sistemas de programação em Prolog. Consulta de programas. Experimentação com o programa de especificação de relações familiares, apresentado na 2ª aula teórica. Ambientação com o mecanismo de trace do Prolog. |
Aula N. 2 (teórica) Data 13/10/1998 |
Sumário: Introdução às noções de termo e símbolo funcional. Descriçã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 N. 2 (prática) Data 14/10/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 3 (teórica) Data 20/10/1998 |
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 N. 3 (prática) Data 21/10/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 4 (teórica) Data 27/10/1998 |
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 N. 4 (prática) Data 28/10/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 5 (teórica) Data 03/11/1998 |
Sumário: Análise mais detalhada da semântica procedimental de programas em lógica. Problemas de ciclos infinitos e de soluções redundantes. Controlo procedimental de programas: "cuts". |
Aula N. 5 (prática) Data 04/11/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 6 (teórica) Data 10/11/1998 |
Sumário: Predicados de sistema para análise de tipo e estruturas de dados: predicados integer/1, atom/1, compound/1, real/1, atomic/1, number/1, functor/3, arg/3 e =../2. Predicados de sistema meta-lógicos: predicados 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 N. 6 (prática) Data 11/11/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 7 (teórica) Data 17/11/1998 |
Sumário: Predicados extra-lógicos com efeitos colaterais: processamento de input/output; predicados de manipulação/alteração de programas. |
Aula N. 7 (prática) Data 18/11/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 8 (teórica) Data 24/11/1998 |
Sumário: Técnicas de programação aproveitando o uso de não determinismo. |
Aula N. 8 (prática) Data 25/11/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 9 (teórica) Data 02/12/1998 |
Sumário: Estruturas de dados incompletas: listas de diferença, filas, dicionários, termos incompletos. Técnicas de meta-programação com programação em lógica: programação de predicados que analisam soluções. Apresentação dos predicados de sistema: findall/3, bagof/3 e setof/3. Uso destes predicados em vários exemplos. |
Aula N. 9 (prática) Data 09/12/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 10 (teórica) Data 15/12/1998 |
Sumário: Definição de operadores em Prolog. Interpretadores para dar significado aos novos operadores. Interpretador de Prolog em Prolog: "vanilla meta-interpreter". Interpretadores para extensões à linguagem do Prolog: exemplo de introdução de equivalências. Interpretadores para alterações à semântica operacional do Prolog. Meta-interpretadores para: evitar ciclos infinitos por "ancestor resolution"; devolver justificações simples das provas efectuadas; execução de programas usando outras estratégias de procura (nomedamente procura em largura). |
Aula N. 10 (prática) Data 16/12/1998 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 11 (teórica) Data 05/01/1999 |
Sumário: Técnicas de programação em lógica para implementação de analisadores sintáticos. Notação de DCGs. Uso para programação de "interfaces" simples em língua natural. |
Aula N. 11 (prática) Data 06/01/1999 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |
Aula N. 12 (teórica) Data 12/01/1999 |
Sumário: Introdução a métodos com tabulação para execução de linguagens de programação em lógica. Apresentação informal de método de derivação com tabulação. Mecanismos de suspensão e reactivação de golos. Comparação com misto de execução "bottom-up" e "top-down" de programas. Uso para: programação de fechos transitivos; eficiência de execução de programas; representação de conhecimento. |
Aula N. 12 (prática) Data 13/01/1999 |
Sumário: Resolução dos exercícios constantes da ficha prática correspondente (anexa-se a resolução). |