1 00:00:00,000 --> 00:00:02,360 >> DAVID J. Malan: Como probablemente sabe, temperaturas son medidos mediante 2 00:00:02,360 --> 00:00:04,360 diferentes escalas en diferentes partes do mundo. 3 00:00:04,360 --> 00:00:09,370 Por exemplo, 212 graos Fahrenheit é 100 graos Celsius e 32 graos 4 00:00:09,370 --> 00:00:11,810 Fahrenheit é de 0 graos Celsius. 5 00:00:11,810 --> 00:00:14,230 Non sería bo se tivésemos un ordenador 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 >> Así, podemos escribir este programa. 8 00:00:18,510 --> 00:00:24,350 Imos primeiro comezar por inclúen cs50.h, de xeito que podemos utilizar unha función chamada 9 00:00:24,350 --> 00:00:28,610 obter float, que, como get int, recibe unha número de usuario, pero este tempo un 10 00:00:28,610 --> 00:00:31,440 número de punto flotante - un cun punto decimal. 11 00:00:31,440 --> 00:00:34,840 >> Imos incluír io.h defecto para que poidamos ter acceso a 12 00:00:34,840 --> 00:00:36,230 funcións como impresión f. 13 00:00:36,230 --> 00:00:40,000 E imos tamén declarar principal do xeito habitual. 14 00:00:40,000 --> 00:00:42,675 >> Imos preto solicitar ó usuario unha temperatura en graos Celsius. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Imos agora comezar realmente que a temperatura do usuario, en primeiro lugar por 17 00:00:49,220 --> 00:00:52,910 declarar unha variable chamada f do tipo float. 18 00:00:52,910 --> 00:00:56,750 Un flotador, de novo, o que significa que unha variable almacena un valor de punto flotante, 19 00:00:56,750 --> 00:00:58,200 un con un punto decimal. 20 00:00:58,200 --> 00:01:01,780 >> Imos asignar-lle a volta valor do get float. 21 00:01:01,780 --> 00:01:06,080 E entón, imos facer un pouco de aritmética nel, primeiro declarando outro flotador 22 00:01:06,080 --> 00:01:11,690 chamado C para Celsius e almacenar en C a resultado dalgunha aritmética común. 23 00:01:11,690 --> 00:01:19,060 5,0 dividido por 9,0 veces F menos 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Imos 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 un espazo reservado para valor de punto flotante - 27 00:01:27,890 --> 00:01:31,680 coma C para imprimir a temperatura en graos Celsius. 28 00:01:31,680 --> 00:01:33,000 Imos salvar o meu final. 29 00:01:33,000 --> 00:01:38,220 Compilar con F para C. Executa o programa con punto barra F a C. 30 00:01:38,220 --> 00:01:39,940 >> E imos tratar aqueles comúns temperaturas. 31 00:01:39,940 --> 00:01:45,820 212 graos en Fahrenheit é de 100 graos Celsius. 32 00:01:45,820 --> 00:01:50,090 32 graos en Fahrenheit é 0 graos en Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Agora imos refinar este programa un pouco pouco a impresión de que non tan moitos 0 do 34 00:01:54,240 --> 00:01:55,820 despois de que casa decimal. 35 00:01:55,820 --> 00:01:57,940 Para iso, eu vou voltar á liña 11. 36 00:01:57,940 --> 00:02:03,430 E no canto de só especificar por cento f, Vou indicar en vez, por exemplo, 37 00:02:03,430 --> 00:02:08,800 0,1 m, informando impresión que eu só f quere imprimir un valor de punto flotante 38 00:02:08,800 --> 00:02:11,750 para un valor despois do punto decimal. 39 00:02:11,750 --> 00:02:13,630 >> Imos gardar de novo o meu programa. 40 00:02:13,630 --> 00:02:19,680 Recopila-lo co make F para C. Entón realizar de novo con punto barra F a C. E 41 00:02:19,680 --> 00:02:24,910 imos tentar de novo con, digamos, 212, o que me dá 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Agora paga a pena notar que eu fixen algo moi deliberadamente na liña 9. 43 00:02:28,360 --> 00:02:35,830 Observe como escribín 5 é de 5,0, 9 como 9.0, e ata 32 como 32,0. 44 00:02:35,830 --> 00:02:39,000 Así, os dous primeiros de tales valores foron deliberadamente escollido para ser 45 00:02:39,000 --> 00:02:42,200 valores de punto flotante, e non só porque de coherencia co resto 46 00:02:42,200 --> 00:02:42,940 do meu programa - 47 00:02:42,940 --> 00:02:45,110 que implica claramente flotante valores de punto - 48 00:02:45,110 --> 00:02:50,210 senón porque parece que C, Se dividir un int doutra int, o 49 00:02:50,210 --> 00:02:54,350 obtendo resposta que vai conseguir é si un int, aínda que só sexa 50 00:02:54,350 --> 00:02:57,450 ter que xogar fora todo despois do punto decimal. 51 00:02:57,450 --> 00:03:04,990 >> Noutras palabras, se eu cambiar ese 5.0 para 5 ou este 9,0-9 e logo salva 52 00:03:04,990 --> 00:03:10,550 meu programa, recompilar con make F para C, e entón re-executar-lo con barra punto F 53 00:03:10,550 --> 00:03:15,310 a C e escriba unha entrada como de 212, ter en conta que a resposta que eu vou 54 00:03:15,310 --> 00:03:17,860 se ese tempo é realmente moi mal. 55 00:03:17,860 --> 00:03:23,570 0,0 non é o grao correcto en Celsius como Fahrenheit 212. 56 00:03:23,570 --> 00:03:24,500 >> Ben, o que está a suceder? 57 00:03:24,500 --> 00:03:29,410 Ben, en liña 9, xa que 5 é agora un enteiro e por 9 é agora un 58 00:03:29,410 --> 00:03:34,810 enteiro, o resultado matematicamente debe ser 0,5555 e así por diante. 59 00:03:34,810 --> 00:03:39,120 Pero xa que o resultado, segundo a Normas de C, ten que ser un int, que 60 00:03:39,120 --> 00:03:44,020 0,5555 é xogado fóra, deixando connosco con só 0. 61 00:03:44,020 --> 00:03:48,600 >> Entón, ao final, acabo multiplicando bastante accidentalmente 0 veces f menos 62 00:03:48,600 --> 00:03:52,830 32.0, que é non importa o que sempre me vai dar 0. 63 00:03:52,830 --> 00:03:56,930 Polo tanto, lembre-se, en calquera momento mediante valores de punto flotante en proximidade 64 00:03:56,930 --> 00:03:59,860 Ints, pode non necesariamente obter a resposta que espera. 65 00:03:59,860 --> 00:04:04,220 E por iso teña coidado de usar, como eu fixen no valores primeiro caso de coma flotante 66 00:04:04,220 --> 00:04:06,530 todo para evitar tales problemas. 67 00:04:06,530 --> 00:04:08,267