1 00:00:00,000 --> 00:00:06,370 2 00:00:06,370 --> 00:00:08,150 >> JASON هيرشهورن: مرحبا بكم لثلاثة أسابيع، والجميع. 3 00:00:08,150 --> 00:00:11,650 لدينا مشغول ولكن مثيرة القسم أمامنا. 4 00:00:11,650 --> 00:00:17,010 لذلك الأولى، لأننا حققنا بعض تقدم مع بالطبع ولكن ما زلنا 5 00:00:17,010 --> 00:00:20,570 لديهم الكثير من التعلم غادر الى القيام به، وأنا سوف تظهر لك بعض الموارد الرجال 6 00:00:20,570 --> 00:00:24,160 التي ينبغي أن يكون بشكل لا يصدق مفيدة كما كنت نهج الخاص بك ليس فقط 7 00:00:24,160 --> 00:00:28,130 يحدد المشكلة، ولكن أيضا على هضم جميع المواد نقدم لكم اللاعبين في 8 00:00:28,130 --> 00:00:30,800 محاضرات والسراويل والقسم. 9 00:00:30,800 --> 00:00:34,790 >> ثم ونحن في طريقنا لقضاء أول 20 إلى 25 دقيقة من الفرع الذهاب أكثر 10 00:00:34,790 --> 00:00:38,630 GDB، والتي قد تكون أو لا تكون تستخدم في هذه المرحلة، بل هو 11 00:00:38,630 --> 00:00:42,570 سوف أداة مفيدة بشكل لا يصدق أن تساعدك على تصحيح البرامج. 12 00:00:42,570 --> 00:00:46,060 وهناك الكثير منكم قد استخدمت في printf منتصف البرنامج لمعرفة 13 00:00:46,060 --> 00:00:47,430 ما يعادل متغير. 14 00:00:47,430 --> 00:00:52,060 GDB، بل هو أفضل من printf و لا المسمار التعليمات البرمجية الخاصة بك لأنك 15 00:00:52,060 --> 00:00:53,320 تشغيله على ملف تنفيذي. 16 00:00:53,320 --> 00:00:56,500 ولذا فإننا سوف يذهب أكثر من 10 مفيدة للغاية أوامر تحتاج لGDB، ونحن 17 00:00:56,500 --> 00:01:00,540 ستذهب على ممارسة معا حتى في مشكلة تعيين ثلاثة وخارجها، ل 18 00:01:00,540 --> 00:01:03,320 يمكن استخدام GDB للمساعدة في التصحيح البرامج الخاصة بك. 19 00:01:03,320 --> 00:01:06,420 وأخيرا، ونحن في طريقنا للذهاب على بعض الفرز والبحث الخوارزميات 20 00:01:06,420 --> 00:01:10,590 التي رأيتها في المحاضرة، ونحن الذهاب إلى رمز في الواقع، وليس فقط 21 00:01:10,590 --> 00:01:17,360 شبة الكود، ولكن رمز البحث الثنائي، فقاعة الفرز، واختيار نوع. 22 00:01:17,360 --> 00:01:20,090 >> لذلك الأولى، أريد أن أذهب على الموارد. 23 00:01:20,090 --> 00:01:23,530 هذا هو قائمة واسعة، وانها أصغر الخط لأنه كان لدي الكثير ل 24 00:01:23,530 --> 00:01:24,390 احتواءه على هنا. 25 00:01:24,390 --> 00:01:26,950 ولكن هذه لن تساعد فقط لكم، مرة أخرى، مع مجموعات مشكلة و 26 00:01:26,950 --> 00:01:30,760 هضم المعلومات التي تعلمتها، ولكن بالتأكيد، وتأتي مسابقة الوقت، وهذه سوف 27 00:01:30,760 --> 00:01:32,130 تكون مفيدة بشكل لا يصدق. 28 00:01:32,130 --> 00:01:34,700 لذلك الأولى، تلاحظ محاضرة. 29 00:01:34,700 --> 00:01:39,480 إذا ذهبت إلى cs50.net/lectures و انتقل إلى أسبوع ويوم معين، 30 00:01:39,480 --> 00:01:43,120 سترى أن هناك ملاحظات لكل محاضرة، وهي ليست مجرد 31 00:01:43,120 --> 00:01:47,250 نص، وإنما هو نسخة منقحة من ما تم تناوله في المحاضرة مع رمز 32 00:01:47,250 --> 00:01:49,610 قصاصات والحكايات المفيدة الأخرى. 33 00:01:49,610 --> 00:01:52,220 أنا أوصي تخطى تلك. 34 00:01:52,220 --> 00:01:55,340 ثم كذلك، هناك شفرة المصدر المتاحة من كل محاضرة. 35 00:01:55,340 --> 00:02:00,050 ومرة أخرى، هذه الشرائح ستكون أيضا شبكة الإنترنت في cs50.net/sections 36 00:02:00,050 --> 00:02:01,480 هذا المساء. 37 00:02:01,480 --> 00:02:06,860 >> هكذا هي الثانية السراويل كل أسبوع أن المواضيع الغطاء، وعادة من 5 إلى 15 38 00:02:06,860 --> 00:02:08,090 في طول دقائق. 39 00:02:08,090 --> 00:02:12,310 وتلك نأمل سوف اعطيكم التمهيدي كبيرة حول مواضيع مختلفة. 40 00:02:12,310 --> 00:02:12,870 الثالث - 41 00:02:12,870 --> 00:02:16,370 وهذا هو هذه العلامة التجارية الجديدة العام - هو study.cs50.net. 42 00:02:16,370 --> 00:02:20,110 إذا لم تكن قد تأكدت منه، وأنا نوصي بشدة أن تقوم بذلك. 43 00:02:20,110 --> 00:02:21,100 تحصل على اختيار الموضوع. 44 00:02:21,100 --> 00:02:23,040 لدينا عشرات من المواضيع هناك. 45 00:02:23,040 --> 00:02:24,770 ذلك على سبيل المثال، يمكنك اختيار وظائف. 46 00:02:24,770 --> 00:02:27,270 فهو يوفر لك بعض الشرائح وتلاحظ على وظائف. 47 00:02:27,270 --> 00:02:31,190 تلك هي في الواقع الشرائح التي TFS يتم تشجيعهم على استخدامها أثناء دينا 48 00:02:31,190 --> 00:02:32,710 العروض التقديمية في القسم. 49 00:02:32,710 --> 00:02:35,040 هناك أيضا نصائح وحيل للتعامل مع وظائف، وهناك 50 00:02:35,040 --> 00:02:37,290 مشاكل الممارسة التي تساعد كنت تعمل مع وظائف. 51 00:02:37,290 --> 00:02:41,500 سنقدم لك أيضا وصلات إلى قصيرة على وظائف والأوقات التي ظائف 52 00:02:41,500 --> 00:02:42,750 ظهرت في المحاضرة. 53 00:02:42,750 --> 00:02:46,550 study.cs50.net ذلك، هذه العلامة التجارية الجديدة العام، مورد رائعة. 54 00:02:46,550 --> 00:02:52,180 >> المقبل، ولدي الرجل، وهو دليل الأوامر التي يمكنك تشغيلها في 55 00:02:52,180 --> 00:02:52,770 سطر الأوامر. 56 00:02:52,770 --> 00:02:57,880 حتى إذا كان لديك أي أسئلة حول الأوامر، على سبيل المثال، راند، وهو ما 57 00:02:57,880 --> 00:03:00,900 واجه الاسبوع الماضي خلال القسم وكنت قد واجهت المحتمل في 58 00:03:00,900 --> 00:03:05,380 مشكلتك تعيين عند المرور عبر توليد رمز، ولكن إذا قمت بكتابة الرجل 59 00:03:05,380 --> 00:03:09,980 راند، وستحصل على الصفحة التي يخبرك كل شيء عن راند. 60 00:03:09,980 --> 00:03:14,040 فهو يوفر لك كل ما يتطلبه الأمر، و المعلمات يستغرق وكذلك العودة 61 00:03:14,040 --> 00:03:16,530 نوع وصفا موجزا من تلك الوظيفة. 62 00:03:16,530 --> 00:03:17,500 >> حتى تحقق من راند. 63 00:03:17,500 --> 00:03:22,270 يمكن أن يكون قليلا الالفاظ ومربكة، حتى في بعض الأحيان أجد أن 64 00:03:22,270 --> 00:03:26,150 ببساطة غوغلينغ ما أريد أن أعرفه هو أفضل طريقة للعثور على الجواب. 65 00:03:26,150 --> 00:03:27,940 حتى ممارسة مع جوجل. 66 00:03:27,940 --> 00:03:28,600 الحصول على جيدة في جوجل. 67 00:03:28,600 --> 00:03:30,600 وسوف يصبح أفضل صديق. 68 00:03:30,600 --> 00:03:34,300 >> فضلا عن جوجل، إذا كنت لا يمكن العثور عليه على جوجل، cs50.net/discuss، انها 69 00:03:34,300 --> 00:03:35,550 منتدى المناقشة. 70 00:03:35,550 --> 00:03:39,390 هناك احتمالات إذا كان لديك سؤال، واحد من ك 700 + أقرانه له أيضا أن 71 00:03:39,390 --> 00:03:42,110 سؤال وربما تكون قد طلبت بالفعل في مناقشة 72 00:03:42,110 --> 00:03:43,540 المنتديات وانها قد أجاب. 73 00:03:43,540 --> 00:03:48,130 حتى إذا كان لديك سؤال أو مشتركة لديك سؤال أن كنت تعتقد 74 00:03:48,130 --> 00:03:52,300 ربما أشخاص آخرين قد واجهت، تحقق من cs50.net/discuss. 75 00:03:52,300 --> 00:03:55,450 >> أخيرا، وهما آخر، إذا كنت ترغب في التحدث مع انسان حقيقي، والمكاتب 76 00:03:55,450 --> 00:03:57,770 ساعات من الاثنين حتى الجمعة. 77 00:03:57,770 --> 00:04:00,850 هناك أيضا ساعات العمل على الانترنت للطلاب التمديد. 78 00:04:00,850 --> 00:04:04,370 وأخيرا وليس آخرا، لي، تعجب. 79 00:04:04,370 --> 00:04:05,960 لديك كل معلومات الاتصال الخاصة بي. 80 00:04:05,960 --> 00:04:11,940 إذا كنت بحاجة إلى أي شيء، من فضلك لا تتردد في الاتصال بي. 81 00:04:11,940 --> 00:04:14,020 دائما تتردد في القيام بذلك. 82 00:04:14,020 --> 00:04:17,490 وأضاف عدد قليل جدا من كنت لي على Gchat، بحيث كان مخيبا للآمال، 83 00:04:17,490 --> 00:04:20,410 ولكن نأمل أن سوف تتغير بين وهذا المقطع التالي. 84 00:04:20,410 --> 00:04:22,105 أي أسئلة حتى الآن على الموارد؟ 85 00:04:22,105 --> 00:04:25,670 86 00:04:25,670 --> 00:04:27,450 عظيم. 87 00:04:27,450 --> 00:04:34,280 >> أخيرا، والمكونات آخر ل ردود الفعل، sayat.me/cs50. 88 00:04:34,280 --> 00:04:37,050 هل يمكن ان تعطيني ردود الفعل المجهول على آدائي. 89 00:04:37,050 --> 00:04:38,320 كان ذلك مفيدا حقا الاسبوع الماضي. 90 00:04:38,320 --> 00:04:41,890 أنا حصلت على زوجين من التعليقات من يا رفاق الحق بعد القسم، بالإضافة إلى من 91 00:04:41,890 --> 00:04:44,750 غيرها من الطلاب الذين شاهدت ذلك خلال الأسبوع، وذلك 92 00:04:44,750 --> 00:04:46,830 كان لا يصدق مفيدة. 93 00:04:46,830 --> 00:04:50,250 وانا ذاهب الى محاولة الحد من استخدامي ل كلمة "حلوة"، ولكن سوف تظهر بلدي 94 00:04:50,250 --> 00:04:52,410 الحماس والإثارة بطرق أخرى. 95 00:04:52,410 --> 00:04:56,550 ولكن كانت هناك أخرى إضافية الردود الموضوعية، 96 00:04:56,550 --> 00:04:57,600 الإيجابيات ودلتا حد سواء. 97 00:04:57,600 --> 00:05:00,480 لذا يرجى، وأنا أعطيك ردود فعل الرجال على مجموعات مشكلتك. 98 00:05:00,480 --> 00:05:01,790 لا تتردد في أن تعطيني ردود الفعل على تدريسي. 99 00:05:01,790 --> 00:05:04,010 أنا هنا ليا رفاق. 100 00:05:04,010 --> 00:05:05,270 >> عظيم. 101 00:05:05,270 --> 00:05:07,020 وهذا هو كل ما لدي ل القسم الأول. 102 00:05:07,020 --> 00:05:08,565 هل لدى أي شخص أي أسئلة حتى الآن؟ 103 00:05:08,565 --> 00:05:12,370 104 00:05:12,370 --> 00:05:14,640 ولدي ملاحظة ل مركز التحكم. 105 00:05:14,640 --> 00:05:21,200 الطلاب التمديد قد بعث برسالة لي قائلا انهم لا يحصلون على أي صوت، 106 00:05:21,200 --> 00:05:23,870 ولكن هذا هو خارج السلطة جهدي لتصحيح. 107 00:05:23,870 --> 00:05:25,280 لذلك نأمل أن يحصل حل قريبا. 108 00:05:25,280 --> 00:05:28,850 إذا كنت أشاهد على الانترنت، مرحبا، ولكن لا تسمع لي. 109 00:05:28,850 --> 00:05:33,860 >> لذلك أولا، ونحن ذاهبون من خلال الذهاب الى GDB. 110 00:05:33,860 --> 00:05:37,100 GDB، وأنا ألمح في وقت سابق، هي أداة التصحيح 111 00:05:37,100 --> 00:05:39,040 أفضل بكثير من printf. 112 00:05:39,040 --> 00:05:44,700 حتى لتبدأ مع GDB، يا رفاق، إذا تريد فتح الجهاز الخاص بك 113 00:05:44,700 --> 00:05:49,070 وتأخذ الملف الذي أنا اليك بالبريد الالكتروني في وقت سابق - وسوف يكون هذا الملف أيضا 114 00:05:49,070 --> 00:05:51,940 متاحة على شبكة الإنترنت في قليلا - 115 00:05:51,940 --> 00:05:55,700 وتشغيل GDB. / اسم الملف. 116 00:05:55,700 --> 00:05:58,580 أولا، بطبيعة الحال، لديك لتجميع ملف GDB لأن يعمل فقط على 117 00:05:58,580 --> 00:05:59,890 الملفات القابلة للتنفيذ. 118 00:05:59,890 --> 00:06:02,300 >> لكن إذا كنت تريد من أي وقت مضى للبدء GDB، فإن أول شيء تفعله، 119 00:06:02,300 --> 00:06:04,550 تشغيل GDB. / قيصر. 120 00:06:04,550 --> 00:06:08,340 لذلك هذا هو اسم البرنامج نحن ذاهب للذهاب معها الآن. 121 00:06:08,340 --> 00:06:12,810 لذلك أنا أريد أن أكتب جعل قيصر، الذي سوف تعطيني ملف قابل للتنفيذ 122 00:06:12,810 --> 00:06:14,100 هنا أبرزت باللون الأخضر. 123 00:06:14,100 --> 00:06:19,250 ثم أنا ذاهب لتشغيل GDB. / سيزار. 124 00:06:19,250 --> 00:06:19,810 >> وهناك تذهب. 125 00:06:19,810 --> 00:06:24,540 ترى لدينا بعض النصوص تقول لي حول إصدار GDB، إعطائي 126 00:06:24,540 --> 00:06:27,570 بعض المعلومات الضمان، ومن ثم نحن يكون موجه الناتج المحلي الإجمالي، والتي تبدو نوعا 127 00:06:27,570 --> 00:06:29,350 من مثل لدينا موجه سطر الأوامر، ولكن ترى انها مفتوحة 128 00:06:29,350 --> 00:06:32,510 PAREN، GDB، PAREN قريبة. 129 00:06:32,510 --> 00:06:36,520 قبل أن نواصل والتصحيح هذا الملف أنني أرسلت لكم جميعا، دعونا ننظر في 130 00:06:36,520 --> 00:06:40,220 بعض الأوامر المفيدة لذلك لدينا شعور ما نحن ذاهبون لتغطية. 131 00:06:40,220 --> 00:06:45,060 >> يتم سرد هذه الأوامر هنا في الترتيب الذي أنا عموما استخدامها. 132 00:06:45,060 --> 00:06:50,230 لذلك أبدأ برنامجي عن طريق تشغيل دائرة الموازنة العامة. / اسم البرنامج، 133 00:06:50,230 --> 00:06:51,360 في هذه الحالة، قيصر. 134 00:06:51,360 --> 00:06:57,430 ومن ثم فإن أول شيء أقوم به 99.9٪ من وقت انقطاع نوع يعني. 135 00:06:57,430 --> 00:06:59,070 الذي يحدد نقطة فاصل في الرئيسية. 136 00:06:59,070 --> 00:07:03,260 أساسا، ما تفعلونه هناك والبرنامج هو الذهاب الى التوقف عند 137 00:07:03,260 --> 00:07:06,100 الرئيسية حتى تتمكن من البدء بدراسة ذلك الخط سطرا، بدلا من تشغيل جميع 138 00:07:06,100 --> 00:07:07,040 الطريق من خلال. 139 00:07:07,040 --> 00:07:09,730 يمكنك كسر في نقاط مختلفة في التعليمات البرمجية الخاصة بك، ولكن الرئيسي هو عموما 140 00:07:09,730 --> 00:07:11,870 مكان جيد للبدء. 141 00:07:11,870 --> 00:07:14,840 >> الأمر التالي هو أركض التشغيل. 142 00:07:14,840 --> 00:07:17,400 أن يبدأ البرنامج على التوالي، و إذا كنت بحاجة إلى إدخال سطر الأوامر 143 00:07:17,400 --> 00:07:19,090 الحجج، يمكنك تشغيله هذا الأمر. 144 00:07:19,090 --> 00:07:20,500 تشغيل مع الحجج. 145 00:07:20,500 --> 00:07:25,000 منذ ذلك نحن ذاهبون عبر إصدار من C، وهو البرنامج الذي الرجال 146 00:07:25,000 --> 00:07:26,160 كتب لpset اثنين - 147 00:07:26,160 --> 00:07:29,880 هذا واحد، بطبيعة الحال، لديه بعض الخلل في أن نأمل سوف تجد - 148 00:07:29,880 --> 00:07:32,810 ونحن في طريقنا لتشغيل المدى مع بعض الأوامر وسائط سطر لقيصر، 149 00:07:32,810 --> 00:07:34,860 كما كنت الرجال يعرفون في المشكلة ضبط المواصفات، ويأخذ بعض 150 00:07:34,860 --> 00:07:36,380 وسائط سطر الأوامر. 151 00:07:36,380 --> 00:07:40,000 >> القليلة القادمة من الأوامر، القادم في الواقع يسمى احد القادم. 152 00:07:40,000 --> 00:07:42,470 أن أحد يأخذك سطرا سطرا من خلال البرنامج. 153 00:07:42,470 --> 00:07:45,800 حتى ضرب ن ثم أدخل يأخذك إلى السطر التالي، وتنفيذ 154 00:07:45,800 --> 00:07:46,880 السطر السابق. 155 00:07:46,880 --> 00:07:49,440 خطوة يأخذ ليس فقط لك ل السطر التالي، ولكنه 156 00:07:49,440 --> 00:07:51,070 يأخذك وظائف في الداخل. 157 00:07:51,070 --> 00:07:54,310 لذلك إذا كنت قد كتبت في وظيفة رمز أو الخاص بك إذا كنت ترغب في استكشاف 158 00:07:54,310 --> 00:07:57,820 إلى i، على سبيل المثال، يمكنك ضرب ثانية، و بدلا من الذهاب إلى السطر التالي من 159 00:07:57,820 --> 00:08:02,390 الملف الذي كنت تريد الذهاب من خلال الحق الآن، عليك أن الخطوة فعلا في 160 00:08:02,390 --> 00:08:04,670 هذه الوظيفة وانظر التعليمات البرمجية الخاصة به. 161 00:08:04,670 --> 00:08:12,300 >> قائمة يظهر لك، في الاستعمال جدا تنسيق و10 أو حتى خطوط في جميع أنحاء 162 00:08:12,300 --> 00:08:14,940 أين أنت حاليا في التعليمات البرمجية حتى تتمكن من رؤية الواقع الملف 163 00:08:14,940 --> 00:08:17,810 بدلا من الاضطرار لمبادلة ذهابا و ذهابا بين وجهات نظر مختلفة. 164 00:08:17,810 --> 00:08:21,890 الطباعة مثل printf، كما يوحي اسمها. 165 00:08:21,890 --> 00:08:24,020 أن يظهر لك ما يساوي متغير. 166 00:08:24,020 --> 00:08:25,870 >> معلومات السكان المحليين مفيد حقا. 167 00:08:25,870 --> 00:08:27,740 هذا هو إصدار خاص من الطباعة. 168 00:08:27,740 --> 00:08:31,770 معلومات السكان المحليين يظهر لك كل من المحلية المتغيرات، يطبع كل منهم للكم 169 00:08:31,770 --> 00:08:33,380 المتوفرة حاليا. 170 00:08:33,380 --> 00:08:36,360 لذلك أنا عموما، بدلا من الاضطرار إلى طباعة المتغيرات الأربعة التي أنا 171 00:08:36,360 --> 00:08:39,929 غريبة عن إذا أنا في لحلقة، ل سبيل المثال، أنا فقط كتابة معلومات السكان المحليين، 172 00:08:39,929 --> 00:08:43,470 وسوف تظهر لي ما بلدي مكافحة ط يساوي، فضلا عن مجموعة بأني 173 00:08:43,470 --> 00:08:45,130 العمل على قدم المساواة. 174 00:08:45,130 --> 00:08:47,530 >> أخيرا، تواصل. 175 00:08:47,530 --> 00:08:49,300 كتابة كسر توقف لكم في نقطة فاصل. 176 00:08:49,300 --> 00:08:51,380 يمكنك المشي من خلال الخط من قبل تمشيا مع الخطوة التالية و. 177 00:08:51,380 --> 00:08:55,640 مواصلة تشغيل البرنامج الخاص بك المقبل كسر نقطة أو حتى الانتهاء إذا 178 00:08:55,640 --> 00:08:57,180 لم تكن هناك نقاط لكسر الارسال. 179 00:08:57,180 --> 00:09:00,060 تعطيل يزيل نقاط لكسر الارسال إذا كنت قررت وكان الخروج في الرئيسية 180 00:09:00,060 --> 00:09:01,890 غير مناسب، وتريد أن تعيينها في مكان آخر. 181 00:09:01,890 --> 00:09:05,090 وأخيرا ف، الإقلاع عن التدخين، يخرج من GDB. 182 00:09:05,090 --> 00:09:10,784 >> لذلك هذا البرنامج،. / قيصر، ونحن نذهب لننظر من خلال الوقت الراهن، ونحن 183 00:09:10,784 --> 00:09:13,490 سوف تستخدم للعثور على GDB الخلل في هذا البرنامج. 184 00:09:13,490 --> 00:09:18,110 ركضت هذا البرنامج في وقت سابق مع تحقق 50، وحصلت على عبوس واحدة. 185 00:09:18,110 --> 00:09:22,310 كل شيء كان موجودا، فإنه جمعها، فإنه مرت الكثير من الاختبارات، ولكن ل 186 00:09:22,310 --> 00:09:27,950 سبب ما، فإنه لم يمر على الخامس الاختبار، وتحول BARFOO، كل مباراة دولية، في 187 00:09:27,950 --> 00:09:33,350 E-D-U-I-R-R، كل مباراة دولية، باستخدام ثلاثة كمفتاح. 188 00:09:33,350 --> 00:09:34,090 حصلت على وثيقة جدا. 189 00:09:34,090 --> 00:09:35,410 نزلت بواسطة حرف واحد. 190 00:09:35,410 --> 00:09:37,340 لذلك هناك بعض خطأ صغير هنا. 191 00:09:37,340 --> 00:09:38,070 لقد بدا من خلال قانون بلدي. 192 00:09:38,070 --> 00:09:38,850 أنا لا يمكن أن الرقم بها. 193 00:09:38,850 --> 00:09:41,740 نأمل، يمكن يا رفاق مساعدتي معرفة ما هو هذا الخطأ. 194 00:09:41,740 --> 00:09:44,610 >> ذلك أن الخطأ نحن تبحث عنه. 195 00:09:44,610 --> 00:09:46,090 دعنا ننتقل إلى GDB. 196 00:09:46,090 --> 00:09:51,100 مرة أخرى، لقد تشغيل GDB. / قيصر، وحتى الآن نحن في GDB. 197 00:09:51,100 --> 00:09:54,290 وما هو الأولى شيء يجب أن أقوم به؟ 198 00:09:54,290 --> 00:09:56,680 لقد دخلت للتو GDB. 199 00:09:56,680 --> 00:10:00,316 شخص ما تعطيني جيدة الأوامر لدخول. 200 00:10:00,316 --> 00:10:01,140 >> الطالب: كسر الرئيسي. 201 00:10:01,140 --> 00:10:01,800 >> JASON هيرشهورن: كسر الرئيسي. 202 00:10:01,800 --> 00:10:02,900 رائعة. 203 00:10:02,900 --> 00:10:03,560 دعونا اكتب فيها أن 204 00:10:03,560 --> 00:10:06,390 يمكنك مشاهدة الرجال هنا أو اتباع جنبا إلى جنب على أجهزة الكمبيوتر. 205 00:10:06,390 --> 00:10:09,410 كسر الرئيسي، وسترى تم تعيين نقطة فاصل في - 206 00:10:09,410 --> 00:10:12,340 انه يعطيني بعض عنوان الذاكرة غريبة، وأنه يعطي لي أيضا رقم السطر. 207 00:10:12,340 --> 00:10:15,310 إذا كان لي أن ننظر إلى الوراء في هذا الملف، وأود أن ندرك أن الرئيسي 208 00:10:15,310 --> 00:10:17,700 حدث في خط 21. 209 00:10:17,700 --> 00:10:18,950 ما يجب أن أركض في المرة القادمة؟ 210 00:10:18,950 --> 00:10:22,970 211 00:10:22,970 --> 00:10:25,060 وبرنامجي تشغيل؟ 212 00:10:25,060 --> 00:10:25,650 لا. 213 00:10:25,650 --> 00:10:27,175 ذلك ما ينبغي أن أركض في المرة القادمة؟ 214 00:10:27,175 --> 00:10:27,520 >> الطالب: تشغيل. 215 00:10:27,520 --> 00:10:28,050 >> JASON هيرشهورن: تشغيل. 216 00:10:28,050 --> 00:10:30,760 يجب أن مجرد تشغيل المدى، أو ينبغي أود أن أضيف بعض الأشياء الأخرى في؟ 217 00:10:30,760 --> 00:10:31,960 >> الطالب: تشغيل مع الحجة. 218 00:10:31,960 --> 00:10:33,320 >> JASON هيرشهورن: تشغيل مع الحجج الأوامر. 219 00:10:33,320 --> 00:10:36,420 ومنذ أنا التصحيح محددة جدا الحالة، يجب أن الدخول في هذا 220 00:10:36,420 --> 00:10:37,120 وسيطة سطر الأوامر. 221 00:10:37,120 --> 00:10:42,290 ولذا فإنني سوف لا تشغيل ثلاثة، والذي هو، مرة أخرى، الإخراج حصلت عليها من تحقق 50. 222 00:10:42,290 --> 00:10:44,240 بدء تشغيل البرنامج. 223 00:10:44,240 --> 00:10:45,420 نذهب من خلال بضعة أسطر. 224 00:10:45,420 --> 00:10:47,700 سترى الآن أن نحن على خط 21. 225 00:10:47,700 --> 00:10:49,200 كيف لي أن أعرف أننا على خط 21؟ 226 00:10:49,200 --> 00:10:52,170 لأنه إذا نظرتم إلى اليسار من نافذة محطة بلدي، وهناك 227 00:10:52,170 --> 00:10:53,120 تقول خط 21. 228 00:10:53,120 --> 00:10:57,010 والذي يعطي لي، في الواقع، و التعليمات البرمجية التي هي في خط 21. 229 00:10:57,010 --> 00:10:58,440 لذلك أنا اخطأ في وقت سابق. 230 00:10:58,440 --> 00:10:59,770 الرئيسية ليست في الواقع في خط 21. 231 00:10:59,770 --> 00:11:02,000 الرئيسي هو بضعة أسطر أعلاه 21. 232 00:11:02,000 --> 00:11:04,300 ولكن في السطر 21، وهذا أين نحن كسر. 233 00:11:04,300 --> 00:11:06,280 هذا سطر من التعليمات البرمجية لديها لم ينفذ حتى الآن. 234 00:11:06,280 --> 00:11:06,890 هذا أمر مهم. 235 00:11:06,890 --> 00:11:09,120 خط ترى لم أعدم حتى الآن. 236 00:11:09,120 --> 00:11:12,650 هذا هو السطر التالي من التعليمات البرمجية كنت على وشك أن تنفذ. 237 00:11:12,650 --> 00:11:15,860 >> حتى السطر التالي، وأنتم ربما دراية، وهذا هو 238 00:11:15,860 --> 00:11:20,070 حالة التحقق لمعرفة ما إذا كان لدي دخل وسيطة سطر الأوامر. 239 00:11:20,070 --> 00:11:22,140 وإلى i، ما هو الثاني جزء من ذلك تفعل؟ 240 00:11:22,140 --> 00:11:23,457 ما هو إلى i؟ 241 00:11:23,457 --> 00:11:24,950 >> الطالب: تغيير ذلك إلى عدد صحيح. 242 00:11:24,950 --> 00:11:25,450 >> JASON هيرشهورن: عذرا؟ 243 00:11:25,450 --> 00:11:27,400 >> الطالب: انها تغيير حجة إلى عدد صحيح. 244 00:11:27,400 --> 00:11:30,890 >> JASON هيرشهورن: لذا فإن لط يتغير ARG V1 من سلسلة إلى عدد صحيح. 245 00:11:30,890 --> 00:11:32,140 ثم ما هو التدقيق؟ 246 00:11:32,140 --> 00:11:35,414 247 00:11:35,414 --> 00:11:37,112 >> الطالب: إذا كان هناك الثانية وسيطة سطر الأوامر، جانبا 248 00:11:37,112 --> 00:11:38,100 من تشغيل البرنامج. 249 00:11:38,100 --> 00:11:39,460 >> JASON هيرشهورن: وما هو في النصف الثاني من هذا 250 00:11:39,460 --> 00:11:41,220 التحقق التعبير منطقية؟ 251 00:11:41,220 --> 00:11:42,540 هذا الجزء أكثر من هنا، وإلى i؟ 252 00:11:42,540 --> 00:11:44,080 >> الطالب: اذا كان سلبيا. 253 00:11:44,080 --> 00:11:45,380 >> JASON هيرشهورن: التأكد من ماذا؟ 254 00:11:45,380 --> 00:11:47,120 >> الطالب: التأكد من ذلك هو، في الواقع، إيجابية. 255 00:11:47,120 --> 00:11:47,650 >> JASON هيرشهورن: بالضبط. 256 00:11:47,650 --> 00:11:50,600 هذا هو التحقق لمعرفة ما اذا كان السلبية، وإذا كان هو سلبي، وأنا 257 00:11:50,600 --> 00:11:53,220 لدي شعور جبروت السطر التالي أن لي يصرخ في المستخدم. 258 00:11:53,220 --> 00:11:55,930 لذلك دعونا ضرب حد لتنفيذ هذا الخط. 259 00:11:55,930 --> 00:11:59,925 نحن لا نرى أن الخط الذي الرجال من المتوقع أن نرى ربما يصرخ في 260 00:11:59,925 --> 00:12:03,030 المستخدم ومن ثم العودة، وذلك لأن لم يتم تنفيذ هذا الخط. 261 00:12:03,030 --> 00:12:03,840 دخلت 3. 262 00:12:03,840 --> 00:12:06,860 لذلك أنا لم، في الواقع، أدخل اثنين من الأوامر وسائط سطر، و 3 هو 263 00:12:06,860 --> 00:12:07,610 أكبر من الصفر. 264 00:12:07,610 --> 00:12:09,950 لذلك رأينا أن الخط، ونحن تنفيذها، لكننا لم تتدخل 265 00:12:09,950 --> 00:12:11,300 داخل إذا كان الشرط. 266 00:12:11,300 --> 00:12:17,060 >> وحتى الآن، المقبل، أرى أنا وضع مفتاح كثافة يساوي إلى i ARG V1. 267 00:12:17,060 --> 00:12:18,840 حتى لا يكون لي خلق مفتاح متغير. 268 00:12:18,840 --> 00:12:22,450 حتى لو كنت تطبع الرئيسية في الوقت الراهن، لأن الذي يسمح لك أن ترى 269 00:12:22,450 --> 00:12:26,040 القيمة داخل متغير، المفتاح يساوي 47. 270 00:12:26,040 --> 00:12:28,810 هذا غريب، ولكن بطبيعة الحال، هذا لأنني لم 271 00:12:28,810 --> 00:12:30,490 تنفيذ هذا الخط حتى الآن. 272 00:12:30,490 --> 00:12:35,880 حتى الآن إذا أنا ضربت ن، تنفيذ هذا الخط، والقيام مفتاح الطباعة، والمفتاح يساوي 3، 273 00:12:35,880 --> 00:12:37,740 وهو ما نتوقع أن يساوي. 274 00:12:37,740 --> 00:12:41,170 >> ذلك مرة أخرى، في GDB، الخط الذي أراك لم ينفذ بعد. 275 00:12:41,170 --> 00:12:44,850 عليك ان تضرب ن ق أو أو عدد من أوامر أخرى إلى الواقع 276 00:12:44,850 --> 00:12:46,610 تنفيذ هذا الخط. 277 00:12:46,610 --> 00:12:47,380 مفتاح الطباعة. 278 00:12:47,380 --> 00:12:48,280 والمفتاح في 3. 279 00:12:48,280 --> 00:12:49,750 حتى الان جيدة جدا. 280 00:12:49,750 --> 00:12:51,000 سلسلة هو نص عادي. 281 00:12:51,000 --> 00:12:52,270 دعونا تنفيذ هذا الخط. 282 00:12:52,270 --> 00:12:53,970 أنا الحصول على سلسلة من المستخدم. 283 00:12:53,970 --> 00:12:58,690 >> دعونا نرى في بلدي تحقق 50، وأنا دخول BARFOO كل مباراة دولية، لذلك 284 00:12:58,690 --> 00:13:01,330 هذا ما سوف تدخل. 285 00:13:01,330 --> 00:13:07,300 إذا أنا الآن طباعة نص عادي. 286 00:13:07,300 --> 00:13:08,610 سترى أنه يساوي سلسلة. 287 00:13:08,610 --> 00:13:11,100 انه يعطيني بعض الست عشري غريبة أخرى العدد، ولكنه في 288 00:13:11,100 --> 00:13:13,620 الواقع يقول أن سلسلة بلدي BARFOO. 289 00:13:13,620 --> 00:13:19,308 إذا أردت أن أرى ما يعادل الرئيسية في هذه النقطة، كيف يمكن أن تحقق المفتاح؟ 290 00:13:19,308 --> 00:13:20,710 >> الطالب: مفتاح طباعة. 291 00:13:20,710 --> 00:13:22,010 >> JASON هيرشهورن: مفتاح طباعة، بالضبط. 292 00:13:22,010 --> 00:13:23,260 وفعلا، وهناك اختصار. 293 00:13:23,260 --> 00:13:25,910 إذا كنت تتعب من الكتابة والطباعة، يمكنك فقط اكتب ع. 294 00:13:25,910 --> 00:13:28,340 حتى ع مفتاح يفعل الشيء نفسه بالضبط. 295 00:13:28,340 --> 00:13:29,730 ومرة أخرى، أرى أنه يساوي 3. 296 00:13:29,730 --> 00:13:34,760 >> إذا أردت أن تعرف ما حد سواء الرئيسية ويعادل BARFOO في نفس الوقت 297 00:13:34,760 --> 00:13:37,215 لكنني كنت تعبت من كتابة كل واحد من أصل كل على حدة، وأنا 298 00:13:37,215 --> 00:13:38,590 يمكن كتابة معلومات السكان المحليين. 299 00:13:38,590 --> 00:13:41,170 أن يعطيني المفتاح يساوي 3. 300 00:13:41,170 --> 00:13:42,500 نص عادي يساوي BARFOO. 301 00:13:42,500 --> 00:13:45,265 انه يعطيني أيضا هذه أشياء غريبة اثنين في القمة، هذا المتغير i و 302 00:13:45,265 --> 00:13:46,590 هذا ن متغير. 303 00:13:46,590 --> 00:13:48,460 >> تلك الموجودة في الواقع و في برنامجي الرئيسي. 304 00:13:48,460 --> 00:13:51,280 نحن لم اجه منهم حتى الآن، ولكن بوصفها المعاينة، وتلك 305 00:13:51,280 --> 00:13:52,880 توجد في بلدي للحلقة. 306 00:13:52,880 --> 00:13:55,360 حتى الآن، فإنها تساوي بعض غريب الأرقام لأنها لم تكن 307 00:13:55,360 --> 00:13:58,300 تهيئة بعد، لكنها لا تزال موجودة في الذاكرة، حتى انهم مجرد مجموعة 308 00:13:58,300 --> 00:14:00,220 لبعض القيمة القمامة. 309 00:14:00,220 --> 00:14:02,890 لكننا نرى الرئيسية في سهل النص هناك حق. 310 00:14:02,890 --> 00:14:06,390 >> لذلك أنا ذاهب لتنفيذ هذا الخط، خط 34، وللحلقة. 311 00:14:06,390 --> 00:14:08,220 ونحن في طريقنا إلى القفز في للحلقة من خلال ضرب ن. 312 00:14:08,220 --> 00:14:10,050 ونحن داخل لحلقة. 313 00:14:10,050 --> 00:14:11,360 نحن في الاختيار الأول. 314 00:14:11,360 --> 00:14:14,300 ومرة أخرى، وهذه يجب أن ننظر نوع من مألوفة بالنسبة لك لأن هذا كان 315 00:14:14,300 --> 00:14:18,080 برنامج قيصر التي تم كتابتها، ولكن مرة أخرى، لديه نوعا من الشوائب. 316 00:14:18,080 --> 00:14:21,940 >> والآن إذا كنت تفعل معلومات السكان المحليين، لأنني داخل هذا للحلقة، سترى 317 00:14:21,940 --> 00:14:23,900 أنني يساوي الصفر، كما نتوقع. 318 00:14:23,900 --> 00:14:26,820 هذا ما وضعناها لتهيئة و لأنه في لحلقة. 319 00:14:26,820 --> 00:14:27,560 ن يساوي 6. 320 00:14:27,560 --> 00:14:30,700 أن من المنطقي أيضا لأن وضعنا إلى strlen من النص العادي. 321 00:14:30,700 --> 00:14:34,270 لذلك أود أن تفعل معلومات من السكان المحليين أو الطباعة لمتغير في كثير من الأحيان للتأكد من أن 322 00:14:34,270 --> 00:14:36,370 كل شيء هو دائما ما أتوقع أن تساوي. 323 00:14:36,370 --> 00:14:39,800 في هذه الحالة، كل شيء ما أتوقع أن تساوي. 324 00:14:39,800 --> 00:14:41,850 >> لذلك دعونا نبدأ التحرك من خلال هذا للحلقة. 325 00:14:41,850 --> 00:14:45,715 خط أنا على الخط هو 36، إذا عادي ط النص هو أكبر من العادي و 326 00:14:45,715 --> 00:14:48,540 ط النص هو أقل من أو يساوي إلى الياء. 327 00:14:48,540 --> 00:14:51,880 أنا أعرف مشكلتي ليست مع بلدي الأول الرسالة، انها مع الرسالة الثانية. 328 00:14:51,880 --> 00:14:56,290 إذا نظرنا إلى الوراء في تحقق 50، B يذهب إلى E يرام. 329 00:14:56,290 --> 00:14:59,010 أنا أخذ ألف وتركها كما على ألف، وليس تغييره لذلك D. 330 00:14:59,010 --> 00:15:00,200 شيء هو الخطأ مع الرسالة الثانية. 331 00:15:00,200 --> 00:15:01,640 لذلك أنا ذاهب الى التحرك هناك في الثانية. 332 00:15:01,640 --> 00:15:06,030 >> ولكن إذا لم ترغب في التحقق ما سهل النص الأول في هذا يعادل خاصة 333 00:15:06,030 --> 00:15:07,760 القضية، وأعتقد أنه يجب أن يكون ماذا؟ 334 00:15:07,760 --> 00:15:10,980 ما ينبغي نص عادي أنا يساوي في هذا الجولة الأولى من خلال لحلقة؟ 335 00:15:10,980 --> 00:15:14,046 336 00:15:14,046 --> 00:15:15,110 >> الطالب: صفر؟ 337 00:15:15,110 --> 00:15:16,510 >> JASON هيرشهورن: نص عادي من أنا؟ 338 00:15:16,510 --> 00:15:21,180 لذلك ينبغي أن يكون رأس المال B. أنا، بالطبع، يساوي الصفر، ولكن نص عادي 339 00:15:21,180 --> 00:15:25,600 قوس قوس مغلقة يساوي الصفر B لأن السلاسل، كما رأينا الأسبوع الماضي، 340 00:15:25,600 --> 00:15:28,650 هي مجموعة، لذلك نحن الحصول على الحرف الأول من ذلك. 341 00:15:28,650 --> 00:15:34,960 ذلك مرة أخرى، إذا كنت تطبع النص العادي أنا، أنا لا، في الواقع، والحصول على شخصية 342 00:15:34,960 --> 00:15:36,560 B. وهذا هو أنيق، أليس كذلك؟ 343 00:15:36,560 --> 00:15:40,380 ليس لدي في الواقع نص عادي I. هذا ليس واحدا من المتغيرات أحدد 344 00:15:40,380 --> 00:15:42,950 أو تهيئة، ولكن يمكنك طباعة من مجموعة كاملة من الأشياء 345 00:15:42,950 --> 00:15:45,640 إذا كنت ترغب في. 346 00:15:45,640 --> 00:15:47,340 >> ولكن دعنا ننتقل من خلال. 347 00:15:47,340 --> 00:15:50,050 إذا نص عادي أنا أكبر من ألف و نص عادي أنا أقل من أو يساوي 348 00:15:50,050 --> 00:15:53,290 Z، وهذا هو بوضوح صحيح لأن لدينا وB. العاصمة انا ذاهب لتشغيل 349 00:15:53,290 --> 00:15:54,230 بعض الأوامر على ذلك. 350 00:15:54,230 --> 00:15:58,530 رأينا أن الرياضيات في الأسبوع الماضي، لذلك سنقوم أعتبر أمرا مفروغا منه أنه يعمل 351 00:15:58,530 --> 00:16:00,900 الحق وفقا لتحقق 50. 352 00:16:00,900 --> 00:16:03,720 >> هذه الأقواس المتعرجة، أول واحد وأظهرت أنني كنت الخروج من إذا 353 00:16:03,720 --> 00:16:07,030 الشرط، والثاني أظهر أنني الخروج من حلقة ل. 354 00:16:07,030 --> 00:16:10,400 وحتى الآن عندما ضرب المقبل، سنرى نعود في لحلقة مرة أخرى. 355 00:16:10,400 --> 00:16:11,970 ونحن في طريقنا من خلال لحلقة مرة أخرى. 356 00:16:11,970 --> 00:16:18,110 دعونا الخطوة فعلا في الثانية التكرار من أجل حلقة ونوع 357 00:16:18,110 --> 00:16:20,520 معلومات السكان المحليين. 358 00:16:20,520 --> 00:16:22,190 >> لذلك نحن في التكرار الثاني من لدينا حلقة. 359 00:16:22,190 --> 00:16:24,530 أنا يساوي 1، والتي نتوقع. 360 00:16:24,530 --> 00:16:26,650 N يساوي 6، والتي نتوقع. 361 00:16:26,650 --> 00:16:28,810 المفتاح يساوي 3، والتي نتوقع. 362 00:16:28,810 --> 00:16:32,625 والنص العادي، سترى، يساوي EARFOO الآن، وليس بعد الآن لأن BARFOO 363 00:16:32,625 --> 00:16:37,930 لدينا في التكرار السابقة، كان B غيرت الى العاصمة E. لذلك نحن على وشك 364 00:16:37,930 --> 00:16:40,040 لمواجهة هذه المشكلة، لذلك هذا هو المكان الذي نحن ذاهبون ل 365 00:16:40,040 --> 00:16:41,130 يغوص في التصحيح. 366 00:16:41,130 --> 00:16:43,365 ولكن لا أحد لديك أي أسئلة حول ما فعلناه حتى الآن؟ 367 00:16:43,365 --> 00:16:46,770 368 00:16:46,770 --> 00:16:47,910 رائعة. 369 00:16:47,910 --> 00:16:52,710 >> لذلك نحن على وشك تنفيذ هذا إذا حالة، وقوس نص عادي أغلقت 370 00:16:52,710 --> 00:16:57,500 قوس أكبر من ألف ونص عادي أنا أقل من أو يساوي Z. ولكن قبل 371 00:16:57,500 --> 00:17:00,450 أذهب إلى ذلك، لأن هذا هو المكان أنا أعرف بلدي هو الخطأ، وأنا أريد أن أشير 372 00:17:00,450 --> 00:17:06,859 من النص العادي الأول لذلك دعونا نضع الطباعة بها. 373 00:17:06,859 --> 00:17:12,020 فإنه لا يساوي حرف A، بحيث يبدو حتى الآن، كل شيء حسن وجيد. 374 00:17:12,020 --> 00:17:14,740 >> لذلك أتوقع هذا الخط في المنطق بلدي، وينبغي أن يكون هذا الخط الصحيح. 375 00:17:14,740 --> 00:17:16,099 انها حرف. 376 00:17:16,099 --> 00:17:20,599 ولكن إذا أنا ضربت ن، ونحن لا ندرك أن هذا الخط، في واقع الأمر، ولم يتم تنفيذه. 377 00:17:20,599 --> 00:17:22,609 قفزت وصولا الى آخر إذا. 378 00:17:22,609 --> 00:17:25,460 لماذا حدث ذلك؟ 379 00:17:25,460 --> 00:17:27,480 >> الطالب: لأن لديك حالتك من نص عادي أكبر 380 00:17:27,480 --> 00:17:29,130 من A، لا يساوي أو أكبر من. 381 00:17:29,130 --> 00:17:32,260 >> JASON هيرشهورن: لذا كان لي نص عادي أنا أكبر من A، ليس أكبر 382 00:17:32,260 --> 00:17:32,850 من أو يساوي. 383 00:17:32,850 --> 00:17:38,130 بكل وضوح، عاصمة A لم يؤدي هذا اذا كان الشرط، وفعلنا 384 00:17:38,130 --> 00:17:40,520 لا خطوة في ذلك، وفعلنا لا تفعل التحول اللازمة. 385 00:17:40,520 --> 00:17:41,360 لذلك هذا كل شيء، في الواقع. 386 00:17:41,360 --> 00:17:42,920 فكنت أحسب بلدي الشوائب. 387 00:17:42,920 --> 00:17:46,775 أنا يمكن أن أعود في ملف مصدر بلدي، تغييره، وتحديثه و 388 00:17:46,775 --> 00:17:47,855 تشغيل تحقق 50 مرة أخرى. 389 00:17:47,855 --> 00:17:52,590 >> ولكن سنرى، لمجرد التربية و أجل، إذا كنت الاستمرار. 390 00:17:52,590 --> 00:17:59,580 وآخر إذا لم يتم تنفيذ سواء، ولكن ما بدلا يساوي هو الأمر 391 00:17:59,580 --> 00:18:00,500 لا تغيير. 392 00:18:00,500 --> 00:18:04,840 حتى انها لم تتغير على الإطلاق، وإذا كنت طباعة نص عادي هنا، سنرى الذهاب 393 00:18:04,840 --> 00:18:08,250 من خلال ذلك للحلقة لم يكن، في الواقع، تغيير ذلك الحرف الثاني على الإطلاق. 394 00:18:08,250 --> 00:18:09,600 انها لا تزال العاصمة A. 395 00:18:09,600 --> 00:18:12,690 >> ذلك مرة أخرى، ونحن تصحيحه خطأ لدينا. 396 00:18:12,690 --> 00:18:17,380 أدركنا أن هناك بعض المنطق في عداد المفقودين. 397 00:18:17,380 --> 00:18:20,590 ونحن تصحيحه ذلك في وقت مبكر قبل في الواقع تنفيذ هذا الخط، 398 00:18:20,590 --> 00:18:24,320 ولكن كنت قد لاحظت كان لدينا فقط ضرب التالي والقفز إلى أن آخر إذا، 399 00:18:24,320 --> 00:18:26,710 وهذا يعني أن هذا الشرط إذا لم يكن صحيحا. 400 00:18:26,710 --> 00:18:29,550 لم نكن، في الواقع، والحصول على نتيجة توقعنا. 401 00:18:29,550 --> 00:18:33,240 حتى ذلك الحين نحن كان يمكن المطالبة، كان نحن لم المخضرمين ذلك، للنظر في 402 00:18:33,240 --> 00:18:38,510 أنه إذا شرط ومعرفة ما اذا كان، في الواقع، اوضاعنا ينبغي تقييم ل 403 00:18:38,510 --> 00:18:41,150 صحيح في السياق الحالي. 404 00:18:41,150 --> 00:18:42,880 >> هذا كل شيء لتصحيح هذا البرنامج. 405 00:18:42,880 --> 00:18:45,340 هل لدى أي شخص أي أسئلة؟ 406 00:18:45,340 --> 00:18:50,486 ما الأمر يمكن أنا ضربت لإنهاء GDB؟ 407 00:18:50,486 --> 00:18:53,900 Q. ثم سأكون المطالبة، الإقلاع عن التدخين على أية حال؟ 408 00:18:53,900 --> 00:18:54,390 نعم أو لا. 409 00:18:54,390 --> 00:18:58,440 أنا سوف تصل نعم، وسأكون قد استقال GDB. 410 00:18:58,440 --> 00:19:00,860 >> لذلك كان على أن التمهيدي السريع لGDB. 411 00:19:00,860 --> 00:19:03,430 في الواقع، في سيناريو حقيقي، فعلت ذلك في ساعات العمل. 412 00:19:03,430 --> 00:19:06,710 أنا GDBed هذا البرنامج المحدد في ساعات العمل مع الطلاب. 413 00:19:06,710 --> 00:19:12,410 وإذا رجعنا إلى الأوامر رأينا من قبل، كنا استراحة الرئيسي، الأول 414 00:19:12,410 --> 00:19:13,190 شيء فعلناه. 415 00:19:13,190 --> 00:19:16,060 كنا المدى مع وسائط سطر الأوامر، الشيء الثاني فعلنا. 416 00:19:16,060 --> 00:19:18,520 كنا المقبل الكثير للتحرك لنا من خلال خطوط. 417 00:19:18,520 --> 00:19:20,310 ومرة أخرى، مقطعة من هو ن المقبل. 418 00:19:20,310 --> 00:19:22,920 هذا في الأقواس في الرمادي على الشريحة. 419 00:19:22,920 --> 00:19:28,590 >> لم نستخدم الخطوة، لكننا لم تحتاج بالضرورة للهذه القضية. 420 00:19:28,590 --> 00:19:32,150 ولكننا قد تستخدم في بعض الشيء في وقت لاحق على اليوم لو أننا التصحيح، ل 421 00:19:32,150 --> 00:19:36,500 عندما سبيل المثال، البحث الثنائي ثنائي ويسمى البحث في منفصلة 422 00:19:36,500 --> 00:19:38,200 ولكن هناك وظيفة بعض الخطأ معها. 423 00:19:38,200 --> 00:19:40,440 نحن ذاهبون الى يريد أن يتدخل في الدعوة إلى البحث الثنائي و 424 00:19:40,440 --> 00:19:41,840 تصحيح فعلا. 425 00:19:41,840 --> 00:19:45,130 قائمة لم نستخدم إما لأننا كان ل شعور جيد من التعليمات البرمجية لدينا، ولكن إذا أنا 426 00:19:45,130 --> 00:19:48,420 لم ترغب في الحصول على شعور ما أنا رمز وكان حولها، ويمكنني أن مجرد استخدام القائمة. 427 00:19:48,420 --> 00:19:50,310 >> طباعة كنا، معلومات السكان المحليين كنا. 428 00:19:50,310 --> 00:19:53,260 مواصلة نحن لم تكن في حاجة لاستخدامها في هذه الحالة، لا لم نحن بحاجة إلى استخدام 429 00:19:53,260 --> 00:19:55,060 إنهاء تعطيل، ولكن فعلنا الاستخدام. 430 00:19:55,060 --> 00:19:57,850 مرة أخرى، هذه الأوامر 10، يمارسونها. 431 00:19:57,850 --> 00:20:00,770 إذا فهمت هذه الأوامر 10، يجب أن يتم تعيين لتصحيح أي 432 00:20:00,770 --> 00:20:02,525 إصدار مع GDB. 433 00:20:02,525 --> 00:20:05,230 434 00:20:05,230 --> 00:20:08,420 >> لذلك نحن على وشك الذهاب على، مرة أخرى، إلى جوهر القسم اليوم، والذهاب أكثر 435 00:20:08,420 --> 00:20:09,720 هذه الفرز والبحث الخوارزميات. 436 00:20:09,720 --> 00:20:14,075 قبل ان نفعل ذلك، مرة أخرى، على أية أسئلة، تعليقات والمخاوف لGDB؟ 437 00:20:14,075 --> 00:20:16,750 438 00:20:16,750 --> 00:20:20,960 لذلك الجميع ذاهب الى استخدام GDB بدلا من printf؟ 439 00:20:20,960 --> 00:20:24,550 لذلك الجميع، لأجل الأبد، و الجميع الايماء رئيس حقهم 440 00:20:24,550 --> 00:20:27,400 الآن، لذلك سوف أرى لك في ساعات العمل وجميع TFS سوف أراك و 441 00:20:27,400 --> 00:20:29,460 سيقولون، وتبين لي كيفية استخدام GDB، وعليك أن تكون قادرا 442 00:20:29,460 --> 00:20:31,240 لتبين لهم، أليس كذلك؟ 443 00:20:31,240 --> 00:20:31,760 نوع من؟ 444 00:20:31,760 --> 00:20:32,640 ربما نأمل. 445 00:20:32,640 --> 00:20:33,670 بارد. 446 00:20:33,670 --> 00:20:35,790 >> لذلك نحن ذاهبون للانتقال إلى الفرز والبحث. 447 00:20:35,790 --> 00:20:40,710 سترى لدي قائمة تم فرزها بالفعل بالنسبة لنا، ولكن هذا لن 448 00:20:40,710 --> 00:20:42,220 ليكون هذا هو الحال دائما. 449 00:20:42,220 --> 00:20:49,170 وذلك في مشكلة تحديد مواصفات مشكلة تعيين ثلاثة، لديك شورت 450 00:20:49,170 --> 00:20:51,410 أنه يمكنك مشاهدة، وفعلا يسألك لمشاهدة تلك السراويل. 451 00:20:51,410 --> 00:20:55,090 أيضا في محاضرة الأسبوع الماضي، ذهبنا أكثر الكثير من هذه الخوارزميات، لذلك أنا 452 00:20:55,090 --> 00:20:59,150 لن قضاء بعض الوقت في الصف ذاهب أكثر هذه الخوارزميات مرة أخرى أو الرسم 453 00:20:59,150 --> 00:21:01,130 صور لكيف يمكن لهذه العمل الخوارزميات. 454 00:21:01,130 --> 00:21:04,030 مرة أخرى، أن المعلومات التي يمكن إعادة الساعات محاضرة، أو أن المعلومات 455 00:21:04,030 --> 00:21:08,570 يتم التقاط رائع على السراويل لعمليات البحث هذه، كل 456 00:21:08,570 --> 00:21:10,920 وهي متوافرة في cs50.net. 457 00:21:10,920 --> 00:21:14,200 >> لذا بدلا من ذلك، ما نحن ذاهبون ل القيام به هو كتابة هذه البرامج. 458 00:21:14,200 --> 00:21:18,190 لدينا شعور، وهذا نموذج العقلية، كيف يعملون فيها، وذلك ما نحن ذاهبون 459 00:21:18,190 --> 00:21:20,210 القيام به هو رمز لهم لريال مدريد. 460 00:21:20,210 --> 00:21:23,430 ونحن في طريقنا لتحويل هذا النموذج العقلي، تلك الصورة، اذا صح التعبير، في 461 00:21:23,430 --> 00:21:24,960 الرمز الفعلي. 462 00:21:24,960 --> 00:21:28,460 وإذا كنتم قليلا الخلط أو ضبابي على نموذج العقلية، أنا تماما 463 00:21:28,460 --> 00:21:28,770 فهم. 464 00:21:28,770 --> 00:21:30,540 >> نحن لن فعلا ل القفز إلى رمز فورا. 465 00:21:30,540 --> 00:21:36,030 ذلك في حين أن هذا موجه في هذه الشريحة يسأل لك رمز البحث الثنائي، و 466 00:21:36,030 --> 00:21:39,470 في الواقع، نسخة تكرارية من البحث الثنائي، فإن أول شيء أنا 467 00:21:39,470 --> 00:21:42,370 نريد حقا لك القيام به هو كتابة بعض شبة الكود. 468 00:21:42,370 --> 00:21:47,020 بحيث يكون لديك هذا النموذج العقلي كيف يعمل البحث الثنائي. 469 00:21:47,020 --> 00:21:50,060 تأخذ بها ورقة إذا كان لديك واحدة متاحة بسهولة، أو فتح 470 00:21:50,060 --> 00:21:52,520 محرر النص، وأود الجميع في الكتابة. 471 00:21:52,520 --> 00:21:57,470 تستغرق أربع دقائق لكتابة شبة الكود للبحث ثنائي. 472 00:21:57,470 --> 00:21:58,990 >> مرة أخرى، والتفكير في هذا النموذج العقلي. 473 00:21:58,990 --> 00:22:01,980 سآتي حول إذا كانت لديك أسئلة ويمكننا رسم الصورة بها. 474 00:22:01,980 --> 00:22:06,220 ولكن أولا، قبل أن نبدأ البرمجة، أود أن أكتب 475 00:22:06,220 --> 00:22:09,920 شبة الكود للبحث ثنائي حتى عندما و الغوص في، لدينا بعض الاتجاه كما 476 00:22:09,920 --> 00:22:12,110 إلى المكان الذي يجب أن يتوجه. 477 00:22:12,110 --> 00:22:15,330 >> الطالب: هل يمكننا تحمل مجموعة من يتم فرز القيم نحصل بالفعل؟ 478 00:22:15,330 --> 00:22:17,960 >> JASON هيرشهورن: إذن للبحث ثنائي للعمل - سؤال ممتاز - كنت 479 00:22:17,960 --> 00:22:20,970 يجب أن تأخذ في فرزها مجموعة من القيم. 480 00:22:20,970 --> 00:22:22,290 لذلك نفترض أنه سوف يعمل. 481 00:22:22,290 --> 00:22:23,480 سوف نعود إلى هذه الشريحة. 482 00:22:23,480 --> 00:22:27,220 سترى في الأرجواني وظيفة الإعلان هو منطقي binary_search الباحث 483 00:22:27,220 --> 00:22:29,230 قيمة، قيم كثافة العمليات، وكثافة العمليات ن. 484 00:22:29,230 --> 00:22:32,910 وهذا ينبغي أن تبدو مألوفة إذا كنت قد اقترب بالفعل أو حصلت الخاص 485 00:22:32,910 --> 00:22:34,580 الأيدي القذرة مع مجموعة مشكلة. 486 00:22:34,580 --> 00:22:35,910 >> ولكن هذا تعريف الدالة الخاصة بك. 487 00:22:35,910 --> 00:22:39,080 مرة أخرى، يجب أن لا داعي للقلق حول أن الكثير في هذه اللحظة. 488 00:22:39,080 --> 00:22:43,660 ما أريد حقا لك أن تفعل هو أن تأخذ أربع دقائق إلى ثنائي شبة الكود 489 00:22:43,660 --> 00:22:46,380 بحث، ومن ثم سنذهب على أن كمجموعة. 490 00:22:46,380 --> 00:22:47,500 وسوف تأتي حولها. 491 00:22:47,500 --> 00:22:49,590 إذا كان لديك أسئلة، لا الحرة لرفع يدك. 492 00:22:49,590 --> 00:25:07,110 493 00:25:07,110 --> 00:25:09,680 >> لماذا لا تأخذ اثنين دقائق أكثر لإنهاء ما يصل إلى شبة الكود؟ 494 00:25:09,680 --> 00:25:13,690 495 00:25:13,690 --> 00:25:15,820 أعرف أن هذا قد يبدو سخيفا أن نحن ننفق الكثير من الوقت على 496 00:25:15,820 --> 00:25:20,350 هذا ليس شيئا حتى في الواقع C، ولكن بصفة خاصة لهذه المزيد 497 00:25:20,350 --> 00:25:24,030 خوارزميات تحديا ومشكلة مجموعات التي لدينا لمعرفة، 498 00:25:24,030 --> 00:25:27,210 ابتداء من شبة الكود لا يدعو للقلق حول بناء الجملة، فقط القلق حول 499 00:25:27,210 --> 00:25:29,150 منطق، هو مفيدة بشكل لا يصدق. 500 00:25:29,150 --> 00:25:32,720 وبهذه الطريقة، وكنت لا حل اثنين المشاكل الصعبة بشكل لا يصدق في آن واحد. 501 00:25:32,720 --> 00:25:35,390 كنت مجرد التركيز على المنطق، و ثم قمت بنقل في بناء الجملة. 502 00:25:35,390 --> 00:25:59,960 503 00:25:59,960 --> 00:26:01,385 >> موافق. 504 00:26:01,385 --> 00:26:03,680 دعونا نبدأ يمر في شبة الكود. 505 00:26:03,680 --> 00:26:05,380 كنت قد كتبت هنا، ثنائي البحث شبة الكود. 506 00:26:05,380 --> 00:26:07,360 سنقوم أكتب هذا على الصعود معا. 507 00:26:07,360 --> 00:26:10,040 أو انني سوف اكتبها وسوف تعطي لي المطالبات أحتاج. 508 00:26:10,040 --> 00:26:15,010 لذلك أي شخص يمكن أن تعطيني الأولى خط شبة الكود لك 509 00:26:15,010 --> 00:26:18,350 كتب عن البحث الثنائي؟ 510 00:26:18,350 --> 00:26:20,258 نعم، آني؟ 511 00:26:20,258 --> 00:26:22,698 >> الطالب: على الرغم من طول قائمة أكبر من الصفر. 512 00:26:22,698 --> 00:26:26,114 513 00:26:26,114 --> 00:26:34,880 >> JASON هيرشهورن: على الرغم من طول من قائمة أكبر من الصفر. 514 00:26:34,880 --> 00:26:38,810 ومرة أخرى، نرى بعض C المظهر الأمور النحوية هنا. 515 00:26:38,810 --> 00:26:41,550 ولكن الأهم من هذا هو باللغة الإنجليزية. 516 00:26:41,550 --> 00:26:43,980 لم لدى أي شخص أي خط وضعوا قبل هذا في حياتهم الزائفة رمز؟ 517 00:26:43,980 --> 00:26:47,280 518 00:26:47,280 --> 00:26:50,210 >> الطالب: احصل على صفيف من فرز الأرقام. 519 00:26:50,210 --> 00:26:53,600 >> JASON هيرشهورن: أنت كتبت "الحصول على مجموعة من الأرقام التي تم فرزها. "لكل و 520 00:26:53,600 --> 00:26:56,140 إعلان وظيفة، ونحن سوف يمر صفيف أرقام فرزها. 521 00:26:56,140 --> 00:26:57,280 >> الطالب: [غير مسموع]. 522 00:26:57,280 --> 00:26:59,030 >> JASON هيرشهورن: إذن سيكون لدينا ذلك. 523 00:26:59,030 --> 00:27:01,820 ولكن نعم، إذا لم يكن لدينا ذلك، ونحن ستحتاج لفرز لدينا مجموعة من 524 00:27:01,820 --> 00:27:04,850 الأرقام، لأن البحث الثنائي يعمل فقط على صفائف فرزها. 525 00:27:04,850 --> 00:27:11,300 وذلك في حين طول القائمة يساوي صفر، وأنا ذاهب لوضع بعض الأقواس المتعرجة 526 00:27:11,300 --> 00:27:15,420 لجعلها تبدو أكثر قليلا مثل C. ولكن في حين، ويبدو أن الخريطة على ل 527 00:27:15,420 --> 00:27:19,550 في حين حلقة، حتى داخل هذا بينما حلقة ماذا نحن بحاجة إلى 528 00:27:19,550 --> 00:27:22,000 القيام للبحث ثنائي؟ 529 00:27:22,000 --> 00:27:25,530 >> شخص آخر لم يقدم لي الإجابة حتى الآن ولكن الذي كتب هذا؟ 530 00:27:25,530 --> 00:27:31,750 531 00:27:31,750 --> 00:27:33,320 >> الطالب: الذهاب إلى وسط القائمة. 532 00:27:33,320 --> 00:27:33,980 >> JASON هيرشهورن: توم. 533 00:27:33,980 --> 00:27:35,230 انتقل إلى وسط القائمة. 534 00:27:35,230 --> 00:27:43,290 535 00:27:43,290 --> 00:27:45,530 ومسألة المتابعة، ما نفعل مرة واحدة أننا في 536 00:27:45,530 --> 00:27:46,870 منتصف القائمة؟ 537 00:27:46,870 --> 00:27:49,310 >> الطالب: هل فحص ما إذا كان هذا الرقم الذي تبحث عنه. 538 00:27:49,310 --> 00:27:50,120 >> JASON هيرشهورن: ممتاز. 539 00:27:50,120 --> 00:28:05,500 انتقل منتصف قائمة وتحقق إذا قيمة لدينا هناك - 540 00:28:05,500 --> 00:28:06,515 رائعة. 541 00:28:06,515 --> 00:28:10,460 لم لدى أي شخص أي شيء آخر التي كانت مختلفة من هذا؟ 542 00:28:10,460 --> 00:28:11,210 هذا صحيح تماما. 543 00:28:11,210 --> 00:28:13,800 >> أول شيء نقوم به في البحث الثنائي وانتقل إلى وسط القائمة و 544 00:28:13,800 --> 00:28:15,870 تحقق لمعرفة ما إذا كانت القيمة دينا هناك. 545 00:28:15,870 --> 00:28:19,682 لذلك أفترض إذا قيمة لدينا هو هناك، ماذا نفعل؟ 546 00:28:19,682 --> 00:28:21,610 >> الطالب: نعود صفر [غير مسموع]. 547 00:28:21,610 --> 00:28:23,400 >> JASON هيرشهورن: نعم، إذا لدينا القيمة هي هناك، وجدنا أنه. 548 00:28:23,400 --> 00:28:27,950 لذلك يمكننا ان نقول بعض الطريق، ولكن هذا يتم تعريف وظيفة، ونحن نقول للمستخدم 549 00:28:27,950 --> 00:28:28,520 وجدنا أنه. 550 00:28:28,520 --> 00:28:30,950 إذا لم يكن هناك، على الرغم من أن هذا حيث يحصل هذا صعب. 551 00:28:30,950 --> 00:28:35,120 حتى إذا لم يكن هناك، وشخص آخر الذين كان يعمل على بحث ثنائية أو 552 00:28:35,120 --> 00:28:36,830 وفكرة الآن، ماذا نفعل؟ 553 00:28:36,830 --> 00:28:37,830 >> الطالب: السؤال. 554 00:28:37,830 --> 00:28:38,100 >> JASON هيرشهورن: نعم؟ 555 00:28:38,100 --> 00:28:39,920 >> الطالب: هو مجموعة فرزها بالفعل؟ 556 00:28:39,920 --> 00:28:42,200 >> JASON هيرشهورن: نعم، نحن على افتراض يتم فرز بالفعل مجموعة. 557 00:28:42,200 --> 00:28:46,480 >> الطالب: حتى ذلك الحين كان لديك للتحقق مما إذا القيمة التي تراه هو أكبر من 558 00:28:46,480 --> 00:28:51,745 القيمة التي تريد، يمكنك نقل إلى منتصف النصف الآخر. 559 00:28:51,745 --> 00:28:54,110 >> JASON هيرشهورن: حتى إذا كان منتصف القائمة هو أكبر من ما نحن 560 00:28:54,110 --> 00:28:57,440 تبحث عنه، فإننا لا ماذا؟ 561 00:28:57,440 --> 00:28:58,320 نحن نتحرك أين؟ 562 00:28:58,320 --> 00:29:01,400 >> الطالب: أنت تريد أن تتحرك ل النصف من القائمة مع 563 00:29:01,400 --> 00:29:02,780 أرقام أقل من ذلك. 564 00:29:02,780 --> 00:29:04,460 >> JASON هيرشهورن: لذا سنقوم ندعو أن اليسار. 565 00:29:04,460 --> 00:29:15,435 حتى إذا الأوسط هو أكبر، يمكننا البحث النصف الأيسر من القائمة. 566 00:29:15,435 --> 00:29:20,620 567 00:29:20,620 --> 00:29:22,980 ومن ثم عن طريق البحث، ما أعني البحث؟ 568 00:29:22,980 --> 00:29:24,010 >> الطالب: [غير مسموع]. 569 00:29:24,010 --> 00:29:24,410 >> JASON هيرشهورن: نذهب إلى الوسط. 570 00:29:24,410 --> 00:29:25,740 ونحن في الواقع تكرار هذا الشيء. 571 00:29:25,740 --> 00:29:29,210 نعود من خلال حلقة في حين لدينا. 572 00:29:29,210 --> 00:29:31,480 سأعطيك مشاركة واحدة - 573 00:29:31,480 --> 00:29:39,047 آخر، إذا والمتوسطة هي اقل مما نحن لا، ماذا نفعل هنا؟ 574 00:29:39,047 --> 00:29:40,360 >> الطالب: اذهب إلى اليمين. 575 00:29:40,360 --> 00:29:41,610 >> JASON هيرشهورن: البحث في الحق. 576 00:29:41,610 --> 00:29:47,440 577 00:29:47,440 --> 00:29:51,710 هذا يبدو جيدا، ولكن لا أحد لديهم أي شيء أننا قد تكون مفقودة أو 578 00:29:51,710 --> 00:29:53,200 أي شيء آخر أن كنت وضعت في الخاص الزائفة رمز؟ 579 00:29:53,200 --> 00:29:57,080 580 00:29:57,080 --> 00:29:58,410 لذلك هذا هو ما لدينا حتى الآن. 581 00:29:58,410 --> 00:30:00,960 في حين أن طول قائمة أكبر من الصفر، ونحن في طريقنا للذهاب 582 00:30:00,960 --> 00:30:03,220 إلى منتصف القائمة و معرفة ما اذا كان لدينا قيمة هناك. 583 00:30:03,220 --> 00:30:06,970 >> إذا كان الوسط هو أكبر، ونحن في طريقنا ل بحث اليسار، الا اذا المنتصف هي 584 00:30:06,970 --> 00:30:09,230 أقل، ونحن في طريقنا للبحث في الحق. 585 00:30:09,230 --> 00:30:14,430 حتى لقد كان كل ما بعض الألفة مع شروط نستخدمها في علوم الكمبيوتر 586 00:30:14,430 --> 00:30:15,550 والأدوات لدينا. 587 00:30:15,550 --> 00:30:18,300 ولكن ستلاحظ بالفعل كنا الناطقة باللغة الإنجليزية، ولكن وجدنا 588 00:30:18,300 --> 00:30:24,790 الكثير من الأشياء التي يبدو أن الخريطة على ل أدوات لدينا في الترميز مجموعة من الأدوات. 589 00:30:24,790 --> 00:30:27,210 حتى الحق قبالة الخفافيش، ونحن لسنا الذهاب إلى رمز في الواقع حتى الآن. 590 00:30:27,210 --> 00:30:33,300 >> ما الذي نراه هنا في اللغة الإنجليزية أن الخرائط إلى الأشياء التي يمكن أن يكتب في C؟ 591 00:30:33,300 --> 00:30:34,560 >> الطالب: حين. 592 00:30:34,560 --> 00:30:35,320 >> JASON هيرشهورن: بينما. 593 00:30:35,320 --> 00:30:40,610 لذلك هذا بينما هنا الخرائط على لماذا؟ 594 00:30:40,610 --> 00:30:42,630 >> الطالب: حلقة الوقت. 595 00:30:42,630 --> 00:30:43,200 >> JASON هيرشهورن: حلقة في حين؟ 596 00:30:43,200 --> 00:30:44,540 أو ربما، وبصورة أعم، حلقة. 597 00:30:44,540 --> 00:30:46,260 نحن نريد أن نفعل شيئا مرارا وتكرارا. 598 00:30:46,260 --> 00:30:49,050 لذلك نحن ذاهبون إلى رمز حلقة. 599 00:30:49,050 --> 00:30:51,640 ونحن نعرف بالفعل، لأننا قد فعلت هذا بضع مرات، ونحن 600 00:30:51,640 --> 00:30:54,180 لدينا الكثير من الأمثلة هناك، كيف فعلا لكتابة 601 00:30:54,180 --> 00:30:55,310 هذا المؤشر للحلقة. 602 00:30:55,310 --> 00:30:56,160 بحيث ينبغي أن يكون من السهل جدا. 603 00:30:56,160 --> 00:30:58,070 يجب أن نكون قادرين على الحصول على هذا بدأت بسرعة كبيرة. 604 00:30:58,070 --> 00:31:01,830 >> ماذا لا نرى هنا؟ 605 00:31:01,830 --> 00:31:06,820 ما غيرها من الهياكل جمل، وأشياء أننا على دراية في C، فهل نحن 606 00:31:06,820 --> 00:31:09,790 لديهم بالفعل شعور ومقرها الخروج من الكلمات التي تستخدم؟ 607 00:31:09,790 --> 00:31:10,830 نعم، آنا؟ 608 00:31:10,830 --> 00:31:11,360 [غير مسموع] 609 00:31:11,360 --> 00:31:12,990 مجرد مزاح. 610 00:31:12,990 --> 00:31:13,540 آنا، والمضي قدما. 611 00:31:13,540 --> 00:31:14,530 >> الطالب: إذا وآخر. 612 00:31:14,530 --> 00:31:16,260 >> JASON هيرشهورن: إذا و آخر - الحق هنا. 613 00:31:16,260 --> 00:31:18,840 فماذا تلك تبدو وكأنها؟ 614 00:31:18,840 --> 00:31:20,420 >> الطالب: وإذا بيان آخر. 615 00:31:20,420 --> 00:31:21,560 >> JASON هيرشهورن: نعم، الظروف، أليس كذلك؟ 616 00:31:21,560 --> 00:31:24,650 ولذا فإننا سوف ربما تحتاج إلى كتابة بعض الشروط. 617 00:31:24,650 --> 00:31:31,185 ومرة أخرى، على الرغم ربما مربكا في أولا، لدينا عموما شعور الآن 618 00:31:31,185 --> 00:31:34,010 كيفية كتابة الشروط و بناء الجملة من أجل الظروف. 619 00:31:34,010 --> 00:31:36,850 وإذا لم نفعل ذلك، ونحن مجرد بحث عن بناء الجملة من أجل الظروف، قص ولصق 620 00:31:36,850 --> 00:31:39,950 ذلك، لأننا نعلم أننا تحتاج شرط هنا. 621 00:31:39,950 --> 00:31:44,910 أي أمور أخرى ونحن نرى أن على الخريطة الأشياء التي قد تحتاج إلى القيام به في C؟ 622 00:31:44,910 --> 00:31:48,312 623 00:31:48,312 --> 00:31:48,960 نعم، Aleha؟ 624 00:31:48,960 --> 00:31:50,370 >> الطالب: قد يكون هذا واضحا، عن طريق فحص فقط إذا كان 625 00:31:50,370 --> 00:31:51,990 قيمة يساوي شيئا. 626 00:31:51,990 --> 00:31:54,578 >> JASON هيرشهورن: كيف لنا إذن أن تحقق و- لذلك يذهب إلى منتصف القائمة 627 00:31:54,578 --> 00:31:55,610 ومعرفة ما اذا كان لدينا قيمة هناك؟ 628 00:31:55,610 --> 00:31:56,570 كيف نفعل ذلك في C؟ 629 00:31:56,570 --> 00:31:58,450 ما هو بناء الجملة من أجل ذلك؟ 630 00:31:58,450 --> 00:31:59,235 >> الطالب: يساوي، يساوي. 631 00:31:59,235 --> 00:32:00,650 >> JASON هيرشهورن: يساوي، يساوي. 632 00:32:00,650 --> 00:32:03,540 ولذلك فإن هذا الاختيار هو على الارجح أن يكون متساوين، يساوي. 633 00:32:03,540 --> 00:32:04,510 ولذا فإننا سوف نعرف أننا بحاجة إلى ذلك في مكان ما. 634 00:32:04,510 --> 00:32:07,510 وفعلا، فقط في كتابة هذا التقرير، ونحن نرى تلك الأشياء الأخرى. 635 00:32:07,510 --> 00:32:11,400 ونحن في طريقنا لديك للقيام ببعض عوامل المقارنة في هناك - 636 00:32:11,400 --> 00:32:12,010 رائعة. 637 00:32:12,010 --> 00:32:14,980 لذلك تبدو فعلا مثل، من خلال و كبيرة، ونحن لم تكتب 638 00:32:14,980 --> 00:32:16,390 كلمة من التعليمات البرمجية C حتى الآن. 639 00:32:16,390 --> 00:32:20,610 ولكن حصلنا على نموذج العقلية أسفل عبر المحاضرات وتلك السراويل. 640 00:32:20,610 --> 00:32:22,350 >> كتبنا الزائفة رمز كمجموعة. 641 00:32:22,350 --> 00:32:27,110 وبالفعل، لدينا 80٪ إن لم يكن 90٪ من ما يتعين علينا القيام به. 642 00:32:27,110 --> 00:32:28,550 الآن، ونحن بحاجة فقط إلى رمز ، والذي مرة أخرى، هو 643 00:32:28,550 --> 00:32:30,110 المشكلة غير تافهة لحلها. 644 00:32:30,110 --> 00:32:31,890 ولكن على الأقل نحن عالقون على المنطق. 645 00:32:31,890 --> 00:32:38,040 على الأقل الآن عندما نذهب إلى ساعات العمل، أستطيع أن أقول، وأنا أعرف ما أحتاج 646 00:32:38,040 --> 00:32:40,160 القيام به، ولكن يمكنك تذكير لي من جملة؟ 647 00:32:40,160 --> 00:32:42,940 أو حتى إذا تزدحم ساعات العمل، وكنت يمكن أن جوجل لبناء الجملة، بدلا 648 00:32:42,940 --> 00:32:45,040 من تمسك يجري على المنطق. 649 00:32:45,040 --> 00:32:48,570 >> ومرة أخرى، بدلا من محاولة حل المنطق ومشاكل في بناء الجملة جميع 650 00:32:48,570 --> 00:32:51,900 في آن واحد، غالبا ما يكون أفضل بكثير ل كسر هذه المشاكل من الصعب اثنين قبالة في 651 00:32:51,900 --> 00:32:58,280 اثنين منها أكثر قابلية للإدارة والقيام الزائفة رمز أولا ثم التعليمات البرمجية في C. 652 00:32:58,280 --> 00:33:00,620 لذلك دعونا نرى ما فعلته ل الزائفة رمز في وقت مبكر. 653 00:33:00,620 --> 00:33:04,060 >> في حين أن طول قائمة أكبر من الصفر، أن ننظر في الوسط 654 00:33:04,060 --> 00:33:05,090 من القائمة. 655 00:33:05,090 --> 00:33:09,610 إذا وجدت عدد عاد الحقيقية، وإلا إذا كان رقم أعلى، والبحث اليسرى. 656 00:33:09,610 --> 00:33:13,200 الا اذا عدد أقل من ذلك، البحث الحق، والعودة كاذبة. 657 00:33:13,200 --> 00:33:18,710 بحيث تبدو متطابقة تقريبا إن لم يكن متطابقة تقريبا مع ما كتبنا. 658 00:33:18,710 --> 00:33:23,030 في الواقع، توم، ما قلته أولا، كسر منتصف القائمة، وإذا 659 00:33:23,030 --> 00:33:24,880 عدد جدت في بيانين هو في الواقع ما فعلته. 660 00:33:24,880 --> 00:33:25,507 >> أنا مجتمعة لهم هناك. 661 00:33:25,507 --> 00:33:27,100 وأرجو أن يكون استمع إلى كنت أول مرة. 662 00:33:27,100 --> 00:33:30,640 بحيث هو الزائفة رمز لدينا. 663 00:33:30,640 --> 00:33:35,060 إذا كنت تريد أن الآن، آسف، انتقل عد إلى مشكلة الأولية لدينا. 664 00:33:35,060 --> 00:33:37,780 دعونا كود binary.c. 665 00:33:37,780 --> 00:33:40,870 وتنفيذ ذلك إصدار التكرارية ل البحث الثنائي باستخدام التالية 666 00:33:40,870 --> 00:33:42,420 وظيفة الإعلان. 667 00:33:42,420 --> 00:33:44,550 >> وأنت لا تحتاج إلى نسخ عليه فقط حتى الآن. 668 00:33:44,550 --> 00:33:49,470 أنا فعلا ذاهب لفتح حتى هنا binary.c. 669 00:33:49,470 --> 00:33:52,880 حتى لا يكون هناك تعريف الدالة في منتصف الشاشة. 670 00:33:52,880 --> 00:33:57,570 وسترى أخذت الزائفة رمز من على الجانبين بلدي، ولكن متطابقة تقريبا 671 00:33:57,570 --> 00:33:59,740 ما كتبنا، و وضع هذا في لك. 672 00:33:59,740 --> 00:34:06,010 وحتى الآن، دعونا نلقي خمس دقائق إلى رمز هذه الوظيفة. 673 00:34:06,010 --> 00:34:08,199 >> ومرة أخرى، إذا كان لديك أي أسئلة، ارفع يدك، واسمحوا لي أن أعرف، وسوف أكون 674 00:34:08,199 --> 00:34:08,710 تأتي حولها. 675 00:34:08,710 --> 00:34:09,800 >> الطالب: [غير مسموع]. 676 00:34:09,800 --> 00:34:12,380 >> JASON هيرشهورن: فأخذت الثنائية تعريف البحث في 677 00:34:12,380 --> 00:34:14,429 أعلى، على الخط 12. 678 00:34:14,429 --> 00:34:16,429 وهذا ما حصلت عليه لشريحة بلدي. 679 00:34:16,429 --> 00:34:20,940 وبعد ذلك كل هذا زائف رمز أنا فقط نسخ ولصق من الشرائح، 680 00:34:20,940 --> 00:34:22,190 الزائفة رمز الشريحة. 681 00:34:22,190 --> 00:35:22,830 682 00:35:22,830 --> 00:35:26,786 ما زلت لا نسمع [غير مسموع]. 683 00:35:26,786 --> 00:37:13,010 684 00:37:13,010 --> 00:37:15,820 >> لذلك إذا كنت قد أنهى الخاص التنفيذ، أريد أن التحقق من ذلك. 685 00:37:15,820 --> 00:37:19,410 لي بالبريد الإلكتروني لك ملف helpers.h في هذه الفئة في وقت سابق. 686 00:37:19,410 --> 00:37:22,360 وسوف تكون متاحة على الانترنت كذلك للتحميل للناس يشاهدون 687 00:37:22,360 --> 00:37:24,750 هذا القسم الوقت تأخر. 688 00:37:24,750 --> 00:37:29,350 وأنا فقط استخدام توزيع عامة رمز من pset3. 689 00:37:29,350 --> 00:37:34,590 لذلك أخذت find.C، استخدم ملف helpers.h بلدي بدلا من الملف helpers.h 690 00:37:34,590 --> 00:37:36,280 وهذا ما يرد في قانون التوزيع. 691 00:37:36,280 --> 00:37:39,310 >> وكان لي لجعل التغيير الآخر في find.C بدلا من استدعاء ببساطة 692 00:37:39,310 --> 00:37:42,770 البحث، والدعوة binary_search. 693 00:37:42,770 --> 00:37:49,080 حتى إذا كنت ترغب في اختبار التعليمات البرمجية الخاصة بك، أعرف أن هذه هي الطريقة للقيام بذلك. 694 00:37:49,080 --> 00:37:52,530 في الواقع، عندما سنكون تشغيل هذه التعليمات البرمجية الآن، وأنا أدلى به للتو نسخة من 695 00:37:52,530 --> 00:37:59,820 بلدي الدليل pset3، مرة أخرى، تبادلت خارج الملفات المساعدين ثم جعلت ذلك 696 00:37:59,820 --> 00:38:04,695 تغيير في find.C للاتصال binary_search بدلا من مجرد البحث. 697 00:38:04,695 --> 00:40:08,620 698 00:40:08,620 --> 00:40:09,120 >> JASON هيرشهورن: نعم. 699 00:40:09,120 --> 00:40:11,258 لديك سؤال؟ 700 00:40:11,258 --> 00:40:12,150 >> الطالب: فما باللك. 701 00:40:12,150 --> 00:40:12,600 >> JASON هيرشهورن: لا تقلق. 702 00:40:12,600 --> 00:40:13,370 حسنا، دعونا نبدأ. 703 00:40:13,370 --> 00:40:15,090 سوف نقوم رمز هذا كمجموعة. 704 00:40:15,090 --> 00:40:16,050 ملاحظه واحدة أخرى. 705 00:40:16,050 --> 00:40:20,600 مرة أخرى، يتم، يمكن بسهولة أن تبادلت هذه في لمشكلة تعيين ثلاثة. 706 00:40:20,600 --> 00:40:25,530 لدي ملف helpers.h بلدي الذي، بدلا من helpers.h نحن معين، 707 00:40:25,530 --> 00:40:28,560 تعلن ثنائي البحث، فقاعة نوع، واختيار نوع. 708 00:40:28,560 --> 00:40:37,400 وفي find.c ستلاحظ على الخط، ما هي، خط 68، فإننا ندعو الثنائية 709 00:40:37,400 --> 00:40:39,160 بحث بدلا من البحث. 710 00:40:39,160 --> 00:40:42,930 ذلك مرة أخرى، رمز ما هو متاح عبر الإنترنت أو التعليمات البرمجية التي كنت 711 00:40:42,930 --> 00:40:46,590 خلق الآن يمكن تبديل بسهولة في لتعيين ص 3 للتحقق من ذلك. 712 00:40:46,590 --> 00:40:50,620 >> ولكن أولا، دعونا رمز البحث الثنائي. 713 00:40:50,620 --> 00:40:53,690 لدينا تعريف الدالة، نعود ومنطقي. 714 00:40:53,690 --> 00:40:55,810 نأخذ عدد صحيح يسمى القيمة. 715 00:40:55,810 --> 00:40:59,285 نأخذ مجموعة من الأعداد الصحيحة يسمى القيم، ونحن نأخذ ن يكون 716 00:40:59,285 --> 00:41:00,850 حجم المصفوفة. 717 00:41:00,850 --> 00:41:05,640 على خط 10، والحق هنا، ولدي وتشمل حادة stdbool.h. 718 00:41:05,640 --> 00:41:07,360 لا أحد يعرف لماذا هذا هناك؟ 719 00:41:07,360 --> 00:41:12,180 720 00:41:12,180 --> 00:41:16,600 فماذا الذي سطر من التعليمات البرمجية تفعل؟ 721 00:41:16,600 --> 00:41:19,880 >> الطالب: انها تسمح لك ل استخدام نوع إرجاع منطقي. 722 00:41:19,880 --> 00:41:20,350 >> JASON هيرشهورن: بالضبط. 723 00:41:20,350 --> 00:41:22,300 >> الطالب: أو انها المكتبة التي تسمح لاستخدام نوع إرجاع منطقي. 724 00:41:22,300 --> 00:41:27,590 >> JASON هيرشهورن: إذن حادة تشمل خط stdbool.h يعطيني بعض 725 00:41:27,590 --> 00:41:31,340 تعريفات والإعلانات عن الأشياء أنني سمحت لاستخدامها في 726 00:41:31,340 --> 00:41:32,400 هذه المكتبة. 727 00:41:32,400 --> 00:41:36,570 حتى بين أولئك يقول ان هناك هذا النوع يسمى منطقي، وأنه يمكن أن يكون 728 00:41:36,570 --> 00:41:37,750 صحيحة أو خاطئة. 729 00:41:37,750 --> 00:41:39,010 وهذا ما يفعل ذلك الخط. 730 00:41:39,010 --> 00:41:41,680 وإذا لم يكن لديك هذا الخط، وأود أن تحصل في ورطة لكتابة هذا 731 00:41:41,680 --> 00:41:43,520 كلمة حق هنا، منطقيا، أليس هناك. 732 00:41:43,520 --> 00:41:44,140 صحيح تماما. 733 00:41:44,140 --> 00:41:46,430 لذلك أنا بحاجة إلى ذلك في هذا الرمز. 734 00:41:46,430 --> 00:41:47,690 موافق. 735 00:41:47,690 --> 00:41:51,860 لذلك هذا، مرة أخرى، هو تكراري نسخة، وليس واحدة متكررة. 736 00:41:51,860 --> 00:41:53,820 لذلك دعونا نبدأ. 737 00:41:53,820 --> 00:41:56,200 >> دعونا نبدأ مع هذا أولا سطر من التعليمات البرمجية الزائفة. 738 00:41:56,200 --> 00:41:58,770 ونأمل، ونحن سوف - أم لا أمل. 739 00:41:58,770 --> 00:42:00,530 ونحن في طريقنا للذهاب في جميع أنحاء الغرفة. 740 00:42:00,530 --> 00:42:05,110 سنذهب سطرا سطرا، وأنا سأساعد يمكنك معرفة الخط الذي نحتاج 741 00:42:05,110 --> 00:42:06,310 لكتابة الأول. 742 00:42:06,310 --> 00:42:10,550 وذلك في حين طول قائمة أكبر من الصفر. 743 00:42:10,550 --> 00:42:12,680 دعونا نبدأ في الجبهة. 744 00:42:12,680 --> 00:42:15,190 ما سطر يجب أن يكتب هنا، في التعليمات البرمجية؟ 745 00:42:15,190 --> 00:42:19,470 >> الطالب: في حين قوسين n هو أكبر من 0. 746 00:42:19,470 --> 00:42:21,900 >> JASON هيرشهورن: على الرغم من n هو كبيرة من 0. 747 00:42:21,900 --> 00:42:26,550 لذلك n هو حجم القائمة، ونحن التحقق إذا - 748 00:42:26,550 --> 00:42:26,800 >> [VOICES فاصلة] 749 00:42:26,800 --> 00:42:27,660 >> JASON هيرشهورن: - آسف؟ 750 00:42:27,660 --> 00:42:29,360 >> الطالب: كيف لنا أن نعرف أن n هو حجم القائمة؟ 751 00:42:29,360 --> 00:42:29,690 >> JASON هيرشهورن: آسف. 752 00:42:29,690 --> 00:42:34,690 في مواصفات pset، والبحث ويعمل النوع تحتاج إلى كتابة، 753 00:42:34,690 --> 00:42:36,230 n هو حجم القائمة. 754 00:42:36,230 --> 00:42:37,710 لقد نسيت ان اوضح هنا. 755 00:42:37,710 --> 00:42:41,310 ولكن نعم. n هو حجم القائمة، في هذه الحالة. 756 00:42:41,310 --> 00:42:44,740 وذلك في حين أن n هو أكبر من 0. 757 00:42:44,740 --> 00:42:45,580 موافق. 758 00:42:45,580 --> 00:42:50,090 قد تثبت إشكالية قليلا رغم ذلك، إذا سارت الأمور على. 759 00:42:50,090 --> 00:42:54,510 لأننا سوف نستمر في معرفة حجم قائمة طوال هذه 760 00:42:54,510 --> 00:43:06,640 وظيفة، ولكن نقول اننا تبدأ مع مجموعة من 5 أعداد صحيحة. 761 00:43:06,640 --> 00:43:08,950 ونحن نمضي من خلال وقمنا ضاقت عليه الآن ل 762 00:43:08,950 --> 00:43:10,310 مجموعة من 2 أعداد صحيحة. 763 00:43:10,310 --> 00:43:12,160 2 الأعداد الصحيحة التي هي؟ 764 00:43:12,160 --> 00:43:15,895 حجم هو 2 الآن أننا نريد أن ننظر، ولكن الذي هو أن 2؟ 765 00:43:15,895 --> 00:43:17,720 لا تجعل المعنى، هذا السؤال؟ 766 00:43:17,720 --> 00:43:18,020 >> موافق. 767 00:43:18,020 --> 00:43:19,120 أنا أطلب ذلك مرة أخرى. 768 00:43:19,120 --> 00:43:26,640 لذلك نحن تبدأ مع هذه المجموعة من 5 أعداد صحيحة، و n يساوي 5، أليس كذلك؟ 769 00:43:26,640 --> 00:43:28,050 سنقوم من خلال تشغيل هنا. 770 00:43:28,050 --> 00:43:31,560 أننا ربما سوف تغير حجم، الحق، وسارت الأمور على. 771 00:43:31,560 --> 00:43:32,700 وهو ما نقوله نحن نريد أن نفعل. 772 00:43:32,700 --> 00:43:34,150 نحن لا نريد للبحث الشيء الكامل مرة أخرى. 773 00:43:34,150 --> 00:43:35,480 لذلك أقول أننا تغييره إلى 2. 774 00:43:35,480 --> 00:43:36,970 نأخذ نصف القائمة التي الغريب. 775 00:43:36,970 --> 00:43:38,800 حتى مجرد اختيار 2. 776 00:43:38,800 --> 00:43:40,590 وحتى الآن ن يساوي 2. 777 00:43:40,590 --> 00:43:42,780 أعتذر للفقراء محو علامات الجافة. 778 00:43:42,780 --> 00:43:43,080 أليس كذلك؟ 779 00:43:43,080 --> 00:43:45,670 ونحن تبحث من خلال قائمة مرة أخرى مع قائمة من حجم 2. 780 00:43:45,670 --> 00:43:48,580 حسنا، لدينا مجموعة لا يزال من حجم 5. 781 00:43:48,580 --> 00:43:51,920 نحن نقول اننا نريد فقط أن بحث 2 البقع في ذلك. 782 00:43:51,920 --> 00:43:53,590 ذلك الذي 2 البقع هي تلك؟ 783 00:43:53,590 --> 00:43:57,640 784 00:43:57,640 --> 00:43:58,815 >> فهل هذا يعقل؟ 785 00:43:58,815 --> 00:44:00,290 هم اليسار 2 البقع؟ 786 00:44:00,290 --> 00:44:01,940 هم على حق 2 البقع؟ 787 00:44:01,940 --> 00:44:03,540 هم منتصف 2 البقع؟ 788 00:44:03,540 --> 00:44:06,350 لقد كسرنا المشكلة باستمرار، ولكننا في الواقع لا أعرف أي جزء من 789 00:44:06,350 --> 00:44:11,600 المشكلة اننا لا تزال تبحث في، فقط من خلال وجود هذه المتغيرات 2. 790 00:44:11,600 --> 00:44:16,450 لذلك نحن بحاجة أكثر قليلا ثم، بينما n أكبر من 0. 791 00:44:16,450 --> 00:44:21,410 نحن بحاجة إلى معرفة حيث أن n هو في مجموعة الفعلي لدينا. 792 00:44:21,410 --> 00:44:26,660 >> لذلك لا أحد لديها تغيير هذا الخط؟ 793 00:44:26,660 --> 00:44:27,970 معظم هذا الخط هو الصحيح تماما. 794 00:44:27,970 --> 00:44:29,170 بالإضافة إلى ذلك هناك آخر؟ 795 00:44:29,170 --> 00:44:32,510 يمكننا مبادلة شيء لن ل جعل هذا الخط أفضل قليلا؟ 796 00:44:32,510 --> 00:44:32,865 مم جلالة؟ 797 00:44:32,865 --> 00:44:38,040 >> الطالب: هل يمكنك تهيئة متغير مثل طول لن التي سوف ثم استخدامها 798 00:44:38,040 --> 00:44:39,600 في وقت لاحق في وظيفة؟ 799 00:44:39,600 --> 00:44:42,060 >> JASON هيرشهورن: إذن تهيئة طول متغير إلى n، 800 00:44:42,060 --> 00:44:42,900 ونحن نستخدم ذلك لاحقا؟ 801 00:44:42,900 --> 00:44:47,070 ولكن بعد ذلك ونحن فقط نقوم بتحديث طول و لا تزال تعمل في هذه المشكلة حيث أننا 802 00:44:47,070 --> 00:44:51,180 خفض طول مشكلة لدينا، ولكننا لم نعرف أين، في الواقع، 803 00:44:51,180 --> 00:44:52,510 أن طول خرائط على. 804 00:44:52,510 --> 00:44:54,790 >> الطالب: أليس هذا سيحدث في وقت لاحق عندما كنت تقول، بحث اليسار، 805 00:44:54,790 --> 00:44:55,746 بحث أليس كذلك؟ 806 00:44:55,746 --> 00:44:57,640 وأنت تسير للذهاب إلى مختلف مجال الخاص - 807 00:44:57,640 --> 00:44:59,110 >> JASON هيرشهورن: ونحن في طريقنا للذهاب إلى المنطقة، ولكن كيف لنا أن نعرف 808 00:44:59,110 --> 00:45:01,150 التي هي للذهاب إلى؟ 809 00:45:01,150 --> 00:45:03,800 اذا كان لدينا فقط مجموعة وهذا ن، كيف لنا أن نعرف إلى أين 810 00:45:03,800 --> 00:45:05,050 تذهب إليه في صفيف. 811 00:45:05,050 --> 00:45:05,900 في الظهر، نعم؟ 812 00:45:05,900 --> 00:45:07,507 >> الطالب: هل لديك، مثل، أقل منضم ومتغير الحد الأعلى أو 813 00:45:07,507 --> 00:45:08,586 شيء من هذا القبيل؟ 814 00:45:08,586 --> 00:45:09,060 >> JASON هيرشهورن: OK. 815 00:45:09,060 --> 00:45:10,780 لذلك هذا هو فكرة أخرى. 816 00:45:10,780 --> 00:45:13,490 بدلا من مجرد تتبع لل حجم، ونحن تتبع الدنيا و 817 00:45:13,490 --> 00:45:14,770 متغير الحد الأعلى. 818 00:45:14,770 --> 00:45:17,840 لذلك كيف نحسب حجم من والأدنى والحد الأعلى؟ 819 00:45:17,840 --> 00:45:18,520 >> [VOICES فاصلة] 820 00:45:18,520 --> 00:45:19,710 >> JASON هيرشهورن: الطرح. 821 00:45:19,710 --> 00:45:23,650 وأيضا تتبع السفلي مقيدة وملزمة العليا في إعلامنا، 822 00:45:23,650 --> 00:45:26,215 نحن تبحث هذين؟ 823 00:45:26,215 --> 00:45:28,220 نحن تبحث هذين أكثر من هنا؟ 824 00:45:28,220 --> 00:45:29,540 نحن تبحث منتصف اثنين؟ 825 00:45:29,540 --> 00:45:32,810 ربما ليس في منتصف اثنين، لأن هذا، في الواقع، هو البحث الثنائي. 826 00:45:32,810 --> 00:45:37,320 ولكن نحن الآن سوف تكون قادرة على الحصول على حجم، ولكن أيضا حدود الصفيف. 827 00:45:37,320 --> 00:45:40,020 في جوهرها، إذا كان لدينا لدينا العملاقة دفتر الهاتف، ونحن مزق عليه في النصف. 828 00:45:40,020 --> 00:45:42,990 ونحن نعلم الآن حيث أن أصغر دليل الهاتف هو. 829 00:45:42,990 --> 00:45:45,260 ولكن نحن لا تمزيق الواقع دليل الهاتف في النصف. 830 00:45:45,260 --> 00:45:48,570 ما زلنا بحاجة لمعرفة مكان حدود جديدة من مشكلتنا. 831 00:45:48,570 --> 00:45:51,645 هل لدى أي شخص أي أسئلة عن ذلك؟ 832 00:45:51,645 --> 00:45:52,440 نعم؟ 833 00:45:52,440 --> 00:45:56,020 >> الطالب: وهل تعمل عن طريق خلق متغير، ط، التي تحول بعد ذلك فقط 834 00:45:56,020 --> 00:46:00,770 موقف ط قياسا إلى الموقف الحالي، وطول، ن؟ 835 00:46:00,770 --> 00:46:01,710 >> JASON هيرشهورن: وما هو أنا؟ 836 00:46:01,710 --> 00:46:04,110 >> الطالب: مثل ط يجري مثل نوع من - 837 00:46:04,110 --> 00:46:08,040 كأنك تهيئة ط أن تكون موقف وسط مجموعة. 838 00:46:08,040 --> 00:46:12,540 ومن ثم، إذا كانت القيمة في موقف ط في وسط مجموعة في العثور على ل 839 00:46:12,540 --> 00:46:17,870 أن يكون أقل من القيمة التي تحتاج إليها، وأنا الآن يصبح طول الصفيف، بالإضافة إلى 840 00:46:17,870 --> 00:46:19,215 قيمة ط مقسوما على 2. 841 00:46:19,215 --> 00:46:20,270 مثل، انظر، هل تحول ط - 842 00:46:20,270 --> 00:46:20,770 >> JASON هيرشهورن: الحق. 843 00:46:20,770 --> 00:46:21,165 >> الطالب: - حتى - 844 00:46:21,165 --> 00:46:24,010 >> JASON هيرشهورن: لذلك أنا تقريبا إيجابية من شأنها أن تعمل. 845 00:46:24,010 --> 00:46:26,800 ولكن النقطة، تحتاج إلى جزأين قطعة من المعلومات هنا. 846 00:46:26,800 --> 00:46:30,050 يمكنك أن تفعل ذلك مع بداية ونهاية، أو يمكنك أن تفعل ذلك مع حجم، ثم 847 00:46:30,050 --> 00:46:31,060 بعض علامة. 848 00:46:31,060 --> 00:46:32,630 ولكنك تحتاج قطعتين المعلومات هنا. 849 00:46:32,630 --> 00:46:34,160 لا يمكنك الحصول عليه مع واحد فقط. 850 00:46:34,160 --> 00:46:35,830 هل هذا منطقي؟ 851 00:46:35,830 --> 00:46:39,560 >> لذلك نحن في طريقنا للذهاب من خلال، و ونحن في طريقنا للقيام [غير مسموع] 852 00:46:39,560 --> 00:46:41,330 وخلق بعض علامات. 853 00:46:41,330 --> 00:46:42,690 لذلك ماذا كنت تكتب في التعليمات البرمجية الخاصة بك؟ 854 00:46:42,690 --> 00:46:46,190 >> الطالب: قلت للتو كثافة العمليات المربوطة واحد يساوي 0. 855 00:46:46,190 --> 00:46:47,790 >> JASON هيرشهورن: دعونا نسمي أن كثافة العمليات، ابتداء. 856 00:46:47,790 --> 00:46:49,140 >> الطالب: OK. 857 00:46:49,140 --> 00:46:50,590 >> JASON هيرشهورن: وهذا يجعل أكثر منطقية بالنسبة لي. 858 00:46:50,590 --> 00:46:51,670 و؟ 859 00:46:51,670 --> 00:46:54,340 >> الطالب: قلت، أعتقد، وكثافة العمليات المنتهية. 860 00:46:54,340 --> 00:46:55,870 >> JASON هيرشهورن: الباحث النهاية. 861 00:46:55,870 --> 00:46:57,640 >> الطالب: أعتقد، ن ناقص 1، أو شيء من هذا القبيل. 862 00:46:57,640 --> 00:46:59,100 مثل، العنصر الأخير. 863 00:46:59,100 --> 00:47:02,310 >> JASON هيرشهورن: إذن أنت كتبت، وكثافة العمليات تبدأ يساوي 0، الفاصلة المنقوطة، وكثافة العمليات 864 00:47:02,310 --> 00:47:04,320 إنهاء يساوي ن ناقص 1، منقوطة. 865 00:47:04,320 --> 00:47:06,850 ذلك أساسا، ما نقوم به هنا، 0 المركز الأول. 866 00:47:06,850 --> 00:47:09,570 وكما نعلم في المصفوفات، فإنها لا تذهب حتى ن، فإنها ترتفع إلى n ناقص 1. 867 00:47:09,570 --> 00:47:11,110 لذلك لدينا بعض حدود مصفوفة لدينا. 868 00:47:11,110 --> 00:47:15,730 وهذه الحدود الأولية يحدث ليكون حدود الأولي من مشكلتنا. 869 00:47:15,730 --> 00:47:16,640 موافق. 870 00:47:16,640 --> 00:47:19,200 بحيث يبدو جيدا. 871 00:47:19,200 --> 00:47:22,380 ثم إذا عدنا إلى هذا الخط، في حين طول القائمة هو أكبر من 0، 872 00:47:22,380 --> 00:47:24,752 ما، بدلا من ن، ينبغي وضعنا هنا؟ 873 00:47:24,752 --> 00:47:28,820 >> الطالب: كتابة المنتهية ناقص البداية. 874 00:47:28,820 --> 00:47:34,780 >> JASON هيرشهورن: بينما تنتهي ناقص بدأت أكبر من 0؟ 875 00:47:34,780 --> 00:47:35,480 موافق. 876 00:47:35,480 --> 00:47:37,730 ويمكننا، إذا أردنا أن جعل هذا ألطف قليلا، ما 877 00:47:37,730 --> 00:47:38,980 آخر يمكن أن نفعل؟ 878 00:47:38,980 --> 00:47:41,650 879 00:47:41,650 --> 00:47:43,412 إذا أردنا لتنظيف هذا الرمز قليلا؟ 880 00:47:43,412 --> 00:47:46,716 881 00:47:46,716 --> 00:47:48,180 كيف يمكننا التخلص من 0؟ 882 00:47:48,180 --> 00:47:51,560 883 00:47:51,560 --> 00:47:52,690 هذا هو مجرد مسألة أسلوب. 884 00:47:52,690 --> 00:47:53,690 انها صحيحة في الوقت الحالي. 885 00:47:53,690 --> 00:47:54,870 >> الطالب: لا تنتهي بداية قدم المساواة؟ 886 00:47:54,870 --> 00:47:55,740 >> JASON هيرشهورن: يمكننا أن نفعل ماذا؟ 887 00:47:55,740 --> 00:47:56,730 >> [VOICES فاصلة] 888 00:47:56,730 --> 00:47:57,330 >> الطالب: إنهاء أكبر؟ 889 00:47:57,330 --> 00:47:57,720 >> JASON هيرشهورن: نعم. 890 00:47:57,720 --> 00:48:01,110 يمكننا القيام به فقط حين تنتهي أكبر من البداية. 891 00:48:01,110 --> 00:48:03,580 الحق. 892 00:48:03,580 --> 00:48:06,240 أضفنا بداية إلى الجانب الآخر لذلك، ونحن تخلصوا من 0. 893 00:48:06,240 --> 00:48:08,000 حتى هذا يبدو مجرد قليلا أكثر نظافة. 894 00:48:08,000 --> 00:48:08,990 موافق. 895 00:48:08,990 --> 00:48:11,460 لذلك، في حين أن طول القائمة هو 0، كتبنا أنه في حين تنتهي أكبر 896 00:48:11,460 --> 00:48:12,240 من البداية. 897 00:48:12,240 --> 00:48:19,840 نحن ذاهبون لوضع اللازمة لدينا الأقواس المتعرجة، ومن ثم فإن أول شيء 898 00:48:19,840 --> 00:48:22,090 نريد أن نفعله هو أن ننظر في لهم في قائمة قليلا. 899 00:48:22,090 --> 00:48:22,510 لك؟ 900 00:48:22,510 --> 00:48:23,320 يمكنك أن تعطيني - 901 00:48:23,320 --> 00:48:26,460 >> الطالب: إذا قوسين قيمة مربع قوس - 902 00:48:26,460 --> 00:48:30,450 >> JASON هيرشهورن: إذا قوسين قيمة مربع قوس. 903 00:48:30,450 --> 00:48:33,210 >> الطالب: تنتهي مقسوما على 2. 904 00:48:33,210 --> 00:48:33,952 >> JASON هيرشهورن: تنتهي؟ 905 00:48:33,952 --> 00:48:35,280 >> الطالب: أرى مشكلة مع ك - 906 00:48:35,280 --> 00:48:35,750 >> JASON هيرشهورن: OK. 907 00:48:35,750 --> 00:48:39,150 كذلك، أن ننظر في الوسط. 908 00:48:39,150 --> 00:48:41,226 كيف لنا أن نعرف ما هو الوسط؟ 909 00:48:41,226 --> 00:48:42,450 نعم. 910 00:48:42,450 --> 00:48:43,070 لذلك اسمحوا لي أن حذف التعليمات البرمجية. 911 00:48:43,070 --> 00:48:46,360 كيف لنا أن نعرف ما هو الوسط؟ 912 00:48:46,360 --> 00:48:48,003 في أي شيء، عندما يكون لديك بداية ونهاية، كيف تجد 913 00:48:48,003 --> 00:48:48,876 الوسط؟ 914 00:48:48,876 --> 00:48:49,590 >> الطالب: أنت في المتوسط. 915 00:48:49,590 --> 00:48:51,820 >> الطالب: أنت إضافتها معا وبعد ذلك - 916 00:48:51,820 --> 00:48:53,150 >> JASON هيرشهورن: إضافة لهم معا، وبعد ذلك؟ 917 00:48:53,150 --> 00:48:54,090 >> الطالب: ومتوسط ​​لك. 918 00:48:54,090 --> 00:48:55,050 نقسمه 2. 919 00:48:55,050 --> 00:48:56,500 >> JASON هيرشهورن: إضافة لهم معا والقسمة على 2. 920 00:48:56,500 --> 00:48:59,400 بحيث يساوي منتصف الباحث؟ 921 00:48:59,400 --> 00:49:01,120 توم، يمكنك تعطيه لي؟ 922 00:49:01,120 --> 00:49:03,550 >> الطالب: بداية زائد تنتهي - 923 00:49:03,550 --> 00:49:04,950 >> JASON هيرشهورن: بداية المنتدى بالإضافة إلى النهاية. 924 00:49:04,950 --> 00:49:06,880 >> الطالب: جميع، قوس، مقسوما على 2. 925 00:49:06,880 --> 00:49:10,940 >> JASON هيرشهورن: جميع، بين قوسين، مقسوما على 2. 926 00:49:10,940 --> 00:49:16,300 بحيث يعطيني الوسط من أي شيء، صحيح؟ 927 00:49:16,300 --> 00:49:18,980 >> الطالب: أنت بحاجة أيضا لجولة عنه. 928 00:49:18,980 --> 00:49:19,990 >> JASON هيرشهورن: ماذا تفعل أنت يعني، ولست بحاجة لجولة عنه؟ 929 00:49:19,990 --> 00:49:20,400 >> [VOICES فاصلة] 930 00:49:20,400 --> 00:49:24,520 >> الطالب: لأنه إذا انها غريبة العدد، ثم انها مثل - 931 00:49:24,520 --> 00:49:25,440 >> JASON هيرشهورن: حسنا، حسنا. 932 00:49:25,440 --> 00:49:26,360 حتى أتمكن من جولة عنه. 933 00:49:26,360 --> 00:49:33,350 ولكن اذا كان عدد فردي، على بعد 5، يمكنني 1 اتخاذ بعيدا عن الوسط. 934 00:49:33,350 --> 00:49:35,665 أو إذا كان عدد زوجي، بدلا من ذلك، وهذا هو الحال أفضل. 935 00:49:35,665 --> 00:49:39,600 اذا كان 4، لدينا 4 فقط، وأنا يمكن أن تتخذ أول "الوسط"، واقتبس، أو نهاية الاقتباس 936 00:49:39,600 --> 00:49:41,760 والثاني "الوسط" واحد. 937 00:49:41,760 --> 00:49:46,390 إما أن نعمل من أجل البحث الثنائي، لذلك أنا لا تحتاج في الواقع لتقريب ذلك. 938 00:49:46,390 --> 00:49:48,640 ولكن هناك شيء واحد أنا الأخرى بحاجة الى ان ننظر في هذا الخط. 939 00:49:48,640 --> 00:49:50,530 ونحن قد لا يدركون ذلك بعد، ولكننا سوف نعود إليها. 940 00:49:50,530 --> 00:49:53,200 لأن هذا الخط في الواقع لا يزال يحتاج شيئا واحدا الأخرى. 941 00:49:53,200 --> 00:49:55,990 >> ولكن حتى الآن، لدينا كتب أربعة أسطر من التعليمات البرمجية. 942 00:49:55,990 --> 00:49:58,120 لدينا لدينا بداية وتنتهي علامات. 943 00:49:58,120 --> 00:50:01,320 لدينا حلقة في حين، التي تقوم بتعيين على مباشرة إلى شبة الكود لدينا. 944 00:50:01,320 --> 00:50:05,790 نحن نبحث في الوسط لخرائط مباشرة على شبة الكود لدينا. 945 00:50:05,790 --> 00:50:09,070 أود أن أقول هذا يذهب إلى الوسط من القائمة، وهذا سطر من التعليمات البرمجية. 946 00:50:09,070 --> 00:50:11,560 ثم، مرة واحدة نذهب إلى منتصف القائمة، والشيء التالي الذي عليك القيام به 947 00:50:11,560 --> 00:50:14,880 ومعرفة ما اذا كان لدينا هناك قيمة ل في شبة الكود كتبنا في وقت سابق. 948 00:50:14,880 --> 00:50:17,100 >> لذلك كيف يمكننا معرفة ما اذا كان لدينا قيمة هو في منتصف القائمة؟ 949 00:50:17,100 --> 00:50:17,300 لك. 950 00:50:17,300 --> 00:50:18,511 لماذا لا نفعل ذلك؟ 951 00:50:18,511 --> 00:50:23,070 >> الطالب: إذا كان لدينا قيمة هو في منتصف يساوي 952 00:50:23,070 --> 00:50:24,592 مهما وضعنا - 953 00:50:24,592 --> 00:50:26,190 أعني متساوية يساوي - 954 00:50:26,190 --> 00:50:26,690 >> JASON هيرشهورن: إنه - 955 00:50:26,690 --> 00:50:27,940 موافق. 956 00:50:27,940 --> 00:50:30,080 957 00:50:30,080 --> 00:50:32,170 >> الطالب: أنا لست متأكدا ما نحن نبحث متغير 958 00:50:32,170 --> 00:50:32,850 لذلك، هو أنه - 959 00:50:32,850 --> 00:50:33,330 >> [VOICES فاصلة] 960 00:50:33,330 --> 00:50:34,520 >> الطالب: [غير مسموع]. 961 00:50:34,520 --> 00:50:35,060 >> JASON هيرشهورن: بالضبط. 962 00:50:35,060 --> 00:50:37,260 في تعريف الدالة، نحن نبحث عن قيمة. 963 00:50:37,260 --> 00:50:39,760 لذلك نحن نبحث عن القيمة في مجموعة من القيم. 964 00:50:39,760 --> 00:50:41,080 لذلك كنت على حق تماما. 965 00:50:41,080 --> 00:50:45,040 ستفعل، إذا قوس قيمة PAREN مفتوحة وسط مغلق متساوين قوس 966 00:50:45,040 --> 00:50:49,930 يساوي قيمة، وهناك داخل ماذا علينا أن نفعل؟ 967 00:50:49,930 --> 00:50:51,230 اذا كان لدينا قيمة هناك، ما لا يتعين علينا القيام به؟ 968 00:50:51,230 --> 00:50:51,420 >> [VOICES فاصلة] 969 00:50:51,420 --> 00:50:52,160 >> الطالب: الرجوع الصفر. 970 00:50:52,160 --> 00:50:53,070 >> JASON هيرشهورن: العودة الحقيقية. 971 00:50:53,070 --> 00:50:54,790 >> الطالب: العودة الحقيقية. 972 00:50:54,790 --> 00:50:57,856 >> JASON هيرشهورن: مايكل، ماذا تفعل هذا الخط؟ 973 00:50:57,856 --> 00:51:01,105 >> الطالب: [غير مسموع] قد تشغيل البرنامج مجراها، وهذا هو أكثر، و 974 00:51:01,105 --> 00:51:01,920 كنت قد ما عليك القيام به؟ 975 00:51:01,920 --> 00:51:03,030 >> JASON هيرشهورن: البرنامج أم ماذا؟ 976 00:51:03,030 --> 00:51:03,700 في هذه الحالة؟ 977 00:51:03,700 --> 00:51:04,210 >> الطالب: وظيفة. 978 00:51:04,210 --> 00:51:05,170 >> JASON هيرشهورن: وظيفة. 979 00:51:05,170 --> 00:51:08,420 وهكذا، إلى العودة إلى ما يسمى وإعطائها قيمة، صحيح. 980 00:51:08,420 --> 00:51:09,890 صحيح تماما. 981 00:51:09,890 --> 00:51:10,170 الرئيسية. 982 00:51:10,170 --> 00:51:12,035 ما هو نوع الإرجاع من الرئيسي، مايكل؟ 983 00:51:12,035 --> 00:51:16,480 984 00:51:16,480 --> 00:51:17,150 >> الطالب: كثافة العمليات، صحيح؟ 985 00:51:17,150 --> 00:51:18,080 >> JASON هيرشهورن: كثافة العمليات، بالضبط. 986 00:51:18,080 --> 00:51:18,680 عدد صحيح. 987 00:51:18,680 --> 00:51:20,980 كان هذا مجرد سؤال للتأكد من كان يا رفاق على أعلى من ذلك. 988 00:51:20,980 --> 00:51:24,250 ما الذي يتطلبه الأمر عادة العودة، إذا كل الأشياء تعمل بشكل جيد؟ 989 00:51:24,250 --> 00:51:24,520 >> الطالب: صفر. 990 00:51:24,520 --> 00:51:24,820 >> JASON هيرشهورن: صفر. 991 00:51:24,820 --> 00:51:25,430 صحيح تماما. 992 00:51:25,430 --> 00:51:28,790 >> الطالب: إذا كان هذا يعود فقط صحيحا، ليس هناك معلومات يولى 993 00:51:28,790 --> 00:51:30,675 حول ما - 994 00:51:30,675 --> 00:51:34,040 أوه، هذا هو فقط أقول أن هذا قيمة من داخل مجموعة. 995 00:51:34,040 --> 00:51:35,350 >> JASON هيرشهورن: بالضبط. 996 00:51:35,350 --> 00:51:38,080 هذا البرنامج هو عدم اعطاء المعلومات من حيث القيمة هي بالضبط. 997 00:51:38,080 --> 00:51:41,850 انها اكتفت بالقول، نعم، وجدنا عليه، أو لا، لم نجد ذلك. 998 00:51:41,850 --> 00:51:42,990 لذلك إذا وجدت عدد، والعودة الحقيقية. 999 00:51:42,990 --> 00:51:45,500 حسنا، في الواقع نحن لم يفعلوا ذلك حقا بسرعة مع أن سطر واحد من التعليمات البرمجية. 1000 00:51:45,500 --> 00:51:47,500 ولذا فإنني سوف يتحرك هذا الخط من شبة الكود. 1001 00:51:47,500 --> 00:51:50,045 >> الطالب: لا نحتاج لتغيير مجموعة؟ 1002 00:51:50,045 --> 00:51:52,830 يجب أن تكون القيم، وليس القيمة، أليس كذلك؟ 1003 00:51:52,830 --> 00:51:53,430 >> JASON هيرشهورن: آسف. 1004 00:51:53,430 --> 00:51:54,010 شكرا لك. 1005 00:51:54,010 --> 00:51:54,800 >> الطالب: نعم. 1006 00:51:54,800 --> 00:51:55,850 >> JASON هيرشهورن: هذا الخط يجب أن تكون القيم. 1007 00:51:55,850 --> 00:51:57,150 صحيح تماما. 1008 00:51:57,150 --> 00:51:57,920 موافق. 1009 00:51:57,920 --> 00:51:59,170 ولذا فإننا قد بحثت في قائمة الوسط. 1010 00:51:59,170 --> 00:52:00,790 إذا وجدت عدد العودة الحقيقية. 1011 00:52:00,790 --> 00:52:04,470 مع استمرار على شبة الكود لدينا، إذا الوسط هو أكبر، وترك البحث. 1012 00:52:04,470 --> 00:52:09,640 لذلك اضطررت هنا، إذا كان رقم أعلى، ترك البحث. 1013 00:52:09,640 --> 00:52:12,700 1014 00:52:12,700 --> 00:52:14,462 قسنطينة، يمكنك ان تعطي لي هذا السطر من التعليمات البرمجية؟ 1015 00:52:14,462 --> 00:52:17,240 1016 00:52:17,240 --> 00:52:23,520 >> الطالب: إذا كان قيمة الوسط - 1017 00:52:23,520 --> 00:52:24,890 >> JASON هيرشهورن: حتى إذا القيمة - 1018 00:52:24,890 --> 00:52:28,890 إذا PAREN مفتوحة القيم قوس قوس إغلاق الوسط - 1019 00:52:28,890 --> 00:52:31,500 >> الطالب: هل أصغر من القيمة؟ 1020 00:52:31,500 --> 00:52:32,760 >> JASON هيرشهورن: هل أقل من. 1021 00:52:32,760 --> 00:52:33,800 >> الطالب: أقل من القيمة. 1022 00:52:33,800 --> 00:52:34,060 >> JASON هيرشهورن: القيمة. 1023 00:52:34,060 --> 00:52:35,310 حسنا، في الواقع، تريد معرفة ما اذا كان عدد - 1024 00:52:35,310 --> 00:52:38,310 1025 00:52:38,310 --> 00:52:38,490 آسف. 1026 00:52:38,490 --> 00:52:39,140 هذا هو مربكة قليلا. 1027 00:52:39,140 --> 00:52:43,920 ولكن إذا كان عدد آخر في منتصف القائمة هو أكبر. 1028 00:52:43,920 --> 00:52:45,170 >> الطالب: أوه، حسنا. 1029 00:52:45,170 --> 00:52:49,800 1030 00:52:49,800 --> 00:52:50,410 >> JASON هيرشهورن: سوف يغير ذلك. 1031 00:52:50,410 --> 00:52:55,060 والا اذا الأوسط هو أعلى، ونحن تريد البحث اليسار، حسنا؟ 1032 00:52:55,060 --> 00:52:57,310 وماذا نفعل في الداخل هذا اذا كان الشرط؟ 1033 00:52:57,310 --> 00:53:03,660 1034 00:53:03,660 --> 00:53:07,510 >> الطالب: هل يمكنني إجراء تغيير صغير ل الشرط، تغييره إلى آخر إذا؟ 1035 00:53:07,510 --> 00:53:08,380 >> JASON هيرشهورن: آخر إذا؟ 1036 00:53:08,380 --> 00:53:09,270 موافق. 1037 00:53:09,270 --> 00:53:12,840 لذلك هذا الكود وتنفيذ عن نفسه. 1038 00:53:12,840 --> 00:53:18,620 ولكن الشيء الجميل حول استخدام إذا، وإلا إذا، وإلا إذا أو إذا، وإلا إذا، وإلا 1039 00:53:18,620 --> 00:53:22,320 يعني أن واحدا فقط من هؤلاء هو الذهاب الى أن يتم التحقق، وليس كل ثلاثة منهم، 1040 00:53:22,320 --> 00:53:23,290 يحتمل. 1041 00:53:23,290 --> 00:53:25,530 وهذا ما يجعلها قليلا أجمل على الكمبيوتر هذا 1042 00:53:25,530 --> 00:53:26,670 تشغيل البرنامج. 1043 00:53:26,670 --> 00:53:27,620 >> حتى [؟ قسنطينة،؟] 1044 00:53:27,620 --> 00:53:31,330 نحن داخل هذا الخط، الا اذا القيم، قوس منتصف قوس إغلاق 1045 00:53:31,330 --> 00:53:32,260 أكبر من القيمة. 1046 00:53:32,260 --> 00:53:33,150 ماذا علينا أن نفعل؟ 1047 00:53:33,150 --> 00:53:33,970 نحن بحاجة للبحث في اليسار. 1048 00:53:33,970 --> 00:53:35,220 كيف نفعل ذلك؟ 1049 00:53:35,220 --> 00:53:46,960 1050 00:53:46,960 --> 00:53:48,720 انا ذاهب الى ان نعطيكم البداية. 1051 00:53:48,720 --> 00:53:52,210 >> لدينا اثنين من هذه الأشياء تسمى تبدأ وتنتهي. 1052 00:53:52,210 --> 00:53:57,340 وذلك ما يجب أن يحدث إلى بداية؟ 1053 00:53:57,340 --> 00:53:59,640 إذا كنت تريد البحث يسار قائمة، وحصلنا على بداية الحالي. 1054 00:53:59,640 --> 00:54:01,080 ماذا علينا أن نفعل ذلك؟ 1055 00:54:01,080 --> 00:54:04,220 >> الطالب: وضعنا بداية إلى الوسط زائد 1. 1056 00:54:04,220 --> 00:54:05,120 >> JASON هيرشهورن: حتى إذا نحن البحث في اليسار؟ 1057 00:54:05,120 --> 00:54:06,250 >> الطالب: عذرا، وسط ناقص - 1058 00:54:06,250 --> 00:54:11,310 حتى النهاية سيكون الوسط ناقص 1 وبداية - 1059 00:54:11,310 --> 00:54:12,450 >> JASON هيرشهورن: وماذا يحدث للبداية؟ 1060 00:54:12,450 --> 00:54:13,210 >> الطالب: إنه يبقى على حاله. 1061 00:54:13,210 --> 00:54:14,120 >> JASON هيرشهورن: إذن معنى يبقى على حاله. 1062 00:54:14,120 --> 00:54:16,040 إذا كان لنا أن تبحث اليسار، ونحن باستخدام نفس البداية - 1063 00:54:16,040 --> 00:54:16,860 صحيح تماما. 1064 00:54:16,860 --> 00:54:17,870 وتنتهي؟ 1065 00:54:17,870 --> 00:54:19,390 آسف، ما يقوم به تنتهي متساوية مرة أخرى؟ 1066 00:54:19,390 --> 00:54:20,750 >> الطالب: ناقص الأوسط 1. 1067 00:54:20,750 --> 00:54:21,620 >> JASON هيرشهورن: ناقص الأوسط 1. 1068 00:54:21,620 --> 00:54:23,470 الآن، لماذا ناقص 1 والمتوسطة ليس فقط؟ 1069 00:54:23,470 --> 00:54:32,870 1070 00:54:32,870 --> 00:54:35,570 >> الطالب: وسط وخرج من صورة بالفعل، لأننا كان ل 1071 00:54:35,570 --> 00:54:36,700 فحص أنه من أصل؟ 1072 00:54:36,700 --> 00:54:37,630 >> JASON هيرشهورن: هذا صحيح تماما. 1073 00:54:37,630 --> 00:54:38,580 الوسط هو خارج الصورة. 1074 00:54:38,580 --> 00:54:39,800 بحثنا بالفعل الوسط. 1075 00:54:39,800 --> 00:54:44,730 لذلك نحن لا نريد "الوسط" الاقتباس نهاية الاقتباس، أن يستمر في 1076 00:54:44,730 --> 00:54:46,110 مجموعة أننا نبحث. 1077 00:54:46,110 --> 00:54:47,670 لذلك هذا أمر رائع. 1078 00:54:47,670 --> 00:54:50,670 >> والا اذا القيم قوس المنتصف هي أكبر من قيمة تنتهي التساوي 1079 00:54:50,670 --> 00:54:51,920 وسط ناقص 1. 1080 00:54:51,920 --> 00:54:55,060 1081 00:54:55,060 --> 00:54:57,340 جيف، ماذا عن هذا السطر الأخير؟ 1082 00:54:57,340 --> 00:54:58,590 >> الطالب: آخر. 1083 00:54:58,590 --> 00:55:02,486 1084 00:55:02,486 --> 00:55:06,000 القيم المتوسطة هي أقل من القيمة؟ 1085 00:55:06,000 --> 00:55:07,570 >> JASON هيرشهورن: سنقوم كنت إعطائي آخر. 1086 00:55:07,570 --> 00:55:09,310 لذلك إذا كنت لا تعطيني - 1087 00:55:09,310 --> 00:55:12,270 >> الطالب: حتى ذلك الحين بدأت سيكون منتصف زائد 1. 1088 00:55:12,270 --> 00:55:16,100 1089 00:55:16,100 --> 00:55:19,070 >> JASON هيرشهورن: متساوين بداية الوسط زائد 1، مرة أخرى، لنفس 1090 00:55:19,070 --> 00:55:20,820 السبب أن قسطنطين قدم لنا في وقت سابق. 1091 00:55:20,820 --> 00:55:24,280 وفي النهاية، الذين لم تعط لي سطر من التعليمات البرمجية حتى الآن؟ 1092 00:55:24,280 --> 00:55:26,600 عودة كاذبة، Aleha، ما لا نكتب هنا؟ 1093 00:55:26,600 --> 00:55:28,590 >> الطالب: عودة كاذبة. 1094 00:55:28,590 --> 00:55:29,320 >> JASON هيرشهورن: عودة كاذبة. 1095 00:55:29,320 --> 00:55:33,340 ونحن بحاجة إلى أن تفعل ذلك، لأنه إذا نحن لا تجد ذلك، ونحن بحاجة إلى أن أقول نحن 1096 00:55:33,340 --> 00:55:34,080 لم تجد. 1097 00:55:34,080 --> 00:55:36,270 وقلنا أننا ذاهبون للعودة منطقيا، لذلك لدينا بالتأكيد للعودة 1098 00:55:36,270 --> 00:55:38,150 ومكان منطقي. 1099 00:55:38,150 --> 00:55:42,590 >> لذلك دعونا تشغيل هذا الرمز. 1100 00:55:42,590 --> 00:55:44,520 انا ذاهب فعلا ل- 1101 00:55:44,520 --> 00:55:45,930 لذلك نحن في المحطة. 1102 00:55:45,930 --> 00:55:47,230 سنقوم مسح إطار عملنا. 1103 00:55:47,230 --> 00:55:49,270 دعونا جعل جميع. 1104 00:55:49,270 --> 00:55:50,340 وجدنا هناك خطأ واحد. 1105 00:55:50,340 --> 00:55:54,280 هناك خطأ على خط 15، المتوقع منقوطة في نهاية 1106 00:55:54,280 --> 00:55:54,890 الإعلان. 1107 00:55:54,890 --> 00:55:56,454 وذلك ما لم أنسى؟ 1108 00:55:56,454 --> 00:55:57,230 >> الطالب: الفاصلة المنقوطة. 1109 00:55:57,230 --> 00:56:00,200 >> JASON هيرشهورن: الفاصلة المنقوطة الحق هنا. 1110 00:56:00,200 --> 00:56:00,950 اعتقد ان هذا كان رمز توم. 1111 00:56:00,950 --> 00:56:01,870 حتى توم، [غير مسموع]. 1112 00:56:01,870 --> 00:56:03,120 مجرد مزاح. 1113 00:56:03,120 --> 00:56:05,010 1114 00:56:05,010 --> 00:56:07,310 دعونا لا تجعل جميع مرة أخرى. 1115 00:56:07,310 --> 00:56:10,180 >> الطالب: ما قطاف الدليل يجب أن نكون في هذا؟ 1116 00:56:10,180 --> 00:56:11,345 >> JASON هيرشهورن: حتى يمكنك مشاهدة فقط لهذا الشيء. 1117 00:56:11,345 --> 00:56:16,380 ولكن مرة أخرى، إذا أردت نقل هذا رمز إلى دليل pset3 لمحاولة 1118 00:56:16,380 --> 00:56:17,050 من ذلك، وهذا ما فعلته. 1119 00:56:17,050 --> 00:56:18,600 إذا كنت ستلاحظ هنا - آسف، سؤال جيد. 1120 00:56:18,600 --> 00:56:19,460 >> [؟ LS،؟] 1121 00:56:19,460 --> 00:56:24,700 لدي هنا رمز find.c من التعليمات البرمجية توزيعة هذا الأسبوع. 1122 00:56:24,700 --> 00:56:26,300 لدي helpers.h. 1123 00:56:26,300 --> 00:56:30,010 لدي ملف نوع السيارة التي أنا في الواقع تحرير قليلا لتشمل هذه جديدة 1124 00:56:30,010 --> 00:56:30,710 ملفات اننا الكتابة. 1125 00:56:30,710 --> 00:56:34,120 كل ذلك سوف تكون متاحة كود، لا رمز التوزيع، ولكن الجديد 1126 00:56:34,120 --> 00:56:39,510 جعل الملف، ملف سوف helpers.h جديدة تكون متاحة على الانترنت للتحميل. 1127 00:56:39,510 --> 00:56:41,800 مرة أخرى، حتى تلك هي رموز اضافية لدينا. 1128 00:56:41,800 --> 00:56:46,130 >> لذا تأكد كل شيء، في هذا الخط، يجعل العثور عليها، ثنائي، واختيار فقاعة - يجعل 1129 00:56:46,130 --> 00:56:50,930 كل ثلاثة منهم ويجمع في هذا الاكتشاف قانون قابل للتنفيذ. 1130 00:56:50,930 --> 00:56:54,090 لذلك عموما، ونحن لا نريد على التوالي لcheck50. 1131 00:56:54,090 --> 00:56:57,580 نحن نريد لتشغيل بعض الاختبارات لوحدنا. 1132 00:56:57,580 --> 00:57:11,750 ولكن فقط حتى نتمكن من تسريع هذا قليلا، سوف check50 2013 pset3.find تمرير 1133 00:57:11,750 --> 00:57:14,630 في helpers.c - بلدي سيئة. 1134 00:57:14,630 --> 00:57:16,050 >> ليس لدي هذا الحق الآن. 1135 00:57:16,050 --> 00:57:20,670 لذلك نحن ذاهبون فعلا ل تشغيل التعليمات البرمجية لريال مدريد. 1136 00:57:20,670 --> 00:57:23,570 Usage.find /، وانت تعرف ماذا يعني ذلك؟ 1137 00:57:23,570 --> 00:57:25,970 >> الطالب: كنت في حاجة الى الثانية سطر الأوامر على ذلك. 1138 00:57:25,970 --> 00:57:26,980 >> JASON هيرشهورن: أحتاج سطر الأوامر الثاني. 1139 00:57:26,980 --> 00:57:30,640 وفقا للمواصفات، ولست بحاجة لإدخال ما تبحث عنه. 1140 00:57:30,640 --> 00:57:33,750 لذلك دعونا ننظر ل42. 1141 00:57:33,750 --> 00:57:37,030 وسوف نستمر في فرزها، لأننا لم أكتب وظيفة الفرز حتى الآن - 1142 00:57:37,030 --> 00:57:41,830 42، 43، 44. 1143 00:57:41,830 --> 00:57:46,240 >> وتحكم D لم تجد إبرة في كومة قش. 1144 00:57:46,240 --> 00:57:46,505 فهذا أمر سيئ. 1145 00:57:46,505 --> 00:57:47,200 انها بالتأكيد هناك. 1146 00:57:47,200 --> 00:57:48,090 دعونا نجرب شيئا آخر. 1147 00:57:48,090 --> 00:57:49,860 ربما حان لأن أضع ذلك في البداية. 1148 00:57:49,860 --> 00:57:54,490 >> دعونا نفعل 41، 42، 43. 1149 00:57:54,490 --> 00:57:55,012 هناك نذهب. 1150 00:57:55,012 --> 00:57:56,400 وجدت ذلك. 1151 00:57:56,400 --> 00:58:00,040 دعونا نضع ذلك في نهاية الآن، فقط ولذا فإننا يمكن أن يكون شاملا - 1152 00:58:00,040 --> 00:58:03,580 40، 41، 42. 1153 00:58:03,580 --> 00:58:05,760 لم يجد الإبرة. 1154 00:58:05,760 --> 00:58:07,550 لذلك أنا ذكرت هذا في وقت سابق. 1155 00:58:07,550 --> 00:58:08,980 للأسف، وأنا أعرف هذا كان على وشك أن يحدث. 1156 00:58:08,980 --> 00:58:11,490 >> ولكن لأغراض تربوية، انها جيدة لاستكشاف ذلك. 1157 00:58:11,490 --> 00:58:12,990 أنها لا تعمل. 1158 00:58:12,990 --> 00:58:16,020 لسبب ما، فإنه لا يمكن العثور عليه. 1159 00:58:16,020 --> 00:58:18,970 ونحن نعلم ما في هناك، ولكن نحن لا يجدون. 1160 00:58:18,970 --> 00:58:24,140 ذلك شيء واحد يمكننا القيام به هو الذهاب من خلال GDB للعثور عليه، ولكن لا أحد، 1161 00:58:24,140 --> 00:58:27,850 دون المرور عبر GDB، لديها الشعور أين نحن ثمل؟ 1162 00:58:27,850 --> 00:58:28,480 [؟ مادو؟ ؟] 1163 00:58:28,480 --> 00:58:30,960 >> الطالب: أعتقد أنه قد يكون عندما تنتهي يساوي البداية، وانها 1164 00:58:30,960 --> 00:58:33,090 مجرد قائمة من عنصر واحد. 1165 00:58:33,090 --> 00:58:35,560 فإنه يتجاهل فقط بدلا للتحقق فعلا. 1166 00:58:35,560 --> 00:58:36,940 >> JASON هيرشهورن: هذا صحيح تماما. 1167 00:58:36,940 --> 00:58:41,110 عندما يساوي نهاية بداية، هل نحن لا تزال لديها عنصر في قائمتنا؟ 1168 00:58:41,110 --> 00:58:42,480 >> الطالب: نعم. 1169 00:58:42,480 --> 00:58:45,450 >> JASON هيرشهورن: نعم، في الواقع، ونحن لديك واحدة وعنصر واحد فقط. 1170 00:58:45,450 --> 00:58:50,500 والتي من المرجح أن يحدث عندما، في رمز اختبرنا، نحن في 1171 00:58:50,500 --> 00:58:54,640 أمام كومة قش أو في نهاية كومة قش. 1172 00:58:54,640 --> 00:58:56,000 حيث ان بداية و إنهاء يجري على قدم المساواة 1173 00:58:56,000 --> 00:58:57,820 واحد، مع البحث الثنائي. 1174 00:58:57,820 --> 00:59:01,440 حتى في هاتين الحالتين لم يعمل، لأن إنهاء كان يساوي البداية. 1175 00:59:01,440 --> 00:59:06,030 >> ولكن إذا المنتهية يساوي البداية، هل هذا في حين حلقة تنفيذ؟ 1176 00:59:06,030 --> 00:59:06,390 لم يحدث ذلك. 1177 00:59:06,390 --> 00:59:08,660 ونحن يمكن أن يكون فحص ذلك مرة أخرى من خلال GDB. 1178 00:59:08,660 --> 00:59:14,000 فكيف يمكننا حل هذا الرمز، لأن عندما تنتهي حين يساوي 1179 00:59:14,000 --> 00:59:16,070 بداية، ونحن نريد أيضا هذه في حين حلقة لتشغيل. 1180 00:59:16,070 --> 00:59:18,620 >> ذلك ما يمكن أن نجعل الإصلاح إلى خط 18؟ 1181 00:59:18,620 --> 00:59:21,060 >> الطالب: [غير مسموع] أكبر من أو يساوي. 1182 00:59:21,060 --> 00:59:21,700 >> JASON هيرشهورن: الحق بالضبط. 1183 00:59:21,700 --> 00:59:24,600 بينما المنتهى هو أكبر من أو يساوي البداية. 1184 00:59:24,600 --> 00:59:27,300 وحتى الآن، أن نتأكد من الحصول على هذا حالة الزاوية في نهاية المطاف. 1185 00:59:27,300 --> 00:59:27,870 ودعونا نرى. 1186 00:59:27,870 --> 00:59:29,560 دعونا تشغيل هذا مرة واحدة أكثر من ذلك. 1187 00:59:29,560 --> 00:59:31,266 >> دعونا نجعل جميع. 1188 00:59:31,266 --> 00:59:33,910 مرة أخرى، سيكون لديك لمجرد متابعة على طول هنا. 1189 00:59:33,910 --> 00:59:36,280 تجد 41 هذا الوقت. 1190 00:59:36,280 --> 00:59:37,360 تبقي فقط متسقة. 1191 00:59:37,360 --> 00:59:38,210 >> تجد 42. 1192 00:59:38,210 --> 00:59:38,930 دعونا نضع ذلك في بداية - 1193 00:59:38,930 --> 00:59:41,630 42، 43، 44. 1194 00:59:41,630 --> 00:59:42,860 وجدنا أنه. 1195 00:59:42,860 --> 00:59:47,710 بحيث كان في الواقع التغيير نحن بحاجة لجعل. 1196 00:59:47,710 --> 00:59:51,090 >> وكان أن الكثير من الترميز نحن مجرد فعل، البحث الثنائي. 1197 00:59:51,090 --> 00:59:55,760 هل لدى أي شخص أي أسئلة قبل أنتقل إلى خطوط على كتبنا في 1198 00:59:55,760 --> 00:59:58,750 البحث الثنائي أو كيف برزت لنا ما أننا لم معرفة؟ 1199 00:59:58,750 --> 01:00:01,900 1200 01:00:01,900 --> 01:00:06,270 قبل أن ننتقل، أريد أيضا أن أشير إلى أن إلى حد كبير، ونحن تعيين 1201 01:00:06,270 --> 01:00:09,300 لدينا الزائفة رمز واحد ل واحدة على رمز لنا. 1202 01:00:09,300 --> 01:00:11,550 >> نحن لم يكون هذا شيء صعب لمعرفة مع 1203 01:00:11,550 --> 01:00:12,890 تبدأ وتنتهي. 1204 01:00:12,890 --> 01:00:17,380 ولكن قد لا أحسب أنه من أصل، كنت قد كتبت الى حد كبير 1205 01:00:17,380 --> 01:00:20,740 كود متطابقة، باستثناء تلك أعلى سطرين. 1206 01:00:20,740 --> 01:00:23,380 وبعد ذلك كنت قد أدركت عندما قمت بها في الضوابط والحالات التي 1207 01:00:23,380 --> 01:00:24,840 كنت بحاجة الى شيء آخر. 1208 01:00:24,840 --> 01:00:28,510 ذلك حتى لو كنت قد اتبعت لدينا خط الزائفة رمز إلى الخط، وكنت قد قمت 1209 01:00:28,510 --> 01:00:31,130 حصلت جميع ولكن اثنين من خطوط رمز كنت في حاجة إلى الكتابة. 1210 01:00:31,130 --> 01:00:33,900 >> وسأكون على استعداد للمراهنة على أن يا رفاق كان كل أحسب أنه من أصل 1211 01:00:33,900 --> 01:00:37,940 بسرعة كبيرة، التي كنت في حاجة لوضع نوعا من علامة في هناك لمعرفة 1212 01:00:37,940 --> 01:00:39,190 من أين كنتم. 1213 01:00:39,190 --> 01:00:41,540 1214 01:00:41,540 --> 01:00:44,550 ذلك مرة أخرى، هي قوة للقيام الزائفة رمز في وقت مبكر. 1215 01:00:44,550 --> 01:00:47,310 لذلك يمكننا أن نفعل المنطق أولا، ثم يمكننا أن تقلق على بناء الجملة. 1216 01:00:47,310 --> 01:00:51,470 >> نحن قد تم الخلط حول المنطق أثناء محاولة كتابة هذا الرمز في C، 1217 01:00:51,470 --> 01:00:53,110 كنا قد حصلت على كل عابث. 1218 01:00:53,110 --> 01:00:56,340 ومن ثم فإننا سنكون طرح أسئلة حول المنطق وبناء الجملة والربط 1219 01:00:56,340 --> 01:00:57,320 كل منهم معا. 1220 01:00:57,320 --> 01:01:02,170 ونحن قد حصلت المفقودة في ما يمكن أن تصبح بسرعة 1221 01:01:02,170 --> 01:01:04,000 مشكلة صعبة للغاية. 1222 01:01:04,000 --> 01:01:08,680 لذلك دعونا ننتقل الآن لاختيار نوع. 1223 01:01:08,680 --> 01:01:10,760 >> لدينا 20 دقيقة من النهاية. 1224 01:01:10,760 --> 01:01:14,130 لذلك لدي شعور أننا لن تكون قادرة على من خلال الحصول على كل من اختيار نوع 1225 01:01:14,130 --> 01:01:15,940 وفقاعة الفرز. 1226 01:01:15,940 --> 01:01:20,670 ولكن دعونا على الأقل محاولة لإنهاء اختيار نوع. 1227 01:01:20,670 --> 01:01:23,540 وتنفيذ ذلك اختيار نوع استخدام التالية ظيفة الإعلان. 1228 01:01:23,540 --> 01:01:27,530 >> مرة أخرى، يؤخذ هذا من مشكلة تعيين مواصفات. 1229 01:01:27,530 --> 01:01:31,560 قيم كثافة العمليات هو بين قوسين، هو مجموعة من الأعداد الصحيحة. 1230 01:01:31,560 --> 01:01:33,490 وint.n هو حجم هذا الصفيف. 1231 01:01:33,490 --> 01:01:36,840 اختيار نوع يجري لفرز هذه المجموعة. 1232 01:01:36,840 --> 01:01:43,580 >> لذلك في نموذج العقلية لدينا الاختيار نوع، ونحن سحب - 1233 01:01:43,580 --> 01:01:47,720 أولا، نذهب من خلال القائمة الأولى الوقت، والعثور على أصغر عدد، 1234 01:01:47,720 --> 01:01:52,860 وضعه في البداية، تجد الثاني أصغر عدد، ووضعها في 1235 01:01:52,860 --> 01:01:56,380 المركز الثاني إذا كنا نريد أن الفرز في ترتيب تصاعدي. 1236 01:01:56,380 --> 01:01:58,440 أنا لا يجبرك على الكتابة الزائفة رمز الآن. 1237 01:01:58,440 --> 01:02:01,350 >> ولكن قبل ان نفعل الكود كما في فئة خمس دقائق، ونحن نذهب لكتابة 1238 01:02:01,350 --> 01:02:03,550 الزائفة رمز لذلك لدينا بعض الشعور من أين نحن ذاهبون. 1239 01:02:03,550 --> 01:02:05,630 حتى محاولة لكتابة رمز الزائفة لوحدك. 1240 01:02:05,630 --> 01:02:08,610 ثم محاولة تحويل هذا الزائفة رمز إلى رمز. 1241 01:02:08,610 --> 01:02:10,740 وسوف نفعل ذلك كمجموعة في خمس دقائق. 1242 01:02:10,740 --> 01:02:32,560 1243 01:02:32,560 --> 01:02:33,895 >> وبطبيعة الحال، اسمحوا لي أن أعرف إذا لديك أي أسئلة. 1244 01:02:33,895 --> 01:03:56,738 1245 01:03:56,738 --> 01:03:58,230 >> الطالب: هذا هو؟ 1246 01:03:58,230 --> 01:04:00,280 >> JASON هيرشهورن: انظر كيف كنت بعيدا يمكن أن تحصل في اثنين من أكثر دقيقة. 1247 01:04:00,280 --> 01:04:01,790 أنا أفهم أنك لن تكون قادرة على الانتهاء. 1248 01:04:01,790 --> 01:04:03,050 ولكن سوف نذهب أكثر هذه كمجموعة. 1249 01:04:03,050 --> 01:04:57,830 1250 01:04:57,830 --> 01:05:00,630 >> كنت كل ذلك الترميز [غير مسموع]، لذلك أنا آسف لإيقاف ما تفعلونه. 1251 01:05:00,630 --> 01:05:02,530 ولكن دعنا نذهب من خلال هذا كمجموعة. 1252 01:05:02,530 --> 01:05:07,590 ومرة أخرى، البحث الثنائي، لكم جميعا إعطاء لي واحد إن لم يكن أكثر الأسطر من التعليمات البرمجية. 1253 01:05:07,590 --> 01:05:08,530 أشكركم على ذلك. 1254 01:05:08,530 --> 01:05:11,730 ونحن في طريقنا للقيام بنفس الشيء هنا، والرمز معا كمجموعة. 1255 01:05:11,730 --> 01:05:15,170 >> حتى اختيار نوع - دعونا إرسال بعض سريعة الزائفة التعليمات البرمجية. 1256 01:05:15,170 --> 01:05:20,380 لكل نموذج العقلية، ويمكن للشخص أن تعطيني السطر الأول من رمز الزائفة، من فضلك؟ 1257 01:05:20,380 --> 01:05:23,000 1258 01:05:23,000 --> 01:05:24,270 ماذا أريد أن أفعل؟ 1259 01:05:24,270 --> 01:05:27,070 >> الطالب: في حين أن قائمة هو خارج الترتيب. 1260 01:05:27,070 --> 01:05:30,630 >> JASON هيرشهورن: OK، في حين القائمة هو خارج الترتيب. 1261 01:05:30,630 --> 01:05:33,540 وماذا تعني "من النظام؟" 1262 01:05:33,540 --> 01:05:34,960 >> الطالب: على الرغم من [غير مسموع] 1263 01:05:34,960 --> 01:05:36,210 لم يتم فرزها. 1264 01:05:36,210 --> 01:05:38,460 1265 01:05:38,460 --> 01:05:40,290 >> JASON هيرشهورن: على الرغم من أن قائمة هو من أمر، ماذا نفعل؟ 1266 01:05:40,290 --> 01:05:44,200 أعطني السطر الثاني، من فضلك، ماركوس. 1267 01:05:44,200 --> 01:05:47,186 >> الطالب: لذا تجد المقبل أصغر رقم. 1268 01:05:47,186 --> 01:05:49,000 وسوف تكون بادئة بذلك. 1269 01:05:49,000 --> 01:05:55,140 >> JASON هيرشهورن: حتى العثور على المقبل أصغر رقم. 1270 01:05:55,140 --> 01:05:56,460 ثم شخص آخر؟ 1271 01:05:56,460 --> 01:06:01,030 مرة واحدة نجد أصغر المقبل العدد، ماذا نفعل؟ 1272 01:06:01,030 --> 01:06:03,010 انا ذاهب الى القول تجد أصغر رقم. 1273 01:06:03,010 --> 01:06:04,820 هذا ما نريد أن نفعله. 1274 01:06:04,820 --> 01:06:06,210 >> لذلك تجد على أقل عدد. 1275 01:06:06,210 --> 01:06:08,061 ثم ماذا نفعل؟ 1276 01:06:08,061 --> 01:06:09,480 >> الطالب: [غير مسموع] إلى البداية. 1277 01:06:09,480 --> 01:06:10,680 >> JASON هيرشهورن: عذرا؟ 1278 01:06:10,680 --> 01:06:12,700 >> الطالب: وضعه في بداية القائمة. 1279 01:06:12,700 --> 01:06:18,540 >> JASON هيرشهورن: حتى وضعه في في بداية القائمة. 1280 01:06:18,540 --> 01:06:20,140 وماذا نفعل الشيء ل كان ذلك في بداية 1281 01:06:20,140 --> 01:06:20,830 من القائمة، أليس كذلك؟ 1282 01:06:20,830 --> 01:06:21,910 نحن الكتابة شيئا. 1283 01:06:21,910 --> 01:06:23,130 إذن، أين نضع ذلك؟ 1284 01:06:23,130 --> 01:06:24,120 نعم، آنا؟ 1285 01:06:24,120 --> 01:06:25,520 >> الطالب: أين أصغر وكان العدد؟ 1286 01:06:25,520 --> 01:06:32,530 >> JASON هيرشورن: لذا وضعت بداية من القائمة حيث 1287 01:06:32,530 --> 01:06:35,180 وكان أقل عدد. 1288 01:06:35,180 --> 01:06:38,510 وذلك في حين أن القائمة خارج الترتيب، والعثور على أصغر عدد، وضعه في 1289 01:06:38,510 --> 01:06:40,630 في بداية القائمة، ووضع بداية القائمة حيث 1290 01:06:40,630 --> 01:06:42,900 وكان أقل عدد. 1291 01:06:42,900 --> 01:06:45,780 ماركوس، يمكنك إعادة صياغة هذا الخط في حين أن القائمة هي خارج الترتيب؟ 1292 01:06:45,780 --> 01:06:51,160 1293 01:06:51,160 --> 01:06:53,900 >> الطالب: في حين أن الأرقام لم يتم فرزها؟ 1294 01:06:53,900 --> 01:06:55,920 >> JASON هيرشورن: OK، وذلك من أجل نعلم أن الأرقام لم تكن 1295 01:06:55,920 --> 01:06:58,670 فرزها، ماذا علينا أن نفعل؟ 1296 01:06:58,670 --> 01:07:00,640 وكم نحتاج ل تذهب من خلال هذه القائمة؟ 1297 01:07:00,640 --> 01:07:09,650 >> الطالب: لذا أعتقد لحلقة، أو بينما، في حين فحص أرقام أقل 1298 01:07:09,650 --> 01:07:11,900 من طول القائمة؟ 1299 01:07:11,900 --> 01:07:13,160 >> JASON هيرشورن: حسنا، هذا امر جيد. 1300 01:07:13,160 --> 01:07:15,000 أعتقد أنني misphrased سؤالي سيئة. 1301 01:07:15,000 --> 01:07:15,990 كنت مجرد محاولة للحصول على ونحن في طريقنا لدينا للذهاب 1302 01:07:15,990 --> 01:07:17,580 من خلال اللائحة بأكملها. 1303 01:07:17,580 --> 01:07:20,490 وذلك في حين أن القائمة خارج الترتيب، بالنسبة لي، من الصعب على الخريطة. 1304 01:07:20,490 --> 01:07:24,940 ولكن أساسا، هذه هي الطريقة أفكر في هذا. 1305 01:07:24,940 --> 01:07:28,880 تذهب من خلال القائمة بأكملها، والعثور على أصغر عدد، وضعه في 1306 01:07:28,880 --> 01:07:30,130 تبدأ - في الواقع، أنت على حق. 1307 01:07:30,130 --> 01:07:31,380 دعونا نضع لهم على حد سواء. 1308 01:07:31,380 --> 01:07:33,470 1309 01:07:33,470 --> 01:07:39,050 >> ذلك في حين أن قائمة خارج النظام، و في حاجة للذهاب من خلال القائمة بأكملها 1310 01:07:39,050 --> 01:07:42,250 مرة واحدة، والعثور على أصغر رقم، مكان في بداية القائمة، وطرح 1311 01:07:42,250 --> 01:07:45,430 في بداية القائمة حيث وكان أقل عدد، ومن ثم إذا كان 1312 01:07:45,430 --> 01:07:47,460 لا تزال قائمة من أجل، لدينا حصلت على الذهاب من خلال هذا 1313 01:07:47,460 --> 01:07:48,620 العملية مرة أخرى، أليس كذلك؟ 1314 01:07:48,620 --> 01:07:51,610 هذا هو السبب في اختيار نوع، كبير-O وقت التشغيل اختيار نوع، أي شخص؟ 1315 01:07:51,610 --> 01:07:52,830 >> الطالب: ن المربعة. 1316 01:07:52,830 --> 01:07:53,590 >> JASON هيرشورن: ن المربعة. 1317 01:07:53,590 --> 01:07:57,040 لأن مثل ماركوس وأدركت فقط هنا، نحن ذاهبون لدينا ل 1318 01:07:57,040 --> 01:08:00,310 تذهب من خلال قائمة قائمة عدد من المرات. 1319 01:08:00,310 --> 01:08:03,420 حتى يمر شيء من طول ن ن عدد المرات 1320 01:08:03,420 --> 01:08:04,990 يتم في الواقع المربعة ن. 1321 01:08:04,990 --> 01:08:08,100 >> لذلك هذا هو شبة الكود لدينا. 1322 01:08:08,100 --> 01:08:09,360 هذا يبدو جيدا جدا. 1323 01:08:09,360 --> 01:08:11,870 هل لدى أي شخص أي أسئلة حول شبة الكود؟ 1324 01:08:11,870 --> 01:08:14,440 لأن الواقع ينبغي اختيار النوع ربما تأتي 12:59، رمز من 1325 01:08:14,440 --> 01:08:14,980 شبة الكود. 1326 01:08:14,980 --> 01:08:17,569 لذلك أي أسئلة حول منطق شبة الكود؟ 1327 01:08:17,569 --> 01:08:18,819 يرجى أسأل عليه الآن. 1328 01:08:18,819 --> 01:08:22,609 1329 01:08:22,609 --> 01:08:25,379 >> اختيار نوع - في حين أن قائمة خارج من النظام، ونحن في طريقنا للذهاب من خلال ذلك 1330 01:08:25,379 --> 01:08:27,529 والعثور على أصغر في كل مرة ووضعها في الجبهة. 1331 01:08:27,529 --> 01:08:33,470 وذلك في حين أن القائمة خارج الترتيب، يمكن شخص أن تعطيني سطر من التعليمات البرمجية الذي 1332 01:08:33,470 --> 01:08:39,689 لم يقدم لي خط من التعليمات البرمجية بعد، من فضلك؟ 1333 01:08:39,689 --> 01:08:40,939 هذا يبدو وكأنه ماذا؟ 1334 01:08:40,939 --> 01:08:43,669 1335 01:08:43,669 --> 01:08:44,649 >> الطالب: هذا هو لحلقة. 1336 01:08:44,649 --> 01:08:45,830 >> JASON هيرشورن: يبدو مثل حلقة for. 1337 01:08:45,830 --> 01:08:47,653 حسنا، يمكنك أن تعطيني لحلقة؟ 1338 01:08:47,653 --> 01:08:48,925 ل- 1339 01:08:48,925 --> 01:08:50,219 >> الطالب: ط يساوي 0. 1340 01:08:50,219 --> 01:08:52,705 >> JASON هيرشورن: أنا أو - 1341 01:08:52,705 --> 01:08:55,111 ما نحن في عداد المفقودين؟ 1342 01:08:55,111 --> 01:08:56,819 ما يجري هنا؟ 1343 01:08:56,819 --> 01:08:57,550 >> الطالب: كثافة العمليات. 1344 01:08:57,550 --> 01:08:59,270 >> JASON هيرشورن: بالضبط. 1345 01:08:59,270 --> 01:09:02,590 (كثافة العمليات ط = 0؛ - 1346 01:09:02,590 --> 01:09:07,843 >> الطالب: أنا <ن؛ ط + +). 1347 01:09:07,843 --> 01:09:09,319 >> JASON هيرشورن: مسمر، جيف. 1348 01:09:09,319 --> 01:09:10,660 ونحن في طريقنا من خلال قائمة، أليس كذلك؟ 1349 01:09:10,660 --> 01:09:11,880 شاهدنا هذا الرمز من قبل. 1350 01:09:11,880 --> 01:09:12,850 الكمال. 1351 01:09:12,850 --> 01:09:14,790 لذلك دعونا نضع الأقواس المتعرجة لدينا هنا. 1352 01:09:14,790 --> 01:09:17,859 انا ذاهب الى وضع بعض الأقواس المتعرجة هنا. 1353 01:09:17,859 --> 01:09:21,660 >> وذلك في حين انها 0، ونحن بحاجة للذهاب من خلال القائمة بأكملها. 1354 01:09:21,660 --> 01:09:26,612 لذلك كل مرة نذهب من خلال القائمة، ماذا نريد أن تتبع؟ 1355 01:09:26,612 --> 01:09:28,260 >> الطالب: إذا تم إجراء أي مقايضة. 1356 01:09:28,260 --> 01:09:29,069 >> JASON هيرشورن: البحث أصغر رقم. 1357 01:09:29,069 --> 01:09:31,479 لذلك ينبغي علينا ربما تتبع أصغر عدد في كل مرة. 1358 01:09:31,479 --> 01:09:34,590 ذلك الخط الذي يمكنني القيام به للحفاظ على المسار من أصغر عدد؟ 1359 01:09:34,590 --> 01:09:37,720 Aleha، وكيف يمكن أن أظل المسار من شيء؟ 1360 01:09:37,720 --> 01:09:38,460 >> الطالب: بدء متغير جديد. 1361 01:09:38,460 --> 01:09:39,390 >> JASON هيرشورن: بدء متغير جديد. 1362 01:09:39,390 --> 01:09:40,069 لذلك دعونا إنشاء متغير. 1363 01:09:40,069 --> 01:09:41,830 ما هو نوع؟ 1364 01:09:41,830 --> 01:09:42,930 >> الطالب: كثافة العمليات. 1365 01:09:42,930 --> 01:09:43,710 >> JASON هيرشورن: كثافة العمليات. 1366 01:09:43,710 --> 01:09:44,939 دعنا نسميها أصغر. 1367 01:09:44,939 --> 01:09:47,600 وماذا يفعل عندما متساوية نحن كنت بدأت للتو؟ 1368 01:09:47,600 --> 01:09:48,910 ونحن لم يذهب من خلال قائمة حتى الآن. 1369 01:09:48,910 --> 01:09:50,540 نحن في الجزء الأول من قائمة المرة الأولى التي نشارك بها. 1370 01:09:50,540 --> 01:09:51,930 ما تقوم به على قدم المساواة، و أصغر عدد؟ 1371 01:09:51,930 --> 01:09:54,140 >> الطالب: القيم ط. 1372 01:09:54,140 --> 01:09:54,900 >> JASON هيرشورن: القيم ط. 1373 01:09:54,900 --> 01:09:56,980 يبدو أن حق تماما، أليس كذلك؟ 1374 01:09:56,980 --> 01:09:59,590 أصغر عدد في بداية هو ما نحن فيه. 1375 01:09:59,590 --> 01:10:01,960 حتى الآن لدينا أصغر لدينا، ونحن بحاجة من خلال الذهاب الى القائمة بأكملها و 1376 01:10:01,960 --> 01:10:05,080 مقارنة هذا أصغر على كل شيء آخر. 1377 01:10:05,080 --> 01:10:08,150 حتى لا نذهب من خلال القائمة مرة أخرى؟ 1378 01:10:08,150 --> 01:10:08,630 مايكل؟ 1379 01:10:08,630 --> 01:10:10,000 >> الطالب: كنت بحاجة للتأكد آخر للحلقة. 1380 01:10:10,000 --> 01:10:10,383 >> JASON هيرشورن: آخر لحلقة. 1381 01:10:10,383 --> 01:10:11,276 دعونا نفعل ذلك. 1382 01:10:11,276 --> 01:10:12,540 تعطيني بعض التعليمات البرمجية. 1383 01:10:12,540 --> 01:10:13,790 >> الطالب: لحلقة - 1384 01:10:13,790 --> 01:10:16,750 1385 01:10:16,750 --> 01:10:19,470 لأصغر - 1386 01:10:19,470 --> 01:10:23,040 1387 01:10:23,040 --> 01:10:25,770 مجرد الباحث ي، هل يمكن أن أقول؟ 1388 01:10:25,770 --> 01:10:31,150 = 0؛ بحيث - 1389 01:10:31,150 --> 01:10:34,014 1390 01:10:34,014 --> 01:10:35,710 >> JASON هيرشورن: حسنا، إذا كنا نريد من خلال الذهاب الى القائمة بأكملها - 1391 01:10:35,710 --> 01:10:37,847 >> الطالب: ي <ن، ي + +). 1392 01:10:37,847 --> 01:10:42,140 1393 01:10:42,140 --> 01:10:42,405 >> JASON هيرشورن: ممتاز. 1394 01:10:42,405 --> 01:10:46,100 ونحن في طريقنا للذهاب من خلال وللحلقة مرة أخرى. 1395 01:10:46,100 --> 01:10:51,380 وكيف نجد أصغر عدد؟ 1396 01:10:51,380 --> 01:10:52,630 توم؟ 1397 01:10:52,630 --> 01:10:54,570 1398 01:10:54,570 --> 01:11:00,520 لدينا عدد أصغر الحالية، فكيف نجد أصغر الجديد؟ 1399 01:11:00,520 --> 01:11:07,200 >> الطالب: يمكننا معرفة ما اذا كان أصغر لدينا عدد أكبر من 1400 01:11:07,200 --> 01:11:09,040 تقدر قوس ي. 1401 01:11:09,040 --> 01:11:14,740 >> JASON هيرشورن: حتى إذا كان أصغر هي أكبر من القيم قوس ي. 1402 01:11:14,740 --> 01:11:19,350 إذا كان الأمر كذلك لدينا أصغر الحالي أكبر من - 1403 01:11:19,350 --> 01:11:21,770 انا ذاهب الى التحرك هذين الخطين من التعليمات البرمجية هناك لفترة ثانية. 1404 01:11:21,770 --> 01:11:26,010 لأنه قبل أن نفعل أي مبادلة، ونحن في حاجة للذهاب من خلال القائمة بأكملها. 1405 01:11:26,010 --> 01:11:28,880 لذلك ينبغي في الواقع هذا شبة الكود تكون خارج تلك الداخلية للحلقة. 1406 01:11:28,880 --> 01:11:30,390 لذلك يذهب من خلال القائمة بأكملها. 1407 01:11:30,390 --> 01:11:34,520 إذا أصغر أكبر من ي القيم ثم ماذا؟ 1408 01:11:34,520 --> 01:11:37,830 >> الطالب: ثم أصغر تساوي القيم ي. 1409 01:11:37,830 --> 01:11:41,190 1410 01:11:41,190 --> 01:11:42,600 >> JASON هيرشورن: ممتاز. 1411 01:11:42,600 --> 01:11:44,580 سؤال واحد سريع - 1412 01:11:44,580 --> 01:11:47,236 المرة الأولى التي تذهب من خلال هذه الحلقة، أنا ذاهب الى تساوي 0، ي يجري 1413 01:11:47,236 --> 01:11:50,710 ليساوي 0 مرة نحصل على هنا. 1414 01:11:50,710 --> 01:11:52,410 لذلك نحن ذاهبون الى أن مقارنة عدد لنفسها. 1415 01:11:52,410 --> 01:11:53,660 غير أن كفاءة؟ 1416 01:11:53,660 --> 01:11:57,260 1417 01:11:57,260 --> 01:11:58,390 لا، انها ليست فعالة حقا. 1418 01:11:58,390 --> 01:12:02,915 فهل لدينا ي حاجة للذهاب من 0 إلى n في كل مرة؟ 1419 01:12:02,915 --> 01:12:06,310 نحتاج دائما للتحقق من خلال القائمة بأكملها؟ 1420 01:12:06,310 --> 01:12:06,520 [غير مسموع]؟ 1421 01:12:06,520 --> 01:12:07,564 >> الطالب: ابدأ مع ط بدلا من ذلك. 1422 01:12:07,564 --> 01:12:09,405 >> JASON هيرشورن: ي يمكن تبدأ مع ماذا؟ 1423 01:12:09,405 --> 01:12:09,990 >> الطالب: ط. 1424 01:12:09,990 --> 01:12:13,040 >> JASON هيرشورن: ي يمكن أن تبدأ مع ط. 1425 01:12:13,040 --> 01:12:18,840 وحتى الآن ما قارنا ابتداء مع واحد نحن على. 1426 01:12:18,840 --> 01:12:21,020 ولكن حتى ذلك الحين، هو أنه فعالة قدر الإمكان؟ 1427 01:12:21,020 --> 01:12:22,320 >> الطالب: ط + 1. 1428 01:12:22,320 --> 01:12:25,420 >> JASON هيرشورن: ط + 1 ويبدو أن الأكثر كفاءة، لأننا 1429 01:12:25,420 --> 01:12:26,120 ط ديك بالفعل. 1430 01:12:26,120 --> 01:12:28,100 نحن مشيرا إلى أن مثل أصغر في خط 15. 1431 01:12:28,100 --> 01:12:29,350 ونحن في طريقنا للبدء مع المرحلة التالية تلقائيا. 1432 01:12:29,350 --> 01:12:34,470 1433 01:12:34,470 --> 01:12:38,540 لذلك نحن نذهب من خلال لحلقة. 1434 01:12:38,540 --> 01:12:39,620 سنذهب من خلال كل الوقت. 1435 01:12:39,620 --> 01:12:40,860 سنذهب من خلال عدد من المرات. 1436 01:12:40,860 --> 01:12:42,860 ونحن الآن قد حصلت خلال هذا الداخلية للحلقة. 1437 01:12:42,860 --> 01:12:44,350 لدينا يحفظ أصغر قيمة. 1438 01:12:44,350 --> 01:12:46,045 نحن بحاجة إلى وضعه في بداية القائمة. 1439 01:12:46,045 --> 01:12:48,390 فكيف يمكنني وضعه في ابتداء من القائمة؟ 1440 01:12:48,390 --> 01:12:51,290 1441 01:12:51,290 --> 01:12:55,926 ما هو المتغير الذي يشير إلى بداية القائمة؟ 1442 01:12:55,926 --> 01:13:00,500 نحن في هذا خارج عن حلقة، وذلك ما يشير إلى 1443 01:13:00,500 --> 01:13:01,280 ابتداء من القائمة؟ 1444 01:13:01,280 --> 01:13:02,880 >> الطالب: القيم ط. 1445 01:13:02,880 --> 01:13:03,510 >> JASON هيرشورن: الحق بالضبط. 1446 01:13:03,510 --> 01:13:04,650 القيم ط هو بداية - 1447 01:13:04,650 --> 01:13:06,320 أو آسف، لا بداية. 1448 01:13:06,320 --> 01:13:07,090 كان ذلك مربكا. 1449 01:13:07,090 --> 01:13:11,620 انها ما نحن فيه في بداية جزء لم يتم فرزها من القائمة. 1450 01:13:11,620 --> 01:13:12,800 حتى القيم ط. 1451 01:13:12,800 --> 01:13:14,050 وماذا يفعل ذلك على قدم المساواة؟ 1452 01:13:14,050 --> 01:13:15,925 1453 01:13:15,925 --> 01:13:17,326 >> الطالب: أصغر. 1454 01:13:17,326 --> 01:13:18,862 >> JASON هيرشورن: القيم ط يساوي ماذا؟ 1455 01:13:18,862 --> 01:13:19,310 >> الطالب: أصغر. 1456 01:13:19,310 --> 01:13:20,030 >> JASON هيرشورن: أصغر. 1457 01:13:20,030 --> 01:13:20,980 صحيح تماما. 1458 01:13:20,980 --> 01:13:23,510 لذلك نحن وضعه في بداية من القائمة، ونحن الآن في حاجة إلى وضع 1459 01:13:23,510 --> 01:13:25,710 في بداية القائمة حيث وكان أقل عدد. 1460 01:13:25,710 --> 01:13:29,700 فكيف يمكنني إرسال حيث كان أصغر عدد؟ 1461 01:13:29,700 --> 01:13:31,670 قيم ماذا؟ 1462 01:13:31,670 --> 01:13:33,170 >> الطالب: 0. 1463 01:13:33,170 --> 01:13:34,090 >> JASON هيرشورن: والصغيرة عدد من عند 0؟ 1464 01:13:34,090 --> 01:13:35,340 >> الطالب: نعم. 1465 01:13:35,340 --> 01:13:38,680 1466 01:13:38,680 --> 01:13:39,910 >> JASON هيرشورن: ماذا لو كان أصغر وكان الرقم في نهاية 1467 01:13:39,910 --> 01:13:40,860 هذه القائمة لم يتم فرزها؟ 1468 01:13:40,860 --> 01:13:42,460 >> الطالب: عفوا، ما هو السؤال؟ 1469 01:13:42,460 --> 01:13:44,020 >> JASON هيرشورن: أين هو أصغر عدد؟ 1470 01:13:44,020 --> 01:13:46,940 أخذنا أصغر ووضعها في بداية، مع هذا الخط هنا. 1471 01:13:46,940 --> 01:13:48,987 >> الطالب: وينبغي أن يكون تم تخزينها في بعض - 1472 01:13:48,987 --> 01:13:50,510 >> الطالب: ي القيم. 1473 01:13:50,510 --> 01:13:51,520 >> JASON هيرشورن: حسنا، انها القيم ليس بالضرورة ي. 1474 01:13:51,520 --> 01:13:54,100 بل لا وجود لها في هذه المرحلة. 1475 01:13:54,100 --> 01:13:55,960 >> الطالب: عليك أن تعلن متغير في وقت سابق و 1476 01:13:55,960 --> 01:13:58,230 ثم إسناد ذلك إلى - 1477 01:13:58,230 --> 01:14:01,150 عند العثور على أصغر عدد، تعيين مؤشر من هذا العدد ل 1478 01:14:01,150 --> 01:14:02,480 بعض متغير أو شيء من هذا القبيل. 1479 01:14:02,480 --> 01:14:04,790 >> JASON هيرشورن: وهكذا يمكن كنت أقول ذلك مرة أخرى؟ 1480 01:14:04,790 --> 01:14:08,390 >> الطالب: فأين كنت أعلن الباحث أصغر، يجب عليك أيضا أن يعلن الباحث 1481 01:14:08,390 --> 01:14:10,750 أصغر مؤشر = ط، أو شيء من هذا القبيل. 1482 01:14:10,750 --> 01:14:13,280 >> JASON هيرشورن: فأين أنا لا الباحث أصغر، يجب أن تتبع ليس فقط 1483 01:14:13,280 --> 01:14:16,150 من قيمة ولكن الموقع. 1484 01:14:16,150 --> 01:14:20,850 الباحث smallest_location = في هذه حالة، وسوف نبذل أنا فقط. 1485 01:14:20,850 --> 01:14:22,390 نحتاج أن نعرف أين هو. 1486 01:14:22,390 --> 01:14:26,820 وصلنا إلى نهاية رمز، ونحن أدركت كان لدينا أي فكرة ما كان عليه. 1487 01:14:26,820 --> 01:14:29,810 وهكذا مرة أخرى، ونحن لرسم الخرائط هذا على واحد إلى واحد. 1488 01:14:29,810 --> 01:14:32,890 يا رفاق الترميز هذا على الإرادة الخاصة بك ربما تحصل على نفس المشكلة. 1489 01:14:32,890 --> 01:14:34,130 كيف هيك يمكنني العثور عليه؟ 1490 01:14:34,130 --> 01:14:36,720 ثم كنت أدرك، الانتظار، وأنا تحتاج إلى تتبع ذلك. 1491 01:14:36,720 --> 01:14:38,500 >> إذا كان الأمر كذلك أصغر أكبر من القيم ي. 1492 01:14:38,500 --> 01:14:39,740 وضعناها أصغر يساوي القيم ي. 1493 01:14:39,740 --> 01:14:42,090 ماذا نحتاج للتغيير؟ 1494 01:14:42,090 --> 01:14:43,710 كونستانتين، ماذا تفعل نحن بحاجة إلى تغيير؟ 1495 01:14:43,710 --> 01:14:44,560 >> الطالب: الموقع. 1496 01:14:44,560 --> 01:14:45,270 >> JASON هيرشورن: بالضبط. 1497 01:14:45,270 --> 01:14:46,925 حتى تعطي لي هذا الخط في التعليمات البرمجية. 1498 01:14:46,925 --> 01:14:53,310 >> الطالب: smallest_location = ي. 1499 01:14:53,310 --> 01:14:54,790 >> JASON هيرشورن: بالضبط. 1500 01:14:54,790 --> 01:14:58,210 ثم انخفض في نهاية المطاف، إذا كنا نريد أن وضع بداية القائمة حيث 1501 01:14:58,210 --> 01:15:00,790 وكان أقل عدد، كيف لا نشير إلى حيث 1502 01:15:00,790 --> 01:15:02,200 كان أصغر عدد؟ 1503 01:15:02,200 --> 01:15:03,580 ماركوس؟ 1504 01:15:03,580 --> 01:15:08,530 >> الطالب: وكان أقل عدد تقع في أصغر موقع. 1505 01:15:08,530 --> 01:15:12,230 >> JASON هيرشورن: حتى في القيم smallest_location. 1506 01:15:12,230 --> 01:15:14,700 وماذا وضعنا هناك؟ 1507 01:15:14,700 --> 01:15:17,600 بداية القائمة، ما هذا؟ 1508 01:15:17,600 --> 01:15:19,710 >> الطالب: حسنا، نحن لا نعرف حقا بعد الآن لأننا بالكتابة فوق. 1509 01:15:19,710 --> 01:15:23,250 حتى انها تبادلت المواقع من هذين الخطين؟ 1510 01:15:23,250 --> 01:15:26,110 إذا قمت بالتبديل هذين الخطين حولها. 1511 01:15:26,110 --> 01:15:30,740 >> JASON هيرشورن: موافق، لذلك نحن لا بعد الآن، لأننا قد إعادة تعيين خط 1512 01:15:30,740 --> 01:15:31,960 قبل القيم ط إلى أصغر. 1513 01:15:31,960 --> 01:15:33,810 ذلك لأننا خسرنا القيمة الأولية. 1514 01:15:33,810 --> 01:15:37,350 لذلك قلت مبادلة هذين الخطين. 1515 01:15:37,350 --> 01:15:41,780 وحتى الآن وضعت بداية القائمة حيث كان أصغر رقم. 1516 01:15:41,780 --> 01:15:47,060 حتى smallest_location يساوي القيم ط. 1517 01:15:47,060 --> 01:15:51,310 أن يتحرك بداية هذا لم يتم فرزها جزء من القائمة إلى 1518 01:15:51,310 --> 01:15:52,090 أصغر موقع. 1519 01:15:52,090 --> 01:15:54,860 ومن ثم إلى القيم ط أننا نسير أن أقل عدد. 1520 01:15:54,860 --> 01:15:57,450 >> هل هذا معقول لماذا نحن كان لجعل هذا المبادلة؟ 1521 01:15:57,450 --> 01:15:59,650 كنا قد الكتابة فوق هذه القيمة - شيء آخر وربما كنت لن يكون 1522 01:15:59,650 --> 01:16:02,740 أحسب وجدت في الناتج المحلي الإجمالي. 1523 01:16:02,740 --> 01:16:05,310 لذلك قمنا الاعتناء بها جميع شبة الكود. 1524 01:16:05,310 --> 01:16:10,935 هل هناك أي شيء آخر ونحن تحتاج إلى كتابة هنا؟ 1525 01:16:10,935 --> 01:16:14,911 أي شخص يمكن أن يفكر في أي شيء؟ 1526 01:16:14,911 --> 01:16:16,180 >> الطالب: كيف يمكنك أن تعرف عند الانتهاء من ذلك؟ 1527 01:16:16,180 --> 01:16:17,680 >> JASON هيرشورن: كيف يمكننا نعرف متى ننتهي؟ 1528 01:16:17,680 --> 01:16:18,890 السؤال الكبير. 1529 01:16:18,890 --> 01:16:21,684 لذلك كيف نعرف متى ننتهي. 1530 01:16:21,684 --> 01:16:24,720 >> الطالب: إنشاء متغير للحفاظ على العد من إذا كان هناك مقايضة جعلت أم لا 1531 01:16:24,720 --> 01:16:27,810 وتذهب من خلال تمريرة. 1532 01:16:27,810 --> 01:16:30,180 >> JASON هيرشورن: OK. 1533 01:16:30,180 --> 01:16:31,800 التي من شأنها أن تعمل في فقاعة الفرز. 1534 01:16:31,800 --> 01:16:35,210 ولكن لاختيار نوع، إذا لم نفعل ذلك جعل المبادلة، التي قد يكون مجرد 1535 01:16:35,210 --> 01:16:38,670 لأن أصغر قيمة هي في ذلك المكان حقها. 1536 01:16:38,670 --> 01:16:41,240 قد يكون لدينا قائمة 1، 2، 4، 3. 1537 01:16:41,240 --> 01:16:42,830 للمرة الثانية خلال نحن لن يجعل أي مقايضة. 1538 01:16:42,830 --> 01:16:47,260 سنكون على عدد 2، ولكن سنقوم لا تزال بحاجة إلى الاستمرار. 1539 01:16:47,260 --> 01:16:49,390 لذلك نحن بحاجة إلى تتبع عندما نحن القيام به، أو نريد فقط للذهاب 1540 01:16:49,390 --> 01:16:50,640 حتى يتم الانتهاء من هذا؟ 1541 01:16:50,640 --> 01:16:54,098 1542 01:16:54,098 --> 01:16:56,740 >> الطالب: نحن يمكن أن تذهب فقط حتى الانتهاء من وضعها. 1543 01:16:56,740 --> 01:16:58,090 >> JASON هيرشورن: نحن يمكن فقط يذهب حتى يتم الانتهاء من هذا. 1544 01:16:58,090 --> 01:17:01,720 في فقاعة النوع، أنت على حق تماما، جيف وAleha، مع الحل الخاص بك - 1545 01:17:01,720 --> 01:17:04,990 انه امر رائع لتتبع كيفية العديد من مقايضة قمت بها، لأنه في فقاعة 1546 01:17:04,990 --> 01:17:07,920 نوع، إذا كنت تفعل في الواقع جعل أي مقايضة، الانتهاء من ذلك وربما يمكنك خفض الخاص 1547 01:17:07,920 --> 01:17:09,000 المشكلة لأسفل قليلا. 1548 01:17:09,000 --> 01:17:11,440 ولكن لاختيار نوع، وكنت قد حقا حصلت على الذهاب حتى النهاية ل 1549 01:17:11,440 --> 01:17:14,940 سرد كل المرة. 1550 01:17:14,940 --> 01:17:16,200 >> لذلك هذا هو ذلك. 1551 01:17:16,200 --> 01:17:18,530 لدينا اثنين من دقائق غادر. 1552 01:17:18,530 --> 01:17:21,560 دعونا نجعل جميع. 1553 01:17:21,560 --> 01:17:24,340 اسمحوا لي أن مجرد فتح البحث هنا، وجعل متأكد أنا في الواقع استدعاء - 1554 01:17:24,340 --> 01:17:25,610 أنا لا أدعو فقاعة الفرز. 1555 01:17:25,610 --> 01:17:29,230 دعونا تغيير هذا إلى اختيار نوع. 1556 01:17:29,230 --> 01:17:31,060 جعل جميع. / العثور عليها. 1557 01:17:31,060 --> 01:17:32,360 دعونا تجد 42. 1558 01:17:32,360 --> 01:17:38,110 هذه المرة نحن ذاهبون لتمرير قائمة لم يتم فرزها، لأنه يجب فرز 1559 01:17:38,110 --> 01:17:43,790 الأولى، في رمز العثور - يجب فرز الأولى باستخدام وظيفة الفرز لدينا ومن ثم 1560 01:17:43,790 --> 01:17:44,995 البحث عن شيء. 1561 01:17:44,995 --> 01:17:46,245 عبرت أصابع الجميع. 1562 01:17:46,245 --> 01:17:48,530 1563 01:17:48,530 --> 01:17:49,370 >> يا إلهي. 1564 01:17:49,370 --> 01:17:50,800 قف، قلبي كان الضرب. 1565 01:17:50,800 --> 01:17:52,320 لذلك هذا هو الصحيح. 1566 01:17:52,320 --> 01:17:57,270 في الواقع، إذا ركضنا هذا أكثر على نطاق واسع، رمز، بقدر ما أستطيع 1567 01:17:57,270 --> 01:17:59,280 أقول، هو الصحيح تماما. 1568 01:17:59,280 --> 01:18:02,150 هناك بعض الاقتراحات كنت أود أن يكون بالنسبة لك. 1569 01:18:02,150 --> 01:18:06,215 على سبيل المثال، 15 و 16 يبدو قليلا زائدة عن الحاجة. 1570 01:18:06,215 --> 01:18:09,450 يبدو مثلك ليس بالضرورة تحتاج إلى حفظ كل هؤلاء. 1571 01:18:09,450 --> 01:18:12,790 إذا كان لديك موقع أصغر، كنت يمكن بسهولة العثور على أصغر قيمة من قبل 1572 01:18:12,790 --> 01:18:14,750 مجرد كتابة القيم ط. 1573 01:18:14,750 --> 01:18:18,100 >> حتى إذا كان لي أن تكون الدرجات التعليمات البرمجية الخاصة بك، والتي سوف تكون في الواقع، وأود أن 1574 01:18:18,100 --> 01:18:21,160 ربما تقلع نقطة إذا كنت شملت كل من هذه، لأنك 1575 01:18:21,160 --> 01:18:22,670 لا تحتاج كل من هذه. 1576 01:18:22,670 --> 01:18:25,400 إذا كان لديك موقع، يمكنك من السهل جدا الحصول على قيمة. 1577 01:18:25,400 --> 01:18:27,520 ويبدو غريب قليلا لتخزين كل منهما. 1578 01:18:27,520 --> 01:18:31,070 ربما ليس حتى تأخذ نقطة، ولكن بالتأكيد أن هذا التعليق هو ربما 1579 01:18:31,070 --> 01:18:32,670 ليس خيارا الأسلوبية كنت بحاجة للتأكد. 1580 01:18:32,670 --> 01:18:35,290 بطبيعة الحال، لا يزال رمز يعمل بشكل جيد تماما. 1581 01:18:35,290 --> 01:18:36,860 >> لذلك للأسف لم نكن وصول الى فقاعة الفرز. 1582 01:18:36,860 --> 01:18:37,940 أنا آسف لذلك. 1583 01:18:37,940 --> 01:18:39,135 فعلنا اختيار نوع النهاية. 1584 01:18:39,135 --> 01:18:41,450 هل لدى أي شخص أي أسئلة النهائي حول اختيار نوع؟ 1585 01:18:41,450 --> 01:18:44,320 1586 01:18:44,320 --> 01:18:47,690 >> حسنا، قبل أن يخرج، وأنا أريد منك لفتح متصفح كروم الخاص بك. 1587 01:18:47,690 --> 01:18:54,340 آسف، كان ذلك مجرد سد الصارخ لنوع واحد من متصفح الانترنت. 1588 01:18:54,340 --> 01:18:57,770 يمكنك فتح أي نوع المتصفح، لكنه سوف يكون على الارجح كروم. 1589 01:18:57,770 --> 01:19:01,250 ويذهب إلى هذا الموقع التالي - 1590 01:19:01,250 --> 01:19:06,410 sayat.me/cs50. 1591 01:19:06,410 --> 01:19:07,685 إذا كنت لا تكتب في جهاز الكمبيوتر الخاص بك الآن، وكنت واضحا 1592 01:19:07,685 --> 01:19:10,210 لا تفعل ذلك، توم. 1593 01:19:10,210 --> 01:19:12,870 >> ويرجى القيام بذلك إما الحق الآن أو في ساعة القادمة - 1594 01:19:12,870 --> 01:19:14,260 أعطني بعض ردود الفعل. 1595 01:19:14,260 --> 01:19:15,660 هذا هو القسم الثاني فقط. 1596 01:19:15,660 --> 01:19:18,060 لدينا أكثر عديدة معا، لذلك أنا لديهم الكثير من غرفة لتحسين. 1597 01:19:18,060 --> 01:19:19,620 أنا أيضا نأمل فعل بعض الأشياء بشكل جيد. 1598 01:19:19,620 --> 01:19:22,160 حتى تتمكن من تجعلني اشعر كلها سيئة، ولكن إذا أنت أيضا تريد أن تعطيني مبتسم 1599 01:19:22,160 --> 01:19:24,250 الوجه، وأود أن نقدر ذلك أيضا. 1600 01:19:24,250 --> 01:19:25,330 ملء التي فيها 1601 01:19:25,330 --> 01:19:28,210 >> ودقيقة واحدة مع اليسار، أن كان ثلاثة أسابيع. 1602 01:19:28,210 --> 01:19:30,750 سوف تقف خارج قليلا إذا كان لديك أي أسئلة. 1603 01:19:30,750 --> 01:19:32,220 سوف أرى يا رفاق في محاضرة غدا. 1604 01:19:32,220 --> 01:19:34,742