Introdução à Programação Aula Prática Biblioteca Allegro Monitoria 2013.1.
Aula Prática – F# Programação Funcional – 2013.1.
-
Upload
neusa-lima-domingues -
Category
Documents
-
view
235 -
download
2
Transcript of Aula Prática – F# Programação Funcional – 2013.1.
![Page 1: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/1.jpg)
Aula Prática – F#
Programação Funcional – 2013.1
![Page 2: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/2.jpg)
Equipe Arley Ristar Gabriela Cunha Sampaio Luana Martins Roberto Souto Maior
![Page 3: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/3.jpg)
Roteiro Paradigma Funcional Paradigma OO e Imperativo Tópicos Avançados
![Page 4: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/4.jpg)
Paradigma Funcional
![Page 5: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/5.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/6.jpg)
Resolução 1 - Exercício 1:
Teste:
![Page 7: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/7.jpg)
Resolução 2 - Exercício 1:
Teste:
![Page 8: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/8.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/9.jpg)
Resolução - Exercício 2
![Page 10: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/10.jpg)
Teste da Resolução do Exercício 2
![Page 11: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/12.jpg)
Resolução - Exercício 3
![Page 13: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/13.jpg)
Testes da Resolução do Exercício 3
![Page 14: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/14.jpg)
Paradigmas OO e Imperativo
![Page 15: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/15.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/16.jpg)
Resolução - Parte1
![Page 17: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/17.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/18.jpg)
Resolução – Parte2
![Page 19: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/19.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/20.jpg)
Resolução – Parte3
![Page 21: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/21.jpg)
Resolução – Parte3
![Page 22: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/22.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/23.jpg)
Resolução – Parte4
![Page 24: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/24.jpg)
Resolução – Parte4
![Page 25: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/25.jpg)
Tópicos Avançados
![Page 26: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/26.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/27.jpg)
Resolução 1 – Parte 1
![Page 28: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/28.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/29.jpg)
Resolução 1 – Parte 2
![Page 30: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/30.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/31.jpg)
Resolução 1 – Exercício 2
![Page 32: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/32.jpg)
Resolução 2 – Exercício 2
![Page 33: Aula Prática – F# Programação Funcional – 2013.1.](https://reader036.fdocuments.net/reader036/viewer/2022062522/570638581a28abb8238fc939/html5/thumbnails/33.jpg)
Obrigado!