Universidade de Aveiro
1998/99
1o¯ Semestre 2o¯ Semestre Anual
¡¡
@@
Disciplina Introdu¸c˜ao `a Programa¸c˜ao em L´ogica (IPL)
Curso MAC
Docente Delfim Fernando Marado Torres – 1107
Aula Sum´ario
Te´orica 03.03.99
4a¯-feira, 10h30–12h00
Apresenta¸c˜ao:
– Enquadramento e Objectivos da disciplina;
– Organiza¸c˜ao e esquema de funcionamento;
– Avalia¸c˜ao;
– Programa e Bibliografia.
No¸c˜ao de Programa¸c˜ao e seus Paradigmas:
– Caracteriza¸c˜ao do conceito de problema, resolu¸c˜ao e solu¸c˜ao.
– Fases da programa¸c˜ao: da an´alise aos testes, passando pela prototipagem.
– Compara¸c˜ao do Paradigma de Programa¸c˜ao Imperativo com o Declarativo (Procedimental e L´ogico); referˆencia a linguagens t´ıpicas de cada um destes paradigmas.
O Docente
Aula Sum´ario
Te´orica 05.03.99
6a¯-feira, 9h00–10h30
Introdu¸c˜ao `a Programa¸c˜ao L´ogica:
– Conceitos e defini¸c˜oes base: constante, vari´avel, predicado, termo, ´atomo l´ogico, cl´ausula (facto e regra)
– Outros conceitos: Base de Conhecimento, programa l´ogico,
Te´orico–Pr´atica 05.03.99
6a¯-feira, 10h30–12h30
Como representar conhecimento em Prolog e como “ques- tionar” a base de conhecimento:
– exemplo de uma pequena base de conhecimento sobre video-gravadores;
– exemplo de um sistema de informa¸c˜ao para uma unidade de arqueologia.
Ida aos computadores e introdu¸c˜ao ao uso do SWI-Prolog:
– como introduzir/alterar conhecimento usando um editor de texto em ambiente Win31;
– como chamar o interpretador e sair;
– como consultar uma base de conhecimento;
– cria¸c˜ao do ficheiro “arqueologia.pl”. Coloca¸c˜ao de v´arias quest˜oes (recorrendo j´a ao conceito devari´avel).
O Docente
Aula Sum´ario
Te´orica 10.03.99
4a¯-feira, 10h30–12h00
Os enunciados dos primeiros trabalhos pr´aticos. Algumas considera¸c˜oes a esse respeito.
Programa¸c˜ao L´ogica: do enunciado informal `as cl´ausulas que descrevem o Universo de Conhecimento —as diferentes alter- nativas de representa¸c˜ao e as escolhas que ter˜ao de ser feitas.
V´arios exerc´ıcios de consolida¸c˜ao.
O Docente
Te´orica 12.03.99
6a¯-feira, 9h00–10h30
Mecanismo de inferˆencia e unifica¸c˜ao.
Programa¸c˜ao em L´ogica e a linguagemProlog.
O que se espera de um programa em l´ogica?
Introdu¸c˜ao `a Programa¸c˜ao L´ogica:
– Conceitos: substitui¸c˜ao, instˆancia e unifica¸c˜ao;
– O processo de prova e resolu¸c˜ao de quest˜oes: o conceito de
´
arvore de prova
O Docente
Aula Sum´ario
Te´orico–Pr´atica 12.03.99
6a¯-feira, 10h30–12h30 – Forma¸c˜ao de grupos de trabalho.
– Consolida¸c˜ao, atrav´es de exerc´ıcios, de alguns conceitos:
– Regras (implica¸c˜ao e conjun¸c˜ao);
– Defini¸c˜ao de regras recursivas;
– Como ´e que o prolog responde `as quest˜oes (retrocesso ou
“backtracking”).
O Docente
Aula Sum´ario
Te´orica 17.03.99
4a¯-feira, 10h30–12h00
Introdu¸c˜ao `a Programa¸c˜ao L´ogica: o processo de prova e a constru¸c˜ao (n˜ao determin´ıstica) de uma ´arvore de prova.
V´arios exerc´ıcios de consolida¸c˜ao.
O Docente
Te´orica 19.03.99
6a¯-feira, 9h00–10h30
Significado operacional determin´ıstico: constru¸c˜ao de´arvores de procura. Uso da “estrat´egia standard”. Exemplifica¸c˜ao.
Introdu¸c˜ao ao conceito de lista; defini¸c˜ao formal (recursiva).
Implementa¸c˜ao do predicado pertence/2: pertence(O,L) resulta verdadeiro se, e s´omente se,Opertence `a lista L. Uso deste predicado para mostrar que uma ´arvore de procura pode ter ramos infinitos (e tamb´em pode ter um n´umero infinito de folhas com sucesso).
Influˆencia da ordem das cl´ausulas.
O Docente
Aula Sum´ario
Te´orico–Pr´atica 19.03.99
6a¯-feira, 10h30–12h30 – Aritm´etica em Prolog: +,−,∗,/,mod,//; e o operadoris – Operadores de compara¸c˜ao: >,<,>=, =<, =:=, =\= – Resolu¸c˜ao do “Problema do macaco e das bananas”
– Ida aos computadores:
– testein loco da resolu¸c˜ao adoptada para o problema do macaco e das bananas;
– esclarecimento de d´uvidas acerca dos trabalhos.
O Docente
Aula Sum´ario
Te´orica 24.03.99
4a¯-feira, 10h30–12h00
Entrega dos primeiros trabalhos pr´aticos.
Os enunciados dos segundos trabalhos.
Vis˜ao procedimental da programa¸c˜ao em l´ogica.
Introdu¸c˜ao ao controlo: o corte. Significado operacional do corte e sua influˆencia no percurso standard da ´arvore de procura. Aplica¸c˜oes do corte. V´arios exemplos.
O Docente
Te´orica 26.03.99
6a¯-feira, 9h00–10h30
Apresenta¸c˜ao, discuss˜ao com os grupos e avalia¸c˜ao das reso- lu¸c˜oes dos primeiros trabalhos pr´aticos.
O Docente
Aula Sum´ario
Te´orico–Pr´atica 26.03.99
6a¯-feira, 10h30–12h30
Continua¸c˜ao da apresenta¸c˜ao, discuss˜ao com os grupos e avalia¸c˜ao das resolu¸c˜oes dos primeiros trabalhos pr´aticos.
O Docente
Aula Sum´ario
Te´orica 07.04.99
4a¯-feira, 10h30–12h00
Para al´em do formalismo l´ogico. O predicadocall/1.
Defini¸c˜ao do predicado ifthenelse/3 (condicional) e do predicado repeat/0. Exemplifica¸c˜ao da utilidade dos predi- cados implementados.
O Docente
Aula Sum´ario
Te´orica 09.04.99
6a¯-feira, 9h00–10h30
Nega¸c˜ao como falha.
A constantefail.
A hip´otese do “Mundo Fechado”.
Resolu¸c˜ao de exerc´ıcios.
O Docente
Te´orico–Pr´atica 09.04.99
6a¯-feira, 10h30–12h30
Manipula¸c˜ao de listas:
– Defini¸c˜ao (recursiva) de lista (introduzida na aula te´orica);
– Representa¸c˜ao de listas em Prolog (introduzida na aula te´orica);
– Consolida¸c˜ao do conceito de lista, `a custa da resolu¸c˜ao de v´arios exerc´ıcios: adiciona/3, tira/3, concatena/3, adiciona fim/3, inverte/2, comprimento par/1, comprimento impar/1.
Fez-se notar a versatilidade dos predicados implementados, os quais podem ser usados com fins n˜ao pensados `a priori (uso de v´arias configura¸c˜oes poss´ıveis para inputs e out- puts).
O Docente
Aula Sum´ario
Te´orica 14.04.99
4a¯-feira, 10h30–12h00
Conceito dePilha.
As nota¸c˜oes infixa, pr´efixa e p´osfixa.
Algoritmo para o c´alculo do valor de uma express˜ao p´osfixa.
Constru¸c˜ao e decomposi¸c˜ao de termos: =.. ename. O pre- dicado pr´e-definidonumber/1.
Come¸co da implementa¸c˜ao em Prolog do programa para o c´alculo do valor de express˜oes matem´aticas (ficheiromath.pl).
Concretamente, implementaram-se os seguintes predica- dos principais: primeiros/4, postfix/2, str list/2, valor/2.
(Deixou-se apenas a defini¸c˜ao do predicado infix to postfix/2 para a pr´oxima aula.)
O Docente
Aula Sum´ario
Te´orica 16.04.99
6a¯-feira, 9h00–10h30
Algoritmo de convers˜ao de uma express˜ao infixa para p´osfixa.
Conclus˜ao da implementa¸c˜ao em Prolog do programa para o c´alculo do valor de express˜oes matem´aticas (ficheiromath.pl).
O Docente
Te´orico–Pr´atica 16.04.99
6a¯-feira, 10h30–12h30
Resolu¸c˜ao do Problema“ ´Elle-´e-´erre”, proposto no CeNPL’99 (Concurso/encontro Nacional de Programa¸c˜ao em L´ogica de 1999).
Resolu¸c˜ao do Problema“Os dez degraus do Miguel”, proposto no CNPL’98.
O Docente
Aula Sum´ario
Te´orica 21.04.99
4a¯-feira, 10h30–12h00
Grafos. V´arios tipos de grafos: n˜ao orientados, orientados (digrafos) e grafos pesados (redes). Uma poss´ıvel representa-
¸c˜ao de grafos em Prolog, usando o predicadoarco. Resolu¸c˜ao dos seguintes problemas:
– encontrar um caminho entre dois v´ertices;
– caminho de Hamilton;
– o caminho de custo m´ınimo;
– o caminho de custo m´aximo.
O Docente
Aula Sum´ario
Te´orica 23.04.99
6a¯-feira, 9h00–10h30
Grafos: representa¸c˜oes alternativas emProlog. Compara¸c˜ao das v´arias representa¸c˜oes: identifica¸c˜ao das vantagens e desvantagens de acordo com os problemas a resolver.
Constru¸c˜ao de predicados que transformam grafos de uma representa¸c˜ao para outra.
Arvores. Implementa¸c˜´ ao do predicadoeArvoreque indica se um determinado grafo ´e ou n˜ao uma ´arvore. ´Arvore geradora:
implementa¸c˜ao do predicadoeArvoreGeradora.
O Docente
Te´orico–Pr´atica 23.04.99
6a¯-feira, 10h30–12h30
Resolu¸c˜ao do ProblemaDiofanto:
– C´alculo do M´aximo Divisor Comum de dois n´umeros. Im- plementa¸c˜ao do predicadomdc/4usando o algoritmo de Eu- clides.
– Algumas equa¸c˜oes em n´umeros inteiros. Implementa¸c˜ao do predicadodiofantina/5.
O Docente
Aula Sum´ario
Te´orica 05.05.99
4a¯-feira, 10h30–12h00
Arvores Bin´´ arias:
– Defini¸c˜ao e representa¸c˜ao emProlog.
– Travessias: pr´efixa; infixa e p´osfixa. C´alculo do valor de uma express˜ao matem´atica com operadores bin´arios (tra- vessia p´osfixa numa ´arvore bin´aria).
– Resolu¸c˜ao de exerc´ıcios: pertence/2enodos/2.
O Docente
Aula Sum´ario
Te´orica 07.05.99
6a¯-feira, 9h00–10h30
Introdu¸c˜ao ao conceito de aut´omato finito determinista (AFD): exemplos de motiva¸c˜ao e defini¸c˜ao formal.
Os AFDs como reconhecedores de uma linguagem. Alguns exemplos e exerc´ıcios:
– Dado um AFD determinar a linguagem por ele definida (reconhecida).
– Dada uma linguagem, definir um aut´omato que a aceite.
Aut´omatos completos eincompletos. Como tornar um AFD incompleto num completo.
O Docente
Te´orico–Pr´atica 07.05.99
6a¯-feira, 10h30–12h30
Os mecanismos de Entrada/Sa´ıda do Prolog. Terminal e teclado encarados como um ficheiro e referidos pelo nome user.
– Os predicados: see,tell,seen,told.
– O ´atomoend of file.
– Ler caracteres com ogeteget0.
– Escrever caracteres com oput.
Exemplo da leitura de um ficheiro com informa¸c˜ao na forma item(NumItem,Descri¸c~ao,Pre¸co,NomeFornecedor) e cria¸c˜ao de um outro ficheiro que s´o cont´em items de um dado fornecedor especificado.
Resolu¸c˜ao, com um grafo, do problema Parentes proposto no CeNPL’99.
O Docente
Aula Sum´ario
Te´orica 14.05.99
6a¯-feira, 9h00–10h30
Exemplos de modela¸c˜ao de sistemas reais com aut´omatos.
Implementa¸c˜ao em Prolog de aut´omatos deterministas e de programas gen´ericos de simula¸c˜ao / reconhecimento guiados por AFD’s com ac¸c˜oes semˆanticas (aut´omatos reactivos).
Simula¸c˜ao de umam´aquina de venda de caf´es.
O Docente
Aula Sum´ario
Te´orico–Pr´atica 14.05.99
6a¯-feira, 10h30–12h30
Gera¸c˜ao de n´umeros primos pelo algoritmo do Crivo de Erat´ostenes. Implementa¸c˜ao do predicadoprimos/2.
Resolu¸c˜ao do problemaCodificaproposto no CNPL’98.
Te´orica 19.05.99
4a¯-feira, 10h30–12h00
Simula¸c˜ao de um multi-banco por meio de um aut´omato reactivo.
Aut´omatos finitos n˜ao deterministas. Exemplos.
Aut´omatos finitos com transi¸c˜oes vazias. Exemplos.
Implementa¸c˜ao destes aut´omatos emProlog.
O Docente
Aula Sum´ario
Te´orica 21.05.99
6a¯-feira, 9h00–10h30
Defini¸c˜ao de gram´atica. Gram´aticas Independentes do Con- texto (GIC) na nota¸c˜ao BNF (“Backus-Naur Form”). Exem- plos.
Introdu¸c˜ao de argumentos nos s´ımbolos n˜ao terminais de uma gram´atica: as Gram´aticas de Cl´ausulas Definidas (DCGs).
Sintaxe das DCG’s em Prolog: defini¸c˜ao; convers˜ao (au- tom´atica) para cl´ausulas; execu¸c˜ao.
Exemplo de uma DCG reconhecedora de um subconjunto da l´ıngua portuguesa.
O Docente
Aula Sum´ario
Te´orico–Pr´atica 21.05.99
6a¯-feira, 10h30–12h30
Modela¸c˜ao, por meio de um aut´omato finito determinista, de um controlador `a distˆancia para uma aparelhagem electr´onica de som. Resolu¸c˜ao do problema Comandos proposto no CeNPL’99.
O Docente
Te´orica 26.05.99
4a¯-feira, 10h30–12h00
Conclus˜ao do estudo das Gram´aticas de Cl´ausulas Definidas (DCGs). Exemplos:
– DCG “email”;
– Cria¸c˜ao de um interface em l´ıngua natural para descri¸c˜ao de grafos:
– DCG “grafo”;
– transforma¸c˜ao de uma frase em l´ıngua natural, dada como uma string de palavras separadas por espa¸cos, numa lista cujos elementos s˜ao as palavras.
Entrega dos segundos trabalhos pr´aticos. Algumas consid- era¸c˜oes sobre aapresenta¸c˜ao dos trabalhos.
O Docente
Aula Sum´ario
Te´orica 02.06.99
4a¯-feira, 10h30–12h00
Apresenta¸c˜ao oral, discuss˜ao com os grupos e avalia¸c˜ao das resolu¸c˜oes dos segundos trabalhos pr´aticos.
O Docente
Aula Sum´ario
Te´orica 04.06.99
6a¯-feira, 9h00–10h30
Continua¸c˜ao da apresenta¸c˜ao oral, discuss˜ao com os grupos e avalia¸c˜ao das resolu¸c˜oes dos segundos trabalhos pr´aticos.
O Docente
Aula Sum´ario
Te´orico–Pr´atica 04.06.99
6a¯-feira, 10h30–12h30 – Resolu¸c˜ao do problema das oito rainhas.
– Implementa¸c˜ao, recorrendo a uma DCG, de um interface em l´ıngua natural que permita interagir (acrescentar e con-
Te´orica 09.06.99
4a¯-feira, 10h30–12h00
Sistemas Periciais (SP):
– Introdu¸c˜ao e generalidades sobre os SP.
– Implementa¸c˜ao de um SP emProlog.
O Docente
Aula Sum´ario
Te´orica 11.06.99
6a¯-feira, 9h00–10h30
Os Sistemas Periciais e o tratamento da Incerteza. Conjuntos difusos (vagos) e a l´ogica difusa. Implementa¸c˜ao da l´ogica difusa emProlog.
O Docente
Aula Sum´ario
Te´orico–Pr´atica 11.06.99
6a¯-feira, 10h30–12h30
O “paradoxo” da programa¸c˜ao: muitas vezes, a maneira mais f´acil de resolver um problema consiste em resolver uma sua generaliza¸c˜ao! Ilustra¸c˜ao deste princ´ıpio na resolu¸c˜ao do Problema das Torres de Hanoi, atrav´es de uma abordagem generalista e recursiva.
O Docente
Estat´ısticas
Turno Dadas N˜ao dadas
Te´oricas
1 24 0
Te´orico-Pr´aticas
1 12 0