1 00:00:00,000 --> 00:00:02,360 >> DAVID J. MALAN: Como você provavelmente sabe, temperaturas são medidos utilizando 2 00:00:02,360 --> 00:00:04,360 diferentes escalas em diferentes partes do mundo. 3 00:00:04,360 --> 00:00:09,370 Por exemplo, 212 graus Fahrenheit é 100 graus Celsius e 32 graus 4 00:00:09,370 --> 00:00:11,810 Fahrenheit é de 0 graus Celsius. 5 00:00:11,810 --> 00:00:14,230 Não seria bom se tivéssemos um computador programa que nos permitiu 6 00:00:14,230 --> 00:00:16,950 converter de, digamos, Fahrenheit para Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Bem, podemos escrever esse programa. 8 00:00:18,510 --> 00:00:24,350 Vamos primeiro começar com incluem cs50.h, de modo que podemos usar uma função chamada 9 00:00:24,350 --> 00:00:28,610 obter float, que, como get int, recebe uma número do utilizador, mas este tempo um 10 00:00:28,610 --> 00:00:31,440 número de ponto flutuante - um com um ponto decimal. 11 00:00:31,440 --> 00:00:34,840 >> Vamos também incluir io.h padrão para que possamos ter acesso a 12 00:00:34,840 --> 00:00:36,230 funções como impressão f. 13 00:00:36,230 --> 00:00:40,000 E vamos também declarar principal da maneira usual. 14 00:00:40,000 --> 00:00:42,675 >> Vamos próximo solicitar ao usuário uma temperatura em graus Celsius. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Vamos agora começar realmente que a temperatura do utilizador, em primeiro lugar por 17 00:00:49,220 --> 00:00:52,910 declarar uma variável chamada f do tipo float. 18 00:00:52,910 --> 00:00:56,750 Um flutuador, de novo, o que significa que uma variável armazena um valor de ponto flutuante, 19 00:00:56,750 --> 00:00:58,200 um com um ponto decimal. 20 00:00:58,200 --> 00:01:01,780 >> Vamos atribuir-lhe o retorno valor do get float. 21 00:01:01,780 --> 00:01:06,080 E então, vamos fazer um pouco de aritmética nele, primeiro declarando outro flutuador 22 00:01:06,080 --> 00:01:11,690 chamado C para Celsius e armazenar em C a resultado de alguma aritmética comum. 23 00:01:11,690 --> 00:01:19,060 5,0 dividido por 9,0 vezes F menos 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Vamos agora imprimir o resultado deste cálculo. 25 00:01:23,440 --> 00:01:24,730 por cento f - 26 00:01:24,730 --> 00:01:27,890 significando um espaço reservado para valor de ponto flutuante - 27 00:01:27,890 --> 00:01:31,680 vírgula C para imprimir a temperatura em graus Celsius. 28 00:01:31,680 --> 00:01:33,000 Vamos salvar o meu final. 29 00:01:33,000 --> 00:01:38,220 Compilar com F para C. Execute o programa com ponto barra F para C. 30 00:01:38,220 --> 00:01:39,940 >> E vamos tentar aqueles comuns temperaturas. 31 00:01:39,940 --> 00:01:45,820 212 graus em Fahrenheit é de 100 graus Celsius. 32 00:01:45,820 --> 00:01:50,090 32 graus em Fahrenheit é 0 graus em Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Agora vamos refinar este programa um pouco pouco a impressão de não tão muitos 0 do 34 00:01:54,240 --> 00:01:55,820 depois que casa decimal. 35 00:01:55,820 --> 00:01:57,940 Para fazer isso, eu vou voltar para a linha 11. 36 00:01:57,940 --> 00:02:03,430 E ao invés de apenas especificar por cento f, Vou especificar em vez, por exemplo, 37 00:02:03,430 --> 00:02:08,800 0,1 f, informando impressão que eu só f deseja imprimir um valor de ponto flutuante 38 00:02:08,800 --> 00:02:11,750 para um valor depois do ponto decimal. 39 00:02:11,750 --> 00:02:13,630 >> Vamos salvar novamente o meu programa. 40 00:02:13,630 --> 00:02:19,680 Recompilá-lo com o make F para C. Então executar novamente com ponto barra F para C. E 41 00:02:19,680 --> 00:02:24,910 vamos tentar novamente com, digamos, 212, o que me dá 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Agora vale a pena notar que eu fiz algo muito deliberadamente na linha 9. 43 00:02:28,360 --> 00:02:35,830 Observe como eu escrevi 5 é de 5,0, 9 como 9.0, e até 32 como 32,0. 44 00:02:35,830 --> 00:02:39,000 Bem, os dois primeiros de tais valores foram deliberadamente escolhido para ser 45 00:02:39,000 --> 00:02:42,200 valores de ponto flutuante, e não apenas porque de coerência com o resto 46 00:02:42,200 --> 00:02:42,940 do meu programa - 47 00:02:42,940 --> 00:02:45,110 que envolve claramente flutuante valores de ponto - 48 00:02:45,110 --> 00:02:50,210 mas porque verifica-se que C, Se você dividir um int por outro int, o 49 00:02:50,210 --> 00:02:54,350 resultando resposta que você vai conseguir é si um int, mesmo que isso signifique 50 00:02:54,350 --> 00:02:57,450 ter que jogar fora tudo depois do ponto decimal. 51 00:02:57,450 --> 00:03:04,990 >> Em outras palavras, se eu mudar esse 5.0 para 5 ou este 9,0-9 e em seguida, salve 52 00:03:04,990 --> 00:03:10,550 meu programa, recompilar com make F para C, e então re-executar-lo com barra ponto F 53 00:03:10,550 --> 00:03:15,310 para C e digite uma entrada como de 212, notar que a resposta que eu vou 54 00:03:15,310 --> 00:03:17,860 se esse tempo é realmente muito errado. 55 00:03:17,860 --> 00:03:23,570 0,0 não é o grau correto em Celsius como Fahrenheit 212. 56 00:03:23,570 --> 00:03:24,500 >> Bem, o que está acontecendo? 57 00:03:24,500 --> 00:03:29,410 Bem, na linha 9, porque 5 é agora um inteiro e porque 9 é agora um 58 00:03:29,410 --> 00:03:34,810 inteiro, o resultado matematicamente deve ser 0,5555 e assim por diante. 59 00:03:34,810 --> 00:03:39,120 Mas porque o resultado, de acordo com a Regras de C, tem que ser um int, que 60 00:03:39,120 --> 00:03:44,020 0,5555 é jogado fora, deixando-nos com apenas 0. 61 00:03:44,020 --> 00:03:48,600 >> Então, no final, acabo multiplicando bastante acidentalmente 0 vezes f menos 62 00:03:48,600 --> 00:03:52,830 32.0, que é não importa o que sempre vai me dar 0. 63 00:03:52,830 --> 00:03:56,930 Portanto, lembre-se, a qualquer momento usando valores de ponto flutuante em proximidade de 64 00:03:56,930 --> 00:03:59,860 ints, você pode não necessariamente obter a resposta que você espera. 65 00:03:59,860 --> 00:04:04,220 E por isso tome cuidado para usar, como eu fiz no valores primeiro caso, de vírgula flutuante 66 00:04:04,220 --> 00:04:06,530 todo para evitar tais problemas. 67 00:04:06,530 --> 00:04:08,267