U.Minho Métodos de Programação I - 2001/02
[ DI/UM ]

Sumários - 2001/2002

J.N. Oliveira 406006

  Aula Teórica de 01.10.02 [Ref:4]:

Sumário: Apresentação da disciplina. Equipa docente.

Programa da disciplina e seu enquadramento no plano de estudos. Teoria e método em programação. Composicionalidade. Interfaces. Combinadores de programas. Modularidade e reutilização. «Pacotes» de programação.

Regime de avaliação. Bibliografia. Informação electrónica sobre a disciplina: URL: http://www.di.uminho.pt/~jno/html/mpi.html.

  Aula Teórica de 01.10.04 [Ref:5]:

Sumário: Introdução à Programação funcional. Conceito de função. A função como contrato. Diagramas de blocos. Domínio e codomínio de uma função. Diagramas funcionais. Setas f : A -> B. Notação funcional com ou sem variáveis.

Início do estudo dos combinadores elementares de programas funcionais: A composição f ·g como combinador elementar de funções. Associatividade da composição: f ·(g ·h) = (f ·g) ·h .

Função identidade id. O polimorfismo de id e a propriedade f ·id = id ·f = f e seu diagramas comutativo.

Funções constantes. O combinador c . Propriedades. Polimorfismo da função constante: c = c ·f.

  Aula Teórica de 01.10.09 [Ref:4]:

Sumário: Estudo dos combinadores elementares de programas funcionais (cont.): O combinador <f,g> e o produto A × B (analogia com «struct» em C) e suas projecções. O combinador [f,g] e o coproduto A + B (analogia com «union» em C) e suas injecções.

Os combinadores f × g e f + g .

Propriedades de cancelamento- × e cancelamento-+.

Apresentação da extensão Mpi.hs ao Prelude.hs do Hugs 98.

  Aula Teórica de 01.10.11 [Ref:5]:

Sumário: Estudo dos combinadores elementares de programas funcionais (cont.): Propriedades universais de <f,g> e de [f,g] e suas derivadas (cancelamento, reflexão e fusão).

Introdução à noção de isomorfismo entre tipos de dados. Motivação: a função swap = <pi2,pi1>, sua propriedade involutiva ( swap ·swap = id ) e o isomorfismo A × B =B × A .

  Aula Teórica de 01.10.16 [Ref:4]:

Sumário: Estudo dos combinadores elementares de programas funcionais (cont.) : Propriedades de absorção-+, × . Propriedades functoriais.

Lei da troca. Diagrama da lei da troca.

  Aula Teórica de 01.10.18 [Ref:5]:

Sumário: Estudo dos combinadores elementares de programas funcionais (cont.) : Exemplo de aplicação da lei da troca: undistr e o isomorfismo (A × B) + (A × C) =A × (B+C). Definição de isomorfismo de dados. Funções bijectivas ou isomorfismos. Função inversa. Outros isomorfismos célebres envolvendo produtos e coprodutos (assocr etc).

Tipos elementares genéricos: 0 , 1 e 2 (resp. Void, () e Bool em HASKELL).

Predicados e guardas. Condicional de McCarthy. Enunciado das leis de fusão do condicional de McCarthy:
f ·(p -> g, h) = p -> f ·g , f ·h
(p -> f, g) ·h = (p ·h) -> (f ·h), (g ·h) .

  Aula Teórica de 01.10.23 [Ref:4]:

Sumário: Estudo dos combinadores elementares de programas funcionais (cont.) : Funções de ordem superior. Noção de espaço funcional. O combinador curry f e o operador ap. A exponencial B^A e seus isomorfismos (eg. curry, split, either etc). As funções ! : A ->1 e ? : 0 ->A .

  Aula Teórica de 01.10.25 [Ref:5]:

Sumário: Continuação da aula anterior.

  Aula Teórica de 01.10.30 [Ref:4]:

Sumário: Constumização de produtos e coprodutos em HASKELL. Álgebra e coálgebras de tipos de dados. O conceito de «apontador» 1 + A (Maybe a em HASKELL).

  Aula Teórica de 01.11.06 [Ref:4]:

Sumário: Introdução aos tipos de dados recursivos a partir de uma analogia com a programação imperativa : Tipos de dados recursivos vistos como equações. As listas ligadas e a equação L =1 + A × L .

  Aula Teórica de 01.11.08 [Ref:5]:

Sumário: Conceitos de catamorfismo e anamorfismo usando o tipo de dados exemplo listas de inteiros: data L = Nil | Cons (Int,L) .

Conceito de hilomorfismo. O factorial visto como um hilomorfismo.

  Aula Teórica de 01.11.13 [Ref:4]:

Sumário: Introdução aos tipos indutivos (cont.) : Apresentação do módulo RList.hs. Estudo da triologia cata-ana-hilo associada ao tipo RList. O algoritmo de cálculo do quadrado de um número visto como hilomorfismo sobre a estrutura RList a.

  Aula Teórica de 01.11.15 [Ref:5]:

Sumário: Apresentação do módulo RList.hs (conclusão) : o algoritmo de ordenação por inserção simples visto como hilomorfismo sobre a estrutura RList a.

Introdução ao tipo de dados árvores binárias simples, ou listas bi-lineares: data BTree a = Empty | Node(a, (BTree a, BTree a)).

Apresentação do módulo BTree.hs.

  Aula Teórica de 01.11.20 [Ref:4]:

Sumário: Apresentação do módulo BTree.hs (conclusão) : Estudo da triologia cata-ana-hilo associada ao tipo BTree. Exemplo: o hilomorfismo qSort (`quick sort').

  Aula Teórica de 01.11.22 [Ref:5]:

Sumário: Apresentação do módulo LTree.hs : Estudo da triologia cata-ana-hilo associada ao tipo LTree. Exemplos: os hilomorfismos dfac (duplo factorial) e fib (série de Fibonacci). O hilomorfismo mSort (`merge sort').

  Aula Teórica de 01.11.27 [Ref:4]:

Sumário: Noção de functor. Propriedades functoriais. Functores em HASKELL: a class Functor e o operador fmap. Exemplos: functor identidade e functor constante.

  Aula Teórica de 01.11.29 [Ref:5]:

Sumário: Noções de functor e bifunctor (cont.) : Noção de bi-functor. Propriedades. Bi-functores em HASKELL: a class BiFunctor e o operador bmap. Exemplos: bifunctores produto e coproduto. Propriedades naturais.

  Aula Teórica de 01.12.04 [Ref:4]:

Sumário: Noções de functor e bifunctor (cont.) : síntese de fmap para o tipo LTree como um catamorfismo. Parametrização e polimorfismo. Introdução ao conceito de functor de tipo (`type functor').

  Aula Teórica de 01.12.06 [Ref:5]:

Sumário: Definição genérica de um tipo indutivo de dados. Noção de functor de base. Operadores fmap vs catamorfismos: Politipismo da definição t a =b(a,t a) de um tipo indutivo genérico paramétrico. Noção de functor de tipo e sua formulação genérica como o catamorfismo t f =cata in ·b(f,id).

Propriedade universal de um catamorfismo cata f do tipo genérico t a =b(a,t a) e suas derivadas: cancelamento-cata e reflexão-cata.

  Aula Teórica de 01.12.11 [Ref:4]:

Sumário: Polimorfismo versus politipismo. Programação dita «genérica». Classificação algorítmica. Quadro sinóptico dos principais algoritmos analisados e estudados ao longo da disciplina:
Classe B(A,X) B(A,C,X) Travessias Ordenação Factorial Outros
RList 1 + A × X cRList2h iSort fac sq
LList 1 + X × A
BTree 1 + A × X² in/pré/pós qSort hanoi
LTree A + X² flatten mSort dfac fib
FTree C + A × X²

  Aula Teórica de 01.12.13 [Ref:5]:

Sumário: Introdução ao conceito de mónada : Motivação: funções parciais e sua composição. Funções monádicas envolvendo listas. Mónadas versus functores. Regra geral para a composição monádica.

  Aula Teórica de 01.12.18 [Ref:4]:

Sumário: Introdução ao conceito de mónada (cont.) : Definição formal. Composição e sua unidade. Multiplicação e suas propriedades. Mónadas em HASKELL: a class Monad e os operadores return, (»=) e ». A notação do. Introdução à notação em compreensão.

  Aula Teórica de 01.12.20 [Ref:5]:

Sumário: Introdução ao conceito de mónada (conclusão) : Apresentação da mónada de IO.

Encerramento da disciplina. Revisão dos sumários. Preenchimento do questionário de avaliação.


Voltar à página principal de MP-I.
Outras disciplinas leccionadas pelo DIUM


J. N. Oliveira
2001-12-20