3

Click here to load reader

- Copie as funções abaixo para um arquivo - ppgsc.ufrn.brrogerio/material_auxiliar/Exercicios_Haskell.pdf · Essa função encontra-se parcialmente definida abaixo. Você deve completar

Embed Size (px)

Citation preview

Page 1: - Copie as funções abaixo para um arquivo - ppgsc.ufrn.brrogerio/material_auxiliar/Exercicios_Haskell.pdf · Essa função encontra-se parcialmente definida abaixo. Você deve completar

- Copie as funções abaixo para um arquivo .hs

-- Calcula o quadrado de um número quadrado x = x*x-- Soma 3 numeros inteirosaddThreeInt :: Int -> Int -> Int -> Int addThreeInt x y z = x + y + z-- Aumenta um numero se ele eh pequenosuperSizeMe x = if x < 100 then x^2 else x

- Teste as funções acima, observando alguns erros que podem ocorrer:

quadrado 5quadrado 5.0quadrado 5.quadrado -4quadrado (-4)addThreeInt 5 6 1addThreeInt 5 6addThreeInt 1 2.0 3superSizeMe 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] -> Intsomatorio [] = 0somatorio 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 "...".

Page 2: - Copie as funções abaixo para um arquivo - ppgsc.ufrn.brrogerio/material_auxiliar/Exercicios_Haskell.pdf · Essa função encontra-se parcialmente definida abaixo. Você deve completar

tamanho :: [Int] -> Inttamanho [] = ...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

Page 3: - Copie as funções abaixo para um arquivo - ppgsc.ufrn.brrogerio/material_auxiliar/Exercicios_Haskell.pdf · Essa função encontra-se parcialmente definida abaixo. Você deve completar

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.