1 00:00:00,000 --> 00:00:10,550 2 00:00:10,550 --> 00:00:14,050 >> DAVID J. مالان: هذا هو CS50 و هذه هي بداية الأسبوع الأربعة. 3 00:00:14,050 --> 00:00:18,630 و، فتى، هو فولكس واجن في مشكلة كل ذلك بسبب البرنامج. 4 00:00:18,630 --> 00:00:20,264 دعونا نلقي نظرة. 5 00:00:20,264 --> 00:00:20,930 [تشغيل الفيديو] 6 00:00:20,930 --> 00:00:25,560 -Cars، أذكى الشخصيات في الأفلام سريع وغاضب. 7 00:00:25,560 --> 00:00:29,100 هذا الاسبوع صناعة السيارات الألمانية فولكس واجن وجدت نفسها 8 00:00:29,100 --> 00:00:32,490 في وسط فضيحة نسب يحتمل الجنائية. 9 00:00:32,490 --> 00:00:36,060 >> فولكس واجن تستعد لمليارات في الغرامات، اتهامات جنائية محتملة 10 00:00:36,060 --> 00:00:38,560 لقياداتها، كما تعتذر الشركة 11 00:00:38,560 --> 00:00:41,840 لتزوير 11 مليون سيارة ل مساعدته على فوز اختبارات الانبعاثات. 12 00:00:41,840 --> 00:00:44,950 >> وكانت النماذج الديزل -Certain صمم مع برمجيات متطورة 13 00:00:44,950 --> 00:00:48,440 أن المعلومات المستخدمة بما في ذلك موقف القيادة والمركبات 14 00:00:48,440 --> 00:00:51,870 سرعة لتحديد وكانت السيارة تمر اختبار الانبعاثات. 15 00:00:51,870 --> 00:00:55,650 تحت هذا الظرف، المحرك من شأنه أن يقلل من الانبعاثات السامة. 16 00:00:55,650 --> 00:00:59,070 ولكن السيارة زورت لالالتفافية أنه عندما كانت تسير عليه. 17 00:00:59,070 --> 00:01:03,320 ازدادت انبعاثات 10-40 مرات فوق مستويات EPA مقبولة. 18 00:01:03,320 --> 00:01:04,280 >> [END قراءة] 19 00:01:04,280 --> 00:01:05,220 >> DAVID J. مالان: لذلك دعونا نلقي نظرة على هذه 20 00:01:05,220 --> 00:01:07,250 ونرى بالضبط كيف هذا قد تنفذ 21 00:01:07,250 --> 00:01:09,680 وكيف يمكن أن تؤثر هذه العديد من السيارات من هذا القبيل. 22 00:01:09,680 --> 00:01:12,840 حتى في يدي هنا الصحافة الإفراج الذي صدر من قبل EPA-- 23 00:01:12,840 --> 00:01:14,620 على البيئة وكالة الحماية التي 24 00:01:14,620 --> 00:01:18,032 هي وكالة الولايات المتحدة التنظيمية التي يعالج المخاوف البيئية، 25 00:01:18,032 --> 00:01:19,740 ثم الفعلي الإشعار القانوني الذي كان 26 00:01:19,740 --> 00:01:22,420 إرسال إلى فولكس واجن قبل بضعة أيام فقط. 27 00:01:22,420 --> 00:01:26,530 >> وبالتالي فإن وكالة حماية البيئة يكتب، ويكشف الآن علنا، وهو برنامج متطور 28 00:01:26,530 --> 00:01:29,390 الخوارزمية على يقين سيارات فولكس واجن بالكشف 29 00:01:29,390 --> 00:01:32,630 عندما تمر السيارة اختبار الانبعاثات الرسمية 30 00:01:32,630 --> 00:01:36,505 ويتحول انبعاثات الكاملة تسيطر على فقط أثناء الاختبار. 31 00:01:36,505 --> 00:01:38,380 فعالية هذه المركبات التلوث 32 00:01:38,380 --> 00:01:43,260 أجهزة التحكم في انبعاثات هي إلى حد كبير انخفاض خلال كل القيادة العادية 33 00:01:43,260 --> 00:01:44,320 الحالات. 34 00:01:44,320 --> 00:01:48,190 هذه النتائج في السيارات التي تلبي المعايير في المختبر أو اختبار 35 00:01:48,190 --> 00:01:52,790 المحطة، ولكن أثناء التشغيل العادي تنبعث oxides-- النيتروجين أو NOx-- 36 00:01:52,790 --> 00:01:54,950 بسرعة تصل إلى 40 ضعف المعيار. 37 00:01:54,950 --> 00:01:58,220 البرنامج التي تنتجها فولكس واجن هو جهاز الإقتباس، الهزيمة، 38 00:01:58,220 --> 00:02:00,650 على النحو الذي حدده النظيفة قانون الهواء في الولايات المتحدة. 39 00:02:00,650 --> 00:02:03,410 >> يذهبون إلى القول بأن وكالة حماية البيئة وكالة أخرى 40 00:02:03,410 --> 00:02:07,020 كشف الجهاز هزيمة البرامج بعد تحليل مستقل 41 00:02:07,020 --> 00:02:09,660 قبل الباحثين في الغرب جامعة فرجينيا. 42 00:02:09,660 --> 00:02:14,160 يساهم التلوث أكاسيد النيتروجين ل ثاني أكسيد النيتروجين والأوزون على مستوى الأرض، 43 00:02:14,160 --> 00:02:15,700 والجسيمات الدقيقة. 44 00:02:15,700 --> 00:02:18,090 التعرض لهذه وقد تم ربط الملوثات 45 00:02:18,090 --> 00:02:20,870 مع مجموعة واسعة من آثار صحية خطيرة، 46 00:02:20,870 --> 00:02:23,637 بما في ذلك زيادة الربو الهجمات وغيرها من أمراض الجهاز التنفسي 47 00:02:23,637 --> 00:02:26,470 الأمراض التي يمكن أن تكون خطيرة بما فيه الكفاية الى ارسال الناس الى المستشفى. 48 00:02:26,470 --> 00:02:28,660 التعرض للأوزون و الجسيمات تحتوي أيضا 49 00:02:28,660 --> 00:02:31,960 ارتبط سابق لأوانه الموت بسبب أمراض الجهاز التنفسي ذات الصلة 50 00:02:31,960 --> 00:02:35,690 أو القلب والأوعية الدموية الآثار ذات الصلة. 51 00:02:35,690 --> 00:02:38,940 الأطفال وكبار السن والأشخاص الذين يعانون من أمراض الجهاز التنفسي قبل الإيجاد 52 00:02:38,940 --> 00:02:42,840 بشكل خاص لخطر الآثار الصحية لهذه الملوثات. 53 00:02:42,840 --> 00:02:45,056 >> تكفي هو القول، انها خطيرة جدا. 54 00:02:45,056 --> 00:02:46,930 ودعنا نذهب إلى قراءة واحد فقط أكثر مقتطفات 55 00:02:46,930 --> 00:02:49,370 وبعد ذلك سنقوم نلقي نظرة على الآثار الكامنة 56 00:02:49,370 --> 00:02:50,920 هذا في سياق سيارة. 57 00:02:50,920 --> 00:02:53,730 على وجه التحديد، فولكس واجن تصنيع وتركيب 58 00:02:53,730 --> 00:02:56,210 البرمجيات في ما يسمى التحكم الإلكتروني 59 00:02:56,210 --> 00:02:59,320 module-- أو ECM-- من هذه المركبات التي مست 60 00:02:59,320 --> 00:03:03,580 عندما كان يجري اختبار السيارة ل الامتثال لمعايير الانبعاثات EPA. 61 00:03:03,580 --> 00:03:07,510 على أساس المدخلات المختلفة بما في ذلك موقف عجلة القيادة والمركبات 62 00:03:07,510 --> 00:03:11,280 سرعة ومدة المحرك العملية، والضغط الجوي، 63 00:03:11,280 --> 00:03:13,720 هذه المدخلات على وجه التحديد تعقب المعلمات 64 00:03:13,720 --> 00:03:17,600 من إجراء الاختبار الاتحادي تستخدم ل اختبار الانبعاثات للحصول على شهادة وكالة حماية البيئة 65 00:03:17,600 --> 00:03:18,400 الأغراض. 66 00:03:18,400 --> 00:03:21,850 >> خلال اختبار الانبعاثات وكالة حماية البيئة، البرنامج المركبات ECM 67 00:03:21,850 --> 00:03:25,060 ركض البرمجيات التي تنتجها النتائج انبعاثات متوافقة. 68 00:03:25,060 --> 00:03:28,340 في جميع الأوقات الأخرى، و برنامج ECM مركبة 69 00:03:28,340 --> 00:03:31,090 ركض طريق منفصل المعايرة التي خفضت 70 00:03:31,090 --> 00:03:34,360 فعالية نظام التحكم في الانبعاثات بشكل عام، 71 00:03:34,360 --> 00:03:37,864 على وجه التحديد التحفيزي الانتقائي الحد من أكاسيد النيتروجين الهزيل trap-- 72 00:03:37,864 --> 00:03:39,280 وسنرى في لحظة. 73 00:03:39,280 --> 00:03:43,040 ونتيجة لذلك، انبعاثات أكاسيد النيتروجين زيادة بعامل من 10 إلى 40 مرة 74 00:03:43,040 --> 00:03:47,450 فوق مستويات متوافقة مع وكالة حماية البيئة اعتمادا على نوع دورة محرك. 75 00:03:47,450 --> 00:03:50,800 >> لذلك ماذا يعني هذا حقا، و كود المصدر لبرنامج تشغيل 76 00:03:50,800 --> 00:03:53,190 على فولكسفاغن لم يتم الكشف علنا، 77 00:03:53,190 --> 00:03:56,460 غير أنه، على نحو فعال، وهذا تعادل في مكان ما هناك في الداخل 78 00:03:56,460 --> 00:03:57,830 من التعليمات البرمجية فولكس واجن. 79 00:03:57,830 --> 00:04:02,200 إذا كان يتم اختبار لك، وإذا كانت السيارة بالكشف عن عوامل بيئية معينة 80 00:04:02,200 --> 00:04:04,330 مثل عجلة القيادة موقف أو حركة 81 00:04:04,330 --> 00:04:06,710 أو عدم وجودها في السيارة أو أي عدد من العوامل الأخرى 82 00:04:06,710 --> 00:04:09,940 التي يفترض حاليا أن تكون جزءا من هذه الصيغة، 83 00:04:09,940 --> 00:04:12,370 انهم ببساطة تشغيل التحكم في الانبعاثات كاملة. 84 00:04:12,370 --> 00:04:15,670 وبعبارة أخرى، فإنها تبدأ ينبعث منها أقل من الملوثات. 85 00:04:15,670 --> 00:04:18,769 >> آخر، في كل حالة أخرى عندما لا يكتشف بأنها 86 00:04:18,769 --> 00:04:20,790 في المختبر، وأنها فقط لا. 87 00:04:20,790 --> 00:04:24,320 وهكذا يمكنك تبسيط ذلك في أكثر شبة الكود ملموس مع شيء 88 00:04:24,320 --> 00:04:24,820 مثله. 89 00:04:24,820 --> 00:04:27,810 إذا عجلات تحول ولكن عجلة القيادة ليست كذلك، موحية 90 00:04:27,810 --> 00:04:30,060 أن السيارة على بعض نوع من اسطوانة دوارة 91 00:04:30,060 --> 00:04:32,550 ولكن في بعض نوع من مستودع يجري اختبارها، 92 00:04:32,550 --> 00:04:36,070 ثم تتصرف مثل سوف EPA مثلك. 93 00:04:36,070 --> 00:04:37,960 عدم القيام بذلك لا. 94 00:04:37,960 --> 00:04:40,420 لذلك دعونا نلقي نظرة في شريط فيديو قصير 95 00:04:40,420 --> 00:04:45,391 يأخذ نظرة على ما آثار هي من هذا الواقع ميكانيكيا. 96 00:04:45,391 --> 00:04:48,620 >> [تشغيل الفيديو] 97 00:04:48,620 --> 00:04:52,800 >> -Last الجمعة أعلنت وكالة حماية البيئة أن بعض سيارات فولكس واجن أودي قدمت بين عامي 2009 98 00:04:52,800 --> 00:04:55,840 وهذا العام كانت تستخدم ما يسمى جهاز هزيمة 99 00:04:55,840 --> 00:04:59,060 للالتفاف على قوانين الانبعاثات مصممة للحفاظ على الهواء النقي. 100 00:04:59,060 --> 00:05:01,700 ولكن ماذا يعني ذلك بالضبط؟ 101 00:05:01,700 --> 00:05:04,666 >> حسنا، السيارات الحديثة العشرات من أجهزة الكمبيوتر داخلها. 102 00:05:04,666 --> 00:05:07,040 وبعض من هذه الحواسيب مساعدة في تنسيق وظائف 103 00:05:07,040 --> 00:05:09,590 المحرك الأمثل ل الأداء أثناء التأكد من 104 00:05:09,590 --> 00:05:12,340 أنه لا يوجد الكثير من القمامة الخروج من أنبوب العادم. 105 00:05:12,340 --> 00:05:15,170 لقد تم بالفعل العمل بهذه الطريقة لعدة عقود حتى الآن. 106 00:05:15,170 --> 00:05:17,380 أساسا، كل جزء محرك سيارة الحديثة 107 00:05:17,380 --> 00:05:20,080 لديها جهاز استشعار أو وحدة تحكم على ذلك، وهذه الحواسيب 108 00:05:20,080 --> 00:05:23,460 قراءة في بيانات الآلاف من مرات في إجراء تعديلات الثانية 109 00:05:23,460 --> 00:05:26,220 مثل نسبة الوقود إلى الهواء ما يجري في اسطوانات. 110 00:05:26,220 --> 00:05:28,730 >> هذه الغش فولكس واجن وطرازات أودي هي الديزل، 111 00:05:28,730 --> 00:05:30,890 والديزل أكثر واحد كمبيوتر المهم حقا 112 00:05:30,890 --> 00:05:34,030 المعلمات التي تسيطر عليها، وهو كمية الوقود غير المحترق الذهاب 113 00:05:34,030 --> 00:05:35,200 في العادم. 114 00:05:35,200 --> 00:05:36,310 الآن يبدو سيئا. 115 00:05:36,310 --> 00:05:39,642 لا يبدو وكأنك تريد الوقود غير المحترق الخوض في العادم. 116 00:05:39,642 --> 00:05:41,600 ولكن في حالة وجود الديزل، لديك شيء 117 00:05:41,600 --> 00:05:46,110 دعا فخ أكاسيد النيتروجين وهو الجهاز الذي يمتص والفخاخ لأكاسيد النيتروجين 118 00:05:46,110 --> 00:05:48,880 التي هي ملوثات التي من شأنها أن وإلا انتقل إلى الغلاف الجوي. 119 00:05:48,880 --> 00:05:53,040 وتأثير هذا الفخ أكاسيد النيتروجين ومما يعزز مع الوقود غير المحترق. 120 00:05:53,040 --> 00:05:56,650 حتى جهاز الهزيمة هو برنامج خاص داخل هذه أجهزة الكمبيوتر التي يمكن أن تجعل من 121 00:05:56,650 --> 00:05:59,527 تبدو وكأنها سيارة تجتمع الانبعاثات المعايير حتى عندما لا. 122 00:05:59,527 --> 00:06:01,110 كان فولكس واجن مشكلة على يديها. 123 00:06:01,110 --> 00:06:04,050 كانت معروفة محركات الديزل للحصول على الاقتصاد في استهلاك الوقود العظيم، 124 00:06:04,050 --> 00:06:07,510 ولكن في فخ أكاسيد النيتروجين يعمل فقط بشكل جيد عندما يتم استخدام المزيد من الوقود. 125 00:06:07,510 --> 00:06:10,460 وبالتالي فإن السيارة سوف يكشف، باستخدام هذا الجهاز الهزيمة، 126 00:06:10,460 --> 00:06:13,870 عندما كان الحصول على الانبعاثات الاختبار، فإنه يستخدم المزيد من الوقود، 127 00:06:13,870 --> 00:06:16,830 جعل فخ العمل أكاسيد النيتروجين بشكل جيد، أن انبعاثات يكون على ما يرام. 128 00:06:16,830 --> 00:06:21,130 ولكن بعد ذلك تحصل على الطريق، والجهاز إيقاف، كنت حرق كمية أقل من الوقود 129 00:06:21,130 --> 00:06:24,256 ولكن أنك تضع ما يصل الى 40 مرات المزيد من الملوثات في الغلاف الجوي. 130 00:06:24,256 --> 00:06:26,130 ولكن كيف هيك السيارة يعرفون أنه كان 131 00:06:26,130 --> 00:06:27,720 يجري اختبار للامتثال الانبعاثات؟ 132 00:06:27,720 --> 00:06:30,590 وتقول وكالة حماية البيئة أنها كانت متطورة نظام فحص الأشياء 133 00:06:30,590 --> 00:06:34,090 مثل موقف عجلة القيادة، السرعة، متى كان المحرك على، 134 00:06:34,090 --> 00:06:35,507 وحتى الضغط الجوي. 135 00:06:35,507 --> 00:06:37,673 وبعبارة أخرى، كان هناك بأي حال من الأحوال وهذا عرضي 136 00:06:37,673 --> 00:06:40,260 لأنه لم يكن البرنامج مصممة بعناية فائقة للكشف عن 137 00:06:40,260 --> 00:06:41,630 اختبار الانبعاثات الرسمي. 138 00:06:41,630 --> 00:06:43,588 هذا بعض خطيرة جدا الخداع وهذا 139 00:06:43,588 --> 00:06:45,420 لماذا فولكس واجن في هذه مشكلة خطيرة. 140 00:06:45,420 --> 00:06:48,600 في الواقع، الرئيس التنفيذي، ومارتن فينتركورن، نزلت للتو. 141 00:06:48,600 --> 00:06:49,820 >> ذلك ما سيحدث بعد ذلك؟ 142 00:06:49,820 --> 00:06:53,900 حسنا، إذا كنت واحدا من نصف مليون Jettas الديزل، البيتلز، الركبة، Passats، 143 00:06:53,900 --> 00:06:56,220 أو أودي A3s تنفذ، والخبر السار هو هو 144 00:06:56,220 --> 00:06:57,886 أن السيارة لا تزال آمنة للدفع. 145 00:06:57,886 --> 00:07:00,510 لم يكن لديك لوضعها بعيدا حتى يصدر فولكس واجن التذكير. 146 00:07:00,510 --> 00:07:02,509 ولكن في بعض نقطة انهم ربما ستكون لدينا 147 00:07:02,509 --> 00:07:04,230 لتحديث البرامج داخل سيارتك. 148 00:07:04,230 --> 00:07:06,927 وعندما يحدث ذلك كنت قد الحصول على أقل ميلا للدبابات. 149 00:07:06,927 --> 00:07:09,260 المحامون يستعدون بالفعل حتى لدعاوى الطبقة العمل 150 00:07:09,260 --> 00:07:12,500 لذلك قد تحصل على تعويض أصحاب في مرحلة ما في المستقبل. 151 00:07:12,500 --> 00:07:15,832 ولكن هذا لن يحدث في أي وقت قريب. 152 00:07:15,832 --> 00:07:16,711 >> [END قراءة] 153 00:07:16,711 --> 00:07:19,960 DAVID J. مالان: ولذلك فإن هذا يثير في الواقع مثيرة للاهتمام اكبر السؤال الصورة 154 00:07:19,960 --> 00:07:20,660 كما أن تثق. 155 00:07:20,660 --> 00:07:21,160 الصحيح؟ 156 00:07:21,160 --> 00:07:24,300 كل منا لديه فون أو في androids أو شيء ما في جيوبنا على الأرجح 157 00:07:24,300 --> 00:07:26,500 في هذه الأيام، أو أجهزة الكمبيوتر المحمولة على لفات لدينا التي هي 158 00:07:26,500 --> 00:07:28,510 تشغيل برنامج مصنوعة من قبل شركة آبل ومايكروسوفت 159 00:07:28,510 --> 00:07:30,710 وعناقيد من الشركات الأخرى. 160 00:07:30,710 --> 00:07:34,240 ولكن كيف نعرف أن ما تقوم هذه البرمجيات 161 00:07:34,240 --> 00:07:37,680 هو في الواقع ما هذه وتقول شركات يفعلون؟ 162 00:07:37,680 --> 00:07:39,610 >> على سبيل المثال، من الذي نقول انه في كل مرة كنت 163 00:07:39,610 --> 00:07:42,200 إجراء مكالمة هاتفية على اي فون الخاص بك أو الروبوت الهاتف أو ما شابه ذلك، 164 00:07:42,200 --> 00:07:45,650 أن هذا رقم الهاتف ليست أيضا يجري تحميلها على الخادم بعض الشركة 165 00:07:45,650 --> 00:07:48,399 بسبب بعض البرامج قمت مكتوبة، سواء كان ذلك في التشغيل 166 00:07:48,399 --> 00:07:51,070 النظام نفسه مثل دائرة الرقابة الداخلية أو الروبوت، أو لأنك قمت بتحميل 167 00:07:51,070 --> 00:07:53,880 بعض التطبيقات طرف ثالث بطريقة أو بأخرى هو الاستماع 168 00:07:53,880 --> 00:07:57,120 لكل ما تكتبه أو كل ما تقوله فعلا. 169 00:07:57,120 --> 00:07:59,500 كيف يمكنك أن تعرف ذلك، عندما يا رفاق تشغيل رنة 170 00:07:59,500 --> 00:08:02,590 أو تقديم لتجميع الخاصة بك البرمجيات الخاصة بها في CS50، كيف 171 00:08:02,590 --> 00:08:06,080 هل لموظفي أن CS50 الخاصة، عن طريق المكتبة CS50، 172 00:08:06,080 --> 00:08:08,690 لم يكن تسجيل كل سلسلة كنت قد حصلت من أي وقت مضى 173 00:08:08,690 --> 00:08:10,276 أو كل شبر كنت قد حصلت من أي وقت مضى؟ 174 00:08:10,276 --> 00:08:12,900 حسنا، هل يمكن أن ننظر بالتأكيد في شفرة المصدر لشيء 175 00:08:12,900 --> 00:08:15,233 مثل المكتبة CS50، كنت يمكن أن ننظر في شفرة المصدر 176 00:08:15,233 --> 00:08:18,170 لنظام التشغيل لينكس يعمل على IDE CS50. 177 00:08:18,170 --> 00:08:23,090 لكن عرضا مذهلا وبالنظر الى الوراء في عام 1984 178 00:08:23,090 --> 00:08:26,730 في استلام جائزة تورينج من قبل عالم الكمبيوتر الشهير المعروف جدا 179 00:08:26,730 --> 00:08:29,750 as-- يدعى كين طومسون الذي حصل على جائزة تورينج التي 180 00:08:29,750 --> 00:08:33,500 هو نوع من علم الحاسوب في جائزة نوبل، اذا صح التعبير، 181 00:08:33,500 --> 00:08:35,309 لعمله على نظام التشغيل تسمى 182 00:08:35,309 --> 00:08:39,039 يونيكس، التي هي مشابهة جدا في روح لماذا نستخدم الذي هو لينكس. 183 00:08:39,039 --> 00:08:41,960 والسؤال الذي سأل في بلده خطاب القبول، أساسا 184 00:08:41,960 --> 00:08:44,910 وضع إطار ل سنوات وسنوات من المناقشة 185 00:08:44,910 --> 00:08:46,970 حول الثقة والأمن، وكان هذا. 186 00:08:46,970 --> 00:08:50,410 إلى أي مدى ينبغي الثقة واحد بيان أن program-- قطعة 187 00:08:50,410 --> 00:08:53,010 من software-- خال من أحصنة طروادة؟ 188 00:08:53,010 --> 00:08:56,500 ربما هو أكثر أهمية للثقة الشعب الذي كتب البرنامج. 189 00:08:56,500 --> 00:08:58,650 >> في واقع الأمر، لقد ربط إلى الحديث أنه 190 00:08:58,650 --> 00:09:02,400 قدم عند قبول هذه الجائزة في '80s على موقع CS50 ل 191 00:09:02,400 --> 00:09:04,030 تحت الصفحة محاضرات لهذا اليوم. 192 00:09:04,030 --> 00:09:06,071 لأن ما سترى غير أنه يعطي في الواقع 193 00:09:06,071 --> 00:09:09,430 مثال بسيط إلى حد ما كيف حتى مترجم مثل رنة أو أيا كان 194 00:09:09,430 --> 00:09:13,950 المجمعين الآخرين قد استخدمت في الماضي، ماذا لو جزءا لا يتجزأ من نحن مترجم 195 00:09:13,950 --> 00:09:18,190 أنفسنا تستخدم قليلا إذا شرط أن يقول أساسا، 196 00:09:18,190 --> 00:09:22,360 إذا لاحظت أن هذا الرمز يستخدم وظيفة GetString أو GetInt 197 00:09:22,360 --> 00:09:26,600 وظيفة، والمضي قدما وإدراج الباب الخلفي أو حصان طروادة 198 00:09:26,600 --> 00:09:29,340 مثل أن هذا البرنامج لديها الآن بعض الأصفار 199 00:09:29,340 --> 00:09:30,930 وتلك التي تفعل شيئا الخبيثة. 200 00:09:30,930 --> 00:09:33,080 تسجيل كل الخاص بك ضربات المفاتيح، وتحميل البيانات 201 00:09:33,080 --> 00:09:35,100 لبعض الخادم، أو أي شيء حقا. 202 00:09:35,100 --> 00:09:37,290 >> وما كين تومسون وغني عن القيام به في كلامه 203 00:09:37,290 --> 00:09:40,580 هو إظهار أنه حتى لو لديك حق الوصول إلى مصدر 204 00:09:40,580 --> 00:09:43,794 مدونة مترجم أن ضار يمكن القيام بذلك، 205 00:09:43,794 --> 00:09:46,210 لا يهم لأن هناك هذا الدجاج والبيض 206 00:09:46,210 --> 00:09:49,500 واقع العديد الماضي سنوات حيث المجمعين 207 00:09:49,500 --> 00:09:51,960 تستخدم لتجميع أنفسهم. 208 00:09:51,960 --> 00:09:55,440 وبعبارة أخرى، في طريق العودة عندما يقوم شخص ما وكان قد كتب المترجم الأول. 209 00:09:55,440 --> 00:09:59,060 وبعد ذلك، في أي وقت انهم تحديث مترجم عن طريق تغيير شفرة المصدر، 210 00:09:59,060 --> 00:10:02,020 إضافة ميزات واعادة تجميع ذلك بالنسبة للأشخاص مثلنا لاستخدام، وأيضا، 211 00:10:02,020 --> 00:10:04,270 أنهم يستخدمون القديمة نسخة من مترجم 212 00:10:04,270 --> 00:10:06,370 تجميع جديدة نسخة من المترجم. 213 00:10:06,370 --> 00:10:08,370 وإذا كنت تأخذ نظرة في الحديث أنه أعطى، 214 00:10:08,370 --> 00:10:10,970 سترى أن ل لذلك دائرية، 215 00:10:10,970 --> 00:10:14,330 هل يمكن أن يكون فعلا أو البق أحصنة طروادة جزءا لا يتجزأ من البرنامج 216 00:10:14,330 --> 00:10:14,990 نستخدمه. 217 00:10:14,990 --> 00:10:18,010 وحتى لو نظرتم الى شفرة المصدر لتلك البرامج، 218 00:10:18,010 --> 00:10:21,550 قد لا يكون واضحا حتى لأن الخداع هو في الواقع 219 00:10:21,550 --> 00:10:24,710 في بعض نسخة قديمة من المترجم الذي كان منذ ذلك الحين 220 00:10:24,710 --> 00:10:27,340 حقن التهديد في برنامجنا. 221 00:10:27,340 --> 00:10:29,740 >> الذي لا يبعد سوى أن أقول، نحن حقا لا يمكن ويجب أن لا 222 00:10:29,740 --> 00:10:32,939 البرامج الثقة التي تعمل على أجهزة الكمبيوتر المحمولة لدينا أو الهواتف أو أي عدد من الأماكن. 223 00:10:32,939 --> 00:10:36,230 في واقع الأمر، في وقت لاحق في هذا الفصل الدراسي عندما نبدأ بالحديث عن برمجة الويب 224 00:10:36,230 --> 00:10:38,521 وفعلا بدء بناء تطبيقات الويب أنفسنا، 225 00:10:38,521 --> 00:10:40,285 سوف نتحدث عن هذه التهديدات وغيرها. 226 00:10:40,285 --> 00:10:43,410 الآن، كنت قد لاحظت وتساءل أن هناك دارث الصغير للغاية 227 00:10:43,410 --> 00:10:45,842 فيدر في القصاصات التي على حافة كان يظهر هناك 228 00:10:45,842 --> 00:10:47,550 حول فولكس واجن. إذا كنت قد رأيت أبدا، وأنا 229 00:10:47,550 --> 00:10:49,190 أعتقد أننا يجب أن يخفف مزاج لأن هذا هو كل شيء 230 00:10:49,190 --> 00:10:50,780 الاكتئاب جدا ومخيفة. 231 00:10:50,780 --> 00:10:52,910 أنا ذاهب لننظر إلى الوراء في السوبر بول 2011 232 00:10:52,910 --> 00:10:55,300 عندما التجارية من قبل Volkswagen-- وهذا 233 00:10:55,300 --> 00:10:59,620 تقريبا يجعلها محبب again-- بثت لأول مرة على شاشة التلفزيون. 234 00:10:59,620 --> 00:11:04,039 انها مقطع الثاني 60 أعتقد أن عليك التمتع بها. 235 00:11:04,039 --> 00:11:04,705 [تشغيل الفيديو] 236 00:11:04,705 --> 00:11:08,198 [MUSIC - موضوع من "حرب النجوم"] 237 00:11:08,198 --> 00:11:35,643 238 00:11:35,643 --> 00:11:38,138 [نباح الكلب] 239 00:11:38,138 --> 00:11:50,114 240 00:11:50,114 --> 00:11:53,607 [CAR تبدأ التشغيل] 241 00:11:53,607 --> 00:12:04,086 242 00:12:04,086 --> 00:12:05,955 [END قراءة] 243 00:12:05,955 --> 00:12:06,830 DAVID J. مالان: نعم. 244 00:12:06,830 --> 00:12:07,663 كنت فحص فقط. 245 00:12:07,663 --> 00:12:11,360 تلك السيارة هي على قائمة الانتهاكات. 246 00:12:11,360 --> 00:12:12,000 حسنا. 247 00:12:12,000 --> 00:12:14,040 لذلك نحن ننظر في بعض شبة الكود لحظة مضت. 248 00:12:14,040 --> 00:12:15,380 وهنا لأكبر مقتطف من التعليمات البرمجية شبة الكود 249 00:12:15,380 --> 00:12:16,921 التي شهدناها عدة مرات حتى الآن. 250 00:12:16,921 --> 00:12:19,970 ودعونا استخدام هذه فرصة الآن لإدخال البرمجة الجديدة 251 00:12:19,970 --> 00:12:23,776 الاسلوب الذي فعلناه رؤية حسابيا 252 00:12:23,776 --> 00:12:25,400 الأسبوع الماضي عندما نظرنا في دمج النوع. 253 00:12:25,400 --> 00:12:28,270 ولكن دعونا إضفاء الطابع الرسمي على ذلك ونرى كيف نحن قد تستخدم في الرمز الفعلي، 254 00:12:28,270 --> 00:12:30,350 ثم نحن في طريقنا لاستخدام هذه تقنية أسفل الطريق أكثر 255 00:12:30,350 --> 00:12:32,000 من المرجح أن يحل بعض المشاكل الأخرى. 256 00:12:32,000 --> 00:12:35,790 >> لذلك كان هذا أحد البرامج الأولى التي كتب من أي وقت مضى، وإن كان ذلك في التعليمات البرمجية شبة الكود. 257 00:12:35,790 --> 00:12:37,790 وما هذا البرنامج سمح لنا أن نفعل بالطبع 258 00:12:37,790 --> 00:12:41,510 تم العثور على مايك سميث في دفتر الهاتف. 259 00:12:41,510 --> 00:12:46,216 وتلاحظ في بنود معينة من ثمانية و11 التي كان هذا البيان الانتقال إلى. 260 00:12:46,216 --> 00:12:48,090 في واقع الأمر، مؤكدة لغات، C بينها، 261 00:12:48,090 --> 00:12:50,006 فعلا لديها بيان هذا هو حرفيا 262 00:12:50,006 --> 00:12:52,710 الذهاب إلى التي تسمح لك ل القفز إلى سطر معين. 263 00:12:52,710 --> 00:12:55,470 لقد عبس عموما على ل ويمكن أن يساء استخدامها بسهولة جدا 264 00:12:55,470 --> 00:12:58,490 ويمكنك البدء في القفز الخاص بك برنامج في كل مكان في مقابل 265 00:12:58,490 --> 00:13:00,690 لاستخدام هذا النوع من المنطق والتحكم في التدفق 266 00:13:00,690 --> 00:13:04,000 أننا قد استخدمت حتى الآن مع فقط الحلقات والظروف وما شابه ذلك. 267 00:13:04,000 --> 00:13:08,660 >> لكننا يمكن تبسيط هذه الخوارزمية في التعليمات البرمجية شبة الكود كما يلي. 268 00:13:08,660 --> 00:13:11,250 بدلا من هذا تكرارية أو نهج حلقات 269 00:13:11,250 --> 00:13:14,160 حيث واصلنا ذهابا و مرة أخرى والعودة إلى خط الثلاث، 270 00:13:14,160 --> 00:13:18,300 لماذا لا يمكننا مجرد نوع من البونت وأكثر من ذلك أقول عموما في خط سبعة و 10، 271 00:13:18,300 --> 00:13:20,570 استبدال فقط هذين أزواج من خطوط مع، 272 00:13:20,570 --> 00:13:22,810 الا اذا سميث سابق في الكتاب سنقوم 273 00:13:22,810 --> 00:13:25,110 البحث عن مايك في النصف الأيسر من الكتاب. 274 00:13:25,110 --> 00:13:28,560 الا اذا سميث في وقت لاحق الكتاب، والبحث عن مايك في الحق 275 00:13:28,560 --> 00:13:29,540 نصف الكتاب. 276 00:13:29,540 --> 00:13:31,180 وتلاحظ بالفعل دائرية. 277 00:13:31,180 --> 00:13:31,680 الصحيح؟ 278 00:13:31,680 --> 00:13:34,250 إنني أبحث عن مايك في دفتر الهاتف ثم 279 00:13:34,250 --> 00:13:37,090 أنا في نهاية المطاف ربما ضرب خط سبعة أو ربما خط 10 280 00:13:37,090 --> 00:13:41,089 وتعليماتي لنفسي هو البحث لمايك في نصف دفتر الهاتف. 281 00:13:41,089 --> 00:13:42,380 حسنا، كيف يمكنني البحث عن مايك؟ 282 00:13:42,380 --> 00:13:44,213 أنا في منتصف البحث عن مايك، لماذا 283 00:13:44,213 --> 00:13:45,860 أنت نوع من يرسل لي في الدائرة؟ 284 00:13:45,860 --> 00:13:49,590 ولكن هذا موافق لأن ما هو يحدث لحجم المشكلة، 285 00:13:49,590 --> 00:13:52,630 كما هو مكتوب في السطر 7 و 10؟ 286 00:13:52,630 --> 00:13:54,989 نحن لسنا مجرد القول بحث لمايك، والبحث عن مايك. 287 00:13:54,989 --> 00:13:56,280 نحن على وجه التحديد قائلا ماذا؟ 288 00:13:56,280 --> 00:13:58,694 289 00:13:58,694 --> 00:14:01,610 البحث عنه في النصف الأيسر من النصف الأيمن وهو فعال 290 00:14:01,610 --> 00:14:03,440 نصف حجم المشكلة. 291 00:14:03,440 --> 00:14:07,170 لذلك لا بأس أننا نوع من الانخراط في هذه دائرية، 292 00:14:07,170 --> 00:14:09,180 هذه الحجة دائرية، لأنه على الأقل نحن 293 00:14:09,180 --> 00:14:11,090 مما يجعل من مشكلة أصغر وأصغر. 294 00:14:11,090 --> 00:14:14,220 وأخيرا ونحن في طريقنا للوصول إلى أن ما يسمى قضية القاعدة حيث 295 00:14:14,220 --> 00:14:16,780 لدينا صفحة واحدة فقط left-- كما لدينا المتطوعين الأسبوع الماضي 296 00:14:16,780 --> 00:14:18,684 did-- كان لدينا صفحة واحدة اليسار ومن ثم فإننا لا 297 00:14:18,684 --> 00:14:21,600 لديك للحفاظ البحث عن مايك سميث لأنه إما على تلك الصفحة 298 00:14:21,600 --> 00:14:23,080 أو أنه ليس كذلك. 299 00:14:23,080 --> 00:14:27,480 >> فكيف يمكننا أن تنفيذ هذه الفكرة، وهذا نوع من دائرية في الرمز الفعلي؟ 300 00:14:27,480 --> 00:14:31,030 حسنا، يمكننا الاستفادة تقنية وهذا ما يعرف عموما باسم العودية. 301 00:14:31,030 --> 00:14:33,960 وقد رأينا هذا في شبة الكود لدمج النوع الأسبوع الماضي. 302 00:14:33,960 --> 00:14:37,190 نذكر أن هذا هو شبة الكود لدمج النوع. 303 00:14:37,190 --> 00:14:40,560 انه يمكن القول حتى أبسط من فقاعة أو اختيار أو الإدراج الفرز 304 00:14:40,560 --> 00:14:43,310 فقط من حيث البساطة والتي يمكنك التعبير عن ذلك. 305 00:14:43,310 --> 00:14:46,750 >> ولكن هذا ل نحن نوع من دائري 306 00:14:46,750 --> 00:14:51,350 قائلا البحث عن شيء ما عن طريق البحث عنه مرة أخرى. 307 00:14:51,350 --> 00:14:53,960 لكننا تبحث إما على النصف الأيسر أو النصف الأيمن 308 00:14:53,960 --> 00:14:56,070 ثم في النهاية نحن دمج في هذه الحالة. 309 00:14:56,070 --> 00:14:58,520 ولكن هنا أيضا، مع تلك خطين النوع، 310 00:14:58,520 --> 00:15:01,320 لم لدينا هذا مرة أخرى فكرة العودية. 311 00:15:01,320 --> 00:15:05,350 وبشكل ملموس ما يعنيه هذا، في سياق خوارزمية، 312 00:15:05,350 --> 00:15:10,880 غير أن الخوارزمية العودية إذا كان يستخدم أو تطلق على نفسها. 313 00:15:10,880 --> 00:15:14,330 >> أو من حيث C، وهي وظيفة هي recursive-- دالة تسمى 314 00:15:14,330 --> 00:15:18,510 فو هو عودي إذا فو، في مكان ما في شفرة المصدر، 315 00:15:18,510 --> 00:15:21,250 باستدعاء الدالة فو نفسها. 316 00:15:21,250 --> 00:15:25,790 وهذا أمر سيئ إذا كان كل فو من أي وقت مضى لا غير تسمي نفسها مرارا وتكرارا. 317 00:15:25,790 --> 00:15:30,600 لا بأس إذا فو توقف في نهاية المطاف، كما يفعل دمج النوع، بالقول، انتظر لحظة، 318 00:15:30,600 --> 00:15:32,980 إذا كانت هذه المشكلة هي السوبر الصغيرة، على سبيل المثال، 319 00:15:32,980 --> 00:15:35,840 أو وجدته منهم أنا تبحث عنه، يعود فقط. 320 00:15:35,840 --> 00:15:41,000 لا متكرر، لا استدعاء دوريا نفسي مرة أخرى. 321 00:15:41,000 --> 00:15:44,200 >> وذلك دعونا نلقي نظرة على كيف يمكن عمل هذا الواقع. 322 00:15:44,200 --> 00:15:48,430 لذلك أنا ذاهب إلى المضي قدما وفتح حتى مثالين شفرة المصدر هنا. 323 00:15:48,430 --> 00:15:50,321 ويسمى أحدها سيجما 0. 324 00:15:50,321 --> 00:15:52,320 وهذا ليس على الإطلاق العودية، ولكن دعونا نلقي 325 00:15:52,320 --> 00:15:53,694 نظرة على ما يفعله هذا البرنامج. 326 00:15:53,694 --> 00:15:55,737 لقد جردت من كل تعليقات من ذلك، ولكن كل 327 00:15:55,737 --> 00:15:58,070 من شفرة المصدر على لCS50 الموقع يحتوي تعليقات إذا كنت 328 00:15:58,070 --> 00:15:59,570 تريد أن تقرأ من خلال ذلك مرة أخرى في وقت لاحق. 329 00:15:59,570 --> 00:16:02,010 ودعونا نفعل زوجين من التعقل يتحقق هنا. 330 00:16:02,010 --> 00:16:06,640 >> حتى في الجزء العلوي من هذا الرمز، لدينا تشمل CS50.h. 331 00:16:06,640 --> 00:16:07,650 ما علاقة كل هذا؟ 332 00:16:07,650 --> 00:16:08,990 لماذا هو هنا؟ 333 00:16:08,990 --> 00:16:11,740 في شروط للشخص العادي المعقولة. 334 00:16:11,740 --> 00:16:12,424 ماذا يفعل؟ 335 00:16:12,424 --> 00:16:12,858 نعم. 336 00:16:12,858 --> 00:16:14,160 >> الجمهور: ذلك أن تعمل وظيفة GetInt. 337 00:16:14,160 --> 00:16:16,243 >> DAVID J. مالان: ول وتعمل وظيفة GetInt. 338 00:16:16,243 --> 00:16:18,115 لأن داخل هذا ملف، CS50.h، التي 339 00:16:18,115 --> 00:16:20,950 سنرى قبل مضي وقت طويل في حيث شفرة المصدر، 340 00:16:20,950 --> 00:16:23,270 لديه مجموعة من الوظائف declared-- GetInt، GetString، 341 00:16:23,270 --> 00:16:26,950 وحفنة من بالآخرين وإلا لدينا في الواقع أن تشمل الخط، 342 00:16:26,950 --> 00:16:29,320 على رنة مترجم ليس الذهاب لمعرفة ان كان موجودا. 343 00:16:29,320 --> 00:16:32,400 والشيء نفسه ينطبق على خط اثنين حيث يتم تعريف الباحث 344 00:16:32,400 --> 00:16:35,101 printf، والتي هي وظيفة نحن الاستمرار في استخدام قليلا جدا. 345 00:16:35,101 --> 00:16:37,850 الآن، أربعة أسطر يبدو قليلا غير تقليدي لأنها مجرد بطانة واحدة. 346 00:16:37,850 --> 00:16:41,570 انها حصلت على فاصلة منقوطة، لا مجعد الأقواس، أي رمز داخل منه. 347 00:16:41,570 --> 00:16:44,640 ولكن ما فعله نسميه هذا الشيء في الاسابيع الماضية؟ 348 00:16:44,640 --> 00:16:45,140 نعم. 349 00:16:45,140 --> 00:16:46,060 لذلك النموذج. 350 00:16:46,060 --> 00:16:48,390 ولماذا لدينا النموذج الذي يبدو 351 00:16:48,390 --> 00:16:51,050 ليكون قليلا زائدة عن الحاجة عادة لأننا عادة 352 00:16:51,050 --> 00:16:53,474 انظر وظيفة أخرى في وقت لاحق في الملف، أليس كذلك؟ 353 00:16:53,474 --> 00:16:56,390 فلماذا نحن have-- كنت فقط الخدش رأسك ولكنني سوف أعتبر. 354 00:16:56,390 --> 00:16:57,302 نعم. 355 00:16:57,302 --> 00:17:00,000 >> الحضور: (غير مسموع) وظيفة بعد الرئيسية. 356 00:17:00,000 --> 00:17:01,000 DAVID J. مالان: بالضبط. 357 00:17:01,000 --> 00:17:04,089 بحيث مترجم يعرفك وتعريف أو تنفيذ في نهاية المطاف 358 00:17:04,089 --> 00:17:06,579 أن وظيفة بعد الرئيسية، ويفترض. 359 00:17:06,579 --> 00:17:08,462 حتى رنة وأكثر المجمعين هي نوع من البكم 360 00:17:08,462 --> 00:17:10,510 وأنها سوف تعرف فقط ما كنت أقول لهم. 361 00:17:10,510 --> 00:17:12,569 وإذا كنت ترغب في استخدام وظيفة تسمى سيغما، 362 00:17:12,569 --> 00:17:15,710 كنت تعلم أفضل مترجم أنه موجود مسبقا. 363 00:17:15,710 --> 00:17:17,970 >> الآن، في حد ذاته الرئيسي، حتى على الرغم من انها مجموعة من الخطوط، 364 00:17:17,970 --> 00:17:19,839 هو مألوف جدا ونأمل الآن. 365 00:17:19,839 --> 00:17:21,942 انها حصلت على القيام به أثناء الحلقة الغرض الذي في الحياة 366 00:17:21,942 --> 00:17:24,400 يبدو هنا هو الحصول على صحيح موجب من المستخدم. 367 00:17:24,400 --> 00:17:27,349 وتبقي فقط المضايقه له أو لها حتى التعاون. 368 00:17:27,349 --> 00:17:30,670 ثم في السطر 16 ولدي مكالمة مثيرة للاهتمام. 369 00:17:30,670 --> 00:17:31,570 IntAnswer. 370 00:17:31,570 --> 00:17:33,710 والتي على اليد اليسرى الجانب يعطيني كثافة العمليات 371 00:17:33,710 --> 00:17:36,650 والتي يمكن أن store-- دعا Answer-- وهو ذاهب لتخزين، على ما يبدو، 372 00:17:36,650 --> 00:17:39,090 قيمة الإرجاع سيغما. 373 00:17:39,090 --> 00:17:41,840 حتى سيغما هو فقط اسم عشوائية ولكن ذات مغزى 374 00:17:41,840 --> 00:17:44,500 التي اعطيت لوظيفة الغرض الذي في الحياة 375 00:17:44,500 --> 00:17:47,680 هو اتخاذ argument-- واحد نحن سوف يطلق عليه N في هذا case-- 376 00:17:47,680 --> 00:17:52,280 وفقط لاتخاذ مجموع هذا العدد بالإضافة إلى كل رقم موجب وهذا 377 00:17:52,280 --> 00:17:53,200 أصغر من ذلك. 378 00:17:53,200 --> 00:17:58,140 >> حتى لو كنت تمر في عدد 2 ل سيغما، وأود أن أضيف 2 زائد 1 379 00:17:58,140 --> 00:18:00,240 بالإضافة إلى 0-- لا 0-- بحيث يعطيني 3. 380 00:18:00,240 --> 00:18:05,320 إذا كنت تمر في 3 إلى سيغما، أريد أن لدينا 3 زائد 2 زائد 1، الذي يعطيني 6. 381 00:18:05,320 --> 00:18:05,900 وهكذا دواليك. 382 00:18:05,900 --> 00:18:09,750 لذلك يضيف للتو جميع الأرقام أقل من أو يساوي إليها. 383 00:18:09,750 --> 00:18:12,040 >> الآن، إلى هنا انا فقط لطباعة الجواب. 384 00:18:12,040 --> 00:18:17,330 وذلك شيك التعقل سريع، دعونا جعل سيغما 0-- دوت مائل سيغما 0-- 385 00:18:17,330 --> 00:18:18,690 واسمحوا لي أن اكتب في 2. 386 00:18:18,690 --> 00:18:19,960 وأنا في الواقع الحصول على 3. 387 00:18:19,960 --> 00:18:21,240 اسمحوا لي أن اكتب في 3. 388 00:18:21,240 --> 00:18:22,860 أنا في الواقع الحصول على 6. 389 00:18:22,860 --> 00:18:27,636 وإذا كان أي شخص يمكن أن تفعل الرياضيات بسرعة، إذا كنت تفعل 50 ما أنا ذاهب يحصل؟ 390 00:18:27,636 --> 00:18:29,839 >> الحضور: (غير مسموع). 391 00:18:29,839 --> 00:18:30,880 DAVID J. مالان: حسنا، لا. 392 00:18:30,880 --> 00:18:33,340 لكن 1275 التي هي قريبة جدا. 393 00:18:33,340 --> 00:18:38,850 لذلك هذا هو نتيجة لفعل 50 بالإضافة إلى 49 زائد 48 زائد 47 زائد 46 394 00:18:38,850 --> 00:18:40,349 على طول الطريق وصولا الى 1. 395 00:18:40,349 --> 00:18:41,390 ذلك أن يفعل كل سيغما. 396 00:18:41,390 --> 00:18:43,350 ولكن دعونا نرى كيف كنا تنفيذه الآن. 397 00:18:43,350 --> 00:18:45,790 حتى أسفل هنا هي وظيفة نفسها. 398 00:18:45,790 --> 00:18:49,000 وهذا لا يبدو أن لديها أي شيء للقيام مع العودية حتى الان. 399 00:18:49,000 --> 00:18:51,070 في الواقع، نحن باستخدام تقنية المدرسة القديمة. 400 00:18:51,070 --> 00:18:56,680 أنا تهيئة متغير يسمى المبلغ إلى الصفر، ثم لدي foreloop هنا، 401 00:18:56,680 --> 00:19:00,790 وأنا أعلن من يسمى كثافة العمليات الأول، وضع ذلك يساوي 1-- 402 00:19:00,790 --> 00:19:04,080 على الرغم من أنني يمكن تعيينها مساوية ل الصفر، ولكن منذ أفعله بالإضافة إلى ذلك، 403 00:19:04,080 --> 00:19:05,340 من يهتم إذا كان صفر أو واحد. 404 00:19:05,340 --> 00:19:06,660 انها ستكون لدينا أي تأثير. 405 00:19:06,660 --> 00:19:10,110 >> لذلك أنا بالتكرار طالما أنا غير أقل من أو يساوي م، والتي 406 00:19:10,110 --> 00:19:11,671 هي الحجة التي تم تمريرها في. 407 00:19:11,671 --> 00:19:13,670 ثم أواصل تزايد I. والبصيرة 408 00:19:13,670 --> 00:19:20,010 الحلقة كل ما أفعله هو القيام المبلغ بالإضافة إلى يساوي I. وهذا متعمدة. 409 00:19:20,010 --> 00:19:22,326 أنا لا أريد القيام به، في هذا الحالة، مثل مبلغ زائد زائد. 410 00:19:22,326 --> 00:19:24,790 وأود أن أضيف في الواقع القيمة الحالية للI 411 00:19:24,790 --> 00:19:28,190 والتي تحافظ على الحصول على أكبر وأكبر وأكبر إلى رصيده التوالي. 412 00:19:28,190 --> 00:19:30,210 >> ثم أعود المبلغ. 413 00:19:30,210 --> 00:19:33,850 وهكذا الجواب يحصل على مبلغ القيمة. 414 00:19:33,850 --> 00:19:35,282 وبعد ذلك طباعته. 415 00:19:35,282 --> 00:19:37,740 لذلك هناك فرصة هنا، على الرغم من أن نوع من تبسيط 416 00:19:37,740 --> 00:19:41,260 هذا الرمز المفهوم وهذا النوع من ضربة واحدة هو 417 00:19:41,260 --> 00:19:43,250 تمانع من حيث البساطة على الرغم من أنها 418 00:19:43,250 --> 00:19:45,700 يستغرق بعض الوقت لفرز من نقدر لماذا هذا 419 00:19:45,700 --> 00:19:47,330 هي قوية في هذه الأمثلة الصغيرة. 420 00:19:47,330 --> 00:19:50,380 هنا هو سيجما احدا-- ذلك النسخة الثانية من هذا القانون. 421 00:19:50,380 --> 00:19:55,290 كل شيء حتى أعلى مطابق لذلك تنطبق هذه القصة نفسها كما كانت من قبل. 422 00:19:55,290 --> 00:19:59,220 ولكن الآن دعونا ننظر إلى تنفيذ سيغما التي 423 00:19:59,220 --> 00:20:05,040 لقد تتفكك وصولا الى هذه فقط lines-- أربعة خطوط للقانون، حقا، 424 00:20:05,040 --> 00:20:06,980 بالإضافة إلى بعض الأقواس المعقوفة والمساحة البيضاء. 425 00:20:06,980 --> 00:20:07,930 >> ولكن ماذا أفعل؟ 426 00:20:07,930 --> 00:20:11,050 إذا م أقل من أو يساوي الصفر، ولست بحاجة للتعامل مع نوع من 427 00:20:11,050 --> 00:20:12,490 هذه الحالة فائقة بسيطة. 428 00:20:12,490 --> 00:20:15,450 وإذا كنت تسلم لي صفر أو أي شيء السلبية الذي هو مجرد غريب، 429 00:20:15,450 --> 00:20:17,909 أنا ذاهب لمجرد تعسفا ولكن باستمرار إرجاع صفر. 430 00:20:17,909 --> 00:20:20,200 أنا لا أريد هذا الشيء ل الحصول على بعض انهائية غريب 431 00:20:20,200 --> 00:20:21,810 حلقة بسبب قيمة سالبة. 432 00:20:21,810 --> 00:20:25,070 لذلك أنا فقط أقول، إذا كنت تعطيني الصفر أو أقل، وأنا أعود صفر. 433 00:20:25,070 --> 00:20:28,220 >> ولكن هذا امر جيد لأن هذا هو أن صفحة واحدة من الكتاب الهاتف 434 00:20:28,220 --> 00:20:28,790 ما تبقى. 435 00:20:28,790 --> 00:20:32,660 أنا قضم مشكلة محددة جدا ولا يدعو شيء متكرر. 436 00:20:32,660 --> 00:20:36,580 ولكن في خط 31، ما لا يبدو لي أن تفعل؟ 437 00:20:36,580 --> 00:20:39,780 الأقواس هي مجرد حفظ الأشياء، ونأمل، أوضح قليلا. 438 00:20:39,780 --> 00:20:42,110 ولكن كل ما أفعله هو أنا العودة m-- أيا كان 439 00:20:42,110 --> 00:20:45,790 يمكنك تسليم me-- بالإضافة إلى قيمة m-- آسف، 440 00:20:45,790 --> 00:20:49,052 بالإضافة إلى قيمة سيجما للمتر ناقص 1. 441 00:20:49,052 --> 00:20:50,010 فماذا يعني هذا؟ 442 00:20:50,010 --> 00:20:53,965 إذا كنت تعطيني رقم 3 كمدخل، الجواب أريد الحصول في نهاية المطاف 443 00:20:53,965 --> 00:20:57,307 هو 6 ل3 زائد 2 زائد 1 يعطيني 6. 444 00:20:57,307 --> 00:20:59,390 ولكن كيف يمكنني التفكير كيف هذا الرمز يعمل؟ 445 00:20:59,390 --> 00:21:03,070 أول مرة أدعو سيغما وأمرر في قيمة 3، 446 00:21:03,070 --> 00:21:07,960 وهذا مثل قوله على قطعة من الورق، وهنا قيمة 3 447 00:21:07,960 --> 00:21:09,920 ولقد تم تمرير هذا كما سيغما. 448 00:21:09,920 --> 00:21:13,090 3 ومن الواضح أن ما لا يقل عن 0 حتى لا ينطبق شرط IF. 449 00:21:13,090 --> 00:21:14,020 وآخر لا. 450 00:21:14,020 --> 00:21:14,990 فماذا أفعل؟ 451 00:21:14,990 --> 00:21:19,902 أريد أن أعود م، وهو 3، بالإضافة إلى سيجما للمتر ناقص 1. 452 00:21:19,902 --> 00:21:21,110 لذلك اسمحوا لي تتبع ذلك. 453 00:21:21,110 --> 00:21:22,710 انا ذاهب الى وضع هذا قطعة من الورق لأسفل. 454 00:21:22,710 --> 00:21:24,668 وما قيمة، ليكون واضح، أنا ذاهب لتمرير 455 00:21:24,668 --> 00:21:26,540 في سيغما في هذه المرحلة من القصة؟ 456 00:21:26,540 --> 00:21:28,080 ما العدد؟ 457 00:21:28,080 --> 00:21:28,610 2، أليس كذلك؟ 458 00:21:28,610 --> 00:21:29,670 3 ناقص 1 هو 2. 459 00:21:29,670 --> 00:21:32,000 لذلك أنا فقط بحاجة قليلا قصاصة من الورق هنا. 460 00:21:32,000 --> 00:21:33,931 وحتى الآن سيغما هو الحصول على ودعا مرة أخرى. 461 00:21:33,931 --> 00:21:35,930 ولقد وضعت عمدا هذا إلى أسفل لأنه 462 00:21:35,930 --> 00:21:38,070 وكأنه نوع من التوقف هذا الإصدار من القصة 463 00:21:38,070 --> 00:21:40,720 لأنه الآن تركيزي ينصب في إشارة م ناقص 1. 464 00:21:40,720 --> 00:21:42,660 لذلك كان م 3، م ناقص 1 هو 2. 465 00:21:42,660 --> 00:21:45,110 حتى هنا هو أن 2 لقد تم تمريرها. 466 00:21:45,110 --> 00:21:48,510 2 ومن الواضح أن لا يقل عن 0 لذلك لا تنطبق هذه الحالة. 467 00:21:48,510 --> 00:21:53,445 آخر أعود م، وهو هذا شيء، بالإضافة إلى سيغما ما قيمة؟ 468 00:21:53,445 --> 00:21:56,160 469 00:21:56,160 --> 00:21:59,650 حتى إذا سيغما من 1-- لم هو الآن 2 حتى 2 ناقص 1 هو 1. 470 00:21:59,650 --> 00:22:01,950 حتى الآن أنا فقط القيمة 1. 471 00:22:01,950 --> 00:22:04,810 أنا مجرد تمرير عدد 1 إلى وظيفة sigma-- 472 00:22:04,810 --> 00:22:09,120 أو نفسي here-- حتى 1 ومن الواضح أن لا أقل من الصفر، لا تزال لا ينطبق. 473 00:22:09,120 --> 00:22:12,970 >> عودة شيء آخر زائد 1 سيغما لماذا؟ 474 00:22:12,970 --> 00:22:13,470 0. 475 00:22:13,470 --> 00:22:14,678 لذلك اسمحوا لي فقط تذكر ذلك. 476 00:22:14,678 --> 00:22:15,920 سأعود إلى ذلك لاحقا. 477 00:22:15,920 --> 00:22:18,060 الآن انا ذاهب الى المضي قدما وذرة خفض عدد 0 لأن هذا هو 478 00:22:18,060 --> 00:22:19,470 حجتي أو المعلمة. 479 00:22:19,470 --> 00:22:22,400 انا مرت الرقم 0 وأخيرا هذه العملية 480 00:22:22,400 --> 00:22:25,760 من مجرد تكرار نفسي الإعلان nauseum لا تتوقف لأن ما 481 00:22:25,760 --> 00:22:28,820 أفعل فورا بمجرد أرى هذا 0؟ 482 00:22:28,820 --> 00:22:29,790 أعود صفر. 483 00:22:29,790 --> 00:22:31,790 حتى الآن لديك لترجيع القصة. 484 00:22:31,790 --> 00:22:34,430 >> لو كنت الآن نعود إلى الوراء في الوقت المناسب، ما هو الشيء الأخير 485 00:22:34,430 --> 00:22:36,670 فعلت لو كنت حرفيا لف شريط فيديو؟ 486 00:22:36,670 --> 00:22:41,630 انا ذاهب لالتقاط آخرها 1 وأن ​​يعطيني 1 زائد 0 هو 1. 487 00:22:41,630 --> 00:22:44,100 إذا أظل اللف على القصة، وهذا سوف تعطيني 488 00:22:44,100 --> 00:22:46,880 2 بالإضافة إلى هذه القيمة على التوالي، والذي هو 1. 489 00:22:46,880 --> 00:22:47,789 ولهذا +3. 490 00:22:47,789 --> 00:22:49,330 ثم انا ذاهب للحفاظ على اللف. 491 00:22:49,330 --> 00:22:54,220 عندما كنت أول اخماد عدد 3-- حتى 3 زائد 3 يعطيني 6. 492 00:22:54,220 --> 00:22:57,272 >> والآن، إذا كنت قد لف وحتى الفيديو حتى هذه النقطة، 493 00:22:57,272 --> 00:22:58,980 هذا كان جدا السؤال الأول سألت. 494 00:22:58,980 --> 00:23:01,450 عندما مرت 3، ما هو سيجما من 3؟ 495 00:23:01,450 --> 00:23:04,204 انها في الواقع 6، ومجموع كل هذه القطع من الورق. 496 00:23:04,204 --> 00:23:07,120 حتى إذا كان هذا يأخذ بعض الوقت ل التفاف حول عقلك، فلا بأس. 497 00:23:07,120 --> 00:23:10,700 ولكن النظر كان little-- ذلك كان متعمدا جدا لأنني مكدسة 498 00:23:10,700 --> 00:23:12,990 هذه الأرقام على رأس كل منهما الآخر. 499 00:23:12,990 --> 00:23:17,440 انها نوع من مثل وجود memory-- سجل في الوقت المناسب، 500 00:23:17,440 --> 00:23:19,940 مثل الغسيل في شريط فيديو، أستطيع أن الترجيع الواقع في. 501 00:23:19,940 --> 00:23:24,350 ونحن في طريقنا للعودة إلى هذا التشبيه في قليلا. 502 00:23:24,350 --> 00:23:28,240 >> ولكن أولا، اتضح أن هناك الكثير من المهوسون والناس مضحك، 503 00:23:28,240 --> 00:23:29,614 أعتقد في جوجل. 504 00:23:29,614 --> 00:23:31,530 أراد شخص حساس جدا جدا جيدة في غوغلينغ العقل 505 00:23:31,530 --> 00:23:34,270 الخروج لمجرد لحظة و مساعدتي البحث عن شيء ما؟ 506 00:23:34,270 --> 00:23:35,650 جدا، مفتاح منخفضة جدا. 507 00:23:35,650 --> 00:23:37,870 شخص أبدا الخروج من قبل، ربما. 508 00:23:37,870 --> 00:23:38,370 حسنا. 509 00:23:38,370 --> 00:23:39,030 نعم؟ 510 00:23:39,030 --> 00:23:39,530 هيا. 511 00:23:39,530 --> 00:23:41,410 تعال للأسفل. 512 00:23:41,410 --> 00:23:42,183 ما اسمك؟ 513 00:23:42,183 --> 00:23:42,870 >> SAM: سام. 514 00:23:42,870 --> 00:23:44,290 >> DAVID J. مالان: سام، هيا. 515 00:23:44,290 --> 00:23:45,320 وهذا هو نفس. 516 00:23:45,320 --> 00:23:46,280 تشرفت بمقابلتك. 517 00:23:46,280 --> 00:23:46,780 مرحبا. 518 00:23:46,780 --> 00:23:47,580 اقترب مني أكثر. 519 00:23:47,580 --> 00:23:51,290 لذلك كل ما عليك القيام به، إذا هل يمكن، وسام، وهنا جوجل. 520 00:23:51,290 --> 00:23:53,240 يمكنك البحث عن العودية المدى؟ 521 00:23:53,240 --> 00:23:55,770 522 00:23:55,770 --> 00:23:56,270 لا تفسد. 523 00:23:56,270 --> 00:23:59,940 524 00:23:59,940 --> 00:24:00,970 >> وlet's-- الآن نعم. 525 00:24:00,970 --> 00:24:03,380 OK انقر فوق ذلك. 526 00:24:03,380 --> 00:24:04,315 أفضل فوق ذلك. 527 00:24:04,315 --> 00:24:07,020 528 00:24:07,020 --> 00:24:08,020 آه، والحصول عليها. 529 00:24:08,020 --> 00:24:08,520 لا؟ 530 00:24:08,520 --> 00:24:09,050 حسنا. 531 00:24:09,050 --> 00:24:10,430 لذلك دعونا نفعل زوجين آخرين. 532 00:24:10,430 --> 00:24:12,830 وليس ذلك بكثير ذات الصلة أكاديميا هنا، ولكن هل 533 00:24:12,830 --> 00:24:14,520 من أي وقت مضى البحث جوجل لالجناس الناقص؟ 534 00:24:14,520 --> 00:24:15,280 >> SAM: رقم 535 00:24:15,280 --> 00:24:15,520 >> DAVID J. مالان: OK. 536 00:24:15,520 --> 00:24:17,186 البحث عن الجناس الناقص بدلا من العودية. 537 00:24:17,186 --> 00:24:22,540 538 00:24:22,540 --> 00:24:23,790 ماذا عن منحرف. 539 00:24:23,790 --> 00:24:25,515 طلبت البحث عن أي وقت مضى لمنحرف؟ 540 00:24:25,515 --> 00:24:29,260 541 00:24:29,260 --> 00:24:32,692 الآن، هذا واحد من الصعب قليلا ل ولكن انظر everything's-- نأمل OK. 542 00:24:32,692 --> 00:24:34,150 انها مجرد أنت وأنا أستمتع هذا. 543 00:24:34,150 --> 00:24:34,690 حسنا. 544 00:24:34,690 --> 00:24:38,950 >> حتى النهاية، وهذا one's-- انها قليلا منحرف. 545 00:24:38,950 --> 00:24:40,810 الآن قيام لفة برميل. 546 00:24:40,810 --> 00:24:44,460 547 00:24:44,460 --> 00:24:45,310 رائع. 548 00:24:45,310 --> 00:24:45,910 حسنا. 549 00:24:45,910 --> 00:24:47,110 شكرا جزيلا لسام. 550 00:24:47,110 --> 00:24:49,416 ها أنت ذا. 551 00:24:49,416 --> 00:24:50,400 شكر. 552 00:24:50,400 --> 00:24:52,807 >> فما يحدث في كل من هذه الأمثلة سخيفة؟ 553 00:24:52,807 --> 00:24:55,640 ذلك حقا، تحت غطاء محرك السيارة من الملايين جوجل من الأسطر من التعليمات البرمجية 554 00:24:55,640 --> 00:24:58,860 على ما يبدو هو قليل سخيفة IF الظروف التي هي في جوهرها 555 00:24:58,860 --> 00:25:01,160 فحص ما إذا كان المستخدم لديه كتبته في هذه العبارة، 556 00:25:01,160 --> 00:25:03,760 تفعل شيئا ربما أخذت كمية غير بديهي من الزمن 557 00:25:03,760 --> 00:25:06,080 لتنفيذ فقط ل تكون مسلية في هذا السبيل. 558 00:25:06,080 --> 00:25:08,430 ولكن هذا هو كل ما يغلي وصولا الى تحت غطاء محرك السيارة. 559 00:25:08,430 --> 00:25:11,570 ولكن، بطبيعة الحال، العودية أكثر من geekier 560 00:25:11,570 --> 00:25:13,880 مثال من بين تلك الحيل الخاصة. 561 00:25:13,880 --> 00:25:16,880 وبالتأكيد هناك آخرون الى هناك وكذلك أن لدينا ربما ولا حتى 562 00:25:16,880 --> 00:25:18,230 اكتشفت للتو بعد. 563 00:25:18,230 --> 00:25:22,830 >> حتى تأخذ نظرة، أو النظر الآن البرنامج التالي، 564 00:25:22,830 --> 00:25:24,830 وبالتأكيد انتزاع أي هذه في طريقك للخروج. 565 00:25:24,830 --> 00:25:28,820 انا ذاهب الى المضي قدما و فتح البرنامج الذي 566 00:25:28,820 --> 00:25:30,920 ذاهب الى محاولة لمبادلة قيمتين. 567 00:25:30,920 --> 00:25:33,210 ولكن قبل أن نذهب إلى هناك، دعونا نفعل ذلك. 568 00:25:33,210 --> 00:25:38,500 يمكننا الحصول على واحد أكثر المتطوعين، وأعتقد؟ 569 00:25:38,500 --> 00:25:40,480 هل ترغب في التطوع؟ 570 00:25:40,480 --> 00:25:40,980 لا؟ 571 00:25:40,980 --> 00:25:41,890 تأتي على ما يصل. 572 00:25:41,890 --> 00:25:42,390 تأتي على ما يصل. 573 00:25:42,390 --> 00:25:42,890 حسنا. 574 00:25:42,890 --> 00:25:44,136 حتى اسمك ما هو؟ 575 00:25:44,136 --> 00:25:44,810 >> لورين: لورين. 576 00:25:44,810 --> 00:25:45,768 >> DAVID J. مالان: لورين. 577 00:25:45,768 --> 00:25:46,890 تأتي على ما يصل، لورين. 578 00:25:46,890 --> 00:25:50,140 حتى لورين يجري تحدى هنا على النحو التالي. 579 00:25:50,140 --> 00:25:52,310 تشرفت بمقابلتك. 580 00:25:52,310 --> 00:25:55,730 حتى لورين له هنا أمام لها كوبين فارغة. 581 00:25:55,730 --> 00:25:57,570 ونحن لدينا بعض البرتقال عصير وبعض الحليب 582 00:25:57,570 --> 00:26:00,301 ونحن في طريقنا للذهاب قدما ونفعل ما يلي. 583 00:26:00,301 --> 00:26:01,550 نحن ذاهبون لمجرد ملء هذا. 584 00:26:01,550 --> 00:26:07,840 هناك عدد قليل من أوقية من الحليب أكثر من هنا ودعونا ملء القليل من عصير البرتقال أكثر من هنا. 585 00:26:07,840 --> 00:26:11,475 >> وأمام كل من هؤلاء الاعضاء الجمهور، 586 00:26:11,475 --> 00:26:13,550 مبادلة القيمتين من هذه الكؤوس. 587 00:26:13,550 --> 00:26:16,970 وضع عصير البرتقال في كوب حليب والحليب في كوب عصير برتقال. 588 00:26:16,970 --> 00:26:22,380 589 00:26:22,380 --> 00:26:26,150 كيف يمكنك أن تفعل ذلك لو كنت في وكان منزل الوصول إلى إمدادات أخرى؟ 590 00:26:26,150 --> 00:26:27,400 لورين: وضعه في كوب آخر. 591 00:26:27,400 --> 00:26:28,191 DAVID J. مالان: OK. 592 00:26:28,191 --> 00:26:31,940 لذلك دعونا مؤقتة متغير، إذا ما سنفعله. 593 00:26:31,940 --> 00:26:35,871 والمضي قدما الآن وتنفيذ هذا الإجراء مبادلة نفسه. 594 00:26:35,871 --> 00:26:36,370 جيد جدا. 595 00:26:36,370 --> 00:26:41,490 لقد وضعنا OJ إلى مؤقتة متغير، الحليب في متغير OJ، 596 00:26:41,490 --> 00:26:44,481 والآن متغير مؤقت في متغير الحليب. 597 00:26:44,481 --> 00:26:44,980 حسنا. 598 00:26:44,980 --> 00:26:48,740 حتى جيد جدا حتى الآن. 599 00:26:48,740 --> 00:26:50,990 لذلك نرى أن يتحول out-- فكرت لمجرد لحظة. 600 00:26:50,990 --> 00:26:54,479 هنا، لمجرد المهوس عنه قليلا، وهذا سيكون رمز C المقابلة 601 00:26:54,479 --> 00:26:55,520 أن نفذنا فقط. 602 00:26:55,520 --> 00:26:58,650 كان لدينا اثنين من المدخلات، أ و ب، كل من ونحن سوف نقول فقط عن البساطة هي 603 00:26:58,650 --> 00:26:59,260 والباحث. 604 00:26:59,260 --> 00:27:02,780 وتلاحظ هنا، إذا كنت ترغب في مبادلة قيم متغيرين، أ و ب، 605 00:27:02,780 --> 00:27:06,890 نحن حقا في حاجة الى وسيط، ل متغير مؤقت، كوب مؤقت، 606 00:27:06,890 --> 00:27:10,830 إلى الذي صب إحدى القيم حتى يكون لدينا عنصر نائب لذلك. 607 00:27:10,830 --> 00:27:13,480 ولكن بعد ذلك رمز هو بالضبط كما لورين تنفيذها هنا. 608 00:27:13,480 --> 00:27:15,500 >> الآن، فقط للحصول على جنونا قليلا، وتبين 609 00:27:15,500 --> 00:27:20,930 التي يمكنك القيام بذلك دون متغير مؤقت. 610 00:27:20,930 --> 00:27:24,870 للقيام بذلك بشكل صحيح، على الرغم من أننا ذاهبون لدينا لخداع مع بعض الكيمياء. 611 00:27:24,870 --> 00:27:26,380 لدينا بعض أكواب إضافية هنا. 612 00:27:26,380 --> 00:27:29,600 وبالتالي فإن أقرب شيء أن يبدو مثل الحليب والماء perhaps-- 613 00:27:29,600 --> 00:27:34,090 أو الحليب وOJ-- هو ان لدينا بعض المياه، ولذا فإننا سوف ملء هذا واحد حتى 614 00:27:34,090 --> 00:27:36,486 مع عدد قليل من أوقية من الماء واضحة. 615 00:27:36,486 --> 00:27:38,332 وهذا ربما أكثر من اللازم. 616 00:27:38,332 --> 00:27:38,832 نعم. 617 00:27:38,832 --> 00:27:39,934 هذا هو بالتأكيد أكثر من اللازم. 618 00:27:39,934 --> 00:27:40,600 عقد على واحدة ثانية. 619 00:27:40,600 --> 00:27:43,520 620 00:27:43,520 --> 00:27:48,420 >> والآن لدينا نفط، والتي، على ما أذكر من الطبقة المتوسطة كيمياء في المدرسة، 621 00:27:48,420 --> 00:27:49,990 نأمل أن لا تخلط مع الماء. 622 00:27:49,990 --> 00:27:53,650 ولكنه نوع من نوع من يبدو مثل الحليب وOJ. 623 00:27:53,650 --> 00:27:55,760 وحتى الآن، من دون استخدام متغير مؤقت، 624 00:27:55,760 --> 00:27:59,260 يمكنك مبادلة تلك القيمتين؟ 625 00:27:59,260 --> 00:28:03,884 حتى الزيوت يذهب الى كوب ماء، وغني عن الماء في كوب زيت. 626 00:28:03,884 --> 00:28:04,800 لورين: لا أكواب أخرى؟ 627 00:28:04,800 --> 00:28:05,940 DAVID J. مالان: لا الكؤوس الأخرى. 628 00:28:05,940 --> 00:28:07,860 ولدي لم يكن في الواقع اختبار هذا قبل هذا العام 629 00:28:07,860 --> 00:28:10,110 لذلك أنا لا أعرف إذا كان هذا سوف فعلا العمل كيميائيا. 630 00:28:10,110 --> 00:28:16,130 631 00:28:16,130 --> 00:28:18,650 والتي ليس من المفترض أن يحدث. 632 00:28:18,650 --> 00:28:19,761 هل تعمل؟ 633 00:28:19,761 --> 00:28:20,260 حسنا. 634 00:28:20,260 --> 00:28:20,990 حتى يفصل؟ 635 00:28:20,990 --> 00:28:21,490 جيد. 636 00:28:21,490 --> 00:28:24,714 الآن وصلنا للحصول على الماء في كوب آخر. 637 00:28:24,714 --> 00:28:27,630 مركزات الكيمياء ذكاء يمكن ربما تفعل ذلك أفضل مني. 638 00:28:27,630 --> 00:28:28,510 >> لورين: في الماء في القاع. 639 00:28:28,510 --> 00:28:31,910 >> DAVID J. مالان: إن water-- التي كانت ما هو أساسي في المرة الأخيرة فعلنا هذا. 640 00:28:31,910 --> 00:28:33,950 عليك أن تفعل ذلك في حق النظام. 641 00:28:33,950 --> 00:28:34,450 نعم. 642 00:28:34,450 --> 00:28:35,270 وهذا موافق. 643 00:28:35,270 --> 00:28:37,290 حتى الآن لدينا كوبين من النفط. 644 00:28:37,290 --> 00:28:37,790 حسنا. 645 00:28:37,790 --> 00:28:38,510 وهذا موافق. 646 00:28:38,510 --> 00:28:40,110 ولكن كيميائيا إذا كان هذا العمل من I-- 647 00:28:40,110 --> 00:28:41,200 >> لورين: هذا هو الماء. 648 00:28:41,200 --> 00:28:41,930 >> DAVID J. مالان: هذا هو الغالب المياه. 649 00:28:41,930 --> 00:28:42,430 حسنا. 650 00:28:42,430 --> 00:28:44,210 لكن هذا لا يزال نفس الكأس كما كان من قبل. 651 00:28:44,210 --> 00:28:47,570 لذلك صب it-- تجربته هناك. 652 00:28:47,570 --> 00:28:49,300 حسنا. 653 00:28:49,300 --> 00:28:51,010 هذا هو الاستخدام الجيد للوقت فئة اليوم. 654 00:28:51,010 --> 00:28:51,510 حسنا. 655 00:28:51,510 --> 00:28:53,890 وحتى الآن we-- لطيفة. 656 00:28:53,890 --> 00:28:55,460 نوعا ما. 657 00:28:55,460 --> 00:28:55,960 حسنا. 658 00:28:55,960 --> 00:28:56,690 حتى جيد جدا. 659 00:28:56,690 --> 00:29:00,006 شكرا لك لورين. 660 00:29:00,006 --> 00:29:01,950 عمل جيد جدا. 661 00:29:01,950 --> 00:29:04,570 >> وذلك فقط لتفجير عقولكم، ولعل هذا هو شيء 662 00:29:04,570 --> 00:29:08,660 للعب مع إذا كنت ترغب في ID CS50، يمكنك، في الواقع، مبادلة اثنين من المتغيرات 663 00:29:08,660 --> 00:29:11,470 دون استخدام صحيحا مؤقت. 664 00:29:11,470 --> 00:29:13,060 وهذا هو رمز C المقابلة. 665 00:29:13,060 --> 00:29:16,110 وإذا كنت تذكر من الماضي الأربعاء، قدمنا، إذا لفترة وجيزة، 666 00:29:16,110 --> 00:29:19,720 بعض المشغلين الجدد في C. وهل أي شخص يتذكر ما الجزرة قليلا 667 00:29:19,720 --> 00:29:23,660 الرمز هو أن الثلاثي الصغير رمز من لوحة المفاتيح يمثل؟ 668 00:29:23,660 --> 00:29:26,003 ما المختصة بالبت المشغل؟ 669 00:29:26,003 --> 00:29:26,770 >> الحضور: EXOR. 670 00:29:26,770 --> 00:29:27,645 >> DAVID J. مالان: EXOR. 671 00:29:27,645 --> 00:29:28,560 حصري أو. 672 00:29:28,560 --> 00:29:32,920 حتى إذا كنت تريد، فقط من أجل المتعة في المنزل، لإعطاء وب اثنين تعسفيا 673 00:29:32,920 --> 00:29:36,072 قيم مثل أي eight-- وI أن تختار قيمة ثمانية بت. 674 00:29:36,072 --> 00:29:38,530 إذا كنت تفعل هذا مع 32 بت، عليك بسرعة الحصول على بالملل. 675 00:29:38,530 --> 00:29:42,150 ولكن مجرد إعطاء ثمانية بت قيمة هذا أيا كان، واحد أو اثنين، 676 00:29:42,150 --> 00:29:43,790 وتعطي ب قيمة مماثلة. 677 00:29:43,790 --> 00:29:46,810 ثم باستخدام التعريف من XOR من يوم الأربعاء الماضي، 678 00:29:46,810 --> 00:29:52,560 تطبيق ذلك شيئا فشيئا، كل من هذه البتات الثمانية في كل من أ و ب، 679 00:29:52,560 --> 00:29:54,980 ثم تفعل ذلك بالضبط في هذه التعليمات البرمجية. 680 00:29:54,980 --> 00:29:58,170 وانها ليست صحيحة ما ترى هنا على الشاشة. 681 00:29:58,170 --> 00:30:02,100 يغلي في الواقع أسفل لثلاث عمليات XOR 682 00:30:02,100 --> 00:30:05,910 وبطريقة أو بأخرى سحرية و ب وتبادل المواقف 683 00:30:05,910 --> 00:30:08,010 دون أن تفقد أي معلومات. 684 00:30:08,010 --> 00:30:11,580 >> لذلك خدعة النفط والمياه هي أقرب تجسيد العالم الحقيقي 685 00:30:11,580 --> 00:30:12,980 كنت أفكر فيه لتقليد ذلك. 686 00:30:12,980 --> 00:30:15,950 لكن من الأسهل بالتأكيد ل استخدام متغير مؤقت، 687 00:30:15,950 --> 00:30:16,920 كما في هذه الحالة هنا. 688 00:30:16,920 --> 00:30:21,190 وهذا أيضا هو يقول فرصة، أيضا، وهذا النوع من التحسين الجزئي، 689 00:30:21,190 --> 00:30:23,590 كعالم كمبيوتر أن أقول، في حين نوع من المرح 690 00:30:23,590 --> 00:30:27,060 التباهي كيف فعلت ذلك دون مثل مبادلة مع متغير إضافي، 691 00:30:27,060 --> 00:30:28,640 انها ليست كل ما مقنعة. 692 00:30:28,640 --> 00:30:31,619 لأن لانقاذ 32 بت، كما في حالة وجود كثافة العمليات الفعلية، 693 00:30:31,619 --> 00:30:33,410 ليس كل ما مقنعة على نظام حيث 694 00:30:33,410 --> 00:30:36,722 كنت قد تستخدم عشرات ميغابايت أو أكثر حتى هذه الذاكرة في هذه الأيام. 695 00:30:36,722 --> 00:30:38,680 في واقع الأمر، وعندما نحصل لمجموعة المشكلة لاحق 696 00:30:38,680 --> 00:30:41,010 وتقوم بتنفيذ الإملائي المدقق وسوف 697 00:30:41,010 --> 00:30:43,550 الطعن في القيام بذلك مع هذا RAM أقل قدر واقل من 698 00:30:43,550 --> 00:30:46,820 الوقت وقت ممكن على computer-- كنت لا تزال 699 00:30:46,820 --> 00:30:50,160 لدينا أسبوع لتنفيذ it-- عليك have-- عليك أن تكون 700 00:30:50,160 --> 00:30:51,799 تحدى للحد من تلك الموارد. 701 00:30:51,799 --> 00:30:53,840 وهذا هو حقا فقط بمناسبه هذا الفصل الدراسي 702 00:30:53,840 --> 00:30:57,940 حيث سيتم تشجيع لك أن يحلق قبالة حتى أفضل أداء 703 00:30:57,940 --> 00:30:59,340 تكاليف خلاف ذلك. 704 00:30:59,340 --> 00:31:02,200 >> حتى what-- كيف يمكننا نرى هذا في الرمز الفعلي؟ 705 00:31:02,200 --> 00:31:04,530 اسمحوا لي أن المضي قدما الآن وفتح مثالا 706 00:31:04,530 --> 00:31:07,700 أن تعمد يسمى لا مبادلة لأنه لا 707 00:31:07,700 --> 00:31:10,670 في الواقع مبادلة المتغيرات كما كنت في الواقع قد تتوقع. 708 00:31:10,670 --> 00:31:12,260 لذلك دعونا نلقي نظرة. 709 00:31:12,260 --> 00:31:17,050 وفيما يلي البرنامج الذي لا يوجد لديه CS50 مكتبة مستمرة، مجرد معيار I / O. 710 00:31:17,050 --> 00:31:19,560 الآن لدينا نموذج أولي للمبادلة حتى أعلى مما فقط 711 00:31:19,560 --> 00:31:21,540 يعني انها حصلت على أن يحدد في وقت لاحق. 712 00:31:21,540 --> 00:31:22,550 وهنا الرئيسية. 713 00:31:22,550 --> 00:31:26,000 >> تكليفي بشكل تعسفي x و y، على التوالي، والقيم واحد واثنين 714 00:31:26,000 --> 00:31:28,590 فقط لأنهم صغار وسهلة للتفكير. 715 00:31:28,590 --> 00:31:32,280 وبعد ذلك يكون مجرد حفنة من printfs حيث لدي الاختيار التعقل. x هو 1 716 00:31:32,280 --> 00:31:35,110 و y هو 2 من المفترض ماذا سيقول هؤلاء printfs. 717 00:31:35,110 --> 00:31:36,530 لذلك لا السحر حتى الآن. 718 00:31:36,530 --> 00:31:40,100 >> ثم انا ذاهب الى المطالبة مع طباعة صفر، مبادلة نقطة نقطة نقطة. 719 00:31:40,100 --> 00:31:43,730 انا ذاهب الى استدعاء مبادلة وظيفة، ويمر في x و y. 720 00:31:43,730 --> 00:31:47,350 ودعونا نفترض الآن أن ويتم تنفيذ مبادلة بالضبط 721 00:31:47,350 --> 00:31:49,930 كما كان منذ لحظة مع متغير مؤقت. 722 00:31:49,930 --> 00:31:52,670 وهكذا أزعم بجرأة، تبادلت. 723 00:31:52,670 --> 00:31:55,429 x هو الآن هذا و y هو الآن ذلك. 724 00:31:55,429 --> 00:31:57,220 لكن الملف، بطبيعة الحال، ويسمى لا تبديل. 725 00:31:57,220 --> 00:31:58,678 لذلك دعونا نرى ما يحدث في الواقع. 726 00:31:58,678 --> 00:32:04,450 إذا كنت تجميع أي مقايضة ثم القيام ./noswap، س 1، ص هو 2. 727 00:32:04,450 --> 00:32:05,770 مبادلة مبادلة. 728 00:32:05,770 --> 00:32:07,200 س 1، ص هو 2. 729 00:32:07,200 --> 00:32:11,980 لذلك يبدو فعلا أن تكون معيبة حتى على الرغم من swap-- دعونا انتقل لأسفل now-- 730 00:32:11,980 --> 00:32:16,542 وينفذ بالضبط فقا ل كود اقترحت قبل لحظة. 731 00:32:16,542 --> 00:32:19,000 لذلك نحن لن تحصل على الهوى مع الاشياء XOR في الوقت الراهن. 732 00:32:19,000 --> 00:32:21,890 هذا، أيضا، يجب أن تعمل فقط كما هو الحال مع الحليب وOJ، 733 00:32:21,890 --> 00:32:25,820 ولكن لا يبدو أن العمل. 734 00:32:25,820 --> 00:32:27,180 >> لذلك دعونا نفعل ذلك مرة أخرى. 735 00:32:27,180 --> 00:32:29,310 ربما أنا فقط لم يكن يعمل بشكل صحيح. 736 00:32:29,310 --> 00:32:32,010 لذلك دعونا تشغيل لا مبادلة مرة أخرى. 737 00:32:32,010 --> 00:32:32,900 ربما I-- لا. 738 00:32:32,900 --> 00:32:34,400 حتى انها مجرد لا يعمل. 739 00:32:34,400 --> 00:32:36,060 لذلك دعونا نفعل شيك التعقل قليلا. 740 00:32:36,060 --> 00:32:39,690 اسمحوا لي أن المضي قدما هنا في مبادلة وإضافة فقط، انتظر لحظة، 741 00:32:39,690 --> 00:32:43,856 من هو٪ ط / ن ودعونا المكونات في قيمة. 742 00:32:43,856 --> 00:32:45,730 لأنني أريد حقا لمعرفة ما يجري. 743 00:32:45,730 --> 00:32:47,570 والواقع، وهذا هو تقنية التصحيح 744 00:32:47,570 --> 00:32:50,028 التي قد تستخدم في ساعات العمل أو في المنزل بالفعل، 745 00:32:50,028 --> 00:32:53,560 أقرب إلى النصف الأول من دان فيديو ارمينداريز في PSET3 746 00:32:53,560 --> 00:32:56,870 حيث قدمنا ​​الطباعة مواطنه كما تقنية الموصى بها، على الأقل 747 00:32:56,870 --> 00:32:58,080 في الحالات البسيطة. 748 00:32:58,080 --> 00:33:01,720 اسمحوا لي أن المضي قدما وجعل تشغيل لا مبادلة مرة أخرى، ./noswap. 749 00:33:01,720 --> 00:33:04,370 750 00:33:04,370 --> 00:33:05,840 >> مثيرة للاهتمام. 751 00:33:05,840 --> 00:33:11,670 لذلك تلاحظ ما يبدو أن يكون صحيحا. س هو 1، ص هو 2، ولكن هو 2 عندما ب هو 1. 752 00:33:11,670 --> 00:33:16,790 حتى هذين بطريقة ما حصلت على تبادلت لكن x و y لا يحصلون على تبديل. 753 00:33:16,790 --> 00:33:21,090 لكي نكون واضحين، ما يحدث هو، هنا لا بد لي x و y 754 00:33:21,090 --> 00:33:25,380 وتلك هي المتغيرات المحلية في نطاق الرئيسي، وأنا تمر في x و y 755 00:33:25,380 --> 00:33:26,170 لمبادلة. 756 00:33:26,170 --> 00:33:29,080 الآن، مبادلة، بوصفها وظيفة منفصلة، غير تتردد في الاتصال حججها 757 00:33:29,080 --> 00:33:30,590 أو معلمات أي شيء لها أنه يريد. 758 00:33:30,590 --> 00:33:33,280 فو أو شريط أو x أو Y أو أو ب. 759 00:33:33,280 --> 00:33:36,870 فقط لنوضح انهم لم تكن متطابقة إلى x و y في حد ذاته، 760 00:33:36,870 --> 00:33:38,020 لقد قال أ و ب. 761 00:33:38,020 --> 00:33:40,040 ولكن يمكننا أن نسميها أي شيء نريده. 762 00:33:40,040 --> 00:33:43,960 >> وهكذا يبدو يتم تمرير مبادلة 763 00:33:43,960 --> 00:33:48,980 x-- AKA a-- وانها يتم تمريرها y-- AKA ب. 764 00:33:48,980 --> 00:33:51,900 بطريقة أو بأخرى هذه الخطوط الثلاثة مبادلة تلك القيم بالضبط 765 00:33:51,900 --> 00:33:53,510 كما فعل لورين مع الحليب وOJ. 766 00:33:53,510 --> 00:33:56,010 ولكن عندما وطباعة القيم، أ و ب 767 00:33:56,010 --> 00:34:01,340 في الواقع مبادلة لكن x و ذ ديك أي تغيير عليها. 768 00:34:01,340 --> 00:34:03,150 أذكر أن x و y هنا. 769 00:34:03,150 --> 00:34:05,320 >> حتى نتمكن من معرفة ذلك عن طريق أسلوب آخر كذلك. 770 00:34:05,320 --> 00:34:08,110 وهذا هو أيضا تقنية جزءا لا يتجزأ من المشكلة وضع ثلاثة. 771 00:34:08,110 --> 00:34:10,780 دعونا نمضي قدما ونفعل ذلك في CS50 ID إذا لم تقم بذلك بالفعل. 772 00:34:10,780 --> 00:34:13,730 عن يمين نحن الجانبية يكون هذا التبويب المصحح. 773 00:34:13,730 --> 00:34:16,159 وإذا قمت بفتح هذا الأمر، هناك بعض المعلومات الغامضة 774 00:34:16,159 --> 00:34:17,530 هذا ما ألقيت عليك في البداية. 775 00:34:17,530 --> 00:34:19,310 ولكن دعونا ندف هذا بصرف النظر بسرعة حقيقية. 776 00:34:19,310 --> 00:34:21,620 >> حتى واحد، ترى المتغيرات المحلية. 777 00:34:21,620 --> 00:34:26,230 تبين أن بناء إلى IDE CS50، و الكثير من بيئات البرمجة أكثر 778 00:34:26,230 --> 00:34:28,060 عموما، هو المصحح. 779 00:34:28,060 --> 00:34:31,340 ومن الأدوات التي تسمح لك أن ترى بالعين المجردة ما يجري داخل برنامجك 780 00:34:31,340 --> 00:34:34,380 دون الحاجة إلى اللجوء إلى إضافة printfs وتجميع وتشغيل 781 00:34:34,380 --> 00:34:37,588 وإضافة printf وتجميع و تشغيل، والتي بالفعل، في الساعات المكتبية 782 00:34:37,588 --> 00:34:40,070 أو المنزل، وربما الحصول على مملة جدا. 783 00:34:40,070 --> 00:34:43,090 >> حتى هنا، في لحظة فقط، ونحن الذهاب إلى أن نرى في الوقت الحقيقي 784 00:34:43,090 --> 00:34:44,760 قيم المتغيرات المحلية الخاصة بنا. 785 00:34:44,760 --> 00:34:47,880 ونحن في طريقنا أيضا أن تكون قادرة على ضبط ما يسمى نقاط التوقف التي 786 00:34:47,880 --> 00:34:52,570 هي الفرص المتاحة في برنامجي إلى وقفة التنفيذ في خط معين من التعليمات البرمجية 787 00:34:52,570 --> 00:34:53,710 أنني غريبة عن. 788 00:34:53,710 --> 00:34:54,210 الصحيح؟ 789 00:34:54,210 --> 00:34:55,969 هذه البرامج تعمل في جزء من الثانية. 790 00:34:55,969 --> 00:35:00,450 انها نوع من لطيفة بالنسبة لنا البشر أبطأ لتكون قادرة على التوقف، ونتوقف لحظة، انظر 791 00:35:00,450 --> 00:35:02,380 ما يدور حولها خط معين من التعليمات البرمجية 792 00:35:02,380 --> 00:35:05,050 دون حراثة برنامج وذلك من خلال الانتهاء تماما. 793 00:35:05,050 --> 00:35:08,510 لذلك نقاط التوقف سوف تسمح لنا ل كسر وقفة عند نقطة معينة. 794 00:35:08,510 --> 00:35:12,990 >> مكدس الاستدعاءات هو وسيلة يتوهم من قائلا ما هي وظائف حاليا 795 00:35:12,990 --> 00:35:14,140 يطلق عليها في الوقت الراهن. 796 00:35:14,140 --> 00:35:15,370 دائما دعا الرئيسية أولا. 797 00:35:15,370 --> 00:35:17,230 ولكن إذا دعا الرئيسية ل وظيفة تسمى مقايضة، 798 00:35:17,230 --> 00:35:20,470 نحن ذاهبون فعلا لرؤية هذا برج من الوظائف التي كانت 799 00:35:20,470 --> 00:35:22,400 دعا بترتيب زمني عكسي. 800 00:35:22,400 --> 00:35:23,310 لذلك دعونا نرى ذلك. 801 00:35:23,310 --> 00:35:24,327 >> انا ذاهب للتصغير. 802 00:35:24,327 --> 00:35:25,660 انا ذاهب الى العودة الى قانون بلدي. 803 00:35:25,660 --> 00:35:27,540 وفقط لأنني أريد أن تكون متحذلق هنا، 804 00:35:27,540 --> 00:35:31,100 انا ذاهب الى المضي قدما وانقر فقط على يسار السطر الخامس. 805 00:35:31,100 --> 00:35:32,830 وهذا يخلق نقطة حمراء. 806 00:35:32,830 --> 00:35:36,200 وتلاحظ على الجانب الأيمن أن المصحح يعرف، مهلا، 807 00:35:36,200 --> 00:35:41,020 قلت للتو نقطة توقف في خط noswap.c خمسة، على وجه التحديد 808 00:35:41,020 --> 00:35:42,480 في هذا الخط من التعليمات البرمجية. 809 00:35:42,480 --> 00:35:45,090 لذلك المصحح يعرف بأنني وقد طلبت في المرة القادمة 810 00:35:45,090 --> 00:35:48,530 أركض بلدي هو برنامج وقفة إعدام هناك بدلا من مجرد 811 00:35:48,530 --> 00:35:50,390 تشغيل كل شيء بسرعة فائقة. 812 00:35:50,390 --> 00:35:53,889 >> أنا حتى الآن ذاهب فوق التصحيح زر في أعلى جدا من IDE 813 00:35:53,889 --> 00:35:55,430 وهذا ما تنوي القيام به ليلي. 814 00:35:55,430 --> 00:36:00,680 انها سوف تفتح في البداية إلى حد ما مخيفة أبحث محطة الثانية window-- 815 00:36:00,680 --> 00:36:02,679 تصحيح الأخطاء عن بعد من استضافة مثل وsuch-- 816 00:36:02,679 --> 00:36:04,970 وسوف نعود إلى ما كل ذلك يعني قبل فترة طويلة. 817 00:36:04,970 --> 00:36:09,020 ولكن ما هو مهم الآن غير أن ذلك النقطة الحمراء وضرب، 818 00:36:09,020 --> 00:36:11,735 المصحح له عمدا توقف execution-- 819 00:36:11,735 --> 00:36:15,560 ليس على هذا الخط في حد ذاته ولكن في الأول سطر من التعليمات البرمجية الفعلي في تلك الوظيفة. 820 00:36:15,560 --> 00:36:18,040 وهذا هو السبب في خط سبعة هو أبرز الآن باللون الأصفر. 821 00:36:18,040 --> 00:36:20,550 >> والآن دعونا نلقي نظرة في الجهة اليمنى. 822 00:36:20,550 --> 00:36:27,300 يبدو افتراضيا، جيد بما فيه الكفاية، والعاشر لديه ما قيمة؟ 823 00:36:27,300 --> 00:36:27,860 0. 824 00:36:27,860 --> 00:36:29,750 و y لديه ما قيمة؟ 825 00:36:29,750 --> 00:36:30,410 الصفر. 826 00:36:30,410 --> 00:36:35,540 وهذا هو المتوقع بمعنى أن x و y-- أن line-- الأصفر لديها 827 00:36:35,540 --> 00:36:36,770 لم ينفذ حتى الآن. 828 00:36:36,770 --> 00:36:38,510 لذلك ينبغي أن س ليس لديها قيمة 1. 829 00:36:38,510 --> 00:36:41,470 قد تكون لديها أي قيمة أخرى، ما يسمى قيمة القمامة. 830 00:36:41,470 --> 00:36:44,320 وصلنا محظوظ في أنه صفر في هذه المرحلة، أساسا. 831 00:36:44,320 --> 00:36:46,400 >> وحتى الآن لا يوجد سوى عدد قليل أزرار نحن بحاجة لرعاية 832 00:36:46,400 --> 00:36:48,100 حول متى التصحيح في هذا السبيل. 833 00:36:48,100 --> 00:36:49,970 لاحظ هنا، لدينا زر التشغيل. 834 00:36:49,970 --> 00:36:51,877 واذا لعبنا أو ضرب استئناف، وهذا فقط 835 00:36:51,877 --> 00:36:53,710 الذهاب لتشغيل من خلال ما تبقى من البرنامج 836 00:36:53,710 --> 00:36:55,300 أو حتى يضرب نقطة أخرى. 837 00:36:55,300 --> 00:36:56,910 ولكني لم يحدد أي دولة أخرى نقاط التوقف حتى انها مجرد 838 00:36:56,910 --> 00:36:58,118 الذهاب لتشغيل خلال نهاية. 839 00:36:58,118 --> 00:37:00,280 هذا النوع من الهزائم لل الغرض من بدس حولها. 840 00:37:00,280 --> 00:37:03,290 >> بدلا من ذلك، ما يهمني هذه الرموز إلى اليمين. 841 00:37:03,290 --> 00:37:05,360 وإذا كنت تحوم فوق لهم، كما يجب عليك أيضا، 842 00:37:05,360 --> 00:37:07,450 سترى القليل نصائح أداة tips--. 843 00:37:07,450 --> 00:37:09,020 هذا هو واحد خطوة أكثر. 844 00:37:09,020 --> 00:37:11,290 الآن هذا لا يعني تخطي السطر التالي من التعليمات البرمجية. 845 00:37:11,290 --> 00:37:14,840 وهذا يعني مجرد تنفيذه و الانتقال الى المرحلة التالية، الانتقال الى المرحلة التالية، 846 00:37:14,840 --> 00:37:15,580 الانتقال الى المرحلة التالية. 847 00:37:15,580 --> 00:37:17,610 وبعبارة أخرى، عبر هذا الزر، يمكنني السير 848 00:37:17,610 --> 00:37:20,390 من خلال وجهتي قانون واحد في وقت واحد. 849 00:37:20,390 --> 00:37:21,914 سطرا سطرا، حرفيا. 850 00:37:21,914 --> 00:37:23,830 الآن، على يمين ذلك، هناك واحد آخر 851 00:37:23,830 --> 00:37:25,163 أننا سوف نرى في مجرد لحظة. 852 00:37:25,163 --> 00:37:27,820 وهذا هو ما يسمى خطوة الى رمز هذا 853 00:37:27,820 --> 00:37:30,300 الذهاب إلى اسمحوا لي الغوص إلى وظيفة أخرى. 854 00:37:30,300 --> 00:37:31,800 ولكن دعونا نرى هذا في مجرد لحظة. 855 00:37:31,800 --> 00:37:33,280 لذلك أنا ذاهب للنقر خطوة أكثر. 856 00:37:33,280 --> 00:37:35,820 والآن لاحظت، وأنا انقر هذا الزر في أعلى اليمين، 857 00:37:35,820 --> 00:37:41,260 تبقي عينيك تقريبا تحت المحلية المتغيرات ونرى ما سيحدث إلى x. 858 00:37:41,260 --> 00:37:44,115 x هو الآن 1 لأن نفذت الخط الأصفر الآن 859 00:37:44,115 --> 00:37:45,840 ولقد انتقلت الى خط 8. 860 00:37:45,840 --> 00:37:49,840 وفقط في ذ حظة يجب أن نأمل أن تصبح 2. 861 00:37:49,840 --> 00:37:52,330 >> الآن، لا شيء للاهتمام يحدث قليلا. 862 00:37:52,330 --> 00:37:53,390 كل هذا هو printf. 863 00:37:53,390 --> 00:37:58,010 وتلاحظ، في بلدي المحطة الثانوية نافذة، وأرى إخراج مواطنه الطباعة. 864 00:37:58,010 --> 00:38:01,080 والآن لا بد لي من تقديم القرار بأنه مبرمج. 865 00:38:01,080 --> 00:38:04,360 يمكنني تخطي هذا الخط من رمز، تنفيذ ذلك، ولكن لا 866 00:38:04,360 --> 00:38:06,220 الحصول غريبة عن ما هو في الداخل. 867 00:38:06,220 --> 00:38:11,130 أو أنا يمكن أن خطوة الواقع فيه ويذهب داخل جسم نفسها. 868 00:38:11,130 --> 00:38:12,340 لذلك دعونا نفعل هذا الأخير. 869 00:38:12,340 --> 00:38:15,550 >> اسمحوا لي أن المضي قدما وانقر لا تخطي ولكن خطوة الى. 870 00:38:15,550 --> 00:38:17,300 إشعار، فجأة التغييرات نافذة 871 00:38:17,300 --> 00:38:19,330 لتسليط الضوء على أول سطر من التعليمات البرمجية في مبادلة. 872 00:38:19,330 --> 00:38:20,710 وهذا هو الخط 21. 873 00:38:20,710 --> 00:38:25,220 والآن، ما هو نوع من غير تقليدي هو أنه، إذا نظرتم إلى هنا، كما هو متوقع، 874 00:38:25,220 --> 00:38:29,720 فاصلة ب هي 1 و 2 على التوالي. 875 00:38:29,720 --> 00:38:33,840 لماذا هو مؤقت 32،767؟ 876 00:38:33,840 --> 00:38:36,560 وإذ تشير إلى أن درجة الحرارة، يشبه إلى حد كبير الكأس الفارغ قبل لحظة، 877 00:38:36,560 --> 00:38:38,980 أعلن هنا على خط 21. 878 00:38:38,980 --> 00:38:43,390 لماذا 32،000- أعني، لماذا هو فقط بعض القيمة غريبة؟ 879 00:38:43,390 --> 00:38:43,890 نعم؟ 880 00:38:43,890 --> 00:38:45,190 >> الحضور: ليست تهيئة و. 881 00:38:45,190 --> 00:38:46,940 >> DAVID J. مالان: انها لم يتم تهيئة. 882 00:38:46,940 --> 00:38:49,370 حتى جهاز الكمبيوتر الخاص بنا دائما يوجد الذاكرة الفعلية. 883 00:38:49,370 --> 00:38:50,544 كان لديه دائما RAM البدني. 884 00:38:50,544 --> 00:38:52,710 وهناك دائما صفر ل واحد من هناك، أليس كذلك؟ 885 00:38:52,710 --> 00:38:54,626 لأننا باستخدام لدينا الكمبيوتر طوال اليوم، 886 00:38:54,626 --> 00:38:57,210 كنت تستخدم IDE CS50 أو خوادم طوال اليوم. 887 00:38:57,210 --> 00:39:01,159 بحيث RAM إما لديه بعض الأصفار أو بعض واحد أو بعض الآحاد والأصفار و. 888 00:39:01,159 --> 00:39:02,950 بغض النظر عن ما إذا كان أو لا كنت تستخدم لهم. 889 00:39:02,950 --> 00:39:05,270 لا يمكنك فقط أن يكون فارغا الأماكن التي تريد بت. 890 00:39:05,270 --> 00:39:06,850 انهم إما الآحاد والأصفار و. 891 00:39:06,850 --> 00:39:09,610 >> هكذا اتضح أن درجة الحرارة، ل ليس لدينا تهيئته بعد، 892 00:39:09,610 --> 00:39:14,580 لدينا هذه البتات 32 ولانهم لم تم تهيئة إلى أي القيم المعروفة. 893 00:39:14,580 --> 00:39:18,110 لذلك مهما كانت الأكثر المستخدمة مؤخرا for-- تلك 32 bits-- 894 00:39:18,110 --> 00:39:23,000 نحن مجرد رؤية القطع الأثرية من بعض استخدام السابق من معين تلك 32 895 00:39:23,000 --> 00:39:23,500 بت. 896 00:39:23,500 --> 00:39:27,780 وسرعان ما فوق تخطي الرغم من ذلك، تفو، درجة الحرارة هو الذهاب الى الحصول على قيمة 1. 897 00:39:27,780 --> 00:39:31,600 وإذا كنت تفعل ذلك مرة أخرى، هو ستكون نظرا للقيمة 2 898 00:39:31,600 --> 00:39:33,830 وبعد ذلك ب هو الذهاب الى أن تعطى قيمة 1. 899 00:39:33,830 --> 00:39:36,390 >> وحتى ما هو جميل الآن في هذه النقطة في القصة 900 00:39:36,390 --> 00:39:39,750 غير أن المصحح هو تبين لي، سوبر ببطء 901 00:39:39,750 --> 00:39:42,640 وتيرة بلدي، ما حالة المبادلة. 902 00:39:42,640 --> 00:39:47,490 ولكن لاحظ في الجزء العلوي هنا، لاحظ أن مكدس الاستدعاءات في الواقع 903 00:39:47,490 --> 00:39:49,180 فقد اثنين من طبقات إليها. 904 00:39:49,180 --> 00:39:53,240 الآن واحد وهذا ما يسلط الضوء عليها مبادلة، إذا كنت اضغط على الصفحة الرئيسية بدلا من ذلك، 905 00:39:53,240 --> 00:39:57,100 لاحظ كيف تتغير المتغيرات المحلية لأن المطور يمكن هوب فقط 906 00:39:57,100 --> 00:39:59,740 حول والخوض في أي مجال آخر. 907 00:39:59,740 --> 00:40:04,070 حتى على الرغم من أننا نفعل كل هذا العمل ومبادلة أ و ب صحيح، 908 00:40:04,070 --> 00:40:09,080 إذا ذهبت ذهابا وإيابا بين مبادلة حيث هو 2 و ب 1 و هو الرئيسي، 909 00:40:09,080 --> 00:40:11,851 تمت الرئيسية تأثرت في كل شيء؟ 910 00:40:11,851 --> 00:40:12,350 لا. 911 00:40:12,350 --> 00:40:13,930 فما هي الوجبات الجاهزة هنا؟ 912 00:40:13,930 --> 00:40:18,200 حسنا، اتضح أنه في أي وقت استدعاء دالة مثل مقايضة، 913 00:40:18,200 --> 00:40:21,600 وأنت تمر عليه الحجج، ما كنت عابرة إلى وظيفة مبادلة 914 00:40:21,600 --> 00:40:24,730 في هذه الحالة هو نسخة تلك الحجج. 915 00:40:24,730 --> 00:40:28,620 لذلك إذا كان x و y لكل منهما على التوالي 32 بت، ما مبادله هو الحصول على 916 00:40:28,620 --> 00:40:30,760 غير محلية اثنين من جديد المتغيرات، أو المجادلات، 917 00:40:30,760 --> 00:40:34,380 دعا وb-- ولكن هذه هي التعسفي names-- لكن النمط من الأصفار 918 00:40:34,380 --> 00:40:39,520 ومنها داخل أ و ب هي اصطف ليكون مطابقا لx و y 919 00:40:39,520 --> 00:40:42,610 لكنها ليست هي نفس الشيء كما x و y. 920 00:40:42,610 --> 00:40:46,880 >> فهو كما لو أن لديه منزل على قطعة من الورقة رقم 1 و 2 x و y، 921 00:40:46,880 --> 00:40:49,260 ثم عندما الأيدي التي قطعة من الورق لمبادلة، 922 00:40:49,260 --> 00:40:51,970 مبادلة يحصل بسرعة جدا القلم الخاص بها، ويكتب أسفل 923 00:40:51,970 --> 00:40:56,240 1 و 2 على ورقة خاصة به من الورق، ظهر اليدين س ص الأصلي إلى الرئيسية 924 00:40:56,240 --> 00:40:58,790 ويفعل ذلك بمفرده الشيء مع أ و ب. 925 00:40:58,790 --> 00:41:01,940 وهذا هو الآن السوبر مهم ل هذا له آثار غير بديهي 926 00:41:01,940 --> 00:41:06,260 لكتابة الرمز الصحيح في الواقع لأنه يبدو أننا لا يمكن مبادلة 927 00:41:06,260 --> 00:41:07,500 متغيرين. 928 00:41:07,500 --> 00:41:09,150 >> كنت قد كتبت وظيفة مبادلة الصحيحة. 929 00:41:09,150 --> 00:41:12,770 لقد تنفيذه مع لورين كما وظيفة مبادلة صحيحة في الواقع، 930 00:41:12,770 --> 00:41:16,700 ولكن يبدو أن لا شيء من ذلك المسائل إذا كنت لا تستطيع في الواقع 931 00:41:16,700 --> 00:41:19,530 مبادلة قيمتين بشكل دائم. 932 00:41:19,530 --> 00:41:21,970 لذلك نحن بحاجة الى وسيلة أخرى للحصول فعلا في ذلك، 933 00:41:21,970 --> 00:41:24,472 ونحن بحاجة إلى أن تكون قادرة على حل هذه المشكلة في الواقع. 934 00:41:24,472 --> 00:41:27,180 ويتحول out-- وسنأتي العودة إلى هذه الصورة خاصة 935 00:41:27,180 --> 00:41:30,500 قبل long-- هذا هو أحد السبل التي قد رسم ذاكرة الكمبيوتر الخاص بك. 936 00:41:30,500 --> 00:41:31,460 انها مجرد مستطيل. 937 00:41:31,460 --> 00:41:32,960 هل يمكن استدراجه أي عدد من الطرق ولكنها ل 938 00:41:32,960 --> 00:41:35,740 مريحة للرسم على أنها المستطيل للأسباب التالية. 939 00:41:35,740 --> 00:41:40,040 >> ونحن في طريقنا لبدء اليوم وما بعده الحديث عن ما يسمى المكدس. 940 00:41:40,040 --> 00:41:43,870 والمكدس هو مجرد قطعة من RAM-- قطعة من memory-- 941 00:41:43,870 --> 00:41:47,100 الذي يعمل لدى وصول لانهم عندما دعا. 942 00:41:47,100 --> 00:41:49,800 وهكذا اتضح أنه في أسفل جدا من هذا المكدس 943 00:41:49,800 --> 00:41:53,590 حيث كل المتغيرات المحلية الرئيسية ل وORG C و V هيكلي وجميع الاشياء التي 944 00:41:53,590 --> 00:41:56,950 في سبيلنا للذهاب افتراضيا. وإذا الرئيسية يدعو بعض الوظائف الأخرى مثل مقايضة، 945 00:41:56,950 --> 00:42:00,330 كذلك، مبادله هو الذهاب الى الحصول على آخر طبقة من ذاكرة تصل فوقه. 946 00:42:00,330 --> 00:42:04,490 >> وذلك فقط لإعطائك سطحية سريعة صورة لهذا، إذا ذهبت على here-- 947 00:42:04,490 --> 00:42:09,450 واسمحوا لي أن يعكس هذا على النفقات العامة كما well-- حقيقة ما لدي، 948 00:42:09,450 --> 00:42:12,100 إذا كنا نهتم فقط أسفل هذه الصورة في الوقت الحالي، 949 00:42:12,100 --> 00:42:15,070 غير أنني عندما تشغيل برنامج ويحصل يسمى الرئيسي، 950 00:42:15,070 --> 00:42:18,330 وتعطى الرئيسية قطعة من RAM في جهاز الكمبيوتر الخاص بي وهذا هو 951 00:42:18,330 --> 00:42:20,060 في الجزء السفلي من هذا ما يسمى المكدس. 952 00:42:20,060 --> 00:42:22,143 وانا ذاهب لاستدراجه كما عمد مربع. 953 00:42:22,143 --> 00:42:24,540 لذلك فمن مثل 32 بت أو أربعة بايت. 954 00:42:24,540 --> 00:42:28,790 وإذا كان هذا الوظيفة الرئيسية لديها متغير يسمى X بقيمة 1 955 00:42:28,790 --> 00:42:32,626 وأنه يحتوي على متغير يسمى ذ مع قيمة 2، هذا 956 00:42:32,626 --> 00:42:35,750 مثل أخذ هذه القطعة من الذاكرة التي وقد أعطيت الرئيسية من قبل التشغيل 957 00:42:35,750 --> 00:42:38,850 نظام وتقسيمه حتى أن أول متغير محلي يذهب هنا، 958 00:42:38,850 --> 00:42:40,930 ثانية واحدة يذهب هنا، وهذا كل شيء. 959 00:42:40,930 --> 00:42:45,590 >> عندما يدعو الرئيسية مقايضة، مبادله يحصل حصتها الخاصة من الذاكرة 960 00:42:45,590 --> 00:42:48,280 أننا سوف يوجه مثل هذا من نظام التشغيل، 961 00:42:48,280 --> 00:42:50,820 وانها ستكون لدينا ل المتغيرات المحلية الخاصة مقرها 962 00:42:50,820 --> 00:42:53,825 في وقت سابق من تنفيذنا مع المتغيرات المحلية 963 00:42:53,825 --> 00:42:58,010 وب أن البداية الحصول على قيم 1 و 2. 964 00:42:58,010 --> 00:43:00,450 ولكن بعد ذلك، في أقرب وقت رمز مبادله ينفذ، 965 00:43:00,450 --> 00:43:03,760 ولورين مقايضة الواقع OJ والحليب، ما الذي يحدث؟ 966 00:43:03,760 --> 00:43:09,030 حسنا، هذا 2 وتصبح 1، وهذا 1 أصبح 2، وبالمناسبة، 967 00:43:09,030 --> 00:43:13,360 هناك متغير درجة الحرارة وهذا ما يجري يستخدم هذا الوقت كله في نهاية المطاف 968 00:43:13,360 --> 00:43:14,470 ذهب بعيدا. 969 00:43:14,470 --> 00:43:16,720 ولكن لا يهم كم العمل الذي تقوم به 970 00:43:16,720 --> 00:43:22,160 في هذا الخط of-- في هذه المساحة الذاكرة، x و y هي لم يمسها تماما. 971 00:43:22,160 --> 00:43:26,320 >> لذلك نحن بحاجة إلى طريقة إعطاء مبادلة وظائف مثل ذلك 972 00:43:26,320 --> 00:43:32,640 الوصول السري، اذا صح التعبير، ل وظائف like-- إلى الذاكرة مثل x و y. 973 00:43:32,640 --> 00:43:35,110 لذلك دعونا نلقي نظرة على مثال ذلك يساعد 974 00:43:35,110 --> 00:43:38,220 لنرى بالضبط ما كان يحدث هذا طوال الوقت. 975 00:43:38,220 --> 00:43:40,284 انا ذاهب الى المضي قدما وفتح قارن صفر. 976 00:43:40,284 --> 00:43:42,200 وانا ذاهب الى إغلاق مصحح لدينا، انا ذاهب 977 00:43:42,200 --> 00:43:44,360 لإغلاق هذه الرسالة مخيفة أبحث ويقول فقط، انتظر لحظة، 978 00:43:44,360 --> 00:43:45,800 كنت في تصحيح الأخطاء الأوسط. 979 00:43:45,800 --> 00:43:48,383 أنا ذاهب لإخفاء هذا التبويب هنا فقط للعودة إلى البساطة. 980 00:43:48,383 --> 00:43:50,160 لذلك لا داعي للقلق إذا قتل GDB. 981 00:43:50,160 --> 00:43:53,910 هذا يعني فقط أن البرنامج لديه تم الإقلاع عن التدخين، عمدا في هذه الحالة، 982 00:43:53,910 --> 00:43:54,820 من قبلي. 983 00:43:54,820 --> 00:43:57,700 >> وقارن الآن صفر يفعل ذلك. 984 00:43:57,700 --> 00:44:00,110 أنا باستخدام CS50 المكتبة في معيار I / O. 985 00:44:00,110 --> 00:44:04,319 لقد حصلت على وظيفة الرئيسية التي لأول مرة يقول، ويقول شيئا، ويحصل على السلسلة. 986 00:44:04,319 --> 00:44:06,110 ثم يقول مرة أخرى و يحصل سلسلة أخرى. 987 00:44:06,110 --> 00:44:09,910 وتلاحظ أن هذه السلسلتين وتسمى الصورة ور، على التوالي. 988 00:44:09,910 --> 00:44:12,910 والآن هذا البرنامج، قارن الصفر، والغرض منه في الحياة، 989 00:44:12,910 --> 00:44:15,470 أنه من المفترض أن تقول لي، أنا لم اكتب نفس الشيء؟ 990 00:44:15,470 --> 00:44:16,910 وحتى وأنا ذاهب إلى أسبوع واحد. 991 00:44:16,910 --> 00:44:19,950 أنا باستخدام بلدي مشغل المساواة المساواة وهو عامل الجودة. 992 00:44:19,950 --> 00:44:22,220 لا عامل التعيين، المشغل المساواة. 993 00:44:22,220 --> 00:44:23,890 أنا فقط مقارنة الصورة ور. 994 00:44:23,890 --> 00:44:27,470 >> لذلك دعونا فعلا المضي قدما ونفعل ذلك. 995 00:44:27,470 --> 00:44:32,680 وانا ذاهب الى المضي قدما وجعل قارن صفر. 996 00:44:32,680 --> 00:44:35,110 انا ذاهب الى القيام ./comparezero. 997 00:44:35,110 --> 00:44:37,150 وانا ذاهب للذهاب وقبل أن أقول شيئا 998 00:44:37,150 --> 00:44:43,450 مثل، دعونا نفعل أمي في صغيرة وماذا عن أمي في الأحرف الكبيرة. 999 00:44:43,450 --> 00:44:45,034 وبالطبع أنا اكتب أشياء مختلفة. 1000 00:44:45,034 --> 00:44:45,533 حسنا. 1001 00:44:45,533 --> 00:44:46,570 هذا هو المتوقع. 1002 00:44:46,570 --> 00:44:47,640 >> دعونا تشغيله مرة أخرى. 1003 00:44:47,640 --> 00:44:49,740 في كل مرة تفعل صغيرة، صغيرة. 1004 00:44:49,740 --> 00:44:51,490 التي تبدو فائقة متطابقة بالنسبة لي. 1005 00:44:51,490 --> 00:44:52,930 أدخل. 1006 00:44:52,930 --> 00:44:53,430 حسنا. 1007 00:44:53,430 --> 00:44:55,804 ربما انها مجرد غريب ل انها لا تروق لي النحوي. 1008 00:44:55,804 --> 00:44:59,930 لذلك دعونا نفعل عاصمة MOM، العاصمة MOM، متطابقة. 1009 00:44:59,930 --> 00:45:01,490 أشياء مختلفة. 1010 00:45:01,490 --> 00:45:03,907 >> ذلك هو السبب في ذلك؟ 1011 00:45:03,907 --> 00:45:06,240 حسنا، ما الذي يحدث في الواقع تحت غطاء محرك السيارة هنا؟ 1012 00:45:06,240 --> 00:45:08,180 لذلك دعونا نذهب إلى أكثر من هنا لمجرد لحظة 1013 00:45:08,180 --> 00:45:10,910 والنظر في ما GetString هو القيام بالفعل. 1014 00:45:10,910 --> 00:45:13,385 عند استدعاء GetString، هذا هو وظيفة نحن 1015 00:45:13,385 --> 00:45:16,510 كتب أنفسنا وأنها تحصل على نحو ما تسلسل الأحرف من المستخدم. 1016 00:45:16,510 --> 00:45:20,280 ودعونا نفترض أن أول الوقت أدعو GetString، أن يعطيني 1017 00:45:20,280 --> 00:45:21,930 قطعة من الذاكرة التي تبدو مثل هذا. 1018 00:45:21,930 --> 00:45:26,990 وإذا كنت كتبته في كل صغيرة م-س-m-- وما يجري بعد ذلك؟ 1019 00:45:26,990 --> 00:45:28,840 مجرد الاختيار العقل سريع. 1020 00:45:28,840 --> 00:45:29,780 >> صفر مائل. 1021 00:45:29,780 --> 00:45:30,510 نعلم أن. 1022 00:45:30,510 --> 00:45:32,784 وأذكر أننا لعبنا حولها مع اسم Zamila ل 1023 00:45:32,784 --> 00:45:34,950 وحفنة من الأسماء الأخرى عندما كان روب هنا بحثا 1024 00:45:34,950 --> 00:45:36,280 في ما يجري داخل الذاكرة. 1025 00:45:36,280 --> 00:45:37,780 بحيث القصة بالضبط نفس. 1026 00:45:37,780 --> 00:45:40,160 هذا هو ما GetString تعود لي. 1027 00:45:40,160 --> 00:45:44,780 الآن، قانون بلدي لحظة قبل تخزينها قيمة الإرجاع GetString 1028 00:45:44,780 --> 00:45:47,510 في متغير يسمى الصورة. 1029 00:45:47,510 --> 00:45:51,390 ثم للمرة الثانية دعوت عليه، ذلك تخزينها في متغير يسمى ر. 1030 00:45:51,390 --> 00:45:55,070 >> حتى إذا ذهبت أكثر من هنا، ولست بحاجة رسم هذا variable-- المحلية 1031 00:45:55,070 --> 00:45:59,610 وأنا عموما الذهاب الى رسم السلسلة ك just-- سنقوم 1032 00:45:59,610 --> 00:46:02,360 نسميها s-- كما يذكر مربع هنا. 1033 00:46:02,360 --> 00:46:09,760 والآن، somehow-- كيف أمي انتقل داخل هذه الصورة متغير؟ 1034 00:46:09,760 --> 00:46:12,010 حسنا، نحن بحاجة إلى العودة إلى المبادئ الأولى هنا. 1035 00:46:12,010 --> 00:46:15,660 ما GetString العودة فعلا؟ 1036 00:46:15,660 --> 00:46:19,030 >> هكذا اتضح أن M-O-M مائل الصفر، وأي عدد 1037 00:46:19,030 --> 00:46:22,364 سلاسل أخرى في الذاكرة مثل Zamila وروب أو اندي أو أي أشخاص آخرين، 1038 00:46:22,364 --> 00:46:24,280 بالطبع لدينا في RAM الكمبيوتر أو الذاكرة. 1039 00:46:24,280 --> 00:46:27,760 وRAM لديه like-- لديك أزعج من ذاكرة الوصول العشوائي، واثنين من العربات من ذاكرة الوصول العشوائي، 1040 00:46:27,760 --> 00:46:30,860 أو مليار أو ملياري بايت، أو ربما أكثر من ذلك في هذه الأيام. 1041 00:46:30,860 --> 00:46:34,070 لذلك دعونا نفترض، لأغراض اليوم، أنه لا يهم كيف يمكننا عددهم 1042 00:46:34,070 --> 00:46:36,640 لهم، ولكن يمكننا أن عددهم كل تلك مليار أو مليارين 1043 00:46:36,640 --> 00:46:37,880 أو أربعة مليار بايت. 1044 00:46:37,880 --> 00:46:42,240 >> ودعنا نقول فقط أن تعسفا هذا هو لدغة الأولى، لدغة الثانية، 1045 00:46:42,240 --> 00:46:43,380 الثالث والرابع. 1046 00:46:43,380 --> 00:46:46,570 أنا تعمدت عدم استخدام الصفر ل اليوم ولكننا سوف نعود لذلك. 1047 00:46:46,570 --> 00:46:49,570 لذلك وبعبارة أخرى، إذا كان هذا هو أول مرة أنا باستخدام البرنامج، 1048 00:46:49,570 --> 00:46:52,715 أنا مجرد الحصول على الحظ وأول لدغة هي في مكان واحد ثم اثنين 1049 00:46:52,715 --> 00:46:53,590 ثم ثلاثة من أربعة. 1050 00:46:53,590 --> 00:46:57,430 وإذا ظللت الرسم رقم صندوق ملياري سيكون الطريق أكثر من هنا. 1051 00:46:57,430 --> 00:47:02,200 >> فما رأيك، ثم، GetString يعود في الواقع؟ 1052 00:47:02,200 --> 00:47:06,010 انها ليست عودة M-O-M مائل صفر في حد ذاته لأن ذلك بوضوح 1053 00:47:06,010 --> 00:47:08,180 لن تجد لها مكانا في المربع الذي رسمتها. 1054 00:47:08,180 --> 00:47:11,210 فما آخر قد GetString الواقع سيعود كل هذه الأسابيع؟ 1055 00:47:11,210 --> 00:47:14,410 1056 00:47:14,410 --> 00:47:16,820 الجواب على مجلس هنا في مكان ما. 1057 00:47:16,820 --> 00:47:20,390 لا يمكنك تناسب M-O-M مائل الصفر، وذلك ما قد يكون له معنى بدلا من ذلك؟ 1058 00:47:20,390 --> 00:47:23,424 إذا كان لديك لتكون فائقة ذكي، وضع على ما يسمى قبعة الهندسة، 1059 00:47:23,424 --> 00:47:24,340 ما يمكن أن تعود؟ 1060 00:47:24,340 --> 00:47:27,340 ما هو أقل قدر من المعلومات هل يمكن العودة التي ما زالت 1061 00:47:27,340 --> 00:47:30,610 تمكنك من العثور M-O-M في الذاكرة؟ 1062 00:47:30,610 --> 00:47:31,270 نعم؟ 1063 00:47:31,270 --> 00:47:31,950 >> الحضور: واحد. 1064 00:47:31,950 --> 00:47:32,200 >> DAVID J. مالان: واحد. 1065 00:47:32,200 --> 00:47:33,021 والسبب واحد؟ 1066 00:47:33,021 --> 00:47:35,520 الحضور: لأنه سيقول لكم أين تذهب (غير مسموع). 1067 00:47:35,520 --> 00:47:38,391 1068 00:47:38,391 --> 00:47:39,390 DAVID J. مالان: بالضبط. 1069 00:47:39,390 --> 00:47:44,300 أنا مجرد الذهاب إلى إرجاع عنوان من السلسلة التي اقتنيت. 1070 00:47:44,300 --> 00:47:46,570 العنوان في هذا القضية هي مكان واحد. 1071 00:47:46,570 --> 00:47:51,280 فما حقا يتم تخزينها في s-- وكل متغير سلسلة بالتالي far-- 1072 00:47:51,280 --> 00:47:53,430 لقد كان مجرد عنوان هذه السلسلة. 1073 00:47:53,430 --> 00:47:57,840 >> وفي الوقت نفسه، إذا أسميه GetString مرة ثانية وأنا 1074 00:47:57,840 --> 00:48:03,300 اكتب في حرفيا نفس thing-- M-O-M مع lowercase-- M-O-M 1075 00:48:03,300 --> 00:48:06,200 ومائل آخر الصفر، والآن ربما برنامجي ل 1076 00:48:06,200 --> 00:48:09,820 تم تشغيل لبعض الوقت ولذلك ربما يكون هذا هو 10، وهذا هو المكان 11، وهذا هو 12، 1077 00:48:09,820 --> 00:48:10,700 هذا هو 13. 1078 00:48:10,700 --> 00:48:13,590 أجهزة الكمبيوتر باستخدام بعض الآخر الذاكرة لأي سبب من الأسباب. 1079 00:48:13,590 --> 00:48:18,172 ما يجري الآن في بلدي الثاني متغير في برنامجي ر؟ 1080 00:48:18,172 --> 00:48:19,390 10. 1081 00:48:19,390 --> 00:48:20,050 بالضبط. 1082 00:48:20,050 --> 00:48:23,910 >> وذلك عندما ننظر إلى شفرة المصدر من هذا البرنامج 1083 00:48:23,910 --> 00:48:26,550 أين أنا مجرد محاولة لمقارنة قيمتين، 1084 00:48:26,550 --> 00:48:32,180 هو قدم المساواة مع الرجل على قدم المساواة إلى t، ما هو الجواب الإنسان واضحة؟ 1085 00:48:32,180 --> 00:48:34,890 فقط لا ل1 لا يساوي 10. 1086 00:48:34,890 --> 00:48:36,861 وحتى هنا تكمن ل فرصة لنا حقا 1087 00:48:36,861 --> 00:48:39,610 للذهاب لتوه إلى، مرة أخرى، لأول مرة المبادئ والتفكير، حسنا، 1088 00:48:39,610 --> 00:48:41,110 ما يجري تحت غطاء محرك السيارة؟ 1089 00:48:41,110 --> 00:48:43,240 كنا نتحدث عن بت وبايت وذاكرة، 1090 00:48:43,240 --> 00:48:46,820 لكنه في الواقع مفيدة لفهم لأن عند استدعاء GetString، 1091 00:48:46,820 --> 00:48:50,280 على الرغم من أننا نفكر من هو العودة M-O-M أو سلسلة أمي 1092 00:48:50,280 --> 00:48:53,120 أو اندي أو Zamila أو شابه ذلك، من الناحية التقنية 1093 00:48:53,120 --> 00:48:55,510 انها مجرد اعادة عنوان ذلك جزء من الذاكرة. 1094 00:48:55,510 --> 00:48:56,910 >> ولكن هذا موافق. 1095 00:48:56,910 --> 00:49:00,570 لأن كيف أعرف حيث تنتهي السلسلة؟ 1096 00:49:00,570 --> 00:49:03,840 إذا أنا أعطيت فقط البداية؟ 1097 00:49:03,840 --> 00:49:05,380 حسنا، مائل الصفر، أليس كذلك؟ 1098 00:49:05,380 --> 00:49:08,800 فقط في الزمن الخطي يمكنني طباعة مع مواطنه الطباعة M-O-M. 1099 00:49:08,800 --> 00:49:11,820 وحالما أرى مائل الصفر، لا يهمني أين بدأت، 1100 00:49:11,820 --> 00:49:14,950 أعرف مسبقا ضمنيا حيث كنت في حاجة لهذه الغاية. 1101 00:49:14,950 --> 00:49:18,700 >> وهكذا يصادف اليوم beginning-- و اسمحوا لي أن تفعل هذا بشكل كبير لأننا 1102 00:49:18,700 --> 00:49:21,800 ذهبت من خلال الكثير من المتاعب ل الحصول على هذه هنا تدريب wheels-- 1103 00:49:21,800 --> 00:49:29,840 حتى اليوم عجلات التدريب تبدأ للخروج من الملعب ونحن تكشف في least-- 1104 00:49:29,840 --> 00:49:31,373 >> [تصفيق] 1105 00:49:31,373 --> 00:49:33,220 1106 00:49:33,220 --> 00:49:36,160 >> كان ذلك تستحق الزيارة إلى الهدف هذا الصباح، نعم؟ 1107 00:49:36,160 --> 00:49:39,600 حتى now-- هناك، فإنه يتحول بها، لا يوجد شيء مثل السلسلة. 1108 00:49:39,600 --> 00:49:41,140 سلسلة غير موجود. 1109 00:49:41,140 --> 00:49:43,760 انها مرادف التي كانت لدينا داخل مكتبة CS50. 1110 00:49:43,760 --> 00:49:48,660 من الآن فصاعدا، ونحن في طريقنا للبدء الدعوة الصورة ور لم سلاسل لكن شار النجوم. 1111 00:49:48,660 --> 00:49:51,180 والنجم شار سنقوم ندف بصرف النظر قبل فترة طويلة. 1112 00:49:51,180 --> 00:49:53,510 ولكن هذا هو القول، أنه حتى لو واصلنا 1113 00:49:53,510 --> 00:49:56,180 باستخدام GetString الآن، من الناحية الفنية ينبغي لي 1114 00:49:56,180 --> 00:49:59,010 يكون قوله نجمة شار ونجم شار. 1115 00:49:59,010 --> 00:50:01,720 >> واتضح ما هذا النجم يجري للدلالة على شيء 1116 00:50:01,720 --> 00:50:04,340 دعا مؤشر أو عنوان. 1117 00:50:04,340 --> 00:50:06,110 في واقع الأمر، دعابة لماذا ينتظرنا 1118 00:50:06,110 --> 00:50:09,760 هذا هو 20 مقطع الثاني من وجهة نظرنا صديق نيك Parlante في جامعة ستانفورد 1119 00:50:09,760 --> 00:50:12,927 الذين، منذ بعض الوقت، وقضاء مبلغ سخيف من الزمن، 1120 00:50:12,927 --> 00:50:15,010 أفضل ما استطيع ان اقول له في المطبخ أو قبو منزله، 1121 00:50:15,010 --> 00:50:17,140 جعل claymation أعرض على العالم 1122 00:50:17,140 --> 00:50:20,010 حرف اسمه بينكي معه ونحن 1123 00:50:20,010 --> 00:50:22,010 يتم عرضه في المرة القادمة لمؤشرات. 1124 00:50:22,010 --> 00:50:24,588 حتى هنا هو معاينة ما يأتي. 1125 00:50:24,588 --> 00:50:26,370 >> [تشغيل الفيديو] 1126 00:50:26,370 --> 00:50:27,510 >> -Hey، بينكي. 1127 00:50:27,510 --> 00:50:28,260 استيقظ. 1128 00:50:28,260 --> 00:50:30,672 حان الوقت لمؤشر المرح. 1129 00:50:30,672 --> 00:50:31,616 >> -ما هذا؟ 1130 00:50:31,616 --> 00:50:33,032 تعرف على مؤشرات؟ 1131 00:50:33,032 --> 00:50:34,450 أوه، جودي. 1132 00:50:34,450 --> 00:50:35,431 >> [END قراءة] 1133 00:50:35,431 --> 00:50:38,055 DAVID J. مالان: وعلى تلك المذكرة، سوف نرى لك يوم الاربعاء. 1134 00:50:38,055 --> 00:50:47,590 1135 00:50:47,590 --> 00:50:48,090 حسنا. 1136 00:50:48,090 --> 00:50:48,740 من هو الرقص؟ 1137 00:50:48,740 --> 00:50:49,240 هيا. 1138 00:50:49,240 --> 00:50:50,330 من هو الرقص؟ 1139 00:50:50,330 --> 00:50:51,820 تريد مني للحصول على انها بدأت؟ 1140 00:50:51,820 --> 00:50:53,770 سأحضر بدأت. 1141 00:50:53,770 --> 00:50:54,270 Woooo! 1142 00:50:54,270 --> 00:51:04,070 1143 00:51:04,070 --> 00:51:07,580 >> لورين: يتوهم الحلو موسى.