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