Teóricas
Aula 27 (T)
Recepção dos trabalhos práticos.
Aula 26 (T)
Recepção dos trabalhos práticos.
Aula 25 (T)
Inquéritos para avaliação do ensino ministrado.
Revisões.
Aula 24 (T)
O tipo abstracto Tabela: exemplos de diferentes implementações destes tipos. Utilização do tipo tabela na continuação do exemplo da aula anterior, agora enriquecido com definições.
Aula 23 (T)
Definição de um tipo algébrico para representação de expressões aritméticas. Definição de funções para: cálculo do valor de uma expresão, apresentação das expressões em notação infixa e posfixa. Reconstrução da expressão aritmética a partir da sua representação em notação posfixa, com o auxilio de uma stack.
Aula 22 (T)
Tipos concretos de dados versos tipos abstractos de dados.
Implementação de tipos abstractos de dados em Haskell usando módulos.
Os tipos abstractos Stack e Queue: exemplos de diferentes implementações destes tipso, e da sua utilização.
Aula 21 (T)
Módulos: os diferentes formas de exportação e importação de entidades; exemplos.
Compilação de programas Haskell.
Aula 20 (T)
Funções de input/output do Prelude e do módulo IO.
Manipulação de ficheiros de texto. Exemplos de como carregar/guardar a informação de/para ficheiro. Vários exemplos.
O construtor de tipos Maybe como instância da classe Monad. Exemplo de utilização.
Aula 19 (T)
Declaração de tipos polimórficos com restrições nos parâmetros.
A hierarquia de classes pré-definidas do Haskell.
Classes de constructores de tipos. A classe Functor e exemplos de instâncias desta classe.
Introdução ao conceito de mónade e apresentação da classe Monad.
O mónade IO; a notação do; funções IO do Prelude. Vários exemplos de funções com acções de input/output.
Aula 18 (T)
Apresentação de algumas classes pré-definidas do Haskell: Ord, Show, Num, Enum e Read. Exemplos da sua utilização.
Declaração do tipo Nat como instância de cada uma destas classes.
Aula 17 (T)
A classe Eq: exemplos de instâncias, instâncias com restrições e instâncias derivadas.
Extensão de classes. Os conceitos de herança e herança múltipla.
A classe Ord. Exemplos.
Aula 16 (T)
Records em haskell: exemplos de utilização.
Polimorfismo paramétrico e polimorfismo ad hoc (sobrecarga de operadores). Tipos qualificados.
Os conceitos de classe e de instância de classe. O conceito de tipo principal.
Exemplos de classes. Definições por omissão de métodos. A classe Eq: exemplos de instâncias.
Semana de avaliação intercalar
Não há aula teórica.
Semana de avaliação intercalar
Não há aula teórica.
Aula 15 (T)
Árvores binárias de procura e árvores balanceadas.
Aula 14 (T)
O tipo de dados árvore binária. Diversas funções recursivas sobre árvores binárias.
Travessias de árvores binárias: preorder, inorder e postorder.
Aula 13 (T)
Tipos algébricos: exemplos tipos recursivos e polimórficos.
Análise de casos (expressões case).
O tipo (Maybe a) e exemplos da sua utilização.
Aula 12 (T)
Definição de novos tipos de dados. Tipos algébricos: exemplos de tipos enumerados e de co-produtos.
Definição do tipo dos números naturais e de funções que manipulam este tipo de dados.
Aula 11 (T)
Funções de ordem superior. A função foldr e a composição de funções. Vários exemplos da sua utilização.
Aula 10 (T)
Funções de ordem superior. As funções map e filter. Exemplos da sua utilização.
Aula 9 (T)
Algoritmos de ordenação de listas. "Insertion sort" e "quick sort" (várias versões).
Função de teste de ordenação.
Aula 8 (T)
Definição e análise de funções recursivas sobre listas.
A função zip e a função unzip.
Aula 7 (T)
Definições locais. Operadores infixos. Funções com guardas.
Os construtores atómicos do tipo lista. Definição de funções recursivas sobre listas.
Aula 6 (T)
Noção de padrão e concordância de padrões. Equações como regras de redução.
Redução: lazy evaluation versus eager evaluation.
Definições multi-clausais de funções. Funções totais e funções parciais.
Tipos sinónimos.
Aula 5 (T)
Dispensa de aulas (despacho RT-61/2007).
Aula 4 (T)
Definição de funções e a sua invocação: curried versus uncurried.
O tipo polimórfico [a] e o tipo String. Algumas funções pré-definidas sobre estes tipos.
Definição de lista por compreensão.
Aula 3 (T)
Inferência de tipos: noção de variável de tipo; funções polimórficas.
A noção de módulo como componente de software, e a sua manipulação.
O módulo Prelude.
Aula 2 (T)
Conceitos fundamentais da programação em Haskell: valores e expressões; tipos básicos e tipos compostos.
Definições de funções simples. Equações como regras de cálculo. Preservação de tipos.
Aula 1 (T)
Apresentação. O paradigma funcional de programação.