Aula Prática – F#
Programação Funcional – 2013.1
Equipe




Arley Ristar
Gabriela Cunha Sampaio
Luana Martins
Roberto Souto Maior
Roteiro



Paradigma Funcional
Paradigma OO e Imperativo
Tópicos Avançados
Paradigma
Funcional
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.
Resolução 1 - Exercício 1:

Teste:
Resolução 2 - Exercício 1:

Teste:
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
Resolução - Exercício 2
Teste da Resolução do Exercício 2
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 {}
Resolução - Exercício 3
Testes da Resolução do Exercício 3
Paradigmas
Imperativo
OO e
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
Resolução - Parte1
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%
Resolução – Parte2
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.
Resolução – Parte3
Resolução – Parte3
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.
Resolução – Parte4
Resolução – Parte4
Tópicos Avançados
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.
Resolução 1 – Parte 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.
Resolução 1 – Parte 2
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.
Resolução 1 – Exercício 2
Resolução 2 – Exercício 2
Obrigado!
Download

Aula Pratica _ FSharp