aula prática – f# programação funcional – 2013.1

33
Aula Prática – F# Programação Funcional – 2013.1

Upload: neusa-lima-domingues

Post on 07-Apr-2016

231 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Aula Prática – F# Programação Funcional – 2013.1

Aula Prática – F#

Programação Funcional – 2013.1

Page 2: Aula Prática – F# Programação Funcional – 2013.1

Equipe Arley Ristar Gabriela Cunha Sampaio Luana Martins Roberto Souto Maior

Page 3: Aula Prática – F# Programação Funcional – 2013.1

Roteiro Paradigma Funcional Paradigma OO e Imperativo Tópicos Avançados

Page 4: Aula Prática – F# Programação Funcional – 2013.1

Paradigma Funcional

Page 5: Aula Prática – F# Programação Funcional – 2013.1

Exercício 1 Crie uma função que recebe uma lista de

inteiros. Os elementos da lista retornada devem ser calculados da seguinte forma:

Se o número da lista original era par, retorne o quadrado dele.

Senão, retorne o cubo.

Page 6: Aula Prática – F# Programação Funcional – 2013.1

Resolução 1 - Exercício 1:

Teste:

Page 7: Aula Prática – F# Programação Funcional – 2013.1

Resolução 2 - Exercício 1:

Teste:

Page 8: Aula Prática – F# Programação Funcional – 2013.1

Exercício 2 Implemente um sort em uma lista de inteiros que utiliza

uma árvore binária de busca para fazer a ordenação. Dicas:

Crie um Discriminated Union do tipo BinaryTree; Crie uma função toTree que recebe uma lista e

retorna um BinaryTree; Crie uma função toList que recebe uma BinaryTree

e retorna a lista ordenada; Crie a função sort que recebe uma lista de inteiros

e retorna a mesma ordenada. (Utilize toTree para realizar a ordenação.)

OBS: Valores iguais não precisam ser considerados

Page 9: Aula Prática – F# Programação Funcional – 2013.1

Resolução - Exercício 2

Page 10: Aula Prática – F# Programação Funcional – 2013.1

Teste da Resolução do Exercício 2

Page 11: Aula Prática – F# Programação Funcional – 2013.1

Exercício 3 Crie um Record de filme. Cada filme tem nome, ano, nomeDiretor e gênero.

Crie um sequence de filmes. Crie uma função retornaDiretores que

recebe um gênero de filme. • Esta função deve retornar um sequence

contendo nome e quantidade de filmes (que o diretor fez no gênero) para todos os diretores que tem algum filme deste gênero.

• DICA: Utilize query {}

Page 12: Aula Prática – F# Programação Funcional – 2013.1

Resolução - Exercício 3

Page 13: Aula Prática – F# Programação Funcional – 2013.1

Testes da Resolução do Exercício 3

Page 14: Aula Prática – F# Programação Funcional – 2013.1

Paradigmas OO e Imperativo

Page 15: Aula Prática – F# Programação Funcional – 2013.1

Exercício - Parte1 Crie uma classe Conta A classe Conta deve ter dois atributos: um número e um saldo. O número não pode ser alterado e o saldo pode.

Na criação da Conta, o usuário irá informar um número e um saldo.

A classe deve também conter métodos de creditar e debitar.

No método de debitar, deve ser feita uma checagem para ver se o saldo é suficiente. Caso isto não aconteça, um erro de SaldoInsuficienteException deve ser lançado

Page 16: Aula Prática – F# Programação Funcional – 2013.1

Resolução - Parte1

Page 17: Aula Prática – F# Programação Funcional – 2013.1

Exercício – Parte2 Crie a classe ContaPoupanca A classe ContaPoupanca tem tudo que a

classe Conta tem e também um método renderJuros que irá somar ao saldo 0.5%

Page 18: Aula Prática – F# Programação Funcional – 2013.1

Resolução – Parte2

Page 19: Aula Prática – F# Programação Funcional – 2013.1

Exercício – Parte3 Crie a classe ContaExtrato que terá tudo que

a classe Conta tem. Além disso, ela deve ter um registro de operações (uma lista de strings). Sempre que houver uma ação de crédito/débito, deve ser feita uma adição no registro para que se saiba que aquela operação foi feita.

Page 20: Aula Prática – F# Programação Funcional – 2013.1

Resolução – Parte3

Page 21: Aula Prática – F# Programação Funcional – 2013.1

Resolução – Parte3

Page 22: Aula Prática – F# Programação Funcional – 2013.1

Exercício – Parte4 Adicione métodos de transferir (este deve

receber duas contas e realizar a transferência), printar conta,(recebe uma Conta e printa seus dados) e um método para imprimir o extrato da conta (no caso de ser uma ContaExtrato)

Adicione também um método Main e nele crie um Banco (um registro de contas, e realize operações com as contas). Agora execute seu código e veja o resultado.

Page 23: Aula Prática – F# Programação Funcional – 2013.1

Resolução – Parte4

Page 24: Aula Prática – F# Programação Funcional – 2013.1

Resolução – Parte4

Page 25: Aula Prática – F# Programação Funcional – 2013.1

Tópicos Avançados

Page 26: Aula Prática – F# Programação Funcional – 2013.1

Exercício 1 - Parte 1 Crie as seguintes unidades de medidas:

Metro Quilograma Segundo Newton ((kg*m)/(s²))

Em seguida crie uma função force que recebe uma massa em quilos e uma aceleração em m/s² e tenha como saída o tipo Newton.

Page 27: Aula Prática – F# Programação Funcional – 2013.1

Resolução 1 – Parte 1

Page 28: Aula Prática – F# Programação Funcional – 2013.1

Exercício 1 - Parte 2 Crie as seguintes unidades de medidas:

Quilometro Hora

Crie a conversão de segundos para hora, de quilometro para metros e de metros por segundos para quilômetros por hora.

Agora crie o inverso das conversões acima.

Page 29: Aula Prática – F# Programação Funcional – 2013.1

Resolução 1 – Parte 2

Page 30: Aula Prática – F# Programação Funcional – 2013.1

Exercício 2 - ASync Crie um Fibonacci. Copie e modifique ele para utilizar a

expressão de cálculo Async e poder ser executado em paralelo.

Deixe o tempo de execução ligado (#time;;) Compare a velocidade dos fibonaccis para 5,

10 e 20.

Page 31: Aula Prática – F# Programação Funcional – 2013.1

Resolução 1 – Exercício 2

Page 32: Aula Prática – F# Programação Funcional – 2013.1

Resolução 2 – Exercício 2

Page 33: Aula Prática – F# Programação Funcional – 2013.1

Obrigado!