1 00:00:00,000 --> 00:00:02,360 >> David J. MALAN: Habang ikaw ay marahil alam, temperatura ay nasusukat sa paggamit 2 00:00:02,360 --> 00:00:04,360 iba't ibang mga antas sa iba't-ibang bahagi ng mundo. 3 00:00:04,360 --> 00:00:09,370 Halimbawa, 212 degree Fahrenheit ay 100 grado na Celsius at 32 degrees 4 00:00:09,370 --> 00:00:11,810 Fahrenheit ay 0 grado na Celsius. 5 00:00:11,810 --> 00:00:14,230 Gusto hindi ito gandang kung nagkaroon kami ng computer programa na nagpahintulot sa amin upang 6 00:00:14,230 --> 00:00:16,950 convert mula sa, sabihin nating, Fahrenheit sa Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Well, maaari naming magsulat ng programang iyon. 8 00:00:18,510 --> 00:00:24,350 Ng unang magsimula sa magsama cs50.h Hayaan, sa gayon ay maaari kaming gumamit ng isang function na tinatawag na 9 00:00:24,350 --> 00:00:28,610 makakuha ng float, na kung saan, tulad ng get int, ay nakakuha ng numero mula sa user, ngunit ang oras na ito ng isang 10 00:00:28,610 --> 00:00:31,440 numero ng lumulutang na tuldok - isa may isang decimal point. 11 00:00:31,440 --> 00:00:34,840 >> Hayaan Kasama rin ni standard io.h nang sa gayon ay magkaroon kami ng access sa 12 00:00:34,840 --> 00:00:36,230 mga pag-andar tulad ng naka-print na f. 13 00:00:36,230 --> 00:00:40,000 At din magpahayag ng pangunahing hayaan sa karaniwang paraan. 14 00:00:40,000 --> 00:00:42,675 >> I-prompt ng susunod user para sa Hayaan isang temperatura sa Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Sabihin ngayon talagang makakuha ng temperatura na mula sa gumagamit, una sa pamamagitan ng 17 00:00:49,220 --> 00:00:52,910 deklarasyon ng variable na tinatawag na f ng uri ng float. 18 00:00:52,910 --> 00:00:56,750 Ang isang float, muli, ibig sabihin ay isang variable na nag-iimbak ng mga lumulutang na halaga punto, 19 00:00:56,750 --> 00:00:58,200 ang isa ay may isang decimal point. 20 00:00:58,200 --> 00:01:01,780 >> Magtalaga ng ito ang balik Hayaan halaga ng get float. 21 00:01:01,780 --> 00:01:06,080 At pagkatapos, hayaang gawin ng isang bit ng palatuusan sa ito, deklarasyon unang isa pang float 22 00:01:06,080 --> 00:01:11,690 na tinatawag na C para sa Celsius at iimbak sa C ang resulta ng ilang mga karaniwang palatuusan. 23 00:01:11,690 --> 00:01:19,060 5.0 na hinati sa pamamagitan ng 9.0 beses F minus 32.0. 24 00:01:19,060 --> 00:01:23,440 >> Hayaan ngayong mag-print ng mga resulta ng pagtutuos na ito. 25 00:01:23,440 --> 00:01:24,730 porsiyento f - 26 00:01:24,730 --> 00:01:27,890 signifying isang placeholder para sa lumulutang na halaga punto - 27 00:01:27,890 --> 00:01:31,680 kuwit C upang i-print ang temperatura sa Celsius. 28 00:01:31,680 --> 00:01:33,000 I-save ang aking panghuling Hayaan. 29 00:01:33,000 --> 00:01:38,220 Sumulat ng libro na may F upang C. Run sa programa may tuldok na slash F upang C. 30 00:01:38,220 --> 00:01:39,940 >> At Subukan nating mga karaniwang ipaalam temperatura. 31 00:01:39,940 --> 00:01:45,820 212 degrees sa Fahrenheit ay 100 grado na Celsius. 32 00:01:45,820 --> 00:01:50,090 32 degrees sa Fahrenheit ay 0 degrees sa Celsius. 33 00:01:50,090 --> 00:01:54,240 >> Hinahayaan Ngayon pinuhin ang programang ito ng kaunti bit sa pamamagitan ng hindi pag-print ng masyadong maraming bilang 0 ni 34 00:01:54,240 --> 00:01:55,820 pagkatapos na decimal na lugar. 35 00:01:55,820 --> 00:01:57,940 Upang gawin ito, ako pagpunta sa bumalik sa linya 11. 36 00:01:57,940 --> 00:02:03,430 At sa halip na tukuyin lamang porsyento f, Pupunta ako sa halip tukuyin, sabihin nating, 37 00:02:03,430 --> 00:02:08,800 0.1 f, na nagpapaalam sa f-print na lang ako nais na mag-print ng mga lumulutang na halaga punto 38 00:02:08,800 --> 00:02:11,750 sa isang halaga pagkatapos ng decimal lugar. 39 00:02:11,750 --> 00:02:13,630 >> Ni resave aking programa Hayaan. 40 00:02:13,630 --> 00:02:19,680 Mag-recompile ito na may make F upang C. Pagkatapos muling patakbuhin ito sa tuldok slash F upang C. At 41 00:02:19,680 --> 00:02:24,910 ni retry sa, sabihin nating, 212 hayaan, kung saan ay nagbibigay sa akin 100.0. 42 00:02:24,910 --> 00:02:28,360 >> Ngayon ay nagkakahalaga ng noting na ginawa ko isang bagay na napaka sadyang sa linya 9. 43 00:02:28,360 --> 00:02:35,830 Pansinin kung paano ko na sinulat 5 ay 5.0, 9 bilang 9.0, at kahit 32 bilang 32.0. 44 00:02:35,830 --> 00:02:39,000 Well, ang unang dalawa sa mga halagang iyon ay napaka sadyang pinili upang maging 45 00:02:39,000 --> 00:02:42,200 mga halaga ng mga lumulutang na tuldok, hindi lang dahil ng pagsunod sa mga natitira 46 00:02:42,200 --> 00:02:42,940 ng aking mga programa - 47 00:02:42,940 --> 00:02:45,110 kung saan malinaw na nagsasangkot ng mga lumulutang mga halaga ng point - 48 00:02:45,110 --> 00:02:50,210 ngunit dahil ito ay lumiliko out na C, Kung ikaw hatiin ang isang int sa pamamagitan ng isa pang int, ang 49 00:02:50,210 --> 00:02:54,350 na nagreresulta sagot na iyong pagpunta upang makakuha ng ay ang sarili nito sa isang int, kahit na paraan na 50 00:02:54,350 --> 00:02:57,450 pagkakaroon upang itapon ang lahat ng bagay pagkatapos ng decimal point. 51 00:02:57,450 --> 00:03:04,990 >> Sa madaling salita, kung binago ko ito sa 5.0 5 o ito 9.0-9 at pagkatapos resave 52 00:03:04,990 --> 00:03:10,550 ang aking mga programa, mag-recompile may make F upang C, at pagkatapos ay muling i-run ito sa tuldok slash F 53 00:03:10,550 --> 00:03:15,310 sa C at uri sa isang input ng tulad ng 212, mapapansin na ang kasagutan pupuntahan ko 54 00:03:15,310 --> 00:03:17,860 makakuha ng mga oras na ito ay aktwal na medyo mali. 55 00:03:17,860 --> 00:03:23,570 0.0 ay hindi ang tamang degree sa Celsius bilang 212 Farenheit. 56 00:03:23,570 --> 00:03:24,500 >> Well, ano kaya ang nangyari? 57 00:03:24,500 --> 00:03:29,410 Well, sa linya 9, dahil 5 na ngayon ang isang integer at dahil 9 na ngayon ang isang 58 00:03:29,410 --> 00:03:34,810 integer, ang resulta sa mathematically Dapat na 0.5555 at iba pa. 59 00:03:34,810 --> 00:03:39,120 Ngunit dahil sa resulta, ayon sa Panuntunan C, na may na maging isang int, na 60 00:03:39,120 --> 00:03:44,020 0.5555 ay makakakuha ng itinapon ang layo, Aalis sa amin na may 0 lang. 61 00:03:44,020 --> 00:03:48,600 >> Kaya sa katapusan, napupunta ako multiply medyo aksidenteng 0 beses f minus 62 00:03:48,600 --> 00:03:52,830 32.0, na kahit na ano palaging pagpunta sa akong bigyan 0. 63 00:03:52,830 --> 00:03:56,930 Kaya huwag tandaan, anumang oras gamit mga halaga ng mga lumulutang na tuldok sa proximity ng 64 00:03:56,930 --> 00:03:59,860 ints, hindi mo puwede kinakailangan makuha ang sagot kaya inaasahan. 65 00:03:59,860 --> 00:04:04,220 At kaya mag-ingat upang gamitin, tulad ng ginawa ko sa mga halaga ng unang kaso, lumulutang na tuldok 66 00:04:04,220 --> 00:04:06,530 sa buong upang maiwasan ang anumang naturang mga isyu. 67 00:04:06,530 --> 00:04:08,267