1 00:00:00,000 --> 00:00:02,360 >> DAVID J. MALAN: Som du sikkert ved, temperaturer måles ved hjælp af 2 00:00:02,360 --> 00:00:04,360 forskellige skalaer i forskellige dele af verden. 3 00:00:04,360 --> 00:00:09,370 For eksempel 212 grader Fahrenheit er 100 grader Celsius og 32 grader 4 00:00:09,370 --> 00:00:11,810 Fahrenheit er 0 grader Celsius. 5 00:00:11,810 --> 00:00:14,230 Ville det ikke være rart, hvis vi havde en computer program, der tillod os at 6 00:00:14,230 --> 00:00:16,950 konvertere fra, siger, Fahrenheit Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Nå, kan vi skrive dette program. 8 00:00:18,510 --> 00:00:24,350 Lad os først starte med omfatter cs50.h, så vi kan bruge en funktion kaldet 9 00:00:24,350 --> 00:00:28,610 få float, der ligesom get int, får en tal fra brugeren, men denne gang en 10 00:00:28,610 --> 00:00:31,440 decimaltal - en med et komma. 11 00:00:31,440 --> 00:00:34,840 >> Lad os også standard io.h så vi har adgang til 12 00:00:34,840 --> 00:00:36,230 funktioner som print F. 13 00:00:36,230 --> 00:00:40,000 Og lad os også erklære main på den sædvanlige måde. 14 00:00:40,000 --> 00:00:42,675 >> Lad os næste bede brugeren om en temperatur i Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Lad os nu rent faktisk får denne temperatur fra brugeren, først ved 17 00:00:49,220 --> 00:00:52,910 erklære en variabel kaldet f af typen float. 18 00:00:52,910 --> 00:00:56,750 En flyder igen, hvilket betyder en variabel, gemmer en floating point-værdi 19 00:00:56,750 --> 00:00:58,200 den ene med en decimal. 20 00:00:58,200 --> 00:01:01,780 >> Lad os tildele den afkastet værdien af ​​get flyde. 21 00:01:01,780 --> 00:01:06,080 Og så lad os gøre en smule aritmetik på det, først at bekendtgøre en anden float 22 00:01:06,080 --> 00:01:11,690 kaldet C Celsius og butik i C resultat af en fælles aritmetik. 23 00:01:11,690 --> 00:01:19,060 5.0 divideret med 9,0 gange F minus 32,0. 24 00:01:19,060 --> 00:01:23,440 >> Lad os nu udskrive resultatet i denne beregning. 25 00:01:23,440 --> 00:01:24,730 procent f - 26 00:01:24,730 --> 00:01:27,890 signalerer en pladsholder for decimaltalsværdi - 27 00:01:27,890 --> 00:01:31,680 komma C for at udskrive temperatur i Celsius. 28 00:01:31,680 --> 00:01:33,000 Lad os gemme mit sidste. 29 00:01:33,000 --> 00:01:38,220 Kompilere med F til C. Kør programmet med dot skråstreg F til C. 30 00:01:38,220 --> 00:01:39,940 >> Og lad os prøve dem fælles temperaturer. 31 00:01:39,940 --> 00:01:45,820 212 grader i Fahrenheit er 100 grader Celsius. 32 00:01:45,820 --> 00:01:50,090 32 grader i Fahrenheit er 0 grader i Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Nu lader forfine dette program lidt bit ved ikke at udskrive helt så mange 0'er 34 00:01:54,240 --> 00:01:55,820 efter denne decimal. 35 00:01:55,820 --> 00:01:57,940 For at gøre dette, vil jeg gå tilbage til linie 11. 36 00:01:57,940 --> 00:02:03,430 Og snarere end blot angive procent f, Jeg har tænkt mig at i stedet angive, siger, 37 00:02:03,430 --> 00:02:08,800 0,1 f, informere print f, at jeg kun vil udskrive et kommatalsværdi 38 00:02:08,800 --> 00:02:11,750 til en værdi efter decimal. 39 00:02:11,750 --> 00:02:13,630 >> Lad os gem mit program. 40 00:02:13,630 --> 00:02:19,680 Genkompilere det med make F til C. Derefter gentages det med prik skråstreg F til C. Og 41 00:02:19,680 --> 00:02:24,910 lad os prøve igen med, siger, 212, som giver mig 100,0. 42 00:02:24,910 --> 00:02:28,360 >> Nu er det værd at bemærke, at jeg gjorde noget meget bevidst på linie 9. 43 00:02:28,360 --> 00:02:35,830 Læg mærke til hvordan jeg skrev 5 er 5,0, 9 som 9,0, og selv 32 som 32,0. 44 00:02:35,830 --> 00:02:39,000 Nå, de to første af disse værdier var meget bevidst valgt at være 45 00:02:39,000 --> 00:02:42,200 floating point-værdier, ikke bare fordi sammenhængen med resten 46 00:02:42,200 --> 00:02:42,940 af mit program - 47 00:02:42,940 --> 00:02:45,110 som klart indebærer flydende punktværdier - 48 00:02:45,110 --> 00:02:50,210 men fordi det viser sig, at C, hvis du opdele en int anden int, den 49 00:02:50,210 --> 00:02:54,350 resulterende svar, du kommer til at få, er selv en int, selvom det betyder, 50 00:02:54,350 --> 00:02:57,450 skulle smide alt efter kommaet. 51 00:02:57,450 --> 00:03:04,990 >> Med andre ord, hvis jeg ændre dette 5.0 til 5 eller denne 9,0-9 og derefter gemme 52 00:03:04,990 --> 00:03:10,550 mit program, rekompilere med make F til C, og derefter køre det med prik skråstreg F 53 00:03:10,550 --> 00:03:15,310 til C og skriv en indgang ligesom 212, bemærke, at det svar, jeg har tænkt mig at 54 00:03:15,310 --> 00:03:17,860 får denne gang er faktisk helt forkert. 55 00:03:17,860 --> 00:03:23,570 0.0 ikke er den korrekte grad i Celsius 212 Fahrenheit. 56 00:03:23,570 --> 00:03:24,500 >> Nå, hvad sker der? 57 00:03:24,500 --> 00:03:29,410 Tja, i linje 9, fordi 5 er nu en heltal og fordi 9 er nu en 58 00:03:29,410 --> 00:03:34,810 heltal, resultatet matematisk skal være 0,5555 og så videre. 59 00:03:34,810 --> 00:03:39,120 Men fordi resultatet ifølge C regler, skal være en int, at 60 00:03:39,120 --> 00:03:44,020 0,5555 bliver smidt væk, forlader os med kun 0. 61 00:03:44,020 --> 00:03:48,600 >> Så i sidste ende, ender jeg multiplicere helt tilfældigt 0 gange f minus 62 00:03:48,600 --> 00:03:52,830 32,0, hvilket er uanset hvad altid kommer til at give mig 0. 63 00:03:52,830 --> 00:03:56,930 Så du skal huske på, når som helst ved hjælp af floating point-værdier i nærheden af 64 00:03:56,930 --> 00:03:59,860 ints, du måske ikke nødvendigvis få svaret, så du forventer. 65 00:03:59,860 --> 00:04:04,220 Og så sørge for at bruge, som jeg gjorde i første tilfælde kommeværdier 66 00:04:04,220 --> 00:04:06,530 hele til at undgå sådanne problemer. 67 00:04:06,530 --> 00:04:08,267