1 00:00:00,000 --> 00:00:02,360 >> DAVID J. Malan: Com vostè probablement sap, les temperatures es mesuren utilitzant 2 00:00:02,360 --> 00:00:04,360 diferents escales en diferents parts del món. 3 00:00:04,360 --> 00:00:09,370 Per exemple, 212 graus Fahrenheit és 100 graus centígrads i 32 graus 4 00:00:09,370 --> 00:00:11,810 Fahrenheit és de 0 graus Celsius. 5 00:00:11,810 --> 00:00:14,230 No seria bo si tinguéssim un ordinador programa que ens va permetre 6 00:00:14,230 --> 00:00:16,950 convertir de, diguem, Fahrenheit a Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Bé, podem escriure el programa. 8 00:00:18,510 --> 00:00:24,350 Primer anem a començar amb incloure cs50.h, pel que podem utilitzar una funció anomenada 9 00:00:24,350 --> 00:00:28,610 aconseguir flotador, que igual que get int, obté un nombre de l'usuari, però aquesta vegada un 10 00:00:28,610 --> 00:00:31,440 nombre de punt flotant - una amb un punt decimal. 11 00:00:31,440 --> 00:00:34,840 >> Suposem també inclouen io.h estàndard perquè tinguem accés a 12 00:00:34,840 --> 00:00:36,230 funcions com la impressió f. 13 00:00:36,230 --> 00:00:40,000 I també anem a declarar principal en la forma habitual. 14 00:00:40,000 --> 00:00:42,675 >> Anem proper demanar a l'usuari una temperatura en graus Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Ara anem a aconseguir realment que la temperatura des de l'usuari, per primera 17 00:00:49,220 --> 00:00:52,910 declara una variable anomenada f de tipus float. 18 00:00:52,910 --> 00:00:56,750 Un flotador, de nou, el que significa una variable que emmagatzema un valor de punt flotant, 19 00:00:56,750 --> 00:00:58,200 un amb un punt decimal. 20 00:00:58,200 --> 00:01:01,780 >> Anem a assignar-li el retorn valor get flotador. 21 00:01:01,780 --> 00:01:06,080 I després farem una mica d'aritmètica en ella, primer es declara un altre flotador 22 00:01:06,080 --> 00:01:11,690 anomenat C per Celsius i emmagatzemar a la C resultat d'una mica d'aritmètica comú. 23 00:01:11,690 --> 00:01:19,060 5.0 dividit per 9,0 vegades F menys 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Ara anem a imprimir el resultat d'aquest càlcul. 25 00:01:23,440 --> 00:01:24,730 cent f - 26 00:01:24,730 --> 00:01:27,890 el que significa un marcador de posició per valor de coma flotant - 27 00:01:27,890 --> 00:01:31,680 coma C a imprimir la temperatura en graus Celsius. 28 00:01:31,680 --> 00:01:33,000 Anem a guardar el meu final. 29 00:01:33,000 --> 00:01:38,220 Compilació amb F a C. Executar el programa amb el punt de tala F a C. 30 00:01:38,220 --> 00:01:39,940 >> I anem a tractar dels comuns temperatures. 31 00:01:39,940 --> 00:01:45,820 212 graus en Fahrenheit és 100 graus Celsius. 32 00:01:45,820 --> 00:01:50,090 32 graus a Fahrenheit és 0 graus en Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Ara anem a refinar aquest programa una mica poc a no impressió bastant com molts de 0 34 00:01:54,240 --> 00:01:55,820 després d'aquesta xifra decimal. 35 00:01:55,820 --> 00:01:57,940 Per a això, vaig a tornar a la línia 11. 36 00:01:57,940 --> 00:02:03,430 I en lloc d'especificar per cent f, Vaig a especificar en el seu lloc, per exemple, 37 00:02:03,430 --> 00:02:08,800 0.1 f, f impressió informant que només vol imprimir un valor de coma flotant 38 00:02:08,800 --> 00:02:11,750 en un valor després del punt decimal. 39 00:02:11,750 --> 00:02:13,630 >> Anem a tornar a guardar el meu programa. 40 00:02:13,630 --> 00:02:19,680 Torneu a compilar amb make F a C. Llavors executeu-lo novament amb el punt slash F a C. 41 00:02:19,680 --> 00:02:24,910 anem a reintentar amb, per exemple, 212, el que em dóna 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Ara val la pena assenyalar que vaig fer cosa molt deliberadament a la línia 9. 43 00:02:28,360 --> 00:02:35,830 Observeu com vaig escriure 5 és 5,0, 9 com 9.0, i fins a 32 com 32,0. 44 00:02:35,830 --> 00:02:39,000 Bé, els dos primers d'aquests valors eren molt deliberadament escollit per ser 45 00:02:39,000 --> 00:02:42,200 valors de punt flotant, no només perquè de coherència amb la resta 46 00:02:42,200 --> 00:02:42,940 del meu programa - 47 00:02:42,940 --> 00:02:45,110 que implica clarament flotant valors de punt - 48 00:02:45,110 --> 00:02:50,210 sinó perquè resulta que C, Si dividir un enter per un altre int, el 49 00:02:50,210 --> 00:02:54,350 resposta que resulta que vas a aconseguir és sí un int, fins i tot si això significa 50 00:02:54,350 --> 00:02:57,450 haver de llençar tot després del punt decimal. 51 00:02:57,450 --> 00:03:04,990 >> En altres paraules, si canvi això de 5,0 a 5 o aquest 9,0-9 i després tornar a guardar 52 00:03:04,990 --> 00:03:10,550 el meu programa, torneu a compilar amb maquillatge F a C, i després tornar a executar-lo amb slash dot F 53 00:03:10,550 --> 00:03:15,310 a C i escriu una entrada de com 212, adonar que la resposta que vaig a 54 00:03:15,310 --> 00:03:17,860 aconseguir aquest temps és en realitat bastant malament. 55 00:03:17,860 --> 00:03:23,570 0,0 no és el correcte grau de Celsius com Fahrenheit 212. 56 00:03:23,570 --> 00:03:24,500 >> Bé, què està passant? 57 00:03:24,500 --> 00:03:29,410 Doncs bé, en la línia 9, perquè 5 és ara una sencer i perquè 9 és ara un 58 00:03:29,410 --> 00:03:34,810 sencer, el resultat matemàticament ha de ser 0,5555 i així successivament. 59 00:03:34,810 --> 00:03:39,120 Però com que el resultat, segons Regles de C, ha de ser un int, que 60 00:03:39,120 --> 00:03:44,020 0,5555 es llença, deixant-nos amb només 0. 61 00:03:44,020 --> 00:03:48,600 >> Així que al final, m'acaben de multiplicar bastant accidentalment 0 vegades f menys 62 00:03:48,600 --> 00:03:52,830 32.0, que és sense importar el Sempre em donarà 0. 63 00:03:52,830 --> 00:03:56,930 Així que tingui en compte, en qualsevol moment fent servir valors de punt flotant en la proximitat de 64 00:03:56,930 --> 00:03:59,860 ints, potser no necessàriament obtenir la resposta pel que espera. 65 00:03:59,860 --> 00:04:04,220 I així que vagi amb compte d'utilitzar, com ho vaig fer en el valors primer cas, en coma flotant 66 00:04:04,220 --> 00:04:06,530 al llarg per evitar qualsevol tipus de problemes. 67 00:04:06,530 --> 00:04:08,267