1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [عزف الموسيقى] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 J. DAVID مالان: حسنا. 5 00:00:12,660 --> 00:00:15,590 هذا هو CS50، وهذا هي بداية أسبوعين. 6 00:00:15,590 --> 00:00:19,120 لذلك دعونا نبدأ اليوم مع خلل. 7 00:00:19,120 --> 00:00:20,974 الشوائب، بطبيعة الحال، هو خطأ في أحد البرامج، 8 00:00:20,974 --> 00:00:22,890 وستحصل جدا مألوفة مع هذا المفهوم 9 00:00:22,890 --> 00:00:26,050 إذا كنت قد برمجت أبدا قبل. pset0 والآن pset1. 10 00:00:26,050 --> 00:00:29,280 ولكن دعونا النظر في شيء قليلا بسيطة في البداية. 11 00:00:29,280 --> 00:00:32,189 هذا البرنامج هنا بأنني رمى معا مقدما، 12 00:00:32,189 --> 00:00:37,280 وأزعم أن هذا يجب طباعة 10 النجوم على الشاشة باستخدام printf، 13 00:00:37,280 --> 00:00:41,020 لكنه على ما يبدو عربات التي تجرها الدواب في بعض الطريق. 14 00:00:41,020 --> 00:00:45,370 >> وبالنظر إلى أن المواصفات التي أنه يجب طباعة 10 النجوم، 15 00:00:45,370 --> 00:00:50,230 ولكن لم يحدث ذلك على ما يبدو، ما هل المطالبة هي علة؟ 16 00:00:50,230 --> 00:00:52,004 نعم؟ 17 00:00:52,004 --> 00:00:54,420 حتى انها لمن قبل خطأ واحد، وماذا يعني ذلك؟ 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 موافق. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 ممتازة. 22 00:01:10,410 --> 00:01:13,930 لذلك قمنا بتحديد تبدأ قيمة صفر لط، 23 00:01:13,930 --> 00:01:18,399 ولقد تحديد قيمة ن 10، ولكننا قد استخدمت أقل من أو يساوي. 24 00:01:18,399 --> 00:01:21,190 والسبب أن هذا هو اثنين أحرف وليس رمز واحد فقط، 25 00:01:21,190 --> 00:01:22,630 مثل في كتاب الرياضيات، هو ان لم يكن لديك 26 00:01:22,630 --> 00:01:24,880 وسيلة للتعبير عن أي ما يعادل حرف واحد. 27 00:01:24,880 --> 00:01:28,450 >> وهذا يعني أقل من، ولكن إذا كنت تبدأ العد من الصفر، 28 00:01:28,450 --> 00:01:31,690 ولكن كنت تعول على طول الطريق من خلال ويساوي 10، 29 00:01:31,690 --> 00:01:34,170 كنت بالطبع سوف عد 11 أشياء في المجموع. 30 00:01:34,170 --> 00:01:35,900 وحتى وأنت تسير لطباعة 11 النجوم. 31 00:01:35,900 --> 00:01:37,990 وذلك ما قد يكون إصلاح هذا؟ 32 00:01:37,990 --> 00:01:39,970 نعم؟ 33 00:01:39,970 --> 00:01:43,980 >> حتى مجرد ضبط أقل من أو يساوي أقل من أن يكون مجرد، 34 00:01:43,980 --> 00:01:46,250 وهناك، أنا أطالب، وربما حل آخر أيضا. 35 00:01:46,250 --> 00:01:47,210 آخر ما يمكن أن تفعله؟ 36 00:01:47,210 --> 00:01:48,590 نعم؟ 37 00:01:48,590 --> 00:01:53,660 >> حتى يبدأ يعادل إلى 1، و مغادرة أقل من أو يساوي. 38 00:01:53,660 --> 00:01:56,187 وبصراحة فانني ازعم أنه لإنسان نموذجي، 39 00:01:56,187 --> 00:01:57,770 وربما هذا هو أكثر وضوحا. 40 00:01:57,770 --> 00:02:00,280 بدء العد في 1 و العد حتى إلى 10. 41 00:02:00,280 --> 00:02:01,690 تفعل أساسا ما تقصد. 42 00:02:01,690 --> 00:02:04,010 >> ولكن الواقع هو في البرمجة، كما رأينا، 43 00:02:04,010 --> 00:02:07,598 علماء الكمبيوتر والمبرمجين عموما لم يبدأ العد من الصفر. 44 00:02:07,598 --> 00:02:09,389 وحتى هذا شيء طيب مرة كنت تعتاد على ذلك. 45 00:02:09,389 --> 00:02:12,640 سوف حالتك عموما يكون شيء من هذا القبيل أقل من. 46 00:02:12,640 --> 00:02:14,910 بكل بساطة منطقي الخطأ الذي نستطيع الآن 47 00:02:14,910 --> 00:02:17,990 إصلاح وإعادة ترجمة في نهاية المطاف هذا وتحصل فقط 10. 48 00:02:17,990 --> 00:02:19,610 >> حسنا ماذا عن هذا الخطأ هنا؟ 49 00:02:19,610 --> 00:02:24,200 هنا، مرة أخرى، أزعم أن لدي الهدف من طباعة 10 stars-- 50 00:02:24,200 --> 00:02:28,140 واحد في كل سطر هذا الوقت، ولكن لم يحدث ذلك. 51 00:02:28,140 --> 00:02:30,940 قبل أن نقترح ما الإصلاح هو، ماذا يفعل هذا 52 00:02:30,940 --> 00:02:34,640 طباعة بصريا إذا كان لي أن تجميع وتشغيل هذا البرنامج رأيك؟ 53 00:02:34,640 --> 00:02:35,140 نعم؟ 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> نجوم. 56 00:02:38,860 --> 00:02:41,690 لذلك كل النجوم على نفس الخط هو ما سمعت، 57 00:02:41,690 --> 00:02:43,391 ثم حرف سطر جديد. 58 00:02:43,391 --> 00:02:44,140 لذلك دعونا نحاول ذلك. 59 00:02:44,140 --> 00:02:48,710 لذا تأكد عربات التي تجرها الدواب-1، أدخل، وأنا أرى الأمر رنة 60 00:02:48,710 --> 00:02:50,090 التي تحدثنا عنها في المرة السابقة. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1، وبالفعل أرى كل النجوم 10 على نفس الخط على الرغم من أن أزعم 62 00:02:55,180 --> 00:02:58,690 في مواصفات بلدي مجرد تعليق على قمة التعليمات البرمجية التي كنت أنوي القيام به في واحد 63 00:02:58,690 --> 00:02:59,230 الخط. 64 00:02:59,230 --> 00:03:00,580 ولكن هذا يبدو صحيحا. 65 00:03:00,580 --> 00:03:04,620 >> الآن خط 15 يبدو أنا طباعة نجمة، ثم خط 16 66 00:03:04,620 --> 00:03:06,620 يبدو وكأنني الطباعة حرف سطر جديد، 67 00:03:06,620 --> 00:03:09,560 وانهم على حد سواء بادئة بذلك أنا داخل الحلقة بشكل واضح. 68 00:03:09,560 --> 00:03:13,610 لذلك لا ينبغي لي أن تفعل نجمة، جديدة خط، نجمة، خط جديد، نجمة، خط جديد؟ 69 00:03:13,610 --> 00:03:14,110 نعم؟ 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> نعم، على عكس اللغات مثل بيثون، إذا كنت على دراية، 72 00:03:21,240 --> 00:03:23,540 المسافة البادئة لا يهم إلى الكمبيوتر. 73 00:03:23,540 --> 00:03:25,280 يهم فقط على الإنسان. 74 00:03:25,280 --> 00:03:29,860 حتى خطوط بينما هنا لقد اخترع 15 و16-- أن تبدو جميلة، 75 00:03:29,860 --> 00:03:31,330 لكن الكمبيوتر لا يهتم. 76 00:03:31,330 --> 00:03:34,640 الكمبيوتر يهتم وجود في الواقع الأقواس المعقوفة 77 00:03:34,640 --> 00:03:36,310 حول هذه الأسطر من التعليمات البرمجية. 78 00:03:36,310 --> 00:03:39,520 >> بحيث انها clear-- مثلما هو الحال في Scratch-- أن هذين الخطين من التعليمات البرمجية 79 00:03:39,520 --> 00:03:40,450 يجب أن يعدم. 80 00:03:40,450 --> 00:03:44,390 مثل واحد من تلك الأصفر خدش لغز قطع مرارا وتكرارا وتكرارا. 81 00:03:44,390 --> 00:03:50,920 >> وحتى الآن ما إذا كنت إعادة تشغيل هذا program-- ./buggy-2-- جلالة الملك. 82 00:03:50,920 --> 00:03:51,770 لدي خطأ الآن. 83 00:03:51,770 --> 00:03:54,212 ما لم أنسى أن تفعل؟ 84 00:03:54,212 --> 00:03:55,420 نعم، لذلك لم أكن ترجمة عليه. 85 00:03:55,420 --> 00:03:56,740 لذا تأكد عربات التي تجرها الدواب 2. 86 00:03:56,740 --> 00:03:59,840 لا يوجد مثل هذا الملف لأنني لم في الواقع تجميع النسخة الثانية. 87 00:03:59,840 --> 00:04:04,860 وحتى الآن مثيرة للاهتمام غير معلنة variable-- ليس 2. 88 00:04:04,860 --> 00:04:05,510 نقوم به 1. 89 00:04:05,510 --> 00:04:11,050 جعل عربات التي تجرها الدواب، 1-- ./buggy-1-- والآن كل واحد منهم هو على نفس الخط. 90 00:04:11,050 --> 00:04:13,880 >> الآن هناك استثناء ل هذا الادعاء المفترض من الألغام 91 00:04:13,880 --> 00:04:15,520 التي تحتاجها هذه الأقواس المعقوفة. 92 00:04:15,520 --> 00:04:20,160 عندما هو في الواقع OK-- إذا كنت قد لاحظت في القسم أو textbooks-- 93 00:04:20,160 --> 00:04:22,130 لحذف الأقواس المعقوفة؟ 94 00:04:22,130 --> 00:04:22,630 نعم؟ 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> بالضبط. 97 00:04:26,870 --> 00:04:28,940 عندما يكون هناك واحد فقط سطر من التعليمات البرمجية التي قمت 98 00:04:28,940 --> 00:04:32,830 تريد أن تكون مرتبطة مع حلقة كما في المثال الأول. 99 00:04:32,830 --> 00:04:36,380 فمن المشروع تماما لحذف الأقواس المعقوفة 100 00:04:36,380 --> 00:04:40,310 كما نوع من الراحة من المترجم لك. 101 00:04:40,310 --> 00:04:40,810 نعم؟ 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 سؤال جيد. 104 00:04:43,930 --> 00:04:45,500 سيتم اعتبرته خطأ النمط؟ 105 00:04:45,500 --> 00:04:49,340 فإننا promote-- كما في CS50 دليل الاسلوب، وURL التي 106 00:04:49,340 --> 00:04:51,926 في pset1-- التي دائما استخدام الأقواس المعقوفة. 107 00:04:51,926 --> 00:04:53,550 بالتأكيد إذا كنت جديدا على البرمجة. 108 00:04:53,550 --> 00:04:56,800 الحقيقة هي أننا لسنا سوف تمنعك 109 00:04:56,800 --> 00:04:58,680 من فعل هذه الراحة. 110 00:04:58,680 --> 00:05:00,846 ولكن إذا كنت مجرد الحصول على الى التحول من الأشياء، 111 00:05:00,846 --> 00:05:04,020 على الاطلاق فقط دائما استخدام مجعد تستعد حتى تحصل على تعليق منه. 112 00:05:04,020 --> 00:05:04,640 سؤال جيد. 113 00:05:04,640 --> 00:05:05,320 >> كل الحق. 114 00:05:05,320 --> 00:05:07,660 حتى ذلك الحين كان علة. 115 00:05:07,660 --> 00:05:09,190 على الأقل في شيء بسيط إلى حد ما. 116 00:05:09,190 --> 00:05:11,260 وحتى الآن قد تعتقد أن هذا هو بدائية إلى حد ما، أليس كذلك؟ 117 00:05:11,260 --> 00:05:13,635 هذا هو نوع من الأسبوع الأول في النظر إلى اللغة 118 00:05:13,635 --> 00:05:14,890 مثل، انظر البق الخاص فيها. 119 00:05:14,890 --> 00:05:17,250 ولكن الواقع وهذه هي ممثل الواقع 120 00:05:17,250 --> 00:05:20,310 بعض المشاكل مخيفة جدا التي يمكن أن تنشأ في العالم الحقيقي. 121 00:05:20,310 --> 00:05:23,530 >> وحتى بعض من تذكرون إذا كنت تتبع أخبار تكنولوجيا المعلومات، 122 00:05:23,530 --> 00:05:25,740 أو ربما حتى اشتعلت الرياح من هذا في شهر فبراير 123 00:05:25,740 --> 00:05:29,434 من العام الماضي أن أبل كان قدم شيئا من الخطأ في كل من دائرة الرقابة الداخلية، 124 00:05:29,434 --> 00:05:31,350 نظام التشغيل على هواتفهم، وأيضا 125 00:05:31,350 --> 00:05:34,220 نظام التشغيل ماك، نظام التشغيل على سطح المكتب وأجهزة الكمبيوتر المحمولة. 126 00:05:34,220 --> 00:05:36,480 ورأيت مثل هذه العناوين في هذا. 127 00:05:36,480 --> 00:05:41,120 وبعد ذلك، أبل عدت لإصلاح هذا الخطأ، 128 00:05:41,120 --> 00:05:45,950 وبسرعة كبيرة لم إصلاحه في دائرة الرقابة الداخلية، ولكن بعد ذلك ثابتة في نهاية المطاف في نظام التشغيل Mac OS 129 00:05:45,950 --> 00:05:46,810 كذلك. 130 00:05:46,810 --> 00:05:50,370 >> الآن أيا من هذه العناوين وحدها حقا تكشف ما هي المشكلة الأساسية، 131 00:05:50,370 --> 00:05:55,640 ولكن علة انخفض في نهاية المطاف إلى خطأ في SSL، طبقة المقابس الآمنة. 132 00:05:55,640 --> 00:05:57,390 وقصة قصيرة طويلة، هذا هو البرنامج 133 00:05:57,390 --> 00:06:01,030 المتصفحات التي لدينا وغيرها البرمجيات المستخدمة لتفعل ماذا؟ 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> إذا قلت إن SSL هو المعنية، كلما 136 00:06:06,860 --> 00:06:13,920 زيارة URL الذي يبدأ ب HTTPS، ماذا بعد ذلك قد تكون ذات صلة SSL ل؟ 137 00:06:13,920 --> 00:06:14,580 التشفير. 138 00:06:14,580 --> 00:06:16,470 ولذا فإننا سوف نتحدث عن هذا في الأيام المقبلة. 139 00:06:16,470 --> 00:06:18,750 التشفير، فن الهرولة المعلومات. 140 00:06:18,750 --> 00:06:22,200 >> لكن قصة قصيرة طويلة، وأبل في وقت ما قبل ارتكبت خطأ 141 00:06:22,200 --> 00:06:25,970 في تنفيذها لSSL، و البرامج التي تنفذ في نهاية المطاف 142 00:06:25,970 --> 00:06:30,120 عناوين المواقع مثل HTTPS أو كحد أقصى اتصالات هناك أيضا. 143 00:06:30,120 --> 00:06:32,850 نتيجة وهي أن لديك يمكن صلات محتملة 144 00:06:32,850 --> 00:06:33,920 يتم اعتراضها. 145 00:06:33,920 --> 00:06:37,130 وكانت الاتصالات الخاصة بك غير مشفرة بالضرورة 146 00:06:37,130 --> 00:06:40,350 إذا كان لديك بعض الرجل سيئة بين لكم وموقع الوجهة الذين 147 00:06:40,350 --> 00:06:42,170 عرف كيفية الاستفادة من هذا. 148 00:06:42,170 --> 00:06:45,090 >> الآن أبل نشرت في نهاية المطاف إصلاح لهذه النهاية، 149 00:06:45,090 --> 00:06:46,920 ووصف من اهتمامهم كان هذا. 150 00:06:46,920 --> 00:06:49,878 فشل نقل آمن للتحقق من صحة أصالة الاتصال. 151 00:06:49,878 --> 00:06:52,920 وقد وجهت هذه المسألة استعادة خطوات التحقق من صحة عداد المفقودين. 152 00:06:52,920 --> 00:06:57,250 >> لذلك هذا هو تفسير متموج اليد ذاتها لمجرد القول إننا ثمل. 153 00:06:57,250 --> 00:07:00,920 هناك حرفيا واحدة سطر من التعليمات البرمجية التي كانت عربات التي تجرها الدواب 154 00:07:00,920 --> 00:07:05,130 في تنفيذها لSSL، و إذا كنت انتقل عبر الإنترنت والبحث عن هذا 155 00:07:05,130 --> 00:07:07,210 يمكنك أن تجد في الواقع شفرة المصدر الأصلي. 156 00:07:07,210 --> 00:07:11,960 على سبيل المثال، وهذا هو لقطة شاشة من مجرد جزء من ملف كبير إلى حد ما، 157 00:07:11,960 --> 00:07:15,965 ولكن هذا هو دالة يسمى على ما يبدو SSL التحقق من الخادم علامة الصرف الرئيسية. 158 00:07:15,965 --> 00:07:17,840 ويستغرق حفنة من الحجج والمدخلات. 159 00:07:17,840 --> 00:07:20,298 ونحن لن نركز كثيرا على التفاصيل التافهة هناك، 160 00:07:20,298 --> 00:07:24,390 ولكن إذا كنت تركز على التعليمات البرمجية داخل لذلك دعونا الإطار العلوي function-- 161 00:07:24,390 --> 00:07:25,590 التكبير على ذلك. 162 00:07:25,590 --> 00:07:28,140 قد تشك بالفعل ما قد الخطأ 163 00:07:28,140 --> 00:07:31,230 يكون حتى إذا كان لديك أي فكرة في نهاية المطاف ما كنت تبحث في. 164 00:07:31,230 --> 00:07:35,924 هناك نوع من الشذوذ هنا، وهو ماذا؟ 165 00:07:35,924 --> 00:07:38,940 >> نعم، أنا لا أحب حقا فشل نظرة من اثنين غوتو. 166 00:07:38,940 --> 00:07:42,060 بصراحة، لا أعرف حقا ما غوتو تفشل الوسائل، ولكن وجود اثنين منهم 167 00:07:42,060 --> 00:07:42,810 العودة إلى الوراء. 168 00:07:42,810 --> 00:07:45,290 أن مجرد نوع من التدليك لي فكريا بطريقة خاطئة، 169 00:07:45,290 --> 00:07:48,910 والواقع أننا إذا التكبير في فقط تلك الخطوط، وهذا هو C. 170 00:07:48,910 --> 00:07:52,220 >> لذلك الكثير من التعليمات البرمجية أبل هو نفسه مكتوب في C، 171 00:07:52,220 --> 00:07:55,780 وهذا على ما يبدو هو حقا equivalent-- 172 00:07:55,780 --> 00:07:59,060 ألا أن المسافة البادئة جميلة نسخة، ولكن إذا كنت تعترف بحقيقة 173 00:07:59,060 --> 00:08:02,560 أنه لا يوجد الأقواس المجعدة، ما كتب التفاح حقا كانت التعليمات البرمجية التي يبدو 174 00:08:02,560 --> 00:08:03,540 مثل هذا. 175 00:08:03,540 --> 00:08:07,080 حتى لقد أسرع خارجا وأنا فقط ثابت المسافة البادئة بمعنى 176 00:08:07,080 --> 00:08:10,690 أنه إذا لم يكن هناك الأقواس المعقوفة، التي غوتو الثانية تفشل هذا هو باللون الأصفر 177 00:08:10,690 --> 00:08:12,500 يجري تنفيذ مهما كانت. 178 00:08:12,500 --> 00:08:15,540 غير مرتبط مع واذا كان الشرط فوقه. 179 00:08:15,540 --> 00:08:19,590 >> وذلك حتى مرة أخرى، إذا كنت لا تماما فهم ما يمكن لهذا ربما 180 00:08:19,590 --> 00:08:23,230 أن تفعل، ونعرف أن كل من هذه conditions-- كل من هذه الخطوط 181 00:08:23,230 --> 00:08:26,180 هي خطوة هامة جدا في عملية فحص 182 00:08:26,180 --> 00:08:28,350 إذا كانت البيانات الخاص بك هو في الواقع مشفرة. 183 00:08:28,350 --> 00:08:31,710 حتى تخطي واحدة من هذه خطوات، وليس أفضل فكرة. 184 00:08:31,710 --> 00:08:34,840 >> ولكن لأن لدينا هذا غوتو الثاني تفشل باللون الأصفر، 185 00:08:34,840 --> 00:08:36,840 لأنه بمجرد ونحن نوع من الجمالية 186 00:08:36,840 --> 00:08:40,480 تحريكه إلى اليسار حيث غير منطقيا في الوقت الحالي، ما 187 00:08:40,480 --> 00:08:43,230 يعني هذا للخط من التعليمات البرمجية أدناه أن غوتو الثاني 188 00:08:43,230 --> 00:08:46,480 الفشل سيكون رأيك؟ 189 00:08:46,480 --> 00:08:48,860 انها دائما ما يتم تخطي. 190 00:08:48,860 --> 00:08:52,100 بحيث يتم عبس gotos عموما على لأسباب لن نذهب حقا في، 191 00:08:52,100 --> 00:08:54,940 والواقع أننا نميل في CS50 لا لتعليم هذا البيان غوتو، 192 00:08:54,940 --> 00:08:58,130 ولكن يمكن ان يخطر لك غوتو كما تفشل معنى التنقل القفز 193 00:08:58,130 --> 00:08:59,600 إلى أي جزء آخر من التعليمات البرمجية. 194 00:08:59,600 --> 00:09:03,120 >> وبعبارة أخرى القفز فوق هذا السطر الأخير جملة وتفصيلا، 195 00:09:03,120 --> 00:09:07,420 وذلك نتيجة لهذا الغباء خطأ بسيط أن كان مجرد 196 00:09:07,420 --> 00:09:10,330 نتيجة لربما شخص نسخ ولصق واحد أيضا 197 00:09:10,330 --> 00:09:14,150 وكانت العديد من المرات أن كامل أمن دائرة الرقابة الداخلية ونظام التشغيل ماك 198 00:09:14,150 --> 00:09:18,240 كان عرضة للبالاعتراض قبل الأشرار لبعض الوقت. 199 00:09:18,240 --> 00:09:19,940 حتى أبل إصلاح هذا أخيرا. 200 00:09:19,940 --> 00:09:23,100 >> الآن إذا كان بعض من كنت فعلا تشغيل الإصدارات القديمة من نظام التشغيل ماك أو دائرة الرقابة الداخلية، 201 00:09:23,100 --> 00:09:27,250 يمكنك الذهاب إلى gotofail.com التي هو موقع على شبكة الانترنت أن شخصا إقامة 202 00:09:27,250 --> 00:09:29,190 لتحديد الأساس برمجيا 203 00:09:29,190 --> 00:09:30,980 إذا كان جهاز الكمبيوتر الخاص بك لا يزال عرضة للخطر. 204 00:09:30,980 --> 00:09:33,600 وبصراحة، إذا كان، هو على الأرجح فكرة جيدة 205 00:09:33,600 --> 00:09:36,870 لتحديث هاتفك أو ماك الخاص بك عند هذه النقطة. 206 00:09:36,870 --> 00:09:40,120 ولكن هناك، مجرد شهادة على مدى تقديرا لهذه أقل مستوى 207 00:09:40,120 --> 00:09:42,400 التفاصيل وإلى حد ما أفكار بسيطة يمكن حقا 208 00:09:42,400 --> 00:09:44,590 تترجم إلى قرارات والمشاكل التي 209 00:09:44,590 --> 00:09:47,320 affected-- في هذا case-- الملايين من الناس. 210 00:09:47,320 --> 00:09:49,107 >> الآن كلمة عن الإدارة. 211 00:09:49,107 --> 00:09:50,690 وسيبدأ القسم هذا الأحد المقبل. 212 00:09:50,690 --> 00:09:53,360 سوف تتلقى رسالة بريد إلكتروني من قبل عطلة نهاية الاسبوع حول القسم، وعند هذه النقطة 213 00:09:53,360 --> 00:09:55,290 عملية resectioning ستبدأ إذا كنت قد 214 00:09:55,290 --> 00:09:56,998 أدركت لديك الآن بعض صراعات جديدة. 215 00:09:56,998 --> 00:10:00,180 حتى يحدث هذا كل عام، ونحن سوف تستوعب في الأيام القادمة. 216 00:10:00,180 --> 00:10:02,430 >> مكتب hours-- القيام إبقاء العين على هذا الجدول هنا. 217 00:10:02,430 --> 00:10:05,100 يتغير قليلا هذا الاسبوع، خاصة وقت البدء 218 00:10:05,100 --> 00:10:08,180 والموقع، لذلك استشارة أن قبل أن يتوجه إلى ساعات العمل 219 00:10:08,180 --> 00:10:09,520 أي من الليالي الأربع القادمة. 220 00:10:09,520 --> 00:10:12,680 والآن كلمة عن التقييم، خاصة لك الغوص في مشكلة 221 00:10:12,680 --> 00:10:14,350 يحدد احدة وخارجها. 222 00:10:14,350 --> 00:10:17,070 >> لذا فقا للمواصفات، هذه هي عموما 223 00:10:17,070 --> 00:10:20,360 محاور على طول التي نقيم عملك. 224 00:10:20,360 --> 00:10:23,170 يشير إلى نطاق ما مدى تنفذ التعليمات البرمجية 225 00:10:23,170 --> 00:10:25,690 الميزات المطلوبة من مواصفات لدينا. 226 00:10:25,690 --> 00:10:28,290 وبعبارة أخرى، كم من مجموعة قطعة هل قضم. 227 00:10:28,290 --> 00:10:30,440 فعلت ثلث منه، نصف من ذلك، 100٪ من ذلك. 228 00:10:30,440 --> 00:10:33,000 حتى لو كان غير صحيح، وكم هل تحاول؟ 229 00:10:33,000 --> 00:10:35,290 بحيث يجسد مستوى من الجهد ومقدار 230 00:10:35,290 --> 00:10:38,260 الذي قمت بت قبالة مجموعة مشكلة من المشاكل. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- هذا واحد، ل أي مدى، هو التعليمات البرمجية 232 00:10:40,690 --> 00:10:43,150 بما يتفق مع شركائنا مواصفات وخالية من الأخطاء. 233 00:10:43,150 --> 00:10:44,770 لذلك لا تعمل بشكل صحيح؟ 234 00:10:44,770 --> 00:10:48,700 إذا كان لنا أن تعطيه بعض المدخلات، أليس كذلك تعطينا الإخراج الذي نتوقع؟ 235 00:10:48,700 --> 00:10:52,570 Design-- الآن هذا هو الأول من تلك النوعية بشكل خاص، 236 00:10:52,570 --> 00:10:56,180 أو تلك التي تتطلب الحكم البشري. 237 00:10:56,180 --> 00:10:59,690 وبالفعل، وهذا هو السبب لدينا الموظفين هذا العدد الكبير من زملاء التدريس وبالطبع 238 00:10:59,690 --> 00:11:00,350 مساعدين. 239 00:11:00,350 --> 00:11:03,480 إلى أي مدى لديك قانون مكتوب بشكل جيد؟ 240 00:11:03,480 --> 00:11:05,810 >> ومرة أخرى هذا هو جدا التقييم النوعي 241 00:11:05,810 --> 00:11:09,100 التي ستعمل معك على ثنائي إتجاهي في الأسابيع القادمة. 242 00:11:09,100 --> 00:11:12,060 بحيث عندما تحصل لا عشرات الرقمية فقط، ولكن أيضا 243 00:11:12,060 --> 00:11:16,682 وعشرات مكتوبة، أو ردود الفعل كتبته، أو ملاحظات مكتوبة في الكلمات الإنجليزية. 244 00:11:16,682 --> 00:11:19,640 هذا ما سنستخدم أن تدفع لك نحو كتابة أفضل مدونة في الواقع. 245 00:11:19,640 --> 00:11:23,320 وفي محاضرة والقسم، سنحاول أن نشير out-- بقدر ما نحن can-- 246 00:11:23,320 --> 00:11:26,420 ما الذي يجعل البرنامج ليس فقط صحيح وجيد وظيفيا، 247 00:11:26,420 --> 00:11:28,200 ولكن أيضا مصممة بشكل جيد. 248 00:11:28,200 --> 00:11:31,850 الأكثر كفاءة يمكن أن يكون، أو حتى أجمل ما يمكن. 249 00:11:31,850 --> 00:11:33,100 >> وهو ما يقودنا إلى النمط. 250 00:11:33,100 --> 00:11:36,876 النمط هو في نهاية المطاف حكم الجمالي. 251 00:11:36,876 --> 00:11:38,750 اخترتم جيد أسماء المتغيرات الخاصة بك؟ 252 00:11:38,750 --> 00:11:40,330 هل بادئة التعليمات البرمجية بشكل صحيح؟ 253 00:11:40,330 --> 00:11:44,010 أنها لا تبدو جيدة، وبالتالي، هل من السهل على إنسان آخر 254 00:11:44,010 --> 00:11:46,550 لقراءة كل الخاص من صحتها. 255 00:11:46,550 --> 00:11:50,300 >> الآن عموما في المنهج، فإننا تسجيل هذه الأشياء على مقياس من خمس نقاط. 256 00:11:50,300 --> 00:11:53,640 واسمحوا لي أن تدق المنزل نقطة أن ثلاثة هو جيد حقا. 257 00:11:53,640 --> 00:11:55,550 بسرعة جدا القيام به الناس تبدأ في فعل الحساب. 258 00:11:55,550 --> 00:11:58,133 عندما تحصل على ثلاث من خمسة على صحة لبعض pset 259 00:11:58,133 --> 00:12:02,040 ويعتقدون اللعنة، أنا ذاهب إلى 60٪ التي هي في جوهرها D أو E. 260 00:12:02,040 --> 00:12:03,980 >> هذه ليست الطريقة التي التفكير في هذه الأرقام. 261 00:12:03,980 --> 00:12:06,880 وهناك ثلاث جيدة حقا، وماذا نحن نتوقع عموما في بداية 262 00:12:06,880 --> 00:12:09,820 لهذا المصطلح هو أنه إذا كنت الحصول على حفنة من three's-- ربما بضعة 263 00:12:09,820 --> 00:12:12,540 المعارض، وزوجين من fours-- أو والاثنينات زوجين، زوجين من fours-- 264 00:12:12,540 --> 00:12:13,748 هذا هو مكان جيد للبدء. 265 00:12:13,748 --> 00:12:16,320 وطالما أننا نرى مسار تصاعدي مع مرور الوقت، 266 00:12:16,320 --> 00:12:18,540 كنت في مكان جيد للغاية. 267 00:12:18,540 --> 00:12:20,752 >> الصيغة التي نستخدمها ل الأشياء الوزن هي في الأساس 268 00:12:20,752 --> 00:12:22,710 في هذا المنهج، وهو ما يعني أننا فقط 269 00:12:22,710 --> 00:12:24,750 يعطي وزنا أكبر لصحتها. 270 00:12:24,750 --> 00:12:27,930 لأنه في كثير من الأحيان صحة التي تأخذ معظم الوقت. 271 00:12:27,930 --> 00:12:28,760 ثق بي الآن. 272 00:12:28,760 --> 00:12:31,190 سوف find-- على الأقل في pset-- احد ان كنت 273 00:12:31,190 --> 00:12:36,790 تنفق 90٪ من وقتك العمل على 10٪ من المشكلة. 274 00:12:36,790 --> 00:12:39,320 >> وكل نوع من يعمل باستثناء واحد أو اثنين البق، 275 00:12:39,320 --> 00:12:41,570 وتلك هي الأخطاء التي تبقي لكم حتى وقت متأخر في الليل. 276 00:12:41,570 --> 00:12:43,380 تلك هي تلك التي نوع من الهروب لك. 277 00:12:43,380 --> 00:12:45,560 ولكن بعد النوم على ذلك، أو حضور ساعات العمل 278 00:12:45,560 --> 00:12:48,844 أو طرح الأسئلة على شبكة الإنترنت، و عند الوصول إلى هذا الهدف 100٪، و 279 00:12:48,844 --> 00:12:50,760 وهذا هو السبب في أننا الوزن الأداء الدقيق أكثر من غيرها. 280 00:12:50,760 --> 00:12:54,102 تصميم أقل قليلا، و أسلوب أقل قليلا من ذلك. 281 00:12:54,102 --> 00:12:56,060 ولكن نأخذ في أسلوب mind-- وربما كان أسهل 282 00:12:56,060 --> 00:12:58,890 هذه لقضم وفقا لدليل الاسلوب. 283 00:12:58,890 --> 00:13:01,580 >> والآن، وأكثر خطورة ملاحظة على الصدق الأكاديمي. 284 00:13:01,580 --> 00:13:05,000 CS50 لديه تمييز مؤسف لل كونها أكبر منتج للوحة الإعلانات 285 00:13:05,000 --> 00:13:07,330 الحالات كل عام تقريبا تاريخيا. 286 00:13:07,330 --> 00:13:11,012 هذا ليس لأن الطلاب في الغش CS50 أي أكثر من ذلك من أي فئة أخرى، 287 00:13:11,012 --> 00:13:13,720 ولكن بسبب من طبيعة العمل، حقيقة أنه الإلكترونية، 288 00:13:13,720 --> 00:13:16,636 حقيقة أننا نبحث عن ذلك، و حقيقة نحن علماء الكمبيوتر، 289 00:13:16,636 --> 00:13:20,570 أستطيع أن أقول أننا للأسف جيد جدا في الكشف عن ذلك. 290 00:13:20,570 --> 00:13:22,710 >> فماذا يعني هذا من حيث القيمة الحقيقية؟ 291 00:13:22,710 --> 00:13:24,820 لذلك، في المنهج، فلسفة بالطبع ل 292 00:13:24,820 --> 00:13:28,090 حقا لا تختزل أن تكون معقولة. 293 00:13:28,090 --> 00:13:31,684 يوجد هذا الخط بين القيام بعمل واحد لوحدك 294 00:13:31,684 --> 00:13:34,100 والحصول على القليل من مساعدة معقولة من صديق، 295 00:13:34,100 --> 00:13:38,020 والقيام صريح أن العمل الخاص بك صديق، أو إرسال له أو لها التعليمات البرمجية 296 00:13:38,020 --> 00:13:41,080 حتى انه أو انها يمكن ببساطة اتخاذ أو الاقتراض بها الحق. 297 00:13:41,080 --> 00:13:43,580 والتي تعبر الخط أننا مرسومة في الصف. 298 00:13:43,580 --> 00:13:45,410 >> ترى، المنهج في نهاية المطاف للخطوط 299 00:13:45,410 --> 00:13:48,209 أن نرسم بأنها معقولة والسلوك غير معقول، 300 00:13:48,209 --> 00:13:50,000 ولكن هل حقا يغلي وصولا الى جوهر 301 00:13:50,000 --> 00:13:53,980 من عملك يحتاجون إلى تكون بنفسك في نهاية المطاف. 302 00:13:53,980 --> 00:13:56,230 الآن مع أن قال، هناك ارشادي. 303 00:13:56,230 --> 00:13:58,980 لأنه كما قد imagine-- من ساعات العمل ومرئيات 304 00:13:58,980 --> 00:14:01,060 وأشرطة الفيديو لدينا يظهر مما far-- CS50 305 00:14:01,060 --> 00:14:04,530 بل من المفترض أن تكون تعاونية وكما تعاونية واجتماعية و 306 00:14:04,530 --> 00:14:06,450 ممكن. 307 00:14:06,450 --> 00:14:08,570 كما تعاونية كما هو صارم. 308 00:14:08,570 --> 00:14:11,314 >> ولكن مع هذا قال: الكشف عن مجريات الأمور، كما سترى في المنهج، 309 00:14:11,314 --> 00:14:12,980 هو أنه عندما كنت تواجه بعض المشاكل. 310 00:14:12,980 --> 00:14:16,470 لديك بعض الأخطاء في التعليمات البرمجية التي قمت لا يمكن أن تحل، فمن المعقول بالنسبة لك 311 00:14:16,470 --> 00:14:18,039 لعرض التعليمات البرمجية لشخص آخر. 312 00:14:18,039 --> 00:14:21,080 صديق حتى في الصف، صديق يجلس إلى جانبك في ساعات العمل، 313 00:14:21,080 --> 00:14:22,680 أو عضوا في الموظفين. 314 00:14:22,680 --> 00:14:25,810 ولكنها قد لا تظهر مدوناتها لك. 315 00:14:25,810 --> 00:14:27,710 >> وبعبارة أخرى، و الإجابة لديك question-- 316 00:14:27,710 --> 00:14:29,940 أنا بحاجة لا أوه، وهنا help-- قانون بلدي. 317 00:14:29,940 --> 00:14:32,440 نلقي نظرة على هذا و نستنتج من ذلك ما شئت. 318 00:14:32,440 --> 00:14:34,580 الآن، بالطبع، هناك طريقة بوضوح إلى اللعبة 319 00:14:34,580 --> 00:14:37,760 هذا النظام حيث سأريكم قانون بلدي قبل أن سؤال. 320 00:14:37,760 --> 00:14:40,150 تريني بلدي التعليمات البرمجية قبل وجود السؤال. 321 00:14:40,150 --> 00:14:45,870 ولكن انظر المنهج مرة أخرى لل التفاصيل الدقيقة عن مكان هذا الخط. 322 00:14:45,870 --> 00:14:50,606 >> فقط لرسم الآن الصورة و مشاركة وبشفافية ممكن 323 00:14:50,606 --> 00:14:53,480 أين نحن في في السنوات الأخيرة، هذا هو عدد الحالات وحة الإعلانات 324 00:14:53,480 --> 00:14:56,260 التي تمت زيارتها خلال CS50 خلال السنوات السبع الماضية. 325 00:14:56,260 --> 00:14:58,717 مع 14 حالة سقوط هذا الأخير. 326 00:14:58,717 --> 00:15:01,300 من حيث الطلاب المشاركين، كان بعض الطلاب الغريب 20 327 00:15:01,300 --> 00:15:02,490 هذا الخريف الماضي. 328 00:15:02,490 --> 00:15:05,670 كان هناك ذروة من 33 الطلاب منذ بضع سنوات. 329 00:15:05,670 --> 00:15:08,830 وكثير منهم من سوء الحظ لم يعد هنا في الحرم الجامعي. 330 00:15:08,830 --> 00:15:13,100 >> الطلاب المشاركين كنسبة مئوية من الطبقة تراوح تاريخيا من 0٪ 331 00:15:13,100 --> 00:15:17,300 إلى 5.3٪، وهو فقط أن أقول هذا هو التحدي سنويا. 332 00:15:17,300 --> 00:15:20,390 ونحو هذه الغاية، ما نريد القيام به هو نقل احد 333 00:15:20,390 --> 00:15:24,310 أننا dd-- فقط FYI-- مقارنة في والإنصاف لهؤلاء الطلاب الذين 334 00:15:24,310 --> 00:15:26,520 تتبع الخط وفقا لذلك. 335 00:15:26,520 --> 00:15:29,620 نفعل مقارنة كل تيار المقدمة ضد جميع البعثات الماضية 336 00:15:29,620 --> 00:15:30,840 من السنوات العديدة الماضية. 337 00:15:30,840 --> 00:15:33,620 >> نحن نعرف أيضا كيفية جوجل حول وإيجاد مستودعات مدونة 338 00:15:33,620 --> 00:15:36,360 على الانترنت، ومنتديات المناقشة على الانترنت، ومواقع العمل على الإنترنت. 339 00:15:36,360 --> 00:15:41,580 إذا كان الطالب يمكن العثور عليه، يمكننا بالتأكيد تجد أنه بقدر ما نقوم به مع الأسف. 340 00:15:41,580 --> 00:15:45,330 فماذا سترى في المنهج على الرغم من هذا الشرط الأسف. 341 00:15:45,330 --> 00:15:47,500 يمكنني بالتأكيد نقدر، وكلنا لديه 342 00:15:47,500 --> 00:15:50,870 الموظفين بعد أن فعلت بالطبع مثل هذا، أو هذا واحد نفسه مع مرور الوقت، 343 00:15:50,870 --> 00:15:53,997 نعرف بالتأكيد ما يشبه عندما الحياة تحصل في الطريق عندما يكون لديك 344 00:15:53,997 --> 00:15:56,080 بعض وقت متأخر من الليل deadline-- ليس فقط في هذه الفئة، 345 00:15:56,080 --> 00:15:58,660 ولكن عندما كنت another-- استنفدت تماما، وشدد خارج، 346 00:15:58,660 --> 00:16:00,659 يكون وجود عدد مفرط من الأشياء الأخرى القيام به. 347 00:16:00,659 --> 00:16:03,660 سوف تجعل في مرحلة ما من الحياة بالتأكيد سيئة، وربما في وقت متأخر 348 00:16:03,660 --> 00:16:04,620 قرار الليل. 349 00:16:04,620 --> 00:16:06,520 >> حتى في المنهج، هناك هذا الشرط، 350 00:16:06,520 --> 00:16:10,629 بحيث إذا غضون 72 ساعة من اتخاذ بعض القرارات الفقراء، كنت تملك ما يصل إليها 351 00:16:10,629 --> 00:16:12,670 ويمد يده لي و أحد رؤساء دورة في 352 00:16:12,670 --> 00:16:14,300 وسيكون لدينا محادثة. 353 00:16:14,300 --> 00:16:16,220 وسوف نتعامل مع الأشياء داخليا في الآمال 354 00:16:16,220 --> 00:16:18,770 من أن يصبح أكثر من لحظة التدريس أو درس الحياة، 355 00:16:18,770 --> 00:16:22,120 وليس شيئا مع تداعيات جذرية خاصة 356 00:16:22,120 --> 00:16:24,570 كما قد نرى في هذه الرسوم البيانية هنا. 357 00:16:24,570 --> 00:16:26,540 >> لذلك هذا هو نغمة خطيرة جدا. 358 00:16:26,540 --> 00:16:29,960 دعونا نتوقف لمجرد عدد قليل ثانية لكسر حدة التوتر. 359 00:16:29,960 --> 00:16:34,442 >> [عزف الموسيقى] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> J. DAVID مالان: حسنا، فكيف كان ذلك لسغ]؟ 362 00:17:20,250 --> 00:17:22,059 على المواضيع الأساسية اليوم. 363 00:17:22,059 --> 00:17:23,859 أولها هو التجريد. 364 00:17:23,859 --> 00:17:26,900 آخر من الذي سوف يكون تمثيل البيانات، والتي بصراحة 365 00:17:26,900 --> 00:17:31,640 هو وسيلة الجافة حقا للقول كيف يمكننا التوجه نحو حل المشاكل والتفكير 366 00:17:31,640 --> 00:17:33,250 حول حل المشاكل؟ 367 00:17:33,250 --> 00:17:37,285 لذلك كنت قد رأيت في خدش، وكنت قد ربما ينظر بالفعل في pset1 مع C 368 00:17:37,285 --> 00:17:39,930 أنه لا يمكن فقط استخدام وظائف، مثل printf، 369 00:17:39,930 --> 00:17:42,770 أن الآخرين في كتب السنوات الماضية بالنسبة لك. 370 00:17:42,770 --> 00:17:45,340 يمكنك أيضا إرسال الدالات الخاصة بك. 371 00:17:45,340 --> 00:17:48,440 >> وعلى الرغم من قد لا يكون لديك فعلت هذا في C، وبصراحة في pset1 372 00:17:48,440 --> 00:17:51,866 كنت لا حقا بحاجة الى الكتابة الخاصة وظيفة خاصة لأن problem-- 373 00:17:51,866 --> 00:17:53,990 في حين ربما شاقة في أولا glance-- سترى 374 00:17:53,990 --> 00:17:57,910 يمكن حلها في نهاية المطاف مع ليس كل ما العديد من الأسطر من التعليمات البرمجية. 375 00:17:57,910 --> 00:18:01,140 ولكن مع أن قال، من حيث كتابة وظيفة الخاصة بك، 376 00:18:01,140 --> 00:18:03,570 ندرك أن لا تعطي C لك هذه القدرة. 377 00:18:03,570 --> 00:18:06,940 >> انا ذاهب للذهاب في التعليمات البرمجية المصدر اليوم، وهي متاحة بالفعل على شبكة الإنترنت، 378 00:18:06,940 --> 00:18:10,900 وانا ذاهب الى المضي قدما في فتح برنامجا يسمى وظيفة 0.C، 379 00:18:10,900 --> 00:18:14,620 وظيفة الصفر سنرى بعض الأشياء. 380 00:18:14,620 --> 00:18:19,160 في الأسطر الأولى من خلال 18 23 غير بلدي الوظيفة الرئيسية. 381 00:18:19,160 --> 00:18:22,414 والآن بعد أن بدأنا قراءة كود أننا لا كتابة على الطاير، 382 00:18:22,414 --> 00:18:25,080 ولكن بدلا من ذلك لقد كتبت مسبقا أو أنك في مشكلة تحديد 383 00:18:25,080 --> 00:18:27,910 قد تظهر الحاجة قد كتب مقدما. 384 00:18:27,910 --> 00:18:30,040 وهناك طريقة جيدة لبدء قراءة رمز لشخص آخر 385 00:18:30,040 --> 00:18:31,400 هو البحث عن الوظيفة الرئيسية. 386 00:18:31,400 --> 00:18:34,420 معرفة حيث ان دخول النقطة هي لتشغيل البرنامج، 387 00:18:34,420 --> 00:18:36,580 ثم تتبع ذلك منطقيا من هناك. 388 00:18:36,580 --> 00:18:40,190 >> لذلك يبدو هذا البرنامج يطبع اسمك متبوعا بنقطتين. 389 00:18:40,190 --> 00:18:42,490 ثم نستخدم GetString من مكتبة CS50 390 00:18:42,490 --> 00:18:46,050 للحصول على سلسلة أو كلمة أو عبارة من المستخدم على لوحة المفاتيح. 391 00:18:46,050 --> 00:18:48,390 ثم هناك هذا الشيء print اسم here--. 392 00:18:48,390 --> 00:18:51,420 >> الآن print اسم ليس وظيفة التي تأتي مع C. 393 00:18:51,420 --> 00:18:52,970 انها ليست في مستوى io.h. 394 00:18:52,970 --> 00:18:55,570 انها ليست في CS50.h. 395 00:18:55,570 --> 00:18:57,880 انها بالأحرى في نفس الملف. 396 00:18:57,880 --> 00:19:01,000 لاحظ إذا كنت انتقل لأسفل خطوط bit-- 25 إلى 27-- 397 00:19:01,000 --> 00:19:05,330 انها مجرد وسيلة جميلة من التعليق التعليمات البرمجية باستخدام النجوم ومائلة. 398 00:19:05,330 --> 00:19:07,320 هذا هو متعدد الخطوط التعليق، وهذا هو فقط 399 00:19:07,320 --> 00:19:10,570 وصفي في زرقة ما تفعله هذه الوظيفة. 400 00:19:10,570 --> 00:19:14,530 >> لأنه في خطوط 28 حتى 31، لقد كتبت وظيفة السوبر بسيطة 401 00:19:14,530 --> 00:19:16,280 اسم الذي هو print اسم. 402 00:19:16,280 --> 00:19:19,560 فإنه يأخذ كم ان الحجج ويقول لك؟ 403 00:19:19,560 --> 00:19:25,120 حتى argument-- واحدة لأن هناك واحد حجة المدرجة داخل الأقواس. 404 00:19:25,120 --> 00:19:27,000 نوع وهو سلسلة. 405 00:19:27,000 --> 00:19:30,240 وهو ما يعني print اسم مثل هذا الصندوق الأسود 406 00:19:30,240 --> 00:19:32,910 أو الدالة التي تحيط كمدخل سلسلة. 407 00:19:32,910 --> 00:19:35,730 >> واسم هذه السلسلة مريح سيكون الاسم. 408 00:19:35,730 --> 00:19:37,840 لا S، N لا، ولكن الاسم. 409 00:19:37,840 --> 00:19:41,090 فماذا print اسم تفعل؟ 410 00:19:41,090 --> 00:19:42,210 انها جميلة بسيطة. 411 00:19:42,210 --> 00:19:45,390 كما سطر واحد من التعليمات البرمجية ل وprintf، ولكن يبدو أنه 412 00:19:45,390 --> 00:19:47,950 يطبع من "مرحبا"، هكذا وهكذا. 413 00:19:47,950 --> 00:19:50,070 حيث كذا وكذا يأتي من حجة. 414 00:19:50,070 --> 00:19:52,300 >> الآن هذا ليس الابتكار ضخمة هنا. 415 00:19:52,300 --> 00:19:56,710 حقا، لقد اتخذت البرنامج الذي يمكن وقد كتب مع سطر واحد من التعليمات البرمجية 416 00:19:56,710 --> 00:20:00,190 عن طريق وضع هذا هنا، وتغييره إلى شيء 417 00:20:00,190 --> 00:20:04,920 أن ينطوي على بعض ست أو سبع أو نحو ذلك الأسطر من التعليمات البرمجية على طول الطريق هنا. 418 00:20:04,920 --> 00:20:08,190 >> بل انها ممارسة ل المبدأ المعروف باسم التجريد. 419 00:20:08,190 --> 00:20:12,550 نوع من التغليف داخل من جديد وظيفة لها اسم، وأفضل 420 00:20:12,550 --> 00:20:14,590 بعد هذا الاسم حرفيا يقول ما يفعل. 421 00:20:14,590 --> 00:20:16,880 أعني printf-- هذا ليس صفية بشكل خاص. 422 00:20:16,880 --> 00:20:18,932 إذا كنت ترغب في إنشاء قطعة اللغز، أو إذا كنت 423 00:20:18,932 --> 00:20:21,140 تريد إنشاء وظيفة أن يطبع اسم شخص ما، 424 00:20:21,140 --> 00:20:23,230 جمال للقيام بذلك هو أنني يمكن في الواقع 425 00:20:23,230 --> 00:20:27,170 إعطاء تلك الوظيفة اسم أن يصف ما تقوم به. 426 00:20:27,170 --> 00:20:29,844 >> الآن يستغرق في الإدخال الذي لقد دعا تعسفا اسم، 427 00:20:29,844 --> 00:20:32,760 ولكن هذا هو وصفي رائعة جدا بدلا من أن يكون قليلا أكثر 428 00:20:32,760 --> 00:20:36,140 عامة مثل S. و الفراغ، حتى الآن، يعني فقط 429 00:20:36,140 --> 00:20:38,330 أن هذه الوظيفة لا تسلم لي العودة أي شيء. 430 00:20:38,330 --> 00:20:41,127 انها ليست مثل التي GetString يسلم لي حرفيا العودة سلسلة 431 00:20:41,127 --> 00:20:43,960 كما فعلنا مع قطعة من الورق مع زملائك في الأسبوع الماضي، 432 00:20:43,960 --> 00:20:45,990 بل انها مجرد أثر جانبي. 433 00:20:45,990 --> 00:20:48,080 فإنه يطبع شيء على الشاشة. 434 00:20:48,080 --> 00:20:53,880 >> حتى في نهاية اليوم، إذا كنت لا تجعل الوظائف 0، ./function-0، 435 00:20:53,880 --> 00:20:55,450 سنرى أنه يسأل عن اسمي. 436 00:20:55,450 --> 00:20:58,150 أنا اكتب ديفيد، وأنواع من اسمي. 437 00:20:58,150 --> 00:21:01,080 إذا كنت تفعل ذلك مرة أخرى مع روب، انها ستقول "مرحبا، روب." 438 00:21:01,080 --> 00:21:04,280 حتى فكرة بسيطة، ولكن ربما استقراء من هذا عقليا 439 00:21:04,280 --> 00:21:06,750 كما أن الحصول على البرامج الخاصة بك قليلا أكثر تعقيدا، 440 00:21:06,750 --> 00:21:10,290 وتريد أن تكتب قطعة من رمز والدعوة التي code-- استدعاء و 441 00:21:10,290 --> 00:21:13,270 أن code-- من قبل بعض وصفي تسمية مثل print اسم، 442 00:21:13,270 --> 00:21:15,600 C لا تحمل لنا هذه القدرة. 443 00:21:15,600 --> 00:21:17,660 >> وهنا مثال بسيط آخر. 444 00:21:17,660 --> 00:21:22,940 على سبيل المثال، إذا كنت فتح ملف من اليوم دعا return.c، 445 00:21:22,940 --> 00:21:24,270 تلاحظ ما قمت به هنا. 446 00:21:24,270 --> 00:21:26,330 معظم هذه الوظيفة الرئيسية هي printf. 447 00:21:26,330 --> 00:21:30,360 أنا أولا تهيئة تعسفا و متغير يسمى X لعدد 2. 448 00:21:30,360 --> 00:21:34,110 وبعد ذلك طباعة "x هو الآن ط٪ "تمر في قيمة x. 449 00:21:34,110 --> 00:21:35,500 لذلك أنا فقط أقول ما هو عليه. 450 00:21:35,500 --> 00:21:37,208 >> الآن أنا مجرد بجرأة مدعيا مع printf. 451 00:21:37,208 --> 00:21:42,050 أنا التكعيب أن قيمة س، وأنا القيام بذلك عن طريق استدعاء دالة 452 00:21:42,050 --> 00:21:45,590 دعا عابرة مكعب في العاشر كوسيطة، 453 00:21:45,590 --> 00:21:49,300 ثم حفظ المخرجات في المتغير نفسه، س. 454 00:21:49,300 --> 00:21:51,340 لذلك أنا clobbering قيمة x. 455 00:21:51,340 --> 00:21:53,380 أنا تجاوز قيمة x مع أي 456 00:21:53,380 --> 00:21:56,510 نتيجة الاتصال هذه هي وظيفة مكعب. 457 00:21:56,510 --> 00:21:59,530 ثم أنا فقط طباعة بعض الاشياء رقيق هنا يقولون ما فعلته. 458 00:21:59,530 --> 00:22:01,600 >> فما ثم المكعب؟ 459 00:22:01,600 --> 00:22:03,510 لاحظ ما هو أساسي تختلف هنا. 460 00:22:03,510 --> 00:22:05,540 لقد أعطيت وظيفة اسم كما كان من قبل. 461 00:22:05,540 --> 00:22:08,270 لقد تحديد اسم للحجة. 462 00:22:08,270 --> 00:22:11,650 هذه المرة انه دعا ن بدلا من اسم، ولكن يمكن أن نسميها أي شيء أريد. 463 00:22:11,650 --> 00:22:12,650 ولكن هذا يختلف. 464 00:22:12,650 --> 00:22:14,080 هذا الشيء على اليسار. 465 00:22:14,080 --> 00:22:16,290 كان سابقا ما الكلمة؟ 466 00:22:16,290 --> 00:22:16,870 الأولاد. 467 00:22:16,870 --> 00:22:18,580 الآن حان كثافة العمليات اضح. 468 00:22:18,580 --> 00:22:20,630 >> ذلك ما ربما يسلب؟ 469 00:22:20,630 --> 00:22:24,090 في حين يدل على نوع من الفراغ العدم، وكان هذا هو الحال. 470 00:22:24,090 --> 00:22:25,970 عاد print اسم شيء. 471 00:22:25,970 --> 00:22:27,942 فعلت شيئا، ولكن أنها لم تسلم لي العودة 472 00:22:27,942 --> 00:22:30,650 شيء أن أتمكن من وضعه على الجانب الأيسر من علامة المساواة 473 00:22:30,650 --> 00:22:32,460 كما فعلت هنا في السطر 22. 474 00:22:32,460 --> 00:22:36,780 >> لذلك إذا قلت في على خط 30، ما هذا ربما يعني 475 00:22:36,780 --> 00:22:38,610 حول ما يفعل مكعب بالنسبة لي؟ 476 00:22:38,610 --> 00:22:41,110 نعم؟ 477 00:22:41,110 --> 00:22:42,310 تقوم بإرجاع عدد صحيح. 478 00:22:42,310 --> 00:22:44,590 لذلك يسلم لي مرة أخرى، ل المثال، قطعة من الورق 479 00:22:44,590 --> 00:22:46,580 الذي كتب عليه الجواب. 480 00:22:46,580 --> 00:22:50,130 2 مكعبة، أو مكعبة 3 أو 4 cubed-- كل ما مررت في، 481 00:22:50,130 --> 00:22:51,540 وكيف يمكنني تنفيذ هذا؟ 482 00:22:51,540 --> 00:22:54,810 حسنا، مجرد ن ن ن مرات مرات هو كيف يمكن مكعبات قيمة. 483 00:22:54,810 --> 00:22:57,110 ذلك مرة أخرى، سوبر بسيطة فكرة، ولكن بيانية 484 00:22:57,110 --> 00:23:00,100 الآن كيف يمكن أن نكتب وظائف أن الواقع كان يعود بنا 485 00:23:00,100 --> 00:23:02,380 القيم التي قد تكون ذات فائدة. 486 00:23:02,380 --> 00:23:05,740 >> دعونا ننظر إلى مثال آخر واحدة هنا يسمى وظيفة واحدة. 487 00:23:05,740 --> 00:23:08,530 في هذا المثال، ويبدأ للحصول على أكثر إلحاحا. 488 00:23:08,530 --> 00:23:12,400 حتى في وظيفة واحدة، وهذا إشعار program-- في نهاية المطاف 489 00:23:12,400 --> 00:23:14,920 يدعو دالة يسمى GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt ليس وظيفة في مكتبة CS50، 491 00:23:17,800 --> 00:23:20,400 ولكن قررنا نحن أود أن الوجود. 492 00:23:20,400 --> 00:23:24,550 >> حتى إذا كنا انتقل لأسفل لاحقا في الملف، لاحظ كيف ذهبت عن تنفيذ 493 00:23:24,550 --> 00:23:26,560 الحصول على كثافة العمليات إيجابي، وأنا نقول انها أكثر إقناعا 494 00:23:26,560 --> 00:23:28,992 لأن هذا هو لائق عدد من الأسطر من التعليمات البرمجية. 495 00:23:28,992 --> 00:23:30,700 انها ليست مجرد سخيفة يذكر برنامج لعبة. 496 00:23:30,700 --> 00:23:33,870 انها حصلت فعلا بعض التدقيق خطأ والقيام بشيء أكثر فائدة. 497 00:23:33,870 --> 00:23:38,470 >> حتى إذا كنت لم أر تجول أشرطة الفيديو التي قمنا جزءا لا يتجزأ من pset1، 498 00:23:38,470 --> 00:23:42,350 أعلم أن هذا هو نوع من في حلقة C، مماثلة في الروح 499 00:23:42,350 --> 00:23:44,270 إلى أنواع الأشياء خدش يمكن القيام به. 500 00:23:44,270 --> 00:23:46,320 ويقول تفعل ذلك. 501 00:23:46,320 --> 00:23:47,500 طباعة هذا الخروج. 502 00:23:47,500 --> 00:23:51,860 ثم المضي قدما والحصول على n-- الحصول على كثافة العمليات وتخزينها في ن، 503 00:23:51,860 --> 00:23:55,760 وتستمر في فعل هذا مرارا وتكرارا و مرة أخرى طالما ن أقل من واحد. 504 00:23:55,760 --> 00:23:58,720 >> ن ذلك سيكون أقل من واحد إلا إذا كان إنسان لا تتعاون. 505 00:23:58,720 --> 00:24:01,980 إذا كان هو أو هي كتابة في 0 أو -1 أو -50، 506 00:24:01,980 --> 00:24:04,790 هذه الحلقة سوف تبقي تنفيذ مرارا وتكرارا. 507 00:24:04,790 --> 00:24:07,549 وتلاحظ في نهاية المطاف، وأنا ببساطة إرجاع القيمة. 508 00:24:07,549 --> 00:24:09,590 حتى الآن لدينا وظيفة أن شأنه لقد لطيفة 509 00:24:09,590 --> 00:24:14,040 إذا CS50 ستنفذ في CS50.h وCS50.c بالنسبة لك، 510 00:24:14,040 --> 00:24:16,520 ولكن هنا يمكننا الآن تنفيذ هذا أنفسنا. 511 00:24:16,520 --> 00:24:19,230 >> ولكن اثنين من تعليقات على بعض التفاصيل الرئيسية. 512 00:24:19,230 --> 00:24:24,390 احدا-- لماذا أعلن كثافة العمليات ن، هل تعتقد، على الخط 29 513 00:24:24,390 --> 00:24:27,139 بدلا من مجرد القيام هذا هنا، وهو 514 00:24:27,139 --> 00:24:28,930 أكثر اتساقا مع ما قمنا به الأسبوع الماضي؟ 515 00:24:28,930 --> 00:24:29,430 نعم؟ 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 ويعتقد جيد. 518 00:24:35,110 --> 00:24:37,080 حتى لو كنا لوضعها هنا، انها كما لو أننا 519 00:24:37,080 --> 00:24:39,110 إبقاء معلنا ذلك مرارا وتكرارا. 520 00:24:39,110 --> 00:24:42,000 أنه في حد ذاته هو لا مشكلة، في حد ذاته، 521 00:24:42,000 --> 00:24:43,940 لأننا في حاجة فقط القيمة مرة واحدة ثم 522 00:24:43,940 --> 00:24:45,330 ونحن في طريقنا للحصول على واحدة جديدة على أي حال. 523 00:24:45,330 --> 00:24:45,940 ولكن فكرة جيدة. 524 00:24:45,940 --> 00:24:46,440 نعم؟ 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> إغلاق. 527 00:24:53,330 --> 00:24:59,030 ذلك لأنني أعلن على ن 29 خط خارج الحلقة، 528 00:24:59,030 --> 00:25:01,390 يمكن الوصول إليها في جميع أنحاء هذه المهمة بأكملها. 529 00:25:01,390 --> 00:25:05,400 لا وظائف أخرى ل ن لا يزال داخل هذه مجعد 530 00:25:05,400 --> 00:25:06,470 تستعد هنا. 531 00:25:06,470 --> 00:25:07,940 So-- بالتأكيد. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> بالضبط. 534 00:25:12,940 --> 00:25:14,356 لذلك هذا هو أكثر من ذلك إلى هذه النقطة. 535 00:25:14,356 --> 00:25:18,600 إذا كنا بدلا أعلن ن هنا على خط 32، 536 00:25:18,600 --> 00:25:22,340 انها مشكلة لتخمين مكان آخر ولست بحاجة إلى الوصول إليها؟ 537 00:25:22,340 --> 00:25:25,620 على خط 34، و قاعدة بسيطة من التجربة هو 538 00:25:25,620 --> 00:25:30,060 التي يمكنك استخدامها فقط متغير داخل الأقواس المعقوفة الأخيرة 539 00:25:30,060 --> 00:25:31,420 في الذي أعلن فيه. 540 00:25:31,420 --> 00:25:35,230 >> للأسف، خط 34 هو سطر واحد بعد فوات الأوان، 541 00:25:35,230 --> 00:25:38,560 لأنني أغلقت بالفعل متعرج على خط 33 542 00:25:38,560 --> 00:25:41,220 الذي يتوافق مع متعرج على خط 30. 543 00:25:41,220 --> 00:25:44,180 وهكذا هذا هو وسيلة للقول أن هذا المتغير كثافة العمليات وراقب، 544 00:25:44,180 --> 00:25:46,970 إذا جاز التعبير، إلى داخل فقط تلك الأقواس المعقوفة. 545 00:25:46,970 --> 00:25:48,910 انها فقط لا وجود لها خارج منها. 546 00:25:48,910 --> 00:25:51,580 >> ذلك في الواقع، إذا كنت تفعل هذا خطأ، اسمحوا لي أن حفظ رمز 547 00:25:51,580 --> 00:25:53,530 كما is-- مكتوبة بشكل غير صحيح. 548 00:25:53,530 --> 00:25:57,990 اسمحوا لي المضي قدما وجعل لا الوظائف 1، والخطأ notice--. 549 00:25:57,990 --> 00:26:03,502 استخدام غير معلن معرف ن على خط 35، وهو هنا. 550 00:26:03,502 --> 00:26:05,210 وإذا كنا انتقل لأعلى أبعد من ذلك، واحد آخر. 551 00:26:05,210 --> 00:26:08,750 استخدام غير معلنة معرف ن على خط 34. 552 00:26:08,750 --> 00:26:11,200 >> حتى المترجم، رنة، ويلاحظ أنه فقط 553 00:26:11,200 --> 00:26:13,720 لا وجود لها على الرغم من واضح انه هناك بصريا. 554 00:26:13,720 --> 00:26:16,090 لذلك الإصلاح بسيط يعلن من هناك. 555 00:26:16,090 --> 00:26:18,790 >> الآن اسمحوا لي أن انتقل إلى الجزء العلوي من الملف. 556 00:26:18,790 --> 00:26:21,080 ما يقفز في لكم و يجري مختلفة قليلا 557 00:26:21,080 --> 00:26:23,070 من الاشياء ونحن ننظر في الأسبوع الماضي؟ 558 00:26:23,070 --> 00:26:26,990 ليس فقط لدي اسم، لا فقط لدي بعض حاد يشمل حتى اعلى، 559 00:26:26,990 --> 00:26:29,340 لدي شيء أنا استدعاء النموذج. 560 00:26:29,340 --> 00:26:36,100 الآن أن تبدو مشابهة بفظاعة ما نحن فقط رأيت قبل لحظة على خط 27. 561 00:26:36,100 --> 00:26:39,230 >> لذلك دعونا نستنتج من مختلف رسالة خطأ لماذا فعلت هذا. 562 00:26:39,230 --> 00:26:42,050 اسمحوا لي المضي قدما و حذف هذه السطور هناك. 563 00:26:42,050 --> 00:26:44,240 وحتى نعرف شيئا عن النموذج. 564 00:26:44,240 --> 00:26:45,430 إعادة صنع هذا الملف. 565 00:26:45,430 --> 00:26:46,890 جعل وظيفة واحدة. 566 00:26:46,890 --> 00:26:48,090 والآن، اللعنة، أربعة أخطاء. 567 00:26:48,090 --> 00:26:50,220 دعونا انتقل لأعلى لأول واحد. 568 00:26:50,220 --> 00:26:55,070 >> إعلان الضمني وظيفة الحصول على كثافة العمليات إيجابي غير صالح في C99. 569 00:26:55,070 --> 00:26:57,780 C99 يعني فقط عام 1999 نسخة من لغة 570 00:26:57,780 --> 00:26:59,710 C، وهو ما نقوم باستخدام الواقع. 571 00:26:59,710 --> 00:27:01,050 فماذا يعني هذا؟ 572 00:27:01,050 --> 00:27:05,250 حسنا C-- وبشكل أكثر تحديدا C compilers-- هي برامج غبية جدا. 573 00:27:05,250 --> 00:27:07,420 انهم يعرفون فقط ما كنت قد قال لهم، وهذا 574 00:27:07,420 --> 00:27:08,960 مواضيعي فعلا من الأسبوع الماضي. 575 00:27:08,960 --> 00:27:12,910 >> المشكلة هي أنه إذا ذهبت حول تنفيذ اسم هنا، 576 00:27:12,910 --> 00:27:17,640 وأدعو دالة يسمى GetPositiveInt هنا على خط 20، 577 00:27:17,640 --> 00:27:22,520 هذه الوظيفة لا من الناحية الفنية موجودة حتى يرى المترجم خط 27. 578 00:27:22,520 --> 00:27:25,450 وللأسف، فإن المترجم هو القيام بأشياء أعلى، أسفل، يسار، يمين، 579 00:27:25,450 --> 00:27:29,580 ذلك لأنه لم ير تنفيذ GetPositiveInt، 580 00:27:29,580 --> 00:27:32,400 ولكن ترى هل تحاول لاستخدامها هنا، 581 00:27:32,400 --> 00:27:35,810 انها مجرد الذهاب الى bail-- يصيح في كنت مع وجود خطأ ربما message-- 582 00:27:35,810 --> 00:27:38,440 خفي، وليس في الواقع ترجمة ملف. 583 00:27:38,440 --> 00:27:41,940 >> حتى ما يسمى النموذج حتى هنا لا لزوم لها المسلم. 584 00:27:41,940 --> 00:27:47,870 حرفيا، ذهبت إلى هنا وأنا نسخ ولصق هذا، وأنا طرحها هنا. 585 00:27:47,870 --> 00:27:51,020 ان الفراغ أن يكون أكثر السليم، لذلك سنقوم نسخ ولصق حرفيا هذه المرة. 586 00:27:51,020 --> 00:27:52,854 أنا حرفيا نسخ ولصق. 587 00:27:52,854 --> 00:27:54,270 حقا تماما كما مثل كسرة الخبز. 588 00:27:54,270 --> 00:27:56,260 >> أ فكرة صغيرة إلى مترجم. 589 00:27:56,260 --> 00:27:58,860 أنا لا أعرف ماذا يفعل هذا بعد، ولكن أنا واعدة لك 590 00:27:58,860 --> 00:28:00,260 أنه سيكون موجودا في نهاية المطاف. 591 00:28:00,260 --> 00:28:04,010 وهذا هو السبب في هذا line-- خط 16-- ينتهي بفاصلة منقوطة. 592 00:28:04,010 --> 00:28:05,486 فمن زائدة حسب التصميم. 593 00:28:05,486 --> 00:28:05,986 نعم؟ 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> إذا لم تصل مكتبتك لthe-- أوه، سؤال جيد. 596 00:28:14,360 --> 00:28:17,350 يشمل شارب الادراج ملف الرأس. 597 00:28:17,350 --> 00:28:20,040 تحتاج إلى be-- ينبغي تقريبا تكون دائما في أعلى جدا 598 00:28:20,040 --> 00:28:23,270 ملف لsimilar-- ل بالضبط نفس السبب، نعم. 599 00:28:23,270 --> 00:28:26,430 لأنه في معيار io.h هو حرفيا خط 600 00:28:26,430 --> 00:28:30,560 مثل هذا، ولكن مع printf كلمة، و مع حججها ونوع عودتها. 601 00:28:30,560 --> 00:28:33,310 وذلك عن طريق القيام حادة تشمل ما يصل هنا، ما تفعلونه حرفيا 602 00:28:33,310 --> 00:28:36,380 ونسخ ولصق محتويات كتب شخص آخر حتى أعلى. 603 00:28:36,380 --> 00:28:39,660 دلالة بذلك التعليمات البرمجية في ل حقيقة أن هذه الوظائف موجودة. 604 00:28:39,660 --> 00:28:40,160 نعم؟ 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> تماما. 607 00:28:48,260 --> 00:28:51,690 لذلك ذكي جدا وصحيحة لن يكون الحل، هل تعرف لماذا؟ 608 00:28:51,690 --> 00:28:53,760 أنا لا أعرف ما النموذج هو، لكنني أعرف 609 00:28:53,760 --> 00:28:56,390 إذا أنا أفهم أن C هو مجرد البكم وأعادت التفكير أعلى إلى أسفل. 610 00:28:56,390 --> 00:28:57,820 حسنا دعونا تعطيه ما يريد. 611 00:28:57,820 --> 00:29:01,650 دعونا خفض هذا الرمز، لصقه تصل أعلى، ودفع الرئيسي الآن في الأسفل. 612 00:29:01,650 --> 00:29:03,470 أيضا هذا من شأنه أن يحل المشكلة. 613 00:29:03,470 --> 00:29:07,409 >> ولكن هل يمكن أن يأتي بسهولة جدا مع سيناريو فيه حاجة لاستدعاء B، 614 00:29:07,409 --> 00:29:10,075 وربما B يدعو إلى A. هذا هو ما يسمى العودية، 615 00:29:10,075 --> 00:29:11,370 وسوف نعود إلى ذلك. 616 00:29:11,370 --> 00:29:13,911 وأنه قد أو قد لا تكون جيدة الشيء، ولكن يمكنك بالتأكيد 617 00:29:13,911 --> 00:29:15,110 كسر هذا الحل. 618 00:29:15,110 --> 00:29:17,690 >> وعلاوة على ذلك، وأود أن المطالبة أسلوبيا، 619 00:29:17,690 --> 00:29:20,760 وخصوصا عندما برامجك أصبح هذا طويل وهذا طويل، 620 00:29:20,760 --> 00:29:23,064 انها مجرد السوبر مريحة لوضع الرئيسية في أعلى 621 00:29:23,064 --> 00:29:25,730 لأنه هو الشيء الأكثر المبرمجين تسير أن نهتم. 622 00:29:25,730 --> 00:29:28,150 وحتى انها قليلا أكثر نظافة، يمكن القول، على أن تفعل ذلك بالطريقة 623 00:29:28,150 --> 00:29:30,380 أنا أصلا فعل ذلك مع النموذج حتى 624 00:29:30,380 --> 00:29:33,396 على الرغم من أنه يبدو قليلا زائدة للوهلة الأولى. 625 00:29:33,396 --> 00:29:33,895 نعم؟ 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 عذرا، هل يمكن القول أنه بصوت أعلى؟ 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> إذا كنت تبديل مواقع وتنفيذ النموذج الأولي؟ 630 00:29:49,580 --> 00:29:51,270 لذلك هذا سؤال جيد. 631 00:29:51,270 --> 00:29:53,780 إذا قمت بإعادة يعلن-أسفل هذا هنا، دعونا نرى ما سيحدث. 632 00:29:53,780 --> 00:29:55,530 حتى إذا وضعت أسفل هذا هنا، أنت تقول. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 أوه، آسف. 635 00:29:58,360 --> 00:29:58,859 بصوت أعلى؟ 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 حتى أعلى صوتا. 638 00:30:04,011 --> 00:30:04,760 أوه، سؤال جيد. 639 00:30:04,760 --> 00:30:05,860 فإنه يبطل وظيفة؟ 640 00:30:05,860 --> 00:30:08,901 كما تعلمون، بعد كل هذه السنوات، وأنا لم يسبق لهم وضع النموذج بعد ذلك. 641 00:30:08,901 --> 00:30:13,810 لذلك دعونا نفعل جعل الوظائف 1 بعد القيام بذلك. 642 00:30:13,810 --> 00:30:15,279 >> [الغمز واللمز] 643 00:30:15,279 --> 00:30:16,320 J. DAVID مالان: أوه، الانتظار. 644 00:30:16,320 --> 00:30:17,944 لا يزال لدينا لوضع كل شيء حتى أعلى. 645 00:30:17,944 --> 00:30:21,400 لذلك دعونا نفعل ذلك هنا، إذا أنا فهم سؤالك بشكل صحيح. 646 00:30:21,400 --> 00:30:24,700 أنا أضع كل شيء، بما في ذلك النموذج أعلاه الرئيسي، 647 00:30:24,700 --> 00:30:28,180 ولكن أنا أضع النموذج تحت التنفيذ. 648 00:30:28,180 --> 00:30:33,190 >> حتى إذا قمت بعمل واحد، انني اتلقى الخلف error-- غير المستخدمة ن متغير. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 أوه، هناك. 651 00:30:37,860 --> 00:30:38,360 شكرا لك. 652 00:30:38,360 --> 00:30:39,430 دعونا نرى، نتخلص من هذا. 653 00:30:39,430 --> 00:30:41,304 هذا هو علة مختلف، لذلك دعونا نتجاهل ذلك. 654 00:30:41,304 --> 00:30:43,910 دعونا حقا إعادة صنع هذا بسرعة. 655 00:30:43,910 --> 00:30:48,100 >> موافق، لذلك لا حجة البيانات يستخدمها شكل سلسلة 656 00:30:48,100 --> 00:30:52,310 n-- أوه، ذلك لأن لقد غيرت هذه إلى هنا. 657 00:30:52,310 --> 00:30:55,885 كل الحق، ونحن نعرف ما الجواب يجري علي: كل الحق، هنا نذهب. 658 00:30:55,885 --> 00:31:00,560 آه، شكرا لإيجابية. 659 00:31:00,560 --> 00:31:03,430 كل الحق، أنا سأثبت هذا الرمز after-- تجاهل هذا الخطأ بعينه 660 00:31:03,430 --> 00:31:08,300 لأن هذا was-- يعمل هو الجواب. 661 00:31:08,300 --> 00:31:11,560 >> لذلك لا الكتابة ما قمت به فقط. 662 00:31:11,560 --> 00:31:14,800 وأظن المترجم هو مكتوب في مثل هذه الطريقة 663 00:31:14,800 --> 00:31:18,420 أنه تجاهل النموذج الخاص لأن الجسم، إذا جاز التعبير، 664 00:31:18,420 --> 00:31:20,922 وظيفة لديها بالفعل تم تنفيذها على مستوى اعلى. 665 00:31:20,922 --> 00:31:23,380 كنت أود أن يكون للتشاور في الواقع دليل للمترجم 666 00:31:23,380 --> 00:31:26,171 لفهم ما إذا كان هناك أي شيء آخر ضمنا، ولكن للوهلة الأولى 667 00:31:26,171 --> 00:31:29,290 فقط عن طريق المحاولة والتجريب، يبدو أن هناك أي تأثير. 668 00:31:29,290 --> 00:31:30,730 سؤال جيد. 669 00:31:30,730 --> 00:31:33,660 >> لذلك دعونا نمضي قدما الآن، والانتقال بعيدا عن الآثار الجانبية التي 670 00:31:33,660 --> 00:31:36,660 هي الوظائف التي تفعل شيئا مثل بصريا على الشاشة مع printf، 671 00:31:36,660 --> 00:31:38,090 ولكن لا ترجع قيمة. 672 00:31:38,090 --> 00:31:41,550 والوظائف التي لها عائد القيم وكأننا مجرد رأى عدد قليل من. 673 00:31:41,550 --> 00:31:45,350 رأينا بالفعل هذه الفكرة من نطاق، وسنرى هذا مرارا وتكرارا. 674 00:31:45,350 --> 00:31:47,210 لكنه الآن، مرة أخرى، استخدام بحكم التجربة 675 00:31:47,210 --> 00:31:51,410 أن متغير يمكن أن تستخدم إلا داخل افتتح مؤخرا 676 00:31:51,410 --> 00:31:54,350 والأقواس المعقوفة مغلقة ونحن ورأى في هذا المثال بالذات. 677 00:31:54,350 --> 00:31:56,910 >> وكما أشرتم، هناك ability-- 678 00:31:56,910 --> 00:32:00,040 هل يمكن حل بعض هذه المشاكل عن طريق وضع متغير عالميا 679 00:32:00,040 --> 00:32:01,290 في أعلى جدا من ملف. 680 00:32:01,290 --> 00:32:03,630 ولكن في جميع الحالات تقريبا نحن ستغضب ذلك، 681 00:32:03,630 --> 00:32:06,170 وبالفعل لم يذهب حتى إلى هذا الحل في الوقت الراهن. 682 00:32:06,170 --> 00:32:09,890 حتى الآن، والوجبات الجاهزة هي أن المتغيرات وهذه الفكرة النطاق. 683 00:32:09,890 --> 00:32:13,430 >> ولكن الآن دعونا ننظر في آخر الطريقة الجافة للنظر في الواقع 684 00:32:13,430 --> 00:32:15,810 في بعض مثيرة للاهتمام جدا تفاصيل التنفيذ. 685 00:32:15,810 --> 00:32:17,810 كيف يمكننا تمثيل المعلومات. 686 00:32:17,810 --> 00:32:20,370 ونظرنا بالفعل في هذا في الأسبوع الأول من الفصل. 687 00:32:20,370 --> 00:32:23,320 النظر في ثنائيات، و نذكر أنفسنا عشري. 688 00:32:23,320 --> 00:32:28,310 >> ولكن أذكر من الاسبوع الماضي ان لديه C أنواع البيانات المختلفة وباقات أكثر، 689 00:32:28,310 --> 00:32:30,600 ولكن أكثرها مفيدة الآن قد تكون هذه. 690 00:32:30,600 --> 00:32:36,030 وشار، أو حرف، والذي يحدث لتكون بايت واحد، أو ثمانية الكل بت. 691 00:32:36,030 --> 00:32:40,060 وهذا يعني أن حجم من شار هو بايت واحد فقط. 692 00:32:40,060 --> 00:32:45,370 البايت هو ثمانية بت، لذلك هذا يعني أن كيف يمكننا تمثيل العديد من الشخصيات. 693 00:32:45,370 --> 00:32:47,320 كم عدد الأحرف أو حرف على لوحة المفاتيح 694 00:32:47,320 --> 00:32:49,210 اذا كان لدينا بايت واحد أو ثمانية بت. 695 00:32:49,210 --> 00:32:51,546 فكر في العودة إلى الصفر الأسبوع. 696 00:32:51,546 --> 00:32:53,420 إذا كان لديك ثمانية بت، كم عدد إجمالي القيم 697 00:32:53,420 --> 00:32:55,503 يمكنك تمثيل مع أنماط من الأصفار ومنها؟ 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 احدا-- أكثر من ذلك. 700 00:33:00,260 --> 00:33:03,490 حتى إذا كنت إجمالي 256 بدء العد من الصفر. 701 00:33:03,490 --> 00:33:07,120 حتى إذا كان لديك ثمانية bits-- حتى إذا كنا كان المصابيح الثنائية دينا هنا مرة أخرى، 702 00:33:07,120 --> 00:33:12,180 نحن يمكن أن تتحول تلك المصابيح الكهربائية على وإيقاف في أي من 256 أنماط فريدة من نوعها. 703 00:33:12,180 --> 00:33:13,640 >> الآن هذا هو إشكالية قليلا. 704 00:33:13,640 --> 00:33:16,857 وليس ذلك بكثير للغة الإنكليزية و اللغات الرومانسية، ولكن بالتأكيد 705 00:33:16,857 --> 00:33:19,190 عندما كنت أعرض، ل المثال، واللغات الآسيوية، والتي 706 00:33:19,190 --> 00:33:22,580 لديهم أكثر بكثير من الرموز مثل 26 الحروف الأبجدية. 707 00:33:22,580 --> 00:33:24,390 ونحن في الواقع قد تحتاج أكثر من بايت واحد. 708 00:33:24,390 --> 00:33:28,240 ولله الحمد في السنوات الأخيرة المجتمع 709 00:33:28,240 --> 00:33:31,040 اعتمدت المعايير الأخرى التي تستخدم أكثر من بايت واحد لكل تهمة. 710 00:33:31,040 --> 00:33:34,210 >> لكنه الآن في C، الافتراضي هو بايت واحد فقط أو ثمانية بت. 711 00:33:34,210 --> 00:33:38,195 صحيح، وفي الوقت نفسه، هو أربعة بايت، والمعروف باسم 32 بت. 712 00:33:38,195 --> 00:33:41,320 وهو ما يعني ما هو أكبر ممكن عدد فإننا يمكن أن تمثل مع كثافة العمليات 713 00:33:41,320 --> 00:33:41,820 على ما يبدو؟ 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 مع مليار. 716 00:33:45,050 --> 00:33:46,760 لذلك فمن أربعة مليارات يعطي أو يأخذ. 717 00:33:46,760 --> 00:33:49,840 2 إلى قوة 32th، إذا كنا لا نتحمل أية الأرقام السالبة 718 00:33:49,840 --> 00:33:52,530 ومجرد استخدام جميع إيجابية أرقام، انها أربعة مليارات 719 00:33:52,530 --> 00:33:53,730 يعطي أو يأخذ الاحتمالات. 720 00:33:53,730 --> 00:33:57,890 تعويم، وفي الوقت نفسه، هو نوع مختلف من نوع البيانات في C. انها لا تزال العدد، 721 00:33:57,890 --> 00:33:58,990 ولكن هذا العدد الحقيقي. 722 00:33:58,990 --> 00:34:00,660 شيء مع العلامة العشرية. 723 00:34:00,660 --> 00:34:03,000 وتبين أن C يستخدم أيضا أربعة بايت 724 00:34:03,000 --> 00:34:05,340 لتمثيل القيم النقطة العائمة. 725 00:34:05,340 --> 00:34:09,420 >> للأسف كم العائمة قيم النقطة هي هناك في العالم؟ 726 00:34:09,420 --> 00:34:11,582 عدد الأرقام الحقيقية هي هناك؟ 727 00:34:11,582 --> 00:34:13,540 هناك لانهائية العدد، وبالنسبة لهذه المسألة 728 00:34:13,540 --> 00:34:15,164 هناك عدد لانهائي من الأعداد الصحيحة. 729 00:34:15,164 --> 00:34:18,070 لذلك نحن بالفعل نوع من حفر حفرة أنفسنا هنا. 730 00:34:18,070 --> 00:34:21,780 حيث يبدو في computers-- في أقل البرامج المكتوبة في C على them-- 731 00:34:21,780 --> 00:34:24,110 يمكن الاعتماد فقط تصل إلى أربعة مليارات يعطي أو يأخذ، 732 00:34:24,110 --> 00:34:26,260 والقيم النقطة العائمة يمكن على ما يبدو فقط 733 00:34:26,260 --> 00:34:28,330 لدينا بعض كمية محدودة من الدقة. 734 00:34:28,330 --> 00:34:30,810 فقط الكثير من الأرقام بعد العشرية الخاصة بهم. 735 00:34:30,810 --> 00:34:32,822 >> لأنه، بطبيعة الحال، إذا لديك فقط 32 بت، 736 00:34:32,822 --> 00:34:36,030 أنا لا أعرف كيف ونحن في طريقنا للذهاب نحو تمثل numbers-- الحقيقي ربما 737 00:34:36,030 --> 00:34:37,409 مع أنواع مختلفة من الأنماط. 738 00:34:37,409 --> 00:34:40,030 ولكن هناك بالتأكيد محدود عدد من هذه الأنماط، 739 00:34:40,030 --> 00:34:41,830 حتى هنا، أيضا، وهذا هو إشكالية. 740 00:34:41,830 --> 00:34:43,710 >> الآن يمكننا تجنب هذه المشكلة قليلا. 741 00:34:43,710 --> 00:34:45,710 إذا كنت لا تستخدم تعويم، هل يمكن استخدام مزدوج 742 00:34:45,710 --> 00:34:50,230 في C، والتي تعطيك ثمانية بايت، والذي هي طريقة أكثر أنماط ممكنة من الأصفار 743 00:34:50,230 --> 00:34:50,730 ومنها. 744 00:34:50,730 --> 00:34:55,199 لكنه ما زال محدودا، والتي يجري أن تكون مشكلة إذا كنت أكتب البرمجيات 745 00:34:55,199 --> 00:34:57,670 للرسومات أو لنزوة الصيغ الرياضية. 746 00:34:57,670 --> 00:35:00,410 لذلك قد ترغب في الواقع إلى العد حتى أكبر من ذلك. 747 00:35:00,410 --> 00:35:05,640 وnamed-- طويلة long-- بغباء هو أيضا ثمانية بايت، أو 64 بت، 748 00:35:05,640 --> 00:35:10,260 وهذا هو مرتين طالما عدد صحيح، وانها لقيمة عدد صحيح طويل. 749 00:35:10,260 --> 00:35:15,655 >> fact-- متعة إذا كان عدد صحيح أربعة بايت، كيف هي مدة طويلة في C عادة؟ 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 أيضا أربعة بايت، ولكن طويل دام ثمانية بايت، 752 00:35:21,560 --> 00:35:23,050 وهذا لأسباب تاريخية. 753 00:35:23,050 --> 00:35:26,450 >> لكن الوجبات الجاهزة الآن مجرد أن لديه بيانات 754 00:35:26,450 --> 00:35:29,625 أن تكون ممثلة في هذا computer-- جهاز البدني مع الكهرباء و 755 00:35:29,625 --> 00:35:32,190 انها القيادة عموما تلك الأصفار وones-- 756 00:35:32,190 --> 00:35:34,320 مع كميات محدودة من الدقة. 757 00:35:34,320 --> 00:35:35,620 فما هي المشكلة إذن؟ 758 00:35:35,620 --> 00:35:37,480 >> كذلك هناك مشكلة من تجاوز عدد صحيح. 759 00:35:37,480 --> 00:35:39,780 ليس فقط في C، ولكن في أجهزة الكمبيوتر بشكل عام. 760 00:35:39,780 --> 00:35:42,590 على سبيل المثال، إذا كان هذا هو بايت تستحق bit-- 761 00:35:42,590 --> 00:35:45,120 حتى إذا كان هذا هو كل ثمانية bit-- والتي هي رقم واحد. 762 00:35:45,120 --> 00:35:47,300 ما هو هذا العدد تمثل لو افترضنا 763 00:35:47,300 --> 00:35:50,730 انها كل القيم الإيجابية في ثنائي؟ 764 00:35:50,730 --> 00:35:54,410 >> 255، وليس 256، ل الصفر هو أدنى عدد. 765 00:35:54,410 --> 00:35:56,760 حتى 255 هو أعلى واحد، ولكن المشكلة 766 00:35:56,760 --> 00:36:00,330 لنفترض أنني أريد أن زيادة هذا المتغير الذي 767 00:36:00,330 --> 00:36:04,030 وباستخدام المجموع ثمانية بت إذا أردت زيادة عليه. 768 00:36:04,030 --> 00:36:07,160 >> كذلك في أقرب وقت ارفق واحد لجميع هذه منها، 769 00:36:07,160 --> 00:36:10,500 يمكنك ربما تخيل visually-- فقط مثل حمل واحد باستخدام decimals-- 770 00:36:10,500 --> 00:36:12,300 شيئا ما يحدث في التدفق إلى اليسار. 771 00:36:12,300 --> 00:36:15,590 وبالفعل، إذا أضيف عدد إلى هذا، فإن ما يحدث في ثنائي 772 00:36:15,590 --> 00:36:17,670 هو أنه يفيض الى نقطة الصفر. 773 00:36:17,670 --> 00:36:21,730 >> حتى إذا كنت فقط لا use-- عدد صحيح، لكن بايت واحد لحساب الأعداد الصحيحة 774 00:36:21,730 --> 00:36:27,170 في برنامج، من خلال default-- في أقرب وقت تحصل على 250، 251، 252، 253، 254، 775 00:36:27,170 --> 00:36:32,710 255-- 0 255 يأتي بعد، الذي هو على الارجح وليس ما 776 00:36:32,710 --> 00:36:34,790 المستخدم هو الذهاب الى نتوقع. 777 00:36:34,790 --> 00:36:39,620 >> الآن وفي الوقت نفسه في نقطة عائمة العالم، لديك أيضا مشكلة مماثلة. 778 00:36:39,620 --> 00:36:42,670 وليس ذلك بكثير مع أكبر number-- على الرغم من هذا لا يزال يمثل مشكلة. 779 00:36:42,670 --> 00:36:45,360 ولكن مع مقدار من الدقة التي يمكنك تمثيل. 780 00:36:45,360 --> 00:36:49,490 لذلك دعونا نلقي نظرة على هذا المثال هنا أيضا من مصدر code-- اليوم 781 00:36:49,490 --> 00:36:52,070 تطفو-0.c. 782 00:36:52,070 --> 00:36:54,280 >> وتلاحظ انها السوبر برنامج بسيط 783 00:36:54,280 --> 00:36:56,580 يبدو أن تطبع ما القيمة؟ 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 ماذا يراهن هذا سوف طباعة على الرغم من أن هناك قليلا من جملة جديد 786 00:37:04,110 --> 00:37:05,540 هنا؟ 787 00:37:05,540 --> 00:37:06,700 لذلك نأمل 0.1. 788 00:37:06,700 --> 00:37:10,000 ذلك ما يعادل عشر لأن أفعله 1 مقسوما على 10. 789 00:37:10,000 --> 00:37:12,430 أنا تخزين الجواب في متغير يسمى و. 790 00:37:12,430 --> 00:37:15,850 هذا المتغير من نوع تعويم، والتي هو الكلمة اقترحت فقط موجودة. 791 00:37:15,850 --> 00:37:18,910 >> نحن لم أر هذا من قبل، ولكن هذا هو نوع من طريقة أنيق في printf 792 00:37:18,910 --> 00:37:22,110 لتحديد عدد الأرقام لك نريد أن نرى بعد العلامة العشرية. 793 00:37:22,110 --> 00:37:25,020 حتى هذه الرموز يعني فقط هو هذا هنا عنصر نائب. 794 00:37:25,020 --> 00:37:27,900 انها لنقطة عائمة قيمة، وأوه، بالمناسبة، 795 00:37:27,900 --> 00:37:31,389 إظهار ذلك مع الفاصلة العشرية مع رقم واحد بعد العلامة العشرية. 796 00:37:31,389 --> 00:37:33,180 بحيث هو العدد الأرقام المعنوية، 797 00:37:33,180 --> 00:37:34,650 إذا جاز التعبير، التي قد ترغب. 798 00:37:34,650 --> 00:37:40,450 >> لذلك اسمحوا لي أن نمضي قدما ونفعل جعل تعويم 0، ./float-0، 799 00:37:40,450 --> 00:37:46,660 ويبدو 1 مقسوما على 10 هو 0.0. 800 00:37:46,660 --> 00:37:47,760 الآن لماذا هذا؟ 801 00:37:47,760 --> 00:37:51,380 >> حسنا مرة أخرى، وتتخذ الكمبيوتر لي حرفيا، وكنت قد كتبت 1 802 00:37:51,380 --> 00:37:56,680 وأنا مكتوبة 10، واتخاذ تخمين ما هو نوع البيانات المفترضة لهذين 803 00:37:56,680 --> 00:37:58,440 القيم؟ 804 00:37:58,440 --> 00:38:00,970 عدد صحيح، انها من الناحية الفنية شيء مختلف قليلا. 805 00:38:00,970 --> 00:38:04,150 انها عادة ما تكون طويلة، ولكنها ل في نهاية المطاف قيمة لا تتجزأ. 806 00:38:04,150 --> 00:38:06,030 لا قيمة النقطة العائمة. 807 00:38:06,030 --> 00:38:09,456 >> وهو ما يعني أنه إذا كان هذا هو عدد صحيح وهذا هو عدد صحيح، 808 00:38:09,456 --> 00:38:11,830 المشكلة تكمن في أن الكمبيوتر ليس لديها القدرة 809 00:38:11,830 --> 00:38:13,680 حتى لتخزين تلك النقطة العشرية. 810 00:38:13,680 --> 00:38:16,430 حتى عندما تفعل 1 تقسيم بنسبة 10 باستخدام الأعداد الصحيحة 811 00:38:16,430 --> 00:38:20,950 لكل من البسط و القاسم، يجب أن تكون الإجابة 0.1. 812 00:38:20,950 --> 00:38:24,930 لكن computer-- ل تلك هي integers-- 813 00:38:24,930 --> 00:38:27,430 لا أعرف ماذا أفعل مع 0.1. 814 00:38:27,430 --> 00:38:30,010 >> فما هو القيام بشكل واضح؟ 815 00:38:30,010 --> 00:38:33,120 انها مجرد رميها بعيدا، وما اراه في نهاية المطاف 816 00:38:33,120 --> 00:38:38,830 هو 0.0 فقط لأنني أصر على أن printf تريني نقطة عشرية واحدة. 817 00:38:38,830 --> 00:38:41,740 ولكن المشكلة هي أنه إذا كنت تقسيم عدد صحيح من عدد صحيح، 818 00:38:41,740 --> 00:38:44,347 سوف get-- بالتعريف من C-- عدد صحيح. 819 00:38:44,347 --> 00:38:46,680 وانها لن تفعل شيء جميل ومريح 820 00:38:46,680 --> 00:38:49,040 مثل جولة ليصل إلى أقرب واحد صعودا أو هبوطا. 821 00:38:49,040 --> 00:38:51,860 انها تسير لاقتطاع كل شيء بعد العلامة العشرية. 822 00:38:51,860 --> 00:38:54,030 >> حتى مجرد حدسي، ما هو على الارجح الإصلاح؟ 823 00:38:54,030 --> 00:38:55,351 ما هو أبسط الإصلاح هنا؟ 824 00:38:55,351 --> 00:38:55,850 نعم؟ 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 بالضبط. 827 00:39:01,100 --> 00:39:04,200 لماذا لا يمكننا فقط علاج هذه كما القيم النقطة العائمة بشكل فعال 828 00:39:04,200 --> 00:39:05,860 يحولونها يطفو أو الزوجي. 829 00:39:05,860 --> 00:39:10,500 والآن إذا كنت تفعل جعل يطفو-0، أو إذا كنت تجميع يطفو-1، 830 00:39:10,500 --> 00:39:12,570 وهو مطابق ل ما اقترح فقط. 831 00:39:12,570 --> 00:39:16,400 والآن أفعل يطفو-0، وأنا الآن أحصل على 0.1. 832 00:39:16,400 --> 00:39:17,234 >> الآن هذا هو مدهش. 833 00:39:17,234 --> 00:39:19,441 ولكن الآن انا ذاهب الى القيام به شيء مختلف قليلا. 834 00:39:19,441 --> 00:39:22,280 أنا الغريب لمعرفة ما هو حقا يجري تحت غطاء محرك السيارة، 835 00:39:22,280 --> 00:39:26,050 وانا ذاهب لطباعة هذا إلى 28 منازل عشرية. 836 00:39:26,050 --> 00:39:29,730 أريد أن أرى حقا 0.1000-- على infinite-- 837 00:39:29,730 --> 00:39:32,710 [غير مسموع] 27 أصفار بعد أن 0.1. 838 00:39:32,710 --> 00:39:34,740 >> حسنا دعونا نرى اذا كان هذا ما أنا في الواقع الحصول عليها. 839 00:39:34,740 --> 00:39:39,430 جعل يطفو-0 نفس الملف. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 دعونا التكبير في الجواب دراماتيكية. 842 00:39:44,380 --> 00:39:49,980 كل هذا الوقت، كنت قد تم التفكير 1 مقسوما على 10 هو 10٪، أو 0.1. 843 00:39:49,980 --> 00:39:50,810 انها ليست. 844 00:39:50,810 --> 00:39:53,210 على الأقل بقدر ما الكمبيوتر المعنية. 845 00:39:53,210 --> 00:39:57,060 >> الآن why-- حسنا، هذا كامل كذبة 1 مقسوما على 10 هو 0.1. 846 00:39:57,060 --> 00:39:59,710 ولكن هذا ليس why-- الوجبات الجاهزة اليوم. 847 00:39:59,710 --> 00:40:04,010 فلماذا لا يفكر الكمبيوتر، على عكس كل واحد منا في غرفة، 848 00:40:04,010 --> 00:40:06,870 أن 1 مقسوما على 10 هو في الواقع أن قيمة مجنون؟ 849 00:40:06,870 --> 00:40:10,620 ما هو الكمبيوتر القيام على ما يبدو؟ 850 00:40:10,620 --> 00:40:12,490 ما هذا؟ 851 00:40:12,490 --> 00:40:13,785 >> انها ليست تجاوز، في حد ذاتها. 852 00:40:13,785 --> 00:40:15,910 تجاوز هو عادة عندما كنت التفاف حول قيمة. 853 00:40:15,910 --> 00:40:18,970 انها هذه المسألة من عدم الدقة في قيمة النقطة العائمة 854 00:40:18,970 --> 00:40:22,220 حيث لديك فقط 32 أو ربما حتى 64 بت. 855 00:40:22,220 --> 00:40:25,230 ولكن إذا كان هناك لانهائية عدد numbers-- حقيقية 856 00:40:25,230 --> 00:40:27,940 أرقام مع النقاط العشرية وأرقام thereafter-- بالتأكيد 857 00:40:27,940 --> 00:40:29,380 لا يمكن أن تمثل كل منها. 858 00:40:29,380 --> 00:40:32,870 لذلك أعطت الكمبيوتر لنا أقرب مباراة 859 00:40:32,870 --> 00:40:37,090 إلى القيمة التي يمكن أن تمثل باستخدام تلك العديد من بت إلى القيمة أريد فعلا، 860 00:40:37,090 --> 00:40:38,690 وهو 0.1. 861 00:40:38,690 --> 00:40:40,685 >> لسوء الحظ، إذا كنت بدء القيام الرياضيات، أو 862 00:40:40,685 --> 00:40:44,360 بدء تشمل هذه الأنواع العائمة القيم نقطة في programs-- أهمية 863 00:40:44,360 --> 00:40:46,770 البرمجيات المالية، أي شيء software-- العسكري 864 00:40:46,770 --> 00:40:49,090 حيث التصور هو ربما من المهم جدا. 865 00:40:49,090 --> 00:40:51,520 ويمكنك البدء في إضافة أرقام من هذا القبيل، وبداية 866 00:40:51,520 --> 00:40:54,050 تشغيل هذا البرنامج مع مدخلات كبيرة حقا 867 00:40:54,050 --> 00:40:56,890 أو من أجل الكثير من ساعات أو الكثير أيام أو الكثير من السنوات، 868 00:40:56,890 --> 00:41:01,060 هذه الأخطاء صغيرة قليلا بالتأكيد يمكن أن تضيف ما يصل مع مرور الوقت. 869 00:41:01,060 --> 00:41:04,252 >> الآن بوصفها جانبا، إذا كنت قد أي وقت مضى ينظر سوبرمان 3 أو مكتب الفضاء 870 00:41:04,252 --> 00:41:05,960 وربما تذكرون كيف سرق هؤلاء الرجال 871 00:41:05,960 --> 00:41:08,668 الكثير من المال من أجهزة الكمبيوتر الخاصة بهم باستخدام القيم النقطة العائمة 872 00:41:08,668 --> 00:41:11,290 وبجمع قليلا بقايا، ونأمل أن فيلم 873 00:41:11,290 --> 00:41:12,390 الآن أكثر منطقية. 874 00:41:12,390 --> 00:41:14,930 هذا هو ما كانت عليه منوها في هذا الفيلم. 875 00:41:14,930 --> 00:41:16,710 حقيقة أن معظم أن الشركات لا تبدو 876 00:41:16,710 --> 00:41:18,600 بعد عدد معين المنازل العشرية، 877 00:41:18,600 --> 00:41:20,009 ولكن تلك هي كسور سنتا. 878 00:41:20,009 --> 00:41:22,550 بحيث تبدأ من إضافة لهم، البدء في جعل الكثير من المال 879 00:41:22,550 --> 00:41:23,424 في حسابك المصرفي. 880 00:41:23,424 --> 00:41:25,160 ولهذا أوضح مكتب الفضاء. 881 00:41:25,160 --> 00:41:28,220 >> الآن للأسف خارج مكتب الفضاء، هناك 882 00:41:28,220 --> 00:41:31,794 بعض قلق مشروعة وتأثيرات كبيرة 883 00:41:31,794 --> 00:41:33,710 هذه الأنواع من قرارات التصميم الأساسية، 884 00:41:33,710 --> 00:41:35,990 والواقع أحد الأسباب نستخدم C في سياق 885 00:41:35,990 --> 00:41:39,640 وبحيث يكون لديك حقا هذه الأرض حتى فهم كيفية عمل أجهزة الكمبيوتر، 886 00:41:39,640 --> 00:41:42,440 كيف يعمل البرنامج، و لا تأخذ أي شيء كأمر مسلم به. 887 00:41:42,440 --> 00:41:45,820 >> والواقع للأسف، حتى مع هذا الفهم الأساسي، 888 00:41:45,820 --> 00:41:47,370 نحن البشر يخطئون. 889 00:41:47,370 --> 00:41:51,310 وما اعتقدت سهم هذه ثماني دقائق الفيديو التي اتخذت هنا 890 00:41:51,310 --> 00:41:56,980 من حلقة الأعاجيب الحديثة، والتي هي عرضا التعليمي على كيفية عمل الأشياء 891 00:41:56,980 --> 00:42:00,370 أن يرسم صورتين من عندما يكون الاستخدام غير السليم 892 00:42:00,370 --> 00:42:02,540 وفهم القيم النقطة العائمة 893 00:42:02,540 --> 00:42:05,610 أدى إلى بعض كبيرة النتائج المؤسفة. 894 00:42:05,610 --> 00:42:06,363 دعونا نلقي نظرة. 895 00:42:06,363 --> 00:42:07,029 [VIDEO قراءة] 896 00:42:07,029 --> 00:42:11,290 ونحن الآن العودة إلى "الهندسة الكوارث "على الأعاجيب الحديثة. 897 00:42:11,290 --> 00:42:12,940 أجهزة الكمبيوتر. 898 00:42:12,940 --> 00:42:15,580 قمنا جميعا إلى قبول المشاكل غالبا محبطة أن 899 00:42:15,580 --> 00:42:20,960 حصلت مع them-- البق، والفيروسات، و glitches-- البرمجيات لاسعارها صغيرة 900 00:42:20,960 --> 00:42:23,100 لدفع ثمن الراحة. 901 00:42:23,100 --> 00:42:27,770 ولكن في ذات التقنية العالية وسرعة عالية تطبيقات برنامج الفضاء العسكرية و، 902 00:42:27,770 --> 00:42:32,780 أصغر مشكلة يمكن أن يتعاظم إلى كارثة. 903 00:42:32,780 --> 00:42:38,880 >> في 4 يونيو عام 1996، أعد العلماء لإطلاق صاروخ اريان 5 من دون طيار. 904 00:42:38,880 --> 00:42:41,190 وكانت تحمل العلمي الأقمار الصناعية المصممة 905 00:42:41,190 --> 00:42:44,570 لإنشاء بالضبط كيف يتفاعل المجال المغناطيسي للأرض 906 00:42:44,570 --> 00:42:47,380 مع الرياح الشمسية. 907 00:42:47,380 --> 00:42:50,580 تم بناء صاروخ ل وكالة الفضاء الأوروبية، 908 00:42:50,580 --> 00:42:54,400 وانطلق من منشأتها على ساحل غيانا الفرنسية. 909 00:42:54,400 --> 00:42:57,520 >> -على حوالي 37 ثانية في الرحلة، لأول مرة 910 00:42:57,520 --> 00:42:59,070 لاحظت شيء كان يحدث خطأ. 911 00:42:59,070 --> 00:43:02,240 أن فتحات الدوران و في الطريقة التي حقا لا ينبغي. 912 00:43:02,240 --> 00:43:06,550 حوالي 40 ثانية في الرحلة، بوضوح وكانت السيارة في ورطة، 913 00:43:06,550 --> 00:43:08,820 وذلك عندما جعلوا قرار تدميره. 914 00:43:08,820 --> 00:43:12,370 ضابط السلامة المدى، مع الشجاعة الهائلة، الضغط على زر 915 00:43:12,370 --> 00:43:18,030 وفجرت الصواريخ قبل أن تصبح خطرا على السلامة العامة. 916 00:43:18,030 --> 00:43:21,010 >> ، هذا كان قبل الزواج الرحلة من آريان 5، 917 00:43:21,010 --> 00:43:23,920 واستغرق تدميرها وضع بسبب الخلل 918 00:43:23,920 --> 00:43:25,932 جزءا لا يتجزأ من برنامج الصاروخ. 919 00:43:25,932 --> 00:43:27,640 -THE المشكلة على كان آريان أن هناك 920 00:43:27,640 --> 00:43:30,500 كان الرقم الذي المطلوبة 64 بت للتعبير، 921 00:43:30,500 --> 00:43:33,560 وأرادوا تحويل لعدد 16 بت. 922 00:43:33,560 --> 00:43:36,820 افترضوا أن عدد كان لن تكون كبيرة جدا. 923 00:43:36,820 --> 00:43:40,940 أن معظم تلك الأرقام في كان عدد الأصفار 64 بت. 924 00:43:40,940 --> 00:43:42,450 كانوا على خطأ. 925 00:43:42,450 --> 00:43:45,000 >> -THE عدم قدرة احد برنامج حاسوبي لقبول 926 00:43:45,000 --> 00:43:49,460 هذا النوع من عدد تولدها وكان آخر في جذور الفشل. 927 00:43:49,460 --> 00:43:54,260 وتطوير البرمجيات تصبح جزء مكلفة جدا من التكنولوجيا الجديدة. 928 00:43:54,260 --> 00:43:57,060 وكان الصاروخ أريان 4 كانت ناجحة جدا. 929 00:43:57,060 --> 00:44:01,600 الكثير من البرامج التي تم إنشاؤها ل انه كان يستخدم أيضا في آريان 5. 930 00:44:01,600 --> 00:44:04,790 >> -THE المشكلة الأساسية هو أن آريان 5. 931 00:44:04,790 --> 00:44:11,200 تم faster-- تسارع أسرع، و إن البرنامج لا يمثل لذلك. 932 00:44:11,200 --> 00:44:14,910 >> -THE تدمير الصاروخ كانت كارثة مالية ضخمة. 933 00:44:14,910 --> 00:44:18,630 جميع بسبب خطأ في برنامج دقيقة. 934 00:44:18,630 --> 00:44:21,160 لكن هذا لم يكن أول الوقت مشاكل تحويل البيانات 935 00:44:21,160 --> 00:44:24,770 قد تعاني تكنولوجيا الصواريخ الحديثة. 936 00:44:24,770 --> 00:44:28,020 >> -في عام 1991 مع بداية حرب الخليج الأولى، 937 00:44:28,020 --> 00:44:30,540 صاروخ باتريوت شهدت نوع مماثل 938 00:44:30,540 --> 00:44:32,465 مشكلة تحويل العدد. 939 00:44:32,465 --> 00:44:36,760 ونتيجة لذلك 28 people-- 28 قتل soldiers-- الأمريكية، 940 00:44:36,760 --> 00:44:39,010 وجرح نحو مئة آخرين. 941 00:44:39,010 --> 00:44:42,830 عندما باتريوت، والتي كان من المفترض للحماية من صواريخ سكود واردة، 942 00:44:42,830 --> 00:44:45,780 فشل في اطلاق صاروخ. 943 00:44:45,780 --> 00:44:51,610 >> ، وعندما غزت العراق الكويت، وأمريكا أطلقت عاصفة الصحراء في أوائل عام 1991، 944 00:44:51,610 --> 00:44:55,720 تم نشر بطاريات صواريخ باتريوت لحماية المملكة العربية السعودية وإسرائيل 945 00:44:55,720 --> 00:44:59,180 من هجمات صواريخ سكود العراقية. 946 00:44:59,180 --> 00:45:03,080 باتريوت هو الولايات المتحدة متوسطة المدى السطح إلى الجو النظام 947 00:45:03,080 --> 00:45:06,530 المصنعة من قبل شركة رايثيون. 948 00:45:06,530 --> 00:45:09,500 >> -THE حجم باتريوت اعتراضية itself-- 949 00:45:09,500 --> 00:45:14,705 ولكن عن ما يقرب من 20 أقدام طويلة، ويزن حوالي 2،000 جنيه. 950 00:45:14,705 --> 00:45:19,090 ويحمل رأسا حربية من حول، اعتقد انها ما يقرب من 150 جنيه. 951 00:45:19,090 --> 00:45:23,880 والرأس الحربي نفسه والمتفجرات العالية، والتي 952 00:45:23,880 --> 00:45:26,700 لديه شظايا حوله. 953 00:45:26,700 --> 00:45:31,630 لذلك غلاف الرأس الحربي هو مصممة للعمل مثل رصاص. 954 00:45:31,630 --> 00:45:34,040 >> تتم -THE صواريخ أربعة في الحاويات، 955 00:45:34,040 --> 00:45:37,170 ويتم نقلها عن طريق شبه مقطورة. 956 00:45:37,170 --> 00:45:44,880 >> ، ونظام باتريوت المضاد للصواريخ يعود 20 سنوات على الأقل الآن. 957 00:45:44,880 --> 00:45:48,380 صمم أصلا كما صاروخ الدفاع الجوي 958 00:45:48,380 --> 00:45:50,810 لاسقاط طائرات العدو. 959 00:45:50,810 --> 00:45:54,410 في حرب الخليج الأولى عندما جاءت تلك الحرب، 960 00:45:54,410 --> 00:45:59,650 الجيش يريد استخدامه ل اسقاط صواريخ سكود، وليس الطائرات. 961 00:45:59,650 --> 00:46:03,580 وكانت القوات الجوية العراقية ليس كثيرا من مشكلة، 962 00:46:03,580 --> 00:46:06,590 ولكن الجيش كان قلقا حول صواريخ سكود. 963 00:46:06,590 --> 00:46:10,120 وهكذا حاولوا ترقية باتريوت. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting عدو صواريخ تسير بسرعة ماخ 5 965 00:46:12,740 --> 00:46:15,670 كان على وشك أن يتحدى بما فيه الكفاية. 966 00:46:15,670 --> 00:46:18,440 ولكن عندما باتريوت ونقل في الخدمة، 967 00:46:18,440 --> 00:46:22,580 كان الجيش لا يعلم لتعديل العراقي أن 968 00:46:22,580 --> 00:46:25,880 جعل صواريخ سكود على ما يقرب من من المستحيل ذلك. 969 00:46:25,880 --> 00:46:30,690 >> ماذا حدث هو أن صواريخ سكود قادمون في كان غير مستقر. 970 00:46:30,690 --> 00:46:32,000 كانوا متهاد. 971 00:46:32,000 --> 00:46:37,210 وكان السبب في هذا Iraqis-- من أجل الحصول على 600 كيلومتر خارج 972 00:46:37,210 --> 00:46:41,680 ل-300 كيلومترا مجموعة missile-- أخذ الوزن من الرؤوس الحربية الأمامي، 973 00:46:41,680 --> 00:46:43,340 وجعل رأس حربي أخف وزنا. 974 00:46:43,340 --> 00:46:48,490 حتى الآن باتريوت في محاولة للتوصل في سكود، ومعظم time-- 975 00:46:48,490 --> 00:46:52,880 الغالبية الساحقة من time-- أنه سيتوجه فقط عن طريق سكود. 976 00:46:52,880 --> 00:46:57,120 >> وبمجرد مشغلي نظام باتريوت أدرك باتريوت اخطأ هدفه، 977 00:46:57,120 --> 00:47:01,630 فجروا رأس حربي باتريوت ل لتجنب سقوط ضحايا محتملة اذا 978 00:47:01,630 --> 00:47:04,440 وسمح ليسقط على الأرض. 979 00:47:04,440 --> 00:47:08,700 >> كان المفتى ما اعتبره معظم الناس كما نارية كبيرة في السماء، 980 00:47:08,700 --> 00:47:14,180 ويساء فهمه و اعتراض الرؤوس الحربية من طراز سكود. 981 00:47:14,180 --> 00:47:18,020 >> -Although في سماء الليل، وطنيات يبدو أن تدمير بنجاح 982 00:47:18,020 --> 00:47:23,280 صواريخ سكود، في الظهران يمكن أن يكون هناك أي خطأ حول أدائها. 983 00:47:23,280 --> 00:47:27,930 هناك نظام رادار باتريوت ل المسار فقدت من سكود واردة 984 00:47:27,930 --> 00:47:30,260 وشنت أبدا بسبب لعيب البرمجيات. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> كان الإسرائيليون الذين اكتشفت لأول مرة أن يعد النظام كان على، 987 00:47:38,880 --> 00:47:41,130 كلما أصبح التناقض الوقت. 988 00:47:41,130 --> 00:47:44,770 بسبب ساعة جزءا لا يتجزأ من في الكمبيوتر النظام. 989 00:47:44,770 --> 00:47:48,190 >> نبذة عن قبل أسبوعين المأساة في الظهران، 990 00:47:48,190 --> 00:47:50,720 ذكرت الإسرائيليين ل وزارة الدفاع 991 00:47:50,720 --> 00:47:52,410 أن النظام بدأ يفقد الوقت. 992 00:47:52,410 --> 00:47:54,410 بعد حوالي ثماني ساعات للتشغيل، لاحظوا 993 00:47:54,410 --> 00:47:57,690 أن النظام أصبح بشكل ملحوظ أقل دقة. 994 00:47:57,690 --> 00:48:01,850 وردت وزارة الدفاع من قبل يقول كل من بطاريات باتريوت 995 00:48:01,850 --> 00:48:04,800 لعدم ترك النظم على لفترة طويلة. 996 00:48:04,800 --> 00:48:06,980 هم أبدا قال ما كان منذ وقت طويل. 997 00:48:06,980 --> 00:48:09,140 8 ساعات، 10 ساعة، ألف ساعة. 998 00:48:09,140 --> 00:48:11,300 لا أحد يعرف. 999 00:48:11,300 --> 00:48:13,320 >> -THE بطارية باتريوت المتمركزة في الثكنة 1000 00:48:13,320 --> 00:48:18,310 في الظهران ومعيبة الداخلية لل قد كان على مدار الساعة لأكثر من 100 ساعة 1001 00:48:18,310 --> 00:48:21,520 في ليلة 25 فبراير شباط. 1002 00:48:21,520 --> 00:48:25,792 >> -أنها الوقت تتبع الى دقة من حوالي عشر من الثانية. 1003 00:48:25,792 --> 00:48:27,950 الآن عشر من الثانية هو رقم مثير للاهتمام 1004 00:48:27,950 --> 00:48:31,850 لأنه لا يمكن التعبير في ثنائي بالضبط، والتي 1005 00:48:31,850 --> 00:48:36,500 يعني أنه لا يمكن التعبير عن تماما في أي جهاز كمبيوتر الرقمي الحديث. 1006 00:48:36,500 --> 00:48:41,070 من الصعب الاعتقاد، ولكن استخدام هذا كمثال. 1007 00:48:41,070 --> 00:48:43,420 >> دعونا نلقي الثالث رقم واحد. 1008 00:48:43,420 --> 00:48:47,330 ثلث لا يمكن أن يكون وأعرب في العشرية بالضبط. 1009 00:48:47,330 --> 00:48:52,060 ثلث هو 0.333 مستمرة منذ ما لا نهاية. 1010 00:48:52,060 --> 00:48:56,420 ليس هناك طريقة للقيام بذلك مع الدقة المطلقة في كسر عشري. 1011 00:48:56,420 --> 00:48:59,530 هذا هو بالضبط هذا النوع من المشكلة ما حدث في باتريوت. 1012 00:48:59,530 --> 00:49:04,040 ركض أطول النظام، و أسوأ أصبح خطأ وقت. 1013 00:49:04,040 --> 00:49:08,840 >> ، وبعد 100 ساعة من العملية، و كان الخطأ في الوقت الثلث فقط 1014 00:49:08,840 --> 00:49:10,440 من الثانية. 1015 00:49:10,440 --> 00:49:14,150 ولكن من حيث استهداف صواريخ تسير بسرعة ماخ 5، 1016 00:49:14,150 --> 00:49:18,560 ذلك أدى إلى تتبع خطأ من أكثر من 600 متر. 1017 00:49:18,560 --> 00:49:21,870 فإنه سيكون خطأ فادح للجنود في الظهران. 1018 00:49:21,870 --> 00:49:28,455 >> وماذا حدث وكان إطلاق صواريخ سكود الكشف عن طريق الأقمار الصناعية للإنذار المبكر، 1019 00:49:28,455 --> 00:49:32,710 وكانوا يعرفون سكود كانت قادمة في الاتجاه العام لها. 1020 00:49:32,710 --> 00:49:35,150 انهم لا يعرفون أين كانت قادمة. 1021 00:49:35,150 --> 00:49:38,210 ومن الآن حتى الرادار عنصر من عناصر نظام باتريوت 1022 00:49:38,210 --> 00:49:43,150 الدفاع الظهران لتحديد والحفاظ على مسار الصاروخ العدو واردة. 1023 00:49:43,150 --> 00:49:44,561 >> كان -THE رادار ذكية جدا. 1024 00:49:44,561 --> 00:49:46,560 فإنه في الواقع تتبع موقف سكود 1025 00:49:46,560 --> 00:49:48,930 ثم التنبؤ حيث وربما سيكون 1026 00:49:48,930 --> 00:49:51,380 في المرة القادمة أرسل رادار نبضة بها. 1027 00:49:51,380 --> 00:49:53,040 التي كانت تسمى بوابة النطاق. 1028 00:49:53,040 --> 00:49:57,620 >> -Then مرة باتريوت يقرر ما يكفي من الوقت لديه 1029 00:49:57,620 --> 00:50:02,400 تمريرها إلى العودة ومراجعة المقبل الموقع لهذا الكائن المكتشف 1030 00:50:02,400 --> 00:50:03,550 انه يعود. 1031 00:50:03,550 --> 00:50:07,820 لذلك عندما عاد إلى الخطأ المكان، ثم يرى أي كائن. 1032 00:50:07,820 --> 00:50:10,360 وتقرر أنه لا يوجد أي كائن. 1033 00:50:10,360 --> 00:50:13,630 أن هناك كشف كاذبة وتسقط المسار. 1034 00:50:13,630 --> 00:50:16,970 >> اختفى -THE الواردة سكود من شاشة الرادار، 1035 00:50:16,970 --> 00:50:20,200 وبعد ثوان، و وانتقد الى الثكنات. 1036 00:50:20,200 --> 00:50:22,570 سكود مقتل 28. 1037 00:50:22,570 --> 00:50:26,110 وكان آخر واحد أطلق عليه خلال حرب الخليج الأولى. 1038 00:50:26,110 --> 00:50:31,920 مأساوي، وبرامج محدثة وصل فجر اليوم التالي. 1039 00:50:31,920 --> 00:50:34,870 كان الخلل البرمجيات كانت ثابتة، وإغلاق 1040 00:50:34,870 --> 00:50:39,150 فصل واحد في المضطربة التاريخ من صواريخ باتريوت. 1041 00:50:39,150 --> 00:50:40,030 >> [END تشغيل الفيديو] 1042 00:50:40,030 --> 00:50:41,488 >> J. DAVID مالان: هذا كل شيء لCS50. 1043 00:50:41,488 --> 00:50:42,820 سوف نرى لك يوم الاربعاء. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [عزف الموسيقى] 1046 00:50:50,370 --> 00:54:23,446