Temperatura

Temperatura

Exercício de aprendizagem

Introdução

Um Integer guarda qualquer número, por maior que seja, até ao limite da memória da tua máquina, ao passo que um Int corresponde ao conjunto dos números inteiros positivos e negativos que se podem representar em 32 ou 64 bits (garantidamente, pelo menos, de -2^29 a 2^29).

Um Float corresponde ao conjunto dos números reais, limitado pela precisão do computador. As operações definidas sobre números funcionam habitualmente com um tipo ou com o outro, mas não com ambos.

As funções para converter entre Float e Integer incluem, entre outras, toFloat, que converte Int/Integer em Float, e ceiling, que converte um Float num Int.

A conversão de um tipo inteiro (Int ou Integer) para qualquer outro tipo numérico é feita com a função fromIntegral. O tipo de destino é inferido automaticamente. Por exemplo:

n :: Integer
n = 6
x :: Float
x = fromIntegral n      --> x = 6.0

m :: Int
m = 7
y :: Double
y = fromIntegral m      --> y = 7.0

Instruções

Fazes parte de uma organização de bombeiros composta por voluntários internacionais. Devido à natureza internacional da equipa, tem-se perdido tempo precioso nas últimas ocorrências a traduzir entre Fahrenheit e Celsius enquanto se estima a temperatura dentro dos edifícios em chamas. Para poupar tempo, e pessoas, decides criar um programa que converta automaticamente entre Fahrenheit e Celsius para a tua equipa internacional.

1. Converter Fahrenheit em Celsius

Implementa a função tempToC para converter uma temperatura Integer em Fahrenheit no seu equivalente Float em Celsius, arredondado à centésima mais próxima. A temperatura em graus Celsius define-se como: T(°C) = (T(°F) - 32) / 1.8.

> tempToC 32
0.00

2. Converter Celsius em Fahrenheit

Implementa a função tempToF para converter uma temperatura Float em Celsius no seu equivalente em Fahrenheit. Por razões de segurança, arredonda o resultado por excesso para o Integer imediatamente superior. A temperatura em graus Fahrenheit define-se como: T(°F) = T(°C) × 1.8 + 32.

> tempToF 4
40
Editar via GitHub A ligação abre numa nova janela ou separador
Haskell Exercism

Estás pronto para começar Temperatura?

Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.