Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Lista 1 Haskell.hsfuncaodobro a = a*2 funcaoquadruplo a = funcaodobro a*2 s1 a = a+1 s2 a = s1 a+1 media a b c = (a+b+c)/3 delta a b c = (b^2)-4*a*c raizmaior a b c = -b+sqrt (delta a b c)/2*a raizmenor a b c = -b-sqrt (delta a b c)/2*a temperaturac c = 9*c/5 + 32 temperaturaf f = (f-32)*5/9 conversao 'c' 'f' c = if (c/= temperaturac c) then 9*c/5+32 else 0 ponto a b p = if (p>=a) && (p<=b) then "dentro" else "fora" nota a b c d e f = if not(((a>=0) && (a<=10) && (b>=0) && (b<=10) && (c>=0) && (c<=10) && (d>=0) && (d<=10) && (e>=0) && (e<=10) && (f>=0) && (f<=10))) then error "Nota Invalida" else ((a+b+c+d+e+f) - menor - maior)/4 where menor = min a(min b(min c(min d(min e f)))) maior = max a(max b(max c(max d(max e f)))) ehAnoBissexto a = if (mod a 400==0) || (mod a 4==0) && (not(mod a 100==0)) then True else False ehDataValida d m a = if ((m==1) || (m==3) || (m==5) || (m==7) || (m==8) || (m==10) || (m==12)) && ((d>=1) && (d<=31)) then True else if ((m==4) || (m==6) || (m==9) || (m==11)) && ((d>=1) && (d<=30)) then True else if (m==2) && (ehAnoBissexto a) && (d>=1) && (d<=29) then True else if (m==2) && (d>=1) && (d<=28) then True else False horoscopo d m a = if (not(ehDataValida d m a)) then "Por favor, insira uma data valida!" else if (m==3) && (d>=21) && (d<=31) then "Aries" else if (m==4) && (d>=1) && (d<=20) then "Aries" else if (m==4) && (d>=21) && (d<=30) then "Touro" else if (m==5) && (d>=1) && (d<=20) then "Touro" else if (m==5) && (d>=21) && (d<=31) then "Gemeos" else if (m==6) && (d>=1) && (d<=21) then "Gemeos" else if (m==6) && (d>=22) && (d<=30) then "Cancer" else if (m==7) && (d>=1) && (d<=21) then "Cancer" else if (m==7) && (d>=22) && (d<=31) then "Leao" else if (m==8) && (d>=1) && (d<=22) then "Leao" else if (m==8) && (d>=23) && (d<=31) then "Virgem" else if (m==9) && (d>=1) && (d<=22) then "Virgem" else if (m==9) && (d>=23) && (d<=30) then "Libra" else if (m==10) && (d>=1) && (d<=22) then "Libra" else if (m==10) && (d>=23) && (d<=31) then "Escorpiao" else if (m==11) && (d>=1) && (d<=21) then "Escorpiao" else if (m==11) && (d>=22) && (d<=30) then "Sagitario" else if (m==12) && (d>=1) && (d<=21) then "Sagitario" else if (m==12) && (d>=22) && (d<=31) then "Capricornio" else if (m==1) && (d>=1) && (d<=20) then "Capricornio" else if (m==1) && (d>=21) && (d<=31) then "Aquario" else if (m==2) && (d>=1) && (d<=19) then "Aquario" else "Peixes" Lista 1 Haskell.pdf Lista de exerćıcios 1 Atenção: escreva todas as suas funções em um só script. 1. Crie uma função dobro que recebe um valor numérico e retorna-o dobrado. 2. Usando a função dobro, crie uma função quadruplo que calcula o quádruplo de um número. 3. Crie uma função s1 que recebe um número e calcula o seu sucessor. 4. Usando a função sucessor, crie uma função s2 que calcula o sucessor do sucessor de um número. 5. Média entre três números. 6. Faça uma função que calcule o delta de uma eq. do 2o grau, onde ∆ = b2 − 4ac 7. Usando a função do exerćıcio anterior, crie uma função para calcular a raiz maior do 2o grau, dada por (−b + √ ∆)/2a 8. Raiz menor do 2o grau: (−b− √ ∆)/2a 9. Receba uma temperatura em graus Celsius e retorne a temperatura correspondente em graus Fahrenheit. Use a fórmula f = 9c/5 + 32 10. Conversão de Fahrenheit para Celsius. Usando a fórmula dada no ex. anterior, obtenha a fórmula para fazer a conversão oposta. 1 Funções com if-then-else 11. Conversão condicional de temperaturas: usando as funções de con- versão separadas que você criou anteriormente, crie uma função que receba três parâmetros, o primeiro e o segundo correspondendo a dois chars indicando escalas de origem e de destino, respectivamente, e o terceiro indicando a temperatura a ser convertida. Ex. de execução: > conversao ’c’ ’f’ 28.0 82.4 12. Dado um ponto p na reta real, e um intervalo fechado [a, b], crie uma função que verifique se este ponto se encontra dentro ou fora deste intervalo. 13. Em uma competição de ginástica oĺımpica a nota é determinada por um painel de seis júızes. Cada um dos júızes atribui uma nota entre zero e dez para o desempenho do atleta. Para calcular a nota final, a nota mais alta e a nota mais baixa são descartadas e é calculada a média das quatro restantes. Escreva uma função que recebe 6 notas entre zero e dez e retorna a média após o descarte da maior e da menor nota. 14. Crie uma função ehAnoBissexto que receba um valor de ano e retorne um valor booleano (True ou False) indicando se o ano é bissexto ou não. Um ano é bissexto quando: O ano for divisı́vel por 400, ou O ano for divisı́vel por 4, mas n~ao por 100 Exs: 2000 é bissexto (pois é diviśıvel por 400), 2004 é bissexto (é di- viśıvel por 4, mas não por 100), porém 2002 não é bissexto (não satisfaz nenhuma das condições). A função que retorna o resto da divisão inteira entre dois números a e b é mod a b 15. Crie uma função ehDataValida que valide uma data, isto é, receba um dia, mês e ano e retorne se corresponde a uma data posśıvel ou não. Utilize a função ehAnoBissexto para auxiliar na validar a duração de fevereiro, e os dados abaixo para os demais meses: 2 • Meses de janeiro, março, maio, julho, agosto, outubro e dezembro possuem 31 dias • Meses de abril, junho, setembro e novembro possuem 30 dias • Fevereiro possui 29 dias quando o ano é bissexto, e 28 quando não é bissexto 16. Função horoscopo: receba uma data (dia, mês e ano) e retorne uma String correspondente ao signo. No corpo de sua função horoscopo, primeiramente deverá ser feita validação da data utilizando para isto a função do exer. anterior. Caso a data seja inválida, retorne uma string informando que a data é inválida. Caso a data seja válida, você procede para a análise dos signos. 3 Encontre erros O objetivo principal dos exerćıcios abaixo é encontrar erros sintáticos e erros de lógica de programação (quando a sintaxe está correta, porém o programa está devolvendo valores incorretos). 17. Considere a função abaixo, cuja finalidade é somar os parâmetros caso sejam iguais, ou obter o valor absoluto (módulo) da diferença entre eles, caso contrário. Quais são erros presentes? Justifique. f1 x y = if (x = y) then "x+y" else (abs "x-y") 18. Encontre e explique os erros da função abaixo. f2 op x y = if (op == ’mul’) then x*y else if (op = ’div’) then a/b else "nao sei" 19. Quai(s) o(s) erro(s) nas funções abaixo? imposto sal = if (sal <= 1000) then 0 else 0.05*sal salarioFinal salario = salario - imposto sal 20. Faça o mesmo para as funções a seguir: abono pts = if (pts <= 0) then 0.0 else if (pts >= 1) && (pts <= 20) then 500.0 else if (pts >= 21) && (pts >= 40) then 700.0 else (pts > 40) 1000.0 salarioTotal sal pts = sal + abono 4
Compartilhar