1 00:00:00,000 --> 00:00:02,360 >> DAVID J. Malan: Zoals u waarschijnlijk weet, temperaturen worden gemeten met 2 00:00:02,360 --> 00:00:04,360 verschillende schalen in verschillende delen van de wereld. 3 00:00:04,360 --> 00:00:09,370 Bijvoorbeeld, 212 graden Fahrenheit is 100 graden Celsius en 32 graden 4 00:00:09,370 --> 00:00:11,810 Fahrenheit is 0 graden Celsius. 5 00:00:11,810 --> 00:00:14,230 Zou het niet mooi zijn als we een computer programma dat ons in staat gesteld 6 00:00:14,230 --> 00:00:16,950 converteren van, zeg, Fahrenheit Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Nou, we kunnen dat programma te schrijven. 8 00:00:18,510 --> 00:00:24,350 Laten we eerst beginnen met onder meer cs50.h, zodat we een functie genaamd gebruiken 9 00:00:24,350 --> 00:00:28,610 krijgen vlotter, die net als get int, krijgt een nummer van de gebruiker, maar dit keer een 10 00:00:28,610 --> 00:00:31,440 floating point nummer - een met een decimale punt. 11 00:00:31,440 --> 00:00:34,840 >> Laten we ook standaard io.H zodat we toegang hebben tot 12 00:00:34,840 --> 00:00:36,230 functies zoals print f. 13 00:00:36,230 --> 00:00:40,000 En laten we ook verklaren belangrijkste op de gebruikelijke wijze. 14 00:00:40,000 --> 00:00:42,675 >> Laten we het volgende wordt de gebruiker gevraagd een temperatuur in Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Laten we nu eigenlijk krijgen die temperatuur van de gebruiker, eerst door 17 00:00:49,220 --> 00:00:52,910 waarbij een variabele met de naam f van het type float. 18 00:00:52,910 --> 00:00:56,750 Een vlotter, wederom betekent een variabele die slaat een floating point waarde, 19 00:00:56,750 --> 00:00:58,200 een met een komma. 20 00:00:58,200 --> 00:01:01,780 >> Laten we het toewijzen de terugkeer waarde van get float. 21 00:01:01,780 --> 00:01:06,080 En dan gaan we een beetje van de rekenkunde op het, eerst verklaren andere float 22 00:01:06,080 --> 00:01:11,690 riep C voor Celsius en op te slaan in C de gevolg van een aantal gemeenschappelijke rekenkunde. 23 00:01:11,690 --> 00:01:19,060 5,0 gedeeld door 9,0 maal F minus 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Laten we nu het resultaat af te drukken van deze berekening. 25 00:01:23,440 --> 00:01:24,730 procent f - 26 00:01:24,730 --> 00:01:27,890 betekenende een tijdelijke aanduiding voor floating point waarde - 27 00:01:27,890 --> 00:01:31,680 komma C om uit te printen de temperatuur in graden Celsius. 28 00:01:31,680 --> 00:01:33,000 Laten we redden mijn laatste. 29 00:01:33,000 --> 00:01:38,220 Compileren met F naar C. Run het programma met dot slash F naar C. 30 00:01:38,220 --> 00:01:39,940 >> En laten we proberen deze gemeenschappelijke temperaturen. 31 00:01:39,940 --> 00:01:45,820 212 graden Fahrenheit 100 graden Celsius. 32 00:01:45,820 --> 00:01:50,090 32 graden in Fahrenheit is 0 graden Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Laten we nu verfijnen dit programma een beetje beetje door niet af te drukken zo veel 0's 34 00:01:54,240 --> 00:01:55,820 daarna decimaal. 35 00:01:55,820 --> 00:01:57,940 Om dit te doen, ga ik ga terug naar lijn 11. 36 00:01:57,940 --> 00:02:03,430 En in plaats van alleen procent f specificeren, Ik ga in plaats daarvan op te geven, laten we zeggen, 37 00:02:03,430 --> 00:02:08,800 0.1 f, informeren afdruk f dat ik alleen willen een floating point waarde afdrukken 38 00:02:08,800 --> 00:02:11,750 een waarde achter de komma. 39 00:02:11,750 --> 00:02:13,630 >> Laten we opnieuw opslaan mijn programma. 40 00:02:13,630 --> 00:02:19,680 Opnieuw compileren met make F naar C. Dan start het opnieuw op met dot slash F naar C. En 41 00:02:19,680 --> 00:02:24,910 laten we opnieuw proberen met, zeg, 212, die geeft mij 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Nu is het vermeldenswaard dat ik deed iets heel bewust in lijn 9. 43 00:02:28,360 --> 00:02:35,830 Merk op hoe ik schreef 5 is 5,0, 9 als 9.0, en zelfs 32 als 32.0. 44 00:02:35,830 --> 00:02:39,000 Welnu, de eerste twee van deze waarden werden heel bewust gekozen om 45 00:02:39,000 --> 00:02:42,200 floating point waarden, niet alleen omdat van de samenhang met de rest 46 00:02:42,200 --> 00:02:42,940 van mijn programma - 47 00:02:42,940 --> 00:02:45,110 die duidelijk betrekking hebben zwevende punt waarden - 48 00:02:45,110 --> 00:02:50,210 maar omdat het blijkt dat C, Als je delen een int int door een andere, de 49 00:02:50,210 --> 00:02:54,350 resulterende antwoord je gaat krijgen is zelf een int, zelfs als dat betekent 50 00:02:54,350 --> 00:02:57,450 hoeven weg te gooien alles achter de komma. 51 00:02:57,450 --> 00:03:04,990 >> Met andere woorden, als ik veranderen deze 5,0 tot 5 of dit 9,0-9 en vervolgens opnieuw opslaan 52 00:03:04,990 --> 00:03:10,550 mijn programma, opnieuw te compileren met make F naar C, en vervolgens opnieuw uit te voeren met dot slash F 53 00:03:10,550 --> 00:03:15,310 naar C en typ in een ingang van zoals 212, merken dat het antwoord dat ik ga 54 00:03:15,310 --> 00:03:17,860 krijgen deze tijd is eigenlijk heel verkeerd. 55 00:03:17,860 --> 00:03:23,570 0.0 is niet de juiste diploma in Celsius als Fahrenheit 212. 56 00:03:23,570 --> 00:03:24,500 >> Nou, wat is er gaande? 57 00:03:24,500 --> 00:03:29,410 Nou, in lijn 9, want 5 is nu een integer en omdat 9 is nu een 58 00:03:29,410 --> 00:03:34,810 integer, het resultaat mathematisch moet 0,5555 enzovoort. 59 00:03:34,810 --> 00:03:39,120 Maar omdat het resultaat volgens C-regels, moet een int, dat 60 00:03:39,120 --> 00:03:44,020 0,5555 wordt weggegooid, waardoor we met slechts 0. 61 00:03:44,020 --> 00:03:48,600 >> Dus in het einde, ik uiteindelijk te vermenigvuldigen heel toevallig 0 keer f minus 62 00:03:48,600 --> 00:03:52,830 32.0, dat is wat er ook gebeurt altijd naar mij 0. 63 00:03:52,830 --> 00:03:56,930 Dus in gedachten houden, op elk moment met behulp van floating point waarden in de nabijheid van 64 00:03:56,930 --> 00:03:59,860 ints, zou je niet per se krijgt het antwoord, zodat je verwachten. 65 00:03:59,860 --> 00:04:04,220 En zo zorgen om te gebruiken, zoals ik deed in de eerste geval, floating point waarden 66 00:04:04,220 --> 00:04:06,530 gedurende om dergelijke problemen te voorkomen. 67 00:04:06,530 --> 00:04:08,267