1 00:00:00,000 --> 00:00:02,360 >> DAVID J. Malan: Fel y gwyddoch mae'n debyg, tymheredd yn cael eu mesur gan ddefnyddio 2 00:00:02,360 --> 00:00:04,360 gwahanol raddfeydd mewn gwahanol rannau o'r byd. 3 00:00:04,360 --> 00:00:09,370 Er enghraifft, 212 gradd Fahrenheit yn 100 gradd Celsius a 32 gradd 4 00:00:09,370 --> 00:00:11,810 Fahrenheit yw 0 gradd Celsius. 5 00:00:11,810 --> 00:00:14,230 Oni fyddai'n braf pe bai gennym gyfrifiadur rhaglen sy'n caniatáu i ni 6 00:00:14,230 --> 00:00:16,950 drosi o, dyweder, Fahrenheit i Celsius? 7 00:00:16,950 --> 00:00:18,510 >> Wel, gallwn ysgrifennu y rhaglen honno. 8 00:00:18,510 --> 00:00:24,350 Gadewch i ni ddechrau yn gyntaf â nhw yn cynnwys cs50.h, fel y gallwn ddefnyddio'r swyddogaeth o'r enw 9 00:00:24,350 --> 00:00:28,610 cael arnofio, sydd, fel int gael, yn cael nifer o'r defnyddiwr, ond y tro hwn mae 10 00:00:28,610 --> 00:00:31,440 Rhif pwynt arnawf - un gyda phwynt degol. 11 00:00:31,440 --> 00:00:34,840 >> Gadewch i ni hefyd yn cynnwys io.h safonol fel ein bod yn cael mynediad i 12 00:00:34,840 --> 00:00:36,230 swyddogaethau fel print f. 13 00:00:36,230 --> 00:00:40,000 A gadewch i ni hefyd yn datgan prif yn y ffordd arferol. 14 00:00:40,000 --> 00:00:42,675 >> Gadewch i ni nesaf annog y defnyddiwr ar gyfer tymheredd yn Fahrenheit. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 Gadewch i ni yn awr mewn gwirionedd yn cael y tymheredd gan y defnyddiwr, yn gyntaf gan 17 00:00:49,220 --> 00:00:52,910 datgan newidyn a elwir yn f o'r math arnofio. 18 00:00:52,910 --> 00:00:56,750 Mae arnofio, unwaith eto, sy'n golygu newidyn sy'n storio gwerth pwynt arnawf, 19 00:00:56,750 --> 00:00:58,200 un gyda phwynt degol. 20 00:00:58,200 --> 00:01:01,780 >> Gadewch i neilltuo ei dychwelyd gwerth arnofio get. 21 00:01:01,780 --> 00:01:06,080 Ac yna gadewch i ni wneud ychydig o rifyddeg arno, gan ddatgan arnofio arall yn gyntaf 22 00:01:06,080 --> 00:01:11,690 a elwir yn C ar gyfer Celsius a storio yn C y ganlyniad i rai rifyddeg cyffredin. 23 00:01:11,690 --> 00:01:19,060 5.0 wedi'i rannu gan 9.0 gwaith F minws 32.0. 24 00:01:19,060 --> 00:01:23,440 >> Gadewch i ni yn awr argraffu'r canlyniad o gyfrifiannu hwn. 25 00:01:23,440 --> 00:01:24,730 y cant f - 26 00:01:24,730 --> 00:01:27,890 dynodi yn cadw'r fel y bo'r angen gwerth pwynt - 27 00:01:27,890 --> 00:01:31,680 coma C i argraffu'r tymheredd mewn Celsius. 28 00:01:31,680 --> 00:01:33,000 Gadewch i achub fy derfynol. 29 00:01:33,000 --> 00:01:38,220 Llunio gyda F i C. Rhedeg y rhaglen gyda slaes dot F i C. 30 00:01:38,220 --> 00:01:39,940 >> A gadewch i ni geisio y rhai cyffredin tymheredd. 31 00:01:39,940 --> 00:01:45,820 212 gradd mewn Fahrenheit yn 100 gradd Celsius. 32 00:01:45,820 --> 00:01:50,090 32 gradd yn Fahrenheit yn 0 gradd Celsius yn. 33 00:01:50,090 --> 00:01:54,240 >> Nawr yn gadael i fireinio rhaglen hon ychydig bit drwy beidio â argraffu yn eithaf cymaint o 0 yn 34 00:01:54,240 --> 00:01:55,820 ar ôl hynny lle degol. 35 00:01:55,820 --> 00:01:57,940 I wneud hyn, yr wyf i'n mynd i mynd yn ôl i linell 11. 36 00:01:57,940 --> 00:02:03,430 Ac yn hytrach na dim ond nodi y cant f, Rydw i'n mynd i lle hynny bennu, dyweder, 37 00:02:03,430 --> 00:02:08,800 0.1 f, hysbysu print f mai dim ond eisiau argraffu gwerth pwynt arnawf 38 00:02:08,800 --> 00:02:11,750 i un gwerth yn ôl y lle degol. 39 00:02:11,750 --> 00:02:13,630 >> Gadewch i ni resave fy rhaglen. 40 00:02:13,630 --> 00:02:19,680 Ail-grynhoi gyda gwneud F i C. Yna ailgynnal gyda slaes dot F i C. A 41 00:02:19,680 --> 00:02:24,910 gadewch i ailgeisio â, dyweder, 212, sy'n rhoi i mi 100.0. 42 00:02:24,910 --> 00:02:28,360 >> Nawr mae'n werth nodi bod y gwneuthum rhywbeth yn fwriadol iawn yn unol 9. 43 00:02:28,360 --> 00:02:35,830 Hysbysiad sut Ysgrifennais 5 yn 5.0, 9 fel 9.0, a hyd yn oed 32 fel 32.0. 44 00:02:35,830 --> 00:02:39,000 Wel, y ddau gyntaf o'r gwerthoedd hynny yn iawn dewis yn fwriadol i fod yn 45 00:02:39,000 --> 00:02:42,200 Gwerthoedd pwynt arnawf, nid yn unig oherwydd cysondeb gyda gweddill 46 00:02:42,200 --> 00:02:42,940 fy rhaglen - 47 00:02:42,940 --> 00:02:45,110 sydd yn amlwg yn golygu fel y bo'r angen Gwerthoedd pwynt - 48 00:02:45,110 --> 00:02:50,210 ond oherwydd ei fod yn troi allan y C, Os ydych yn rhannu yn int gan int arall, y 49 00:02:50,210 --> 00:02:54,350 deillio ateb rydych yn mynd i gael yw hun yn int, hyd yn oed os yw hynny'n golygu 50 00:02:54,350 --> 00:02:57,450 gorfod taflu popeth ar ôl y pwynt degol. 51 00:02:57,450 --> 00:03:04,990 >> Mewn geiriau eraill, os byddaf yn newid hyn 5.0 i 5 neu hyn 9.0-9 ac yna resave 52 00:03:04,990 --> 00:03:10,550 fy rhaglen, ail-grynhoi â gwneud F i C, ac yna ail-redeg gyda dot slaes F 53 00:03:10,550 --> 00:03:15,310 i C a theipiwch mewnbwn o fel 212, sylwi bod yr ateb Rydw i'n mynd i 54 00:03:15,310 --> 00:03:17,860 cael y tro hwn mewn gwirionedd yn eithaf anghywir. 55 00:03:17,860 --> 00:03:23,570 0.0 Nid yw'r elfen gywir yn Celsius fel 212 Fahrenheit. 56 00:03:23,570 --> 00:03:24,500 >> Wel, beth sy'n mynd ymlaen? 57 00:03:24,500 --> 00:03:29,410 Wel, yn unol 9, gan fod 5 bellach yn cyfanrif ac oherwydd 9 bellach yn 58 00:03:29,410 --> 00:03:34,810 cyfanrif, y canlyniad fathemategol Dylai fod yn 0.5555 ac yn y blaen. 59 00:03:34,810 --> 00:03:39,120 Ond oherwydd bod y canlyniad, yn ôl Rheolau C, rhaid iddo fod yn int, bod 60 00:03:39,120 --> 00:03:44,020 0.5555 yn cael ei daflu i ffwrdd, ein gadael gyda dim ond 0. 61 00:03:44,020 --> 00:03:48,600 >> Felly, yn y diwedd, yn y diwedd yn lluosi eithaf ddamweiniol 0 gwaith f minws 62 00:03:48,600 --> 00:03:52,830 32.0, sydd yn waeth beth bob amser yn mynd i roi i mi 0. 63 00:03:52,830 --> 00:03:56,930 Felly, yn cadw mewn cof, unrhyw amser gan ddefnyddio Gwerthoedd pwynt arnawf yn agos o 64 00:03:56,930 --> 00:03:59,860 ints, efallai nad ydych o reidrwydd yn gael yr ateb er mwyn i chi ei ddisgwyl. 65 00:03:59,860 --> 00:04:04,220 Ac felly yn cymryd gofal i ddefnyddio, fel y gwneuthum yn y gwerthoedd achos cyntaf, pwynt arnawf 66 00:04:04,220 --> 00:04:06,530 drwy gydol er mwyn osgoi unrhyw faterion o'r fath. 67 00:04:06,530 --> 00:04:08,267