- Copie as funções abaixo para um arquivo .hs -- Calcula o quadrado de um número quadrado x = x*x -- Soma 3 numeros inteiros addThreeInt :: Int -> Int -> Int -> Int addThreeInt x y z = x + y + z -- Aumenta um numero se ele eh pequeno superSizeMe x = if x < 100 then x^2 else x - Teste as funções acima, observando alguns erros que podem ocorrer: quadrado 5 quadrado 5.0 quadrado 5. quadrado -4 quadrado (-4) addThreeInt 5 6 1 addThreeInt 5 6 addThreeInt 1 2.0 3 superSizeMe 10 Mostre as saídas do programa. - // - 1. Defina uma função par :: Int -> Bool, para verificar se um número inteiro é par ou ímpar. Use a função mod, que retorna o resto de uma divisão inteira (ex.: mod 4 2 retorna 0). Para testar a igualdade, use o operador ==. 2. Escreva uma função head2 :: [Int] -> Int que retorne o quadrado do primeiro elemento de uma lista. 3. Escreva uma função conceito :: Float -> Char que receba uma nota como argumento e retorne o conceito correspondente, conforme as regras abaixo. Obs.: operador 'e' em Haskell se escreve '&&'. • • • • • Nota >= 9.0, conceito A Nota >= 7.5 e < 9.0, conceito B Nota >= 6.0 e < 7.5, conceito C Nota >= 4.0 e < 6.0, conceito D Nota < 4.0, conceito E 4. Observe a função abaixo, que usa recursão para calcular o somatório dos elementos de uma lista. A função é definida para 2 casos: o primeiro é o caso base da recursão, que é a lista vazia; o segundo é o caso geral, onde o somatório se define como a soma do primeiro elemento com o somatório do restante dos elementos. somatorio :: [Int] -> Int somatorio [] = 0 somatorio lis = head lis + somatorio (tail lis) 5. Usando a lógica do exercício anterior, defina uma função tamanho :: [Int] -> Int para calcular o tamanho de uma lista de inteiros usando recursão. Essa função encontra-se parcialmente definida abaixo. Você deve completar a parte marcada com "...". tamanho :: [Int] -> Int tamanho [] = ... tamanho lis = ... 6. Defina uma função recursiva produtorio :: [Int] -> Int para calcular o produtório dos elementos de uma lista. 7. Forneça uma temperatura em graus Fahrenheit a partir de uma temperatura em graus Celsius. O grau Fahrenheit (símbolo: °F) é uma escala de temperatura proposta por Daniel Gabriel Fahrenheit em 1724. Nesta escala o ponto de fusão da água é de 32 °F e o ponto de ebulição de 212 °F. Uma diferença de 1,8 grau Fahrenheit equivale à de 1 °C. 8. Uma empresa decidiu dar a seus funcionários um abono de salario, baseando-se nos pontos obtidos durante o mês, de acordo com a tabela: 9. Considere que o preço de uma passagem de avião em um trecho pode variar dependendo da idade do passageiro. Pessoas com 60 anos ou mais pagam apenas 60% do preço total. Crianças até 10 anos pagam 50% e bebês (abaixo de 2 anos) pagam apenas 10%. Faça uma função que tenha como entrada o valor total da passagem e a idade do passageiro e produz o valor a ser pago. 10. Faça uma função que recebe um numero e retorna verdadeiro se o numero for par. 11. Faça uma função que recebe dois valores e retorna o menor. 12. Faça uma função que recebe três valores e retorna o menor. 7. Escreva uma função recursiva para calcular o fatorial de um numero natural. 13. Especifique as seguintes funções para a manipulação de listas: a) nro-elementos: recebe uma lista qualquer e retorna o número de elementos na lista. b) maior: recebe uma lista de números e retorna o maior . c) conta-ocorrencias: recebe um elemento e uma lista qualquer e retorna o número de ocorrências do elemento na lista. d) unica-ocorrencia: recebe um elemento e uma lista e verifica se existe uma única ocorrência do elemento na lista . ex.: unica-ocorrencia 2 [1,2,3,2] = False unica-ocorrencia 2 [3,1] = False unica-ocorrencia 2 [2] = True e) maiores-que: recebe um número e uma lista de números e retorna uma lista com os números que são maiores do que o valor informado. ex.: maiores-que 10 [4 6 30 3 15 3 10 7] ==> [30 15] f) concatena: recebe duas listas quaisquer e retorna uma terceira lista com os elementos da primeira no início e os elementos da segunda no fim. ex.: concatena [] [] ==> [] concatena [1 2] [3 4] ==> [1 2 3 4] g) duplica: recebe uma lista e retorna uma nova lista contendo a duplicação dos elementos da lista original. ex: duplica [1, 2, 3] ==> [1,1,2,2,3,3] 14. Crie uma função que intercala os elementos de duas listas, de qualquer tamanho, contendo números inteiros, numa nova lista . Ex: >intercala [1,2,3,4] [100,200] [1, 100, 2, 200,3, 4] 15. Defina novos tipos para representar os dados contidos numa agenda telefônica pessoal. Em seguida, crie uma função para recuperar o nome de um contato, a partir de um número de telefone. Caso o número não seja encontrado, retornar a mensagem “Telefone desconhecido”. 16. Faça uma função para converter uma data, escrita no formato dd/mm/aaaa (calendário Gregoriano) na correspondente data (ddd/aaaa) do calendário Juliano.