1 00:00:00,000 --> 00:00:02,360 >> DAVID J. MALAN: Como usted probablemente sabe, las temperaturas se miden utilizando 2 00:00:02,360 --> 00:00:04,360 diferentes escalas en diferentes partes del mundo. 3 00:00:04,360 --> 00:00:09,370 Por ejemplo, 212 grados Fahrenheit es 100 grados centígrados y 32 grados 4 00:00:09,370 --> 00:00:11,810 Fahrenheit es de 0 grados Celsius. 5 00:00:11,810 --> 00:00:14,230 ¿No sería bueno si tuviéramos un ordenador programa que nos permitió 6 00:00:14,230 --> 00:00:16,950 convertir de, digamos, Fahrenheit a Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Bueno, podemos escribir el programa. 8 00:00:18,510 --> 00:00:24,350 Primero vamos a empezar con incluir cs50.h, por lo que podemos utilizar una función llamada 9 00:00:24,350 --> 00:00:28,610 conseguir flotador, que al igual que get int, obtiene un número del usuario, pero esta vez un 10 00:00:28,610 --> 00:00:31,440 número de punto flotante - una con un punto decimal. 11 00:00:31,440 --> 00:00:34,840 >> Supongamos también incluyen io.h estándar para que tengamos acceso a 12 00:00:34,840 --> 00:00:36,230 funciones como la impresión f. 13 00:00:36,230 --> 00:00:40,000 Y también vamos a declarar principal en la forma habitual. 14 00:00:40,000 --> 00:00:42,675 >> Vamos próximo solicitar al usuario una temperatura en grados Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Ahora vamos a conseguir realmente que la temperatura desde el usuario, por primera 17 00:00:49,220 --> 00:00:52,910 declara una variable llamada f de tipo float. 18 00:00:52,910 --> 00:00:56,750 Un flotador, de nuevo, lo que significa una variable que almacena un valor de punto flotante, 19 00:00:56,750 --> 00:00:58,200 uno con un punto decimal. 20 00:00:58,200 --> 00:01:01,780 >> Vamos a asignarle el retorno valor de get flotador. 21 00:01:01,780 --> 00:01:06,080 Y luego vamos a hacer un poco de aritmética en ella, primero se declara otro flotador 22 00:01:06,080 --> 00:01:11,690 llamado C para Celsius y almacenar en la C resultado de un poco de 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 >> Ahora vamos a imprimir el resultado de este cálculo. 25 00:01:23,440 --> 00:01:24,730 ciento f - 26 00:01:24,730 --> 00:01:27,890 lo que significa un marcador de posición para valor de coma flotante - 27 00:01:27,890 --> 00:01:31,680 coma C a imprimir la temperatura en grados Celsius. 28 00:01:31,680 --> 00:01:33,000 Vamos a guardar mi final. 29 00:01:33,000 --> 00:01:38,220 Compilar con F a C. Ejecutar el programa con el punto de tala F a C. 30 00:01:38,220 --> 00:01:39,940 >> Y vamos a tratar de los comunes temperaturas. 31 00:01:39,940 --> 00:01:45,820 212 grados en Fahrenheit es 100 grados Celsius. 32 00:01:45,820 --> 00:01:50,090 32 grados en Fahrenheit es 0 grados en Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Ahora vamos a refinar este programa un poco poco a no impresión bastante como muchos de 0 34 00:01:54,240 --> 00:01:55,820 después de esa cifra decimal. 35 00:01:55,820 --> 00:01:57,940 Para ello, voy a volver a la línea 11. 36 00:01:57,940 --> 00:02:03,430 Y en lugar de especificar por ciento f, Voy a especificar en su lugar, por ejemplo, 37 00:02:03,430 --> 00:02:08,800 0.1 f, f impresión informando que sólo quiere imprimir un valor de coma flotante 38 00:02:08,800 --> 00:02:11,750 en un valor después del punto decimal. 39 00:02:11,750 --> 00:02:13,630 >> Vamos a volver a guardar mi programa. 40 00:02:13,630 --> 00:02:19,680 Vuelva a compilar con make F a C. Entonces ejecútelo nuevamente con el punto slash F a C. Y 41 00:02:19,680 --> 00:02:24,910 vamos a reintentar con, por ejemplo, 212, lo que me da 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Ahora vale la pena señalar que hice algo muy deliberadamente en la línea 9. 43 00:02:28,360 --> 00:02:35,830 Observe cómo escribí 5 es 5,0, 9 como 9.0, y hasta 32 como 32,0. 44 00:02:35,830 --> 00:02:39,000 Bueno, los dos primeros de esos valores eran muy deliberadamente escogido para ser 45 00:02:39,000 --> 00:02:42,200 valores de punto flotante, no sólo porque de coherencia con el resto 46 00:02:42,200 --> 00:02:42,940 de mi 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 sino porque resulta que C, Si dividir un entero por otro int, el 49 00:02:50,210 --> 00:02:54,350 respuesta que resulta que vas a conseguir es sí un int, incluso si eso significa 50 00:02:54,350 --> 00:02:57,450 tener que tirar todo después del punto decimal. 51 00:02:57,450 --> 00:03:04,990 >> En otras palabras, si cambio esto de 5,0 a 5 o este 9,0-9 y luego volver a guardar 52 00:03:04,990 --> 00:03:10,550 mi programa, vuelva a compilar con maquillaje F a C, y luego volver a ejecutarlo con slash dot F 53 00:03:10,550 --> 00:03:15,310 a C y escribe una entrada de como 212, cuenta de que la respuesta que voy a 54 00:03:15,310 --> 00:03:17,860 conseguir este tiempo es en realidad bastante mal. 55 00:03:17,860 --> 00:03:23,570 0,0 no es el correcto grado de Celsius como Fahrenheit 212. 56 00:03:23,570 --> 00:03:24,500 >> Bueno, ¿qué está pasando? 57 00:03:24,500 --> 00:03:29,410 Pues bien, en la línea 9, porque 5 es ahora una entero y porque 9 es ahora un 58 00:03:29,410 --> 00:03:34,810 entero, el resultado matemáticamente debería ser 0,5555, etc. 59 00:03:34,810 --> 00:03:39,120 Pero debido a que el resultado, según Reglas de C, tiene que ser un int, que 60 00:03:39,120 --> 00:03:44,020 0.5555 se tira, dejándonos con sólo 0. 61 00:03:44,020 --> 00:03:48,600 >> Así que al final, me acaban de multiplicar bastante accidentalmente 0 veces f menos 62 00:03:48,600 --> 00:03:52,830 32.0, que es sin importar lo Siempre me va a dar 0. 63 00:03:52,830 --> 00:03:56,930 Así que tenga en cuenta, en cualquier momento usando valores de punto flotante en la proximidad de 64 00:03:56,930 --> 00:03:59,860 ints, puede que no necesariamente obtener la respuesta por lo que espera. 65 00:03:59,860 --> 00:04:04,220 Y así que tenga cuidado de usar, como lo hice en el valores primer caso, en coma flotante 66 00:04:04,220 --> 00:04:06,530 a lo largo para evitar cualquier tipo de problemas. 67 00:04:06,530 --> 00:04:08,267