1 00:00:00,000 --> 00:00:02,360 >> DAVID J. مالان: كما تعلمون، يتم قياس درجات الحرارة باستخدام 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 الحصول على تعويم، والتي، مثل الحصول على كثافة العمليات، ويحصل على عدد من المستخدمين، ولكن هذه المرة 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 وظائف مثل الطباعة و. 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 إعلان متغير يسمى و من نوع عشري. 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 و نتيجة لبعض الحساب المشترك. 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 لC. تشغيل البرنامج مع نقطة مائلة إلى F C. 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 و، إعلام و الطباعة أنني فقط تريد طباعة قيمة النقطة العائمة 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 لC. ثم أعد ذلك مع نقطة مائلة إلى F C. و 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، إذا كنت تقسيم عدد صحيح من قبل الباحث آخر، 49 00:02:50,210 --> 00:02:54,350 مما أدى الإجابة وأنت تسير في الحصول على و حد ذاته كثافة، حتى لو كان ذلك يعني 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 صحيح، والنتيجة رياضيا يجب أن تكون 0.5555 وهلم جرا. 59 00:03:34,810 --> 00:03:39,120 ولكن لأن النتيجة، وفقا ل قواعد C، ويجب أن يكون عدد صحيح، وهذا 60 00:03:39,120 --> 00:03:44,020 0.5555 يحصل القيت بعيدا، وترك لنا فقط 0. 61 00:03:44,020 --> 00:03:48,600 >> لذلك في النهاية، أنا في نهاية المطاف ضرب بالصدفة تماما 0 مرة و ناقص 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 رجات، قد لا بالضرورة الحصول على الجواب حتى كنت تتوقع. 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