>> DAVID J. MALAN: Como você provavelmente sabe, temperaturas são medidos utilizando
diferentes escalas em diferentes partes do mundo.
Por exemplo, 212 graus Fahrenheit é 100 graus Celsius e 32 graus
Fahrenheit é de 0 graus Celsius.
Não seria bom se tivéssemos um computador programa que nos permitiu
converter de, digamos, Fahrenheit para Celsius?
>> Bem, podemos escrever esse programa.
Vamos primeiro começar com incluem cs50.h, de modo que podemos usar uma função chamada
obter float, que, como get int, recebe uma número do utilizador, mas este tempo um
número de ponto flutuante - um com um ponto decimal.
>> Vamos também incluir io.h padrão para que possamos ter acesso a
funções como impressão f.
E vamos também declarar principal da maneira usual.
>> Vamos próximo solicitar ao usuário uma temperatura em graus Celsius.
Vamos agora começar realmente que a temperatura do utilizador, em primeiro lugar por
declarar uma variável chamada f do tipo float.
Um flutuador, de novo, o que significa que uma variável armazena um valor de ponto flutuante,
um com um ponto decimal.
>> Vamos atribuir-lhe o retorno valor do get float.
E então, vamos fazer um pouco de aritmética nele, primeiro declarando outro flutuador
chamado C para Celsius e armazenar em C a resultado de alguma aritmética comum.
5,0 dividido por 9,0 vezes F menos 32,0.
>> Vamos agora imprimir o resultado deste cálculo.
por cento f -
significando um espaço reservado para valor de ponto flutuante -
vírgula C para imprimir a temperatura em graus Celsius.
Vamos salvar o meu final.
Compilar com F para C. Execute o programa com ponto barra F para C.
>> E vamos tentar aqueles comuns temperaturas.
212 graus em Fahrenheit é de 100 graus Celsius.
32 graus em Fahrenheit é 0 graus em Celsius.
>> Agora vamos refinar este programa um pouco pouco a impressão de não tão muitos 0 do
depois que casa decimal.
Para fazer isso, eu vou voltar para a linha 11.
E ao invés de apenas especificar por cento f, Vou especificar em vez, por exemplo,
0,1 f, informando impressão que eu só f deseja imprimir um valor de ponto flutuante
para um valor depois do ponto decimal.
>> Vamos salvar novamente o meu programa.
Recompilá-lo com o make F para C. Então executar novamente com ponto barra F para C. E
vamos tentar novamente com, digamos, 212, o que me dá 100,0.
>> Agora vale a pena notar que eu fiz algo muito deliberadamente na linha 9.
Observe como eu escrevi 5 é de 5,0, 9 como 9.0, e até 32 como 32,0.
Bem, os dois primeiros de tais valores foram deliberadamente escolhido para ser
valores de ponto flutuante, e não apenas porque de coerência com o resto
do meu programa -
que envolve claramente flutuante valores de ponto -
mas porque verifica-se que C, Se você dividir um int por outro int, o
resultando resposta que você vai conseguir é si um int, mesmo que isso signifique
ter que jogar fora tudo depois do ponto decimal.
>> Em outras palavras, se eu mudar esse 5.0 para 5 ou este 9,0-9 e em seguida, salve
meu programa, recompilar com make F para C, e então re-executar-lo com barra ponto F
para C e digite uma entrada como de 212, notar que a resposta que eu vou
se esse tempo é realmente muito errado.
0,0 não é o grau correto em Celsius como Fahrenheit 212.
>> Bem, o que está acontecendo?
Bem, na linha 9, porque 5 é agora um inteiro e porque 9 é agora um
inteiro, o resultado matematicamente deve ser 0,5555 e assim por diante.
Mas porque o resultado, de acordo com a Regras de C, tem que ser um int, que
0,5555 é jogado fora, deixando-nos com apenas 0.
>> Então, no final, acabo multiplicando bastante acidentalmente 0 vezes f menos
32.0, que é não importa o que sempre vai me dar 0.
Portanto, lembre-se, a qualquer momento usando valores de ponto flutuante em proximidade de
ints, você pode não necessariamente obter a resposta que você espera.
E por isso tome cuidado para usar, como eu fiz no valores primeiro caso, de vírgula flutuante
todo para evitar tais problemas.