Paradigmas da Programação I

Ano Lectivo: 04/05 (1º semestre)

Planeamento e Sumário das Aulas


Teóricas
(4ªfeira, 09h00-11h00)
2004/09/22
2004/09/29
2004/10/06
2004/10/13
2004/10/20
2004/10/27
2004/11/03
2004/11/10
2004/11/17
2004/11/24
2004/12/01 (FN)
2004/12/08 (FN)
2004/12/15


Aula T de 2004/09/22

Tópicos:
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 2004/09/29

Tópicos:
Programas Exemplo:
Resumo:
Nesta aula os alunos já devem ter adquirido a sensibilidade para distinguir o paradigma imperativo do paradigma imperativo 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 s 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 2004/10/06

Tópicos:
Programas Exemplo:
Resumo:
O objectivo da aula foi sedimentar os conceitos da aula anterior, mas agora à luz de definições formais (todas as básicas para se escrever ou ler um programa lógico).
Para concretizar as definições revisitaram-se os exemplos da aula anterior e modificou-se um deles para usar um functor de modo a lidar com termos estruturados.


Aula T de 2004/10/13

Tópicos:
Programas Exemplo:
Resumo:
O objectivo da aula foi consolidar as definições formais (todas as básicas para se escrever ou ler um programa lógico) apresentadas na aula anterior e introduzir 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 sobre paternidade (definiram-se o Pai e a Mãe de um conjunto de indivíduos) de modo a desenvolver um programa de Genealogia capaz de encontrar os Antepassados de um Indivíduo ou seus Irmãos.


Aula T de 2004/10/20

Tópicos:
Programas Exemplo:
Exercícios Complementares propostos:
  1. Acrescente à BC, criada na aula, uma regra para definir o predicado Chegadas/5, dual do predicado Partida/5 desenvolvido na aula, mas que agora indique a Origem da viagem.
  2. Acrescente à BC, criada na aula, alguns factos Desvio-Horário/4 para indicar que o comboio CId está a circular com desvio (exacto, ou actual) de M minutos (de atraso, ou avanço) em relação ao horário previsto.
  3. Crie depois uma regra para definir o predicado horaPrevista/3, que permita calcular a hora prevista, HP, para o comboio CId chegar à estação E atendendo ao Horário publicado e ao Desvio-Horário conhecido no momento (estabelecido pelos factos que acrescentou na alínea anterior).
  4. Por fim acrescente à BC, já enriquecida nas alíneas anteriores, o facto Composição/5, definido na aula para indicar o maquinista, a máquina, o número de carruagens de 1ª e de 2ª classes com que o comboio CId vai ser formado, e o facto carruagem/2, que descreve o número de lugares de uma carruagem de 1ª ou de 2ª classe. Depois crie uma regra para definir o predicado Capacidade/2 que calcula o total de passageiros que o comboio CId pode levar, tendo em conta os predicados anteriores.
Resumo:
O objectivo da aula foi consolidar as definições formais apresentadas nas aulas anteriores, agora com o intuito bem definido de modelar o universo de discurso que permita criar um sistema de informação específico para resolver um determinado problema.
Para concretizar esse objectivo de modelação de sistemas complexos, ocupou-se a aula a analisar (incremental e interactivamente) o projecto proposto em LI3, no sentido de desenvolver um sistema de informação sobre os comboios da CP em circulação que permita à empresa responder aos passageiros em questões como Partidas de uma Estação, ou Chegadas, percursos e distâncias, preço dos bilhetes, etc.


Aula T de 2004/10/27

Tópicos:
Programas Exemplo:
Exercícios Complementares propostos:
  1. Acabe todos os pedidos da aula anterior, tomando ainda por base o primeiro ficheiro disponibilizado (que só contém o predicado partidas/5).
  2. Considerando agora o novo programa disponibilizado (acessível no link acima), estude com todo o cuidado os 2 novos predicados: distancia/3 e custo/4, tentando perceber com clareza o uso da recursividade e o modo de lidar com a simetria.
  3. Acrescente à BC um novo predicado, todasAsPartidas/2 que crie (no 2ºargumento) uma lista com a informação relativa a todas as partidas que ocorrem numa dada estação (1ºargumento).
Resumo:
O objectivo da aula foi consolidar o trabalho de modelação de um sistema de gestão das partidas e chegadas de comboios numa estação dos caminhos de ferro, levando todos os alunos a trabalhar no computador com o interpretador SWI-Prolog.
Para isso foram organizados grupos de trabalho na aula e foi solicitado a cada grupo que, tomando como ponto de partida o programa Prolog criado com os factos base da última aula, tentasse resolver os exercícios complementares sugeridos no fim da aula anterior. Foi resolvida a primeira alínea, além de uma série de acertos ao programa e experiências feitas.


Aula T de 2004/11/03

Tópicos:
Exercícios Complementares propostos:
Os alunos foram incentivados a usar o tempo lectivo para acabar todos os exercícios propostos nas 2 aulas anteriores, de modo a procederem à sua entrega individual na próxima semana.
Resumo:
Não dei aula para ir a Lisboa participar (com comunicação) na 5ªCAPSI.


Aula T de 2004/11/10

Tópicos:
Programas Exemplo:
Exercícios Complementares propostos:
Além de se solicitar a entrega dos exercícios já resolvidos foi disponibilizado o enunciado do 1ºTrabalho Prático.
Resumo:
A aula teve duas partes distintas. Na primeira analisaram-se as dificuldades sentidas pelos alunos na resolução dos exercícios propostas e verificaram-se os erros cometidos, tendo-se então clarificado alguns conceitos básicos que são característicos do paradigma lógico.
Além disso, analisaram-se alguns dos predicados incluídos nos ficheiros fornecidos nos sumários acima, de modo a garantir que toda a turma tinha interpretado correctamente o seu significado (mormente o que diz respeito ao cálculo numérico e ao uso da recursividade).
Na segunda parte da aula introduziu-se a definição formal de Lista e escreveram-se alguns predicados para manipulação recursiva de listas, nomeadamente para calcular o seu comprimento, o somatório e para pesquisar o valor associado a uma chaves.


Aula T de 2004/11/17

Tópicos:
Programas Exemplo:
Nesta aula não foi apresentado nenhum novo programa-exemplo (continuou-se a trabalhar com o exemplo "pp104aula8a" da última aula)
Exercícios Complementares propostos:
Resolução do 1ºTrabalho Prático, cujos enunciados alternativos foram explicados.
Resumo:
A aula foi essencialmente ocupada com a análise dos predicados sobre Pesquisa e Inserção em Listas, incluídos no ficheiro com exemplos de listas fornecido no último sumário, de modo a garantir que toda a turma tinha interpretado correctamente o seu significado, sobretudo no que respeita ao uso da recursividade e do backtracking forçado (com a inclusão explícita do predicado fail/0).
Foi ainda estudado o predicado equivalente ao findall/3 que recolhe numa lista todos os valores contidos nos factos que existam na BC relativos a um dado predicado.


Aula T de 2004/11/24

Tópicos:
Programas Exemplo:
Nesta aula não foi apresentado nenhum novo programa-exemplo (o programa pretendido começou a ser construido na própria aula pelos alunos)
Exercícios Complementares propostos:
Sugere-se que os alunos se baseiem nos problemas resolvidos para implementar agora as operações interseccao e diferenca.
Resumo:
A aula foi toda ocupada a discutir a implementação de conjuntos em Prolog (com recurso a Listas) para realizar as tradicionais operações algébricas.
Os alunos estiveram a desenvolver os predicados pertence e uniao.


Aula T de 2004/12/01

Tópicos:
Programas Exemplo:
Exercícios Complementares propostos:
Sugere-se que os alunos validem as suas implementações (propostas como trabalho complementar na aula anterior) das operações de interseccao e diferenca face à ficha de exemplos disponibilizada no ponto anterior.
Resumo:
Não dei aula: FERIADO NACIONAL


Aula T de 2004/12/08

Tópicos:
Resumo:
Não dei aula: FERIADO NACIONAL


Aula T de 2004/12/15

Tópicos:
Programas Exemplo:
Nesta aula não foi apresentado nenhum novo programa-exemplo (continuou-se a trabalhar com o exemplo "pp104aula10a")
Exercícios Complementares propostos:
Sugere-se (com forma de consolidar os importantíssimos conceitos introduzidos nesta aula e preparar o exame) que os alunos construam Árvores de Procura para questões várias sobre cada um dos programa apresentados desde a 1ª aula.
Resumo:
No início da aula, logo após uma breve revisão da solução para os exercícios propostos relativos às operações com conjuntos, revisitou-se o conceito de Árvore de Prova (introduzido na última aula). Usou-se como exemplo de partida o predicado pertence/2.
Depois introduziu-se, como o mesmo exemplo e outros, o conceito de Árvore de Procura, de modo a explicar a noção de unificador, de backtracking, e a dar uma semântica operacional aos predicados true, fail e cut.


author: prh@di.uminho.pt; 
Last modified: 18 de Dezembro de 2004