Métodos de Programação I - 2001/02 | |
---|---|
[ DI/UM ] |
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