1 00:00:00,000 --> 00:00:02,360 >> DAVID J. Malan: Comme vous le savez probablement, Les températures sont mesurées à l'aide 2 00:00:02,360 --> 00:00:04,360 différentes échelles différentes parties du monde. 3 00:00:04,360 --> 00:00:09,370 Par exemple, 212 degrés Fahrenheit est 100 degrés Celsius et 32 ​​degrés 4 00:00:09,370 --> 00:00:11,810 Fahrenheit est de 0 degrés Celsius. 5 00:00:11,810 --> 00:00:14,230 Ce ne serait pas bien si nous avions un ordinateur programme qui nous a permis de 6 00:00:14,230 --> 00:00:16,950 convertir, par exemple, Fahrenheit en degrés Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Eh bien, nous pouvons écrire ce programme. 8 00:00:18,510 --> 00:00:24,350 Voyons d'abord commencer par comprendre cs50.h, de sorte que nous pouvons utiliser une fonction appelée 9 00:00:24,350 --> 00:00:28,610 obtenir flotteur, qui, comme get int, obtient un numéro de l'utilisateur, mais cette fois-ci un 10 00:00:28,610 --> 00:00:31,440 nombre à virgule flottante - un avec un point décimal. 11 00:00:31,440 --> 00:00:34,840 >> Disons comprennent également io.h norme de sorte que nous avons accès à 12 00:00:34,840 --> 00:00:36,230 fonctions comme print f. 13 00:00:36,230 --> 00:00:40,000 Et nous allons déclarer également le principal de la manière habituelle. 14 00:00:40,000 --> 00:00:42,675 >> Disons prochaine inviter l'utilisateur à une température en degrés Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Voyons maintenant réellement obtenir que la température à partir de l'utilisateur, d'une part par 17 00:00:49,220 --> 00:00:52,910 déclarer une variable appelée f de type float. 18 00:00:52,910 --> 00:00:56,750 Un flotteur, encore une fois, ce qui signifie une variable qui stocke une valeur en virgule flottante, 19 00:00:56,750 --> 00:00:58,200 une avec un point décimal. 20 00:00:58,200 --> 00:01:01,780 >> Assignons il le retour valeur de get flotteur. 21 00:01:01,780 --> 00:01:06,080 Et puis nous allons faire un peu de calcul sur elle, déclarant abord une autre flotteur 22 00:01:06,080 --> 00:01:11,690 appelé C pour Celsius et magasin dans le C résultat d'un calcul commun. 23 00:01:11,690 --> 00:01:19,060 5.0 divisé par 9,0 fois F moins 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Voyons maintenant imprimer le résultat de ce calcul. 25 00:01:23,440 --> 00:01:24,730 pour cent f - 26 00:01:24,730 --> 00:01:27,890 signifiant un espace réservé pour valeur en virgule flottante - 27 00:01:27,890 --> 00:01:31,680 virgule C pour imprimer le température en degrés Celsius. 28 00:01:31,680 --> 00:01:33,000 Sauvons ma dernière. 29 00:01:33,000 --> 00:01:38,220 Compiler avec F à C. Exécutez le programme avec le point slash F à C. 30 00:01:38,220 --> 00:01:39,940 >> Et nous allons essayer celles qui sont communes températures. 31 00:01:39,940 --> 00:01:45,820 212 degrés en degrés Fahrenheit est de 100 degrés Celsius. 32 00:01:45,820 --> 00:01:50,090 32 degrés en degrés Fahrenheit est 0 degrés Celsius en. 33 00:01:50,090 --> 00:01:54,240 >> Maintenant passons à affiner un peu ce programme peu à ne pas imprimer tout autant des 0 34 00:01:54,240 --> 00:01:55,820 après que décimale. 35 00:01:55,820 --> 00:01:57,940 Pour ce faire, je vais revenir à la ligne 11. 36 00:01:57,940 --> 00:02:03,430 Et plutôt que de simplement indiquer pour cent f, Je vais préciser la place, par exemple, 37 00:02:03,430 --> 00:02:08,800 0,1 f, informer f impression que je ne vouloir imprimer une valeur à virgule flottante 38 00:02:08,800 --> 00:02:11,750 à une valeur après la virgule. 39 00:02:11,750 --> 00:02:13,630 >> Disons réenregistrer mon programme. 40 00:02:13,630 --> 00:02:19,680 Recompiler avec make F à C. Ensuite, relancer avec point barre F à C. Et 41 00:02:19,680 --> 00:02:24,910 nous allons réessayer avec, disons, 212, ce qui me donne 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Maintenant, il est intéressant de noter que j'ai fait quelque chose de très délibérément à la ligne 9. 43 00:02:28,360 --> 00:02:35,830 Remarquez comment j'ai écrit 5 est 5.0, 9 que 9,0, et même 32 que 32,0. 44 00:02:35,830 --> 00:02:39,000 Eh bien, les deux de ces valeurs premières sont très délibérément choisi d'être 45 00:02:39,000 --> 00:02:42,200 des valeurs en virgule flottante, non seulement parce de cohérence avec le reste 46 00:02:42,200 --> 00:02:42,940 de mon programme - 47 00:02:42,940 --> 00:02:45,110 ce qui implique clairement flottante valeurs de point - 48 00:02:45,110 --> 00:02:50,210 mais parce qu'il s'avère que C, si vous diviser un int par un autre int, la 49 00:02:50,210 --> 00:02:54,350 réponse obtenue, vous allez obtenir est lui-même un int, même si ce moyen 50 00:02:54,350 --> 00:02:57,450 avoir à jeter tout après la virgule. 51 00:02:57,450 --> 00:03:04,990 >> En d'autres termes, si je change ce 5,0 à 5 ou ce 9,0 à 9 et puis réenregistrer 52 00:03:04,990 --> 00:03:10,550 mon programme, recompiler avec make F à C, et puis re-exécuter avec slash point F 53 00:03:10,550 --> 00:03:15,310 à C et tapez une entrée comme 212, remarquer que la réponse que je vais 54 00:03:15,310 --> 00:03:17,860 obtenir ce temps est en fait tout à fait tort. 55 00:03:17,860 --> 00:03:23,570 0.0 n'est pas la bonne mesure dans Celsius Fahrenheit 212 comme. 56 00:03:23,570 --> 00:03:24,500 >> Eh bien, ce qui se passe? 57 00:03:24,500 --> 00:03:29,410 Eh bien, à la ligne 9, car 5 est maintenant une entier et que 9 est maintenant une 58 00:03:29,410 --> 00:03:34,810 entier, le résultat mathématique devrait être 0,5555 et ainsi de suite. 59 00:03:34,810 --> 00:03:39,120 Mais parce que le résultat, selon Les règles de C, doit être un entier, qui 60 00:03:39,120 --> 00:03:44,020 0,5555 se jette pas, nous laissant avec seulement 0. 61 00:03:44,020 --> 00:03:48,600 >> Donc à la fin, je me retrouve en multipliant tout à fait accidentellement 0 fois f moins 62 00:03:48,600 --> 00:03:52,830 32,0, ce qui est peu importe ce que aller toujours de me donner 0. 63 00:03:52,830 --> 00:03:56,930 Donc, gardez à l'esprit, à tout moment à l'aide valeurs à virgule flottante à proximité de 64 00:03:56,930 --> 00:03:59,860 ints, vous ne pourriez pas nécessairement obtenir la réponse que vous attendez. 65 00:03:59,860 --> 00:04:04,220 Et afin de prendre soin d'utiliser, comme je l'ai fait dans le valeurs premier cas, virgule flottante 66 00:04:04,220 --> 00:04:06,530 tout au long d'éviter de tels problèmes. 67 00:04:06,530 --> 00:04:08,267