Aula 22 (T)
21/12/2006 Teóricas
Exemplo de implementação do conceito de ordem parcial
através da definição de uma nova classe. Definição do
tipo conjunto como instância desta classe.
Records em Haskell. Exemplos de utilização.
Records em Haskell. Exemplos de utilização.
Aula 21 (T)
18/12/2006 Teóricas
O tipo abstracto Queue, e sua implementação em
Haskell.
Exemplos com de utilização dos tipos abstractos Stack e Queue.
Os tipos abstractos Set e Table. Exemplos de diferentes implementações para estes tipos, e de sua utilização.
Exemplos com de utilização dos tipos abstractos Stack e Queue.
Os tipos abstractos Set e Table. Exemplos de diferentes implementações para estes tipos, e de sua utilização.
Aula 11 (TP)
15/12/2006 Teórico-Práticas
Resolução da ficha de exercícios sobre o jogo do
Euromilhões.
Aula 20 (T)
14/12/2006 Teóricas
Inquéritos para avaliação do ensino ministrado.
Tipos concretos de dados versos tipos abstractos de dados.
Implementação de tipos abstractos de dados em Haskell usando módulos.
O tipo abstracto Stack: exemplos de diferentes implementações deste tipo, e da sua utilização.
Tipos concretos de dados versos tipos abstractos de dados.
Implementação de tipos abstractos de dados em Haskell usando módulos.
O tipo abstracto Stack: exemplos de diferentes implementações deste tipo, e da sua utilização.
Aula 11 (PL)
12/12/2006 Práticas
Laboratoriais
Continuação da resolução de exercícios da ficha de
trabalho 6.
Aula 19 (T)
11/12/2006 Teóricas
Módulos: os diferentes formas de exportação e
importação de entidades; exemplos.
Compilação de programas Haskell.
Compilação de programas Haskell.
Aula 18 (T)
07/12/2006 Teóricas
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.
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 10 (TP)
05/12/2006 Teórico-Práticas
Resolução de exercícios sobre classes.
Exercício sobre a etiquetagem dos nodos de uma árvore com um nº que representa a ordem porque o nodo é visitado numa travessisa inorder.
Exercício sobre a etiquetagem dos nodos de uma árvore com um nº que representa a ordem porque o nodo é visitado numa travessisa inorder.
Aula 17 (T)
04/12/2006 Teóricas
Definição de uma classe para o constructor de tipos
função finita e exemplo de uma instância 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.
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 16 (T)
30/11/2006 Teóricas
A classe Read e exemplos da
sua utilização. Declaração de tipos polimórficos com
restrições nos parâmetros.
A hierarquia de classes pré-definidas do Haskell. Definição de novas classes e exemplos da sua utilização.
Classes de constructores de tipos. A classe Functor e exemplos de instâncias desta classe.
A hierarquia de classes pré-definidas do Haskell. Definição de novas classes e exemplos da sua utilização.
Classes de constructores de tipos. A classe Functor e exemplos de instâncias desta classe.
Aula 9 (TP)
28/11/2006 Teórico-Práticas
Resolução de exercícos sobre árvores. Remoção em
árvores binárias de procura. O conceito de árvore
balanceada. Criação de uma árvore de procura balanceada
a partir de uma lista ordenada.
Aula 15 (T)
27/11/2006 Teóricas
Extensão de classes. Os conceitos de herança e herança
múltipla.
Apresentação de algumas classes pré-definidas do Haskell: Ord, Show, Num e Enum. Declaração do tipo Nat como
instância de cada uma destas classes.
Apresentação de algumas classes pré-definidas do Haskell: Ord, Show, Num e Enum. Declaração do tipo Nat como
instância de cada uma destas classes.
Aula 14 (T)
23/11/2006 Teóricas
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, instâncias com restrições e instâncias derivadas.
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, instâncias com restrições e instâncias derivadas.
Aula 8 (PL)
21/11/2006 Práticas
Laboratoriais
Continuação da resolução de exercícios da ficha de
trabalho 4.
Aula 8 (TP)
21/11/2006 Teórico-Práticas
Resolução de exercícios sobre árvores binárias de
procura, da ficha de trabalho 4.
Aula 14 (T)
20/11/2006 Teóricas
Árvores binárias de procura. Funções de inserção e
pesquisa em árvores binárias de procura.
Definição e análise de duas definições distintas da função de transformação uma lista numa árvore: usando recursividade primitiva, e utilizando um parâmetro de acumulação.
Definição e análise de duas definições distintas da função de transformação uma lista numa árvore: usando recursividade primitiva, e utilizando um parâmetro de acumulação.
Aula 13 (T)
16/11/2006 Teóricas
O tipo de dados árvore binária. Diversas funções
recursivas sobre árvores binárias.
Travessias de árvores binárias: preorder, inorder e postorder.
Travessias de árvores binárias: preorder, inorder e postorder.
Aula 7 (TP)
14/11/2006 Teórico-Práticas
Resolução de alguns exercícios do início da ficha de
trabalho 4.
Aula 12 (T)
13/11/2006 Teóricas
Tipos algébricos: exemplos tipos recursivos e
polimórficos.
Definição do tipo dos números naturais e de funções que manipulam este tipo de dados. Análise de casos (expressões case).
O tipo (Maybe a) e exemplos da sua utilização.
Definição do tipo dos números naturais e de funções que manipulam este tipo de dados. Análise de casos (expressões case).
O tipo (Maybe a) e exemplos da sua utilização.
Aula 11 (T)
09/11/2006 Teóricas
Definição de novos tipos de dados. Tipos algébricos:
exemplos de tipos enumerados e de co-produtos.
Aula 6 (PL)
07/11/2006 Práticas
Laboratoriais
Continuação da resolução de exercícios da ficha de
trabalho 3.
Aula 6 (TP)
07/11/2006 Teórico-Práticas
Resolução de alguns exercícios do final da ficha de
trabalho 3.
Aula 10 (T)
06/11/2006 Teóricas
Funções de ordem superior: a função foldr e a composição
de funções.
Algoritmos de ordenação de listas: insertion sort, quick sort e merge sort. Diversas implementações em Haskell destes algoritmos.
Algoritmos de ordenação de listas: insertion sort, quick sort e merge sort. Diversas implementações em Haskell destes algoritmos.
Aula 9 (T)
02/11/2006 Teóricas
Definição em Haskell de listas por compreensão.
Funções anónimas.
Várias implementações de uma função que calcula os divisores de um número.
Funções anónimas.
Várias implementações de uma função que calcula os divisores de um número.
Aula 5 (PL)
31/10/2006 Práticas
Laboratoriais
Entrega da ficha 2. Início da resolução da ficha de
trabalho 3.
Aula 7 (T)
26/10/2006 Teóricas
Padrões sobre números naturais.
Definição e análise de diferentes versões das funções take e drop.
Definição e análise de diferentes versões das funções take e drop.
Aula 4 (PL)
24/10/2006 Práticas
Laboratoriais
Continuação da resolução de exercícios da ficha de
trabalho 2.
Aula 4 (TP)
24/10/2006 Teórico-Práticas
Resolução de exercícios sobre a definição de funções
sobre listas, para um problema de modelação de uma
viagem, contituída por várias etapas, por uma lista de
pares de horas (de partida e de chegada).
Aula 3 (PL)
16/10/2006 Práticas
Laboratoriais
Início da resolução da ficha 2: Concordância de Padrões
em Haskell; definição multi-clausal de funções;
definições locais.
Aula 3 (TP)
16/10/2006 Teórico-Práticas
Discussão e resolução de exercícios sobre a definição
de funções de listas, usando recursividade
estrutural.
Aula 5 (T)
16/10/2006 Teóricas
Redução: lazy evaluation versus eager
evaluation.
Definições multi-clausais de funções. Funções totais e funções parciais.
Tipos sinónimos. Definições locais. Operadores infixos.
Funções com guardas.
Definições multi-clausais de funções. Funções totais e funções parciais.
Tipos sinónimos. Definições locais. Operadores infixos.
Funções com guardas.
Aula 4 (T)
12/10/2006 Teóricas
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. Noção de padrão e concordância de padrões. Equações como
regras de redução.
O tipo polimórfico [a] e o tipo String. Algumas funções pré-definidas sobre estes tipos. Noção de padrão e concordância de padrões. Equações como
regras de redução.
Aula 2 (TP)
09/10/2006 Teórico-Práticas
Discussão: expressões e tipos em Haskell; definição de
funções.
Aula 2 (PL)
09/10/2006 Práticas
Laboratoriais
Continuação da resolução da Ficha 1. Funções: tipos e
definição. Importação de módulos. Introdução às funções
recursivas.
Aula 3 (T)
09/10/2006
Inferência de tipos: noção de tipo mais geral e de
instância de um tipo.
Operadores básicos do Haskell: lógicos, numéricos, relacionais e
condicionais. A noção de módulo. Introdução de comentários em Haskell.
Operadores básicos do Haskell: lógicos, numéricos, relacionais e
condicionais. A noção de módulo. Introdução de comentários em Haskell.
Aula 1 (PL)
02/10/2006 Práticas
Laboratoriais
Distribuição de logins e passwords. Resolução da Ficha
0: introdução ao ambiente de trabalho Mac OSX;
utilização de um editor de texto, “shell”
do sistema, e interpretador GHCI de Haskell. Início da
resolução da Ficha 1: valores, expressões, e tipos em
Haskell.
Aula 2 (T)
02/10/2006 Teóricas
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.
Inferência de tipos: noção de variável de tipo; funções polimórficas.
Definições de funções simples. Equações como regras de cálculo. Preservação de tipos.
Inferência de tipos: noção de variável de tipo; funções polimórficas.
Aula 7 (T)
10/03/2006
Os construtores do tipo de dados [a].
Padrões do tipo lista. Definição de funções recursivas sobre listas: diversos exemplos.
Padrões do tipo lista. Definição de funções recursivas sobre listas: diversos exemplos.