1 00:00:00,000 --> 00:00:02,360 >> דוד י מלאן: כפי שאתה בוודאי יודע, טמפרטורות נמדדות באמצעות 2 00:00:02,360 --> 00:00:04,360 סולמות שונים בשונה חלקים של העולם. 3 00:00:04,360 --> 00:00:09,370 לדוגמא, 212 מעלות פרנהייט היא 100 מעלות צלזיוס ו32 מעלות 4 00:00:09,370 --> 00:00:11,810 פרנהייט היא 0 מעלות צלסיוס. 5 00:00:11,810 --> 00:00:14,230 האם לא יהיה זה נחמד אם היה לנו מחשב תכנית שאפשרה לנו 6 00:00:14,230 --> 00:00:16,950 להמיר מ, נגיד, פרנהייט לצלזיוס? 7 00:00:16,950 --> 00:00:18,510 >> ובכן, אנחנו יכולים לכתוב תכנית ש. 8 00:00:18,510 --> 00:00:24,350 בואו נתחיל קודם עם כולל cs50.h, כדי שנוכל להשתמש בפונקציה שנקראת 9 00:00:24,350 --> 00:00:28,610 להגיע לצוף, אשר, כמו int גט, מקבל מספר מהמשתמש, אך הפעם 10 00:00:28,610 --> 00:00:31,440 מספר נקודה צפה - אחד עם נקודה עשרונית. 11 00:00:31,440 --> 00:00:34,840 >> בואו גם כוללים io.h הסטנדרטי כך שיש לנו גישה ל 12 00:00:34,840 --> 00:00:36,230 פונקציות כמו f הדפסה. 13 00:00:36,230 --> 00:00:40,000 ובואו גם להכריז עיקרי בדרך הרגילה. 14 00:00:40,000 --> 00:00:42,675 >> בואו הבא לבקש מהמשתמש טמפרטורה בפרנהייט. 15 00:00:42,675 --> 00:00:46,050 16 00:00:46,050 --> 00:00:49,220 בואו עכשיו ממש מקבל טמפרטורה זו מהמשתמש, לראשונה על ידי 17 00:00:49,220 --> 00:00:52,910 הכרזה על משתנה בשם f של הטיפוס float. 18 00:00:52,910 --> 00:00:56,750 לצוף, שוב, כלומר, משתנה ש מאחסן ערך נקודה צפה, 19 00:00:56,750 --> 00:00:58,200 אחד עם נקודה עשרונית. 20 00:00:58,200 --> 00:01:01,780 >> בואו להקצות את התמורה ערך של מצוף גט. 21 00:01:01,780 --> 00:01:06,080 ואז בואו נעשה קצת חשבון על זה, והכריז לצוף אחר ראשון 22 00:01:06,080 --> 00:01:11,690 C קרא לצלזיוס ולאחסן ב-C תוצאה של חשבון משותף. 23 00:01:11,690 --> 00:01:19,060 5.0 מחולקים 9.0 פעמים F מינוס 32.0. 24 00:01:19,060 --> 00:01:23,440 >> בואו עכשיו להדפיס את התוצאה חישוב זה. 25 00:01:23,440 --> 00:01:24,730 ו אחוזים - 26 00:01:24,730 --> 00:01:27,890 המסמנים מיקום עבור ערך נקודה צפה - 27 00:01:27,890 --> 00:01:31,680 C הפסיק להדפיס טמפרטורה בצלזיוס. 28 00:01:31,680 --> 00:01:33,000 בואו להציל אותי סופי. 29 00:01:33,000 --> 00:01:38,220 לקמפל עם F לג על הפעלה התכנית עם F לוכסן הנקודה לג 30 00:01:38,220 --> 00:01:39,940 >> ובואו ננסה נפוץ אלה טמפרטורות. 31 00:01:39,940 --> 00:01:45,820 212 מעלות בפרנהייט הוא 100 מעלות צלזיוס. 32 00:01:45,820 --> 00:01:50,090 32 מעלות בפרנהייט היא 0 מעלות בצלזיוס. 33 00:01:50,090 --> 00:01:54,240 >> כעת מאפשר לחדד את התכנית הזו קטנה קצת בכך שלא מדפיס 0 של די רב 34 00:01:54,240 --> 00:01:55,820 לאחר שהמקום עשרוני. 35 00:01:55,820 --> 00:01:57,940 כדי לעשות זאת, אני הולך אחזור לשורה 11. 36 00:01:57,940 --> 00:02:03,430 ולא רק לציין ו אחוזים, אני הולך לציין במקום, נניח, 37 00:02:03,430 --> 00:02:08,800 0.1 f, f הדפסה ליידע שרק רוצה להדפיס ערך נקודה צפה 38 00:02:08,800 --> 00:02:11,750 לערך אחד אחרי הנקודה העשרונית. 39 00:02:11,750 --> 00:02:13,630 >> בואו שמרו מחדש את התכנית שלי. 40 00:02:13,630 --> 00:02:19,680 הדר מחדש את זה עם F איפור לג אז להפעיל מחדש את זה עם F לוכסן הנקודה לג ו 41 00:02:19,680 --> 00:02:24,910 בואו לנסות שוב עם, נניח, 212, אשר נותן לי 100.0. 42 00:02:24,910 --> 00:02:28,360 >> עכשיו זה ראוי לציין כי אני עשיתי משהו מאוד במתכוון בקו 9. 43 00:02:28,360 --> 00:02:35,830 שים לב איך כתבתי 5 הוא 5.0, 9 כ9.0, ואפילו 32 כ32.0. 44 00:02:35,830 --> 00:02:39,000 ובכן, שני הראשונים של ערכים אלה היו נבחר מאוד במכוון להיות 45 00:02:39,000 --> 00:02:42,200 ערכי נקודה צפה, לא רק בגלל עקביות עם שאר 46 00:02:42,200 --> 00:02:42,940 התכנית שלי - 47 00:02:42,940 --> 00:02:45,110 אשר בבירור כרוך צף ערכי נקודה - 48 00:02:45,110 --> 00:02:50,210 אלא משום שמתברר שC, אם אתה לחלק int ידי int אחר, 49 00:02:50,210 --> 00:02:54,350 תשובה וכתוצאה מכך אתה הולך לקבל היא עצמו int, גם אם זה אומר 50 00:02:54,350 --> 00:02:57,450 יש לזרוק את כל מה לאחר הנקודה העשרונית. 51 00:02:57,450 --> 00:03:04,990 >> במילים אחרות, אם אני משנה את זה ל5.0 5 או 9.0 זה עד 9 ולאחר מכן שמור 52 00:03:04,990 --> 00:03:10,550 התכנית שלי, הידור מחדש עם F איפור ל-C, ולאחר מכן להפעיל מחדש את זה עם לוכסן נקודת F 53 00:03:10,550 --> 00:03:15,310 ל-C וסוג בקלט כמו 212, שם לב שהתשובה שאני הולך 54 00:03:15,310 --> 00:03:17,860 מקבל הפעם הוא דווקא די בסדר. 55 00:03:17,860 --> 00:03:23,570 0.0 היא לא המידה הנכונה ב צלזיוס כ212 צלזיוס. 56 00:03:23,570 --> 00:03:24,500 >> ובכן, מה קורה? 57 00:03:24,500 --> 00:03:29,410 ובכן, בשורה 9, כי 5 הוא עכשיו שלם וכי 9 הוא עכשיו 58 00:03:29,410 --> 00:03:34,810 מספר שלם, התוצאה מבחינה מתמטית צריך להיות .5555 וכן הלאה. 59 00:03:34,810 --> 00:03:39,120 אבל בגלל התוצאה, על פי הכללים של C, צריך להיות int, כי 60 00:03:39,120 --> 00:03:44,020 0.5555 מקבל נזרקו משם, משאיר אותנו רק עם 0. 61 00:03:44,020 --> 00:03:48,600 >> אז בסופו של הדבר, אני בסופו של הכפלה די בטעות 0 פעמים F מינוס 62 00:03:48,600 --> 00:03:52,830 32.0, וזה לא משנה מה הולך תמיד לתת לי 0. 63 00:03:52,830 --> 00:03:56,930 אז לעשות לזכור, כל עת באמצעות ערכי נקודה צפה בסמיכות 64 00:03:56,930 --> 00:03:59,860 ints, ייתכן שלא בהכרח לקבל את התשובה כל כך צפוי. 65 00:03:59,860 --> 00:04:04,220 וכך לטפל לשימוש, כפי שעשיתי ב ערכי מקרה ראשון, נקודה צפה 66 00:04:04,220 --> 00:04:06,530 לאורך כל כדי למנוע בעיות מסוג זה. 67 00:04:06,530 --> 00:04:08,267