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!