Paradigmas da Programação I
Ano Lectivo: 05/06 (1º semestre)
Planeamento e Sumário das Aulas
Aula T de 2005/09/21
Tópicos:
- Apresentação geral da disciplina:
- Objectivos e Funcionamento;
- Avaliação e Trabalhos práticos;
- Programa e Bibliografia
Resumo:
Os alunos foram avisados sobre a obrigatoriedade de fazerem as 2 Fichas Práticas que serão propostas ao longo do semestre
e sobre a importância de lerem toda a informação básica sobre a Disciplina,
através da Página WWW.
Quanto ao principal objectivo, foi clarificado que não se tratava de um curso para ensinar apenas a usar a linguagem de programação
Prolog, mas que era essencialmente destinado a levar os alunos a compreender a importância da noção de paradigma de programação
na resolução de um problema por computador, dando-se especial ênfase ao paradigma declarativo lógico (relacional).
Aula T de 2005/09/28
Tópicos:
- Introdução à Programação em Lógica e ao Prolog:
- Problemas e Programação
- Linguagens de Programação e paradigmas; imperativo versus declarativo; monolítico versus modular e orientado aos objectos.
- Bases do paradigma declarativo lógico, uma abordagem relacional.
- Noção de "Universo de Discurso" com suas "Entidades" ("seres", ou "classes de coisas" caracterizadas por propriedades) e respectivos "Relacionamentos"
- Introdução informal ao conceito de predicado, termo e cláusula; exemplos.
Programas Exemplo:
Resumo:
Nesta aula os alunos já devem ter adquirido a sensibilidade para distinguir o paradigma imperativo do paradigma declarativo
e devem ter-se apercebido da diferença entre executar no SO um programa compilado, ou interpretar num ambiente de programação um programa declarativo.
Além disso é pressuposto que os alunos tenham ficado a saber que um programa pode ser apenas uma Base de Factos, mas que
só tem realmente interesse quando se lhe junta uma Base de Regras de Inferência.
Finalmente devem ter captado empiricamente a noção de Variável Lógica e de Unificação.
Aula T de 2005/10/05
Tópicos:
- Não houve aula: feriado nacional (Implantação da República)
Aula T de 2005/10/12
Tópicos:
- Introdução à Programação em Lógica e ao Prolog:
- Reforço de todos os conceitos fundamentais introduzidos na aula anterior:
- Problemas e Programação
- Bases do paradigma declarativo lógico, uma abordagem relacional.
- Noção de "Universo de Discurso" com suas "Entidades" ("seres", ou "classes de coisas" caracterizadas por propriedades) e respectivos "Relacionamentos"
- Definição formal de Programa Lógico (sequência de Cláusulas de Horn) e dos seus elementos básicos:
cabeça e corpo da cláusula; factos e regras; átomo lógico; predicado (com nome e argumentos); e termo (constante, variável e termos estruturados com functores).
- Introdução ao uso da recursividade na definição de regras de inferência.
Programas Exemplo:
Resumo:
Foi objectivo desta aula reforçar todos os conceitos básicos das aulas anteriores para garantir que
os alunos tenham ficado a saber que um programa é um conjunto (na realidade, sequência) de Cláusulas de Horn
e pode ser apenas uma Base de Factos ou ainda conter uma Base de Regras de Inferência.
Devem, ainda, ter captado a noção de Variável Lógica e de Unificação.
Nesta aula também se introduziu o uso da recursividade no corpo
das regras de dedução para inferir conhecimento não directo.
Para concretizar as definições e empregar a recursividade, construiu-se na aula,
com a ajuda de toda a turma, uma base de conhecimento que respresentava a estrutura hierárquica (taxonomia) de
uma Instituição.
Aula T de 2005/10/19
Tópicos:
- Introdução à Programação em Lógica e ao Prolog:
- Reforço de todos os conceitos fundamentais introduzidos na aula anterior:
- Problemas e Programação
- Bases do paradigma declarativo lógico, uma abordagem relacional.
- Noção de "Universo de Discurso" com suas "Entidades" ("seres", ou "classes de coisas" caracterizadas por propriedades) e respectivos "Relacionamentos"
- Definição formal de Programa Lógico (sequência de Cláusulas de Horn) e dos seus elementos básicos:
cabeça e corpo da cláusula; factos e regras; átomo lógico; predicado (com nome e argumentos); e termo (constante, variável e termos estruturados com functores).
- Uso da recursividade na definição de regras de inferência.
Programas Exemplo:
Resumo:
Foi objectivo desta aula reforçar todos os conceitos básicos das aulas anteriores para garantir que
os alunos tenham ficado a saber que um programa é um conjunto (na realidade, sequência) de Cláusulas de Horn
e pode ser apenas uma Base de Factos ou ainda conter uma Base de Regras de Inferência.
Devem, ainda, ter reforçado a noção de Variável Lógica, de Unificação e de Backtracking.
Aula T de 2005/10/26
Tópicos:
- Programação Lógica (continuação da aprendizagem):
- Reforço de todos os conceitos fundamentais introduzidos na aula anterior:
- Modelação de um sistema em Lógica, usando predicados e termos, factos e regras, para descrever todo o conhecimento
sobre o Universo de Discurso que permitirá encontrar as respostas desejadas.
Exercícios Complementares propostos:
Os alunos foram incentivados a usar o tempo lectivo para acabar todos os exercícios propostos nas aulas anteriores,
de modo a procederem à sua entrega individual na próxima semana.
Resumo:
Não dei aula para ir a Bragança participar (com comunicação) na 6ªCAPSI.
Aula T de 2005/11/02
Tópicos:
- Introdução à Programação em Lógica e ao Prolog:
- Reforço de todos os conceitos fundamentais introduzidos nas aulas anteriores.
- Sistematização dos Tipos de Dados em Prolog: Valores Atómicos (numéricos, palavras, booleanos, strings);
Valores Estruturados (tuplos ou agregações-Functores, Listas).
- Definição formal de Listas; sua sintaxe e manipulação.
- Apresentação do 1º Trabalho Prático (ver enunciado, LaTeX e PDF na rúbrica respectiva da Página WWW da disciplina).
- Modelação do Teclado Inteligente --visto como uma Máquina de Transição de Estados--
através de um Autómato Determinista.t
Programas Exemplo:
Resumo:
A primeira desta aula foi dedicada a reforçar todos os conceitos básicos das aulas anteriores para garantir que
os alunos tenham ficado a saber que um programa é um conjunto (na realidade, sequência) de Cláusulas de Horn
e pode ser apenas uma Base de Factos ou ainda conter uma Base de Regras de Inferência.
Devem, ainda, ter reforçado a noção de Variável Lógica, de Unificação e de Backtracking.
Fez-se, ainda nesa primeira parte, a sistematização de todos os tipos de dados que podem aparecer em Prolog
de modo a reforçar o conceito de Functor para implementar a noção de valor agregado (tuplo)
e a introduzir o conceito de Lista e a sua definição (formal) recursiva.
Na segunda parte da aula, apresentou-se o Trabalho Prática nuº 1 e Introduziu-se o conceito de
Máquina de Transição de Estados e sua Modelação como um Autómato Determinista.
Aula T de 2005/11/09
Tópicos:
- Introdução à Programação em Lógica e ao Prolog:
- Reforço de todos os conceitos fundamentais introduzidos nas aulas anteriores.
- Modelação de um sistema em Lógica, usando predicados e termos, factos e regras, para descrever todo o conhecimento
sobre o Universo de Discurso que permitirá encontrar as respostas desejadas.
- Sistematização dos Tipos de Dados em Prolog: Valores Atómicos (numéricos, palavras, booleanos, strings);
Valores Estruturados (tuplos ou agregações - Functores, Listas).
- Definição formal de Listas; sua sintaxe e manipulação.
- Discussão da resolução do 1º Trabalho Prático, proposto na aula anterior:
Modelação do Teclado Inteligente e do Sistema de Informação, que o suporta, sobre alunos e exames.
Exercícios Complementares propostos:
Os alunos foram incentivados a usar o tempo lectivo para acabar todos os exercícios propostos nas aulas anteriores,
nomeadamento o Trabalho Prático de modo a procederem à sua entrega na próxima semana.
Resumo:
Não dei aula para ir a Évora participar num Júri de Equivalência ao grau de Doutor.
Aula T de 2005/11/16
Tópicos:
- Introdução à Programação em Lógica e ao Prolog:
- Sistematização dos Tipos de Dados em Prolog: Valores Atómicos (numéricos, palavras, booleanos, strings);
Valores Estruturados (tuplos ou agregações-Functores, Listas).
- Manipulação (formal) recursiva de Listas --comprimento, somatório e membro--
versus manipulação de Tuplos.
- Modelação de um sistema em Lógica, usando predicados e termos, factos e regras, para descrever todo o conhecimento
sobre o Universo de Discurso que permitirá encontrar as respostas desejadas.
- Discussão da resolução (efectuada pelos vários grupos) do 1º Trabalho Prático:
Modelação do Sistema de Informação que o suporta (alunos, exames e notas).
- Proposta de uma ficha de exercícios sobre o uso de Autómatos Deterministas Reactivos para modelar
sistema do tipo Máquina de Transição de Estados.
Exercícios Complementares propostos:
Os alunos foram incentivados a praticar a manipulação de Listas escrevendo mais 2 predicados semelhantes aos da aula:
dobro e maximo, tendo para isso sido fornecido o ficheiro de base
Predicados para Manipulação de Listas
Quanto ao Trabalho Prático foi recordado que faltava modelar a componente do Teclado para terminar
o problema antes de finalizar a sua entrega.
Para trabalhar a modelação de sistema via ADR foi proposta a
Ficha de Exercícios sobre Autómatos Deterministas Reactivos
Resumo:
A aula teve três momentos distintos.
No primeiro viu-se a resolução do 1º TP (componente do SI de suporte) efectuada por um dos grupos,
discutiu-se a abordagem e comparou-se com a resolução proposta pelos outros grupos.
Depois discutiu-se detalhadamente o conceito de Lista e sua definição recursiva, tendo-se escrito
os predicados que implementam algumas das operações clássicas básicas sobre Listas.
Por fim falou-se da importância dos Autómatos Deterministas Reactivos para modelar sistemas (físicos
ou programas) que se comportam como MTE's.
Aula T de 2005/11/23
Tópicos:
- Introdução à Programação em Lógica e ao Prolog:
- Manipulação (formal) recursiva de Listas; continuação: comprimentoListaListas, dobro e maximo.
- Modelação de um sistema em Lógica, usando predicados e termos, factos e regras, para descrever todo o conhecimento
sobre o Universo de Discurso que permitirá encontrar as respostas desejadas.
- Resolução da ficha de exercícios,
proposta na aula anterior, sobre o uso de Autómatos Deterministas Reactivos para modelar
sistema do tipo Máquina de Transição de Estados.
Exercícios Complementares propostos:
Os alunos foram incentivados a praticar a manipulação de Listas escrevendo mais 2 predicados semelhantes aos da aula:
interseccao e uniao de conjuntos, tendo para isso sido fornecido o ficheiro de base
Predicados para Manipulação de Listas
Para trabalhar a modelação de sistemas via AD's,
iniciada nesta aula com a resolução do Problema 1.1,
é aqui fornecido o ficheiro de base
Predicados
para implementação de Autómatos Deterministas
Resumo:
A aula teve dois momentos distintos.
No primeiro discutiu-se detalhadamente o conceito de Lista e sua definição recursiva, tendo-se escrito
os predicados que implementam algumas das operações clássicas básicas sobre Listas.
No segundo falou-se da forma genérica de definir um Autómato Determinista
em Prolog (predicados automato e delta) e concretizou-se
com a definição do AD para o problema 1.1 da ficha de exercícios proposta.
Foi ainda referida a necessidade de implementar um predicado caminhar que receba como argumentos de
entrada um AD, um estado e uma frase (sequência de símbolos terminais
do vocabulário) e determine o
estado de chegada percorrendo um caminho no autómato determinado pela sua
função de transição delta.
Aula T de 2005/11/30
Tópicos:
- Modelação de um sistema em Lógica, usando predicados e termos, factos e regras, para descrever todo o conhecimento
sobre o Universo de Discurso que permitirá encontrar as respostas desejadas.
- Resolução da ficha de exercícios,
proposta na aula anterior, sobre o uso de Autómatos Deterministas Reactivos para modelar
sistema do tipo Máquina de Transição de Estados.
Exercícios Complementares propostos:
Para trabalhar a modelação de sistema via ADR, concluida nesta aula com a
resolução do Problema 1.1,
é aqui fornecido o ficheiro de base
Predicados
para implementação de Autómatos Deterministas Reactivos
Resumo:
A aula teve dois momentos distintos.
No primeiro conclui-se a modelação em Prolog de
um Autómato Determinista (aplicado ao problema 1.1) com o desenvolvimento
de um predicado aceita que verifica se uma frase pertence
à linguagem definida pelo Autómato.
No segundo falou-se da forma genérica de definir um Autómato Determinista
Reactivo em Prolog
(predicados automato, deltalalfa e accaoSem) e
concretizou-se com a definição do ADR para
o mesmo problema 1.1 da ficha de exercícios proposta.
Foi ainda implementado um predicado caminharExec
que receba como argumentos de
entrada um ADR, um estado e uma frase (sequência de símbolos terminais do vocabulário)
e determine o
estado de chegada percorrendo um caminho no autómato determinado pela
sua função de transição deltaalfa.
Para produzir a reacção desejada, esse predicado caminharExec
terá de ir executando as acções semânticas
associadas pela função alfa às transições.
Adaptou-se o predicado aceita para obter um predicado processa
que além de verificar a correcção sintcática da frase, realiza a sequência
de acções que conduz ao tratamento pretendido para a frase de entrada.
Aula T de 2005/12/07
Tópicos:
- Modelação de um sistema em Lógica, usando predicados e termos, factos e regras, para descrever todo o conhecimento
sobre o Universo de Discurso que permitirá encontrar as respostas desejadas.
- Continuação da Resolução da ficha de exercícios,
proposta na aula anterior, sobre o uso de Autómatos Deterministas Reactivos para modelar
sistema do tipo Máquina de Transição de Estados.
Exercícios Complementares propostos:
Para trabalhar a modelação de sistema via ADR, concluida nesta aula com a
resolução do Problema 1.2,
é aqui fornecido o ficheiro de base
Predicados
para implementação de Autómatos Deterministas Reactivos
Resumo:
Nesta aula recapitulou-se tudo que foi dito na aula anterior sobre
a forma genérica de definir um Autómato Determinista
Reactivo em Prolog
(predicados automato, deltalalfa, accaoSem, caminharExec e processa) e
reforçou-se a sua concretização prática, desta vez com a definição do ADR para
o problema 1.2 da ficha de exercícios proposta.
Aula T de 2005/12/14
Tópicos:
- Programação em Lógica:
- Discussao do TP1 com cada grupo de trabalho para avaliação.
Resumo:
Nesta aula foram avaliados os Trabalhos Práticos (1ªfase) e teceram-se cometários
a cada grupo no sentido de identificar as qualidades e os defeitos.
Foi definida a data para entrega final do TP2 e esclarecidas algumas dúvidas dos alunos.
author: prh@di.uminho.pt;
Last modified: 14 de Dezembro de 2005