>> JASON هيرشهورن: مرحبا بكم لثلاثة أسابيع، والجميع.
لدينا مشغول ولكن مثيرة القسم أمامنا.
لذلك الأولى، لأننا حققنا بعض تقدم مع بالطبع ولكن ما زلنا
لديهم الكثير من التعلم غادر الى القيام به، وأنا سوف تظهر لك بعض الموارد الرجال
التي ينبغي أن يكون بشكل لا يصدق مفيدة كما كنت نهج الخاص بك ليس فقط
يحدد المشكلة، ولكن أيضا على هضم جميع المواد نقدم لكم اللاعبين في
محاضرات والسراويل والقسم.
>> ثم ونحن في طريقنا لقضاء أول 20 إلى 25 دقيقة من الفرع الذهاب أكثر
GDB، والتي قد تكون أو لا تكون تستخدم في هذه المرحلة، بل هو
سوف أداة مفيدة بشكل لا يصدق أن تساعدك على تصحيح البرامج.
وهناك الكثير منكم قد استخدمت في printf منتصف البرنامج لمعرفة
ما يعادل متغير.
GDB، بل هو أفضل من printf و لا المسمار التعليمات البرمجية الخاصة بك لأنك
تشغيله على ملف تنفيذي.
ولذا فإننا سوف يذهب أكثر من 10 مفيدة للغاية أوامر تحتاج لGDB، ونحن
ستذهب على ممارسة معا حتى في مشكلة تعيين ثلاثة وخارجها، ل
يمكن استخدام GDB للمساعدة في التصحيح البرامج الخاصة بك.
وأخيرا، ونحن في طريقنا للذهاب على بعض الفرز والبحث الخوارزميات
التي رأيتها في المحاضرة، ونحن الذهاب إلى رمز في الواقع، وليس فقط
شبة الكود، ولكن رمز البحث الثنائي، فقاعة الفرز، واختيار نوع.
>> لذلك الأولى، أريد أن أذهب على الموارد.
هذا هو قائمة واسعة، وانها أصغر الخط لأنه كان لدي الكثير ل
احتواءه على هنا.
ولكن هذه لن تساعد فقط لكم، مرة أخرى، مع مجموعات مشكلة و
هضم المعلومات التي تعلمتها، ولكن بالتأكيد، وتأتي مسابقة الوقت، وهذه سوف
تكون مفيدة بشكل لا يصدق.
لذلك الأولى، تلاحظ محاضرة.
إذا ذهبت إلى cs50.net/lectures و انتقل إلى أسبوع ويوم معين،
سترى أن هناك ملاحظات لكل محاضرة، وهي ليست مجرد
نص، وإنما هو نسخة منقحة من ما تم تناوله في المحاضرة مع رمز
قصاصات والحكايات المفيدة الأخرى.
أنا أوصي تخطى تلك.
ثم كذلك، هناك شفرة المصدر المتاحة من كل محاضرة.
ومرة أخرى، هذه الشرائح ستكون أيضا شبكة الإنترنت في cs50.net/sections
هذا المساء.
>> هكذا هي الثانية السراويل كل أسبوع أن المواضيع الغطاء، وعادة من 5 إلى 15
في طول دقائق.
وتلك نأمل سوف اعطيكم التمهيدي كبيرة حول مواضيع مختلفة.
الثالث -
وهذا هو هذه العلامة التجارية الجديدة العام - هو study.cs50.net.
إذا لم تكن قد تأكدت منه، وأنا نوصي بشدة أن تقوم بذلك.
تحصل على اختيار الموضوع.
لدينا عشرات من المواضيع هناك.
ذلك على سبيل المثال، يمكنك اختيار وظائف.
فهو يوفر لك بعض الشرائح وتلاحظ على وظائف.
تلك هي في الواقع الشرائح التي TFS يتم تشجيعهم على استخدامها أثناء دينا
العروض التقديمية في القسم.
هناك أيضا نصائح وحيل للتعامل مع وظائف، وهناك
مشاكل الممارسة التي تساعد كنت تعمل مع وظائف.
سنقدم لك أيضا وصلات إلى قصيرة على وظائف والأوقات التي ظائف
ظهرت في المحاضرة.
study.cs50.net ذلك، هذه العلامة التجارية الجديدة العام، مورد رائعة.
>> المقبل، ولدي الرجل، وهو دليل الأوامر التي يمكنك تشغيلها في
سطر الأوامر.
حتى إذا كان لديك أي أسئلة حول الأوامر، على سبيل المثال، راند، وهو ما
واجه الاسبوع الماضي خلال القسم وكنت قد واجهت المحتمل في
مشكلتك تعيين عند المرور عبر توليد رمز، ولكن إذا قمت بكتابة الرجل
راند، وستحصل على الصفحة التي يخبرك كل شيء عن راند.
فهو يوفر لك كل ما يتطلبه الأمر، و المعلمات يستغرق وكذلك العودة
نوع وصفا موجزا من تلك الوظيفة.
>> حتى تحقق من راند.
يمكن أن يكون قليلا الالفاظ ومربكة، حتى في بعض الأحيان أجد أن
ببساطة غوغلينغ ما أريد أن أعرفه هو أفضل طريقة للعثور على الجواب.
حتى ممارسة مع جوجل.
الحصول على جيدة في جوجل.
وسوف يصبح أفضل صديق.
>> فضلا عن جوجل، إذا كنت لا يمكن العثور عليه على جوجل، cs50.net/discuss، انها
منتدى المناقشة.
هناك احتمالات إذا كان لديك سؤال، واحد من ك 700 + أقرانه له أيضا أن
سؤال وربما تكون قد طلبت بالفعل في مناقشة
المنتديات وانها قد أجاب.
حتى إذا كان لديك سؤال أو مشتركة لديك سؤال أن كنت تعتقد
ربما أشخاص آخرين قد واجهت، تحقق من cs50.net/discuss.
>> أخيرا، وهما آخر، إذا كنت ترغب في التحدث مع انسان حقيقي، والمكاتب
ساعات من الاثنين حتى الجمعة.
هناك أيضا ساعات العمل على الانترنت للطلاب التمديد.
وأخيرا وليس آخرا، لي، تعجب.
لديك كل معلومات الاتصال الخاصة بي.
إذا كنت بحاجة إلى أي شيء، من فضلك لا تتردد في الاتصال بي.
دائما تتردد في القيام بذلك.
وأضاف عدد قليل جدا من كنت لي على Gchat، بحيث كان مخيبا للآمال،
ولكن نأمل أن سوف تتغير بين وهذا المقطع التالي.
أي أسئلة حتى الآن على الموارد؟
عظيم.
>> أخيرا، والمكونات آخر ل ردود الفعل، sayat.me/cs50.
هل يمكن ان تعطيني ردود الفعل المجهول على آدائي.
كان ذلك مفيدا حقا الاسبوع الماضي.
أنا حصلت على زوجين من التعليقات من يا رفاق الحق بعد القسم، بالإضافة إلى من
غيرها من الطلاب الذين شاهدت ذلك خلال الأسبوع، وذلك
كان لا يصدق مفيدة.
وانا ذاهب الى محاولة الحد من استخدامي ل كلمة "حلوة"، ولكن سوف تظهر بلدي
الحماس والإثارة بطرق أخرى.
ولكن كانت هناك أخرى إضافية الردود الموضوعية،
الإيجابيات ودلتا حد سواء.
لذا يرجى، وأنا أعطيك ردود فعل الرجال على مجموعات مشكلتك.
لا تتردد في أن تعطيني ردود الفعل على تدريسي.
أنا هنا ليا رفاق.
>> عظيم.
وهذا هو كل ما لدي ل القسم الأول.
هل لدى أي شخص أي أسئلة حتى الآن؟
ولدي ملاحظة ل مركز التحكم.
الطلاب التمديد قد بعث برسالة لي قائلا انهم لا يحصلون على أي صوت،
ولكن هذا هو خارج السلطة جهدي لتصحيح.
لذلك نأمل أن يحصل حل قريبا.
إذا كنت أشاهد على الانترنت، مرحبا، ولكن لا تسمع لي.
>> لذلك أولا، ونحن ذاهبون من خلال الذهاب الى GDB.
GDB، وأنا ألمح في وقت سابق، هي أداة التصحيح
أفضل بكثير من printf.
حتى لتبدأ مع GDB، يا رفاق، إذا تريد فتح الجهاز الخاص بك
وتأخذ الملف الذي أنا اليك بالبريد الالكتروني في وقت سابق - وسوف يكون هذا الملف أيضا
متاحة على شبكة الإنترنت في قليلا -
وتشغيل GDB. / اسم الملف.
أولا، بطبيعة الحال، لديك لتجميع ملف GDB لأن يعمل فقط على
الملفات القابلة للتنفيذ.
>> لكن إذا كنت تريد من أي وقت مضى للبدء GDB، فإن أول شيء تفعله،
تشغيل GDB. / قيصر.
لذلك هذا هو اسم البرنامج نحن ذاهب للذهاب معها الآن.
لذلك أنا أريد أن أكتب جعل قيصر، الذي سوف تعطيني ملف قابل للتنفيذ
هنا أبرزت باللون الأخضر.
ثم أنا ذاهب لتشغيل GDB. / سيزار.
>> وهناك تذهب.
ترى لدينا بعض النصوص تقول لي حول إصدار GDB، إعطائي
بعض المعلومات الضمان، ومن ثم نحن يكون موجه الناتج المحلي الإجمالي، والتي تبدو نوعا
من مثل لدينا موجه سطر الأوامر، ولكن ترى انها مفتوحة
PAREN، GDB، PAREN قريبة.
قبل أن نواصل والتصحيح هذا الملف أنني أرسلت لكم جميعا، دعونا ننظر في
بعض الأوامر المفيدة لذلك لدينا شعور ما نحن ذاهبون لتغطية.
>> يتم سرد هذه الأوامر هنا في الترتيب الذي أنا عموما استخدامها.
لذلك أبدأ برنامجي عن طريق تشغيل دائرة الموازنة العامة. / اسم البرنامج،
في هذه الحالة، قيصر.
ومن ثم فإن أول شيء أقوم به 99.9٪ من وقت انقطاع نوع يعني.
الذي يحدد نقطة فاصل في الرئيسية.
أساسا، ما تفعلونه هناك والبرنامج هو الذهاب الى التوقف عند
الرئيسية حتى تتمكن من البدء بدراسة ذلك الخط سطرا، بدلا من تشغيل جميع
الطريق من خلال.
يمكنك كسر في نقاط مختلفة في التعليمات البرمجية الخاصة بك، ولكن الرئيسي هو عموما
مكان جيد للبدء.
>> الأمر التالي هو أركض التشغيل.
أن يبدأ البرنامج على التوالي، و إذا كنت بحاجة إلى إدخال سطر الأوامر
الحجج، يمكنك تشغيله هذا الأمر.
تشغيل مع الحجج.
منذ ذلك نحن ذاهبون عبر إصدار من C، وهو البرنامج الذي الرجال
كتب لpset اثنين -
هذا واحد، بطبيعة الحال، لديه بعض الخلل في أن نأمل سوف تجد -
ونحن في طريقنا لتشغيل المدى مع بعض الأوامر وسائط سطر لقيصر،
كما كنت الرجال يعرفون في المشكلة ضبط المواصفات، ويأخذ بعض
وسائط سطر الأوامر.
>> القليلة القادمة من الأوامر، القادم في الواقع يسمى احد القادم.
أن أحد يأخذك سطرا سطرا من خلال البرنامج.
حتى ضرب ن ثم أدخل يأخذك إلى السطر التالي، وتنفيذ
السطر السابق.
خطوة يأخذ ليس فقط لك ل السطر التالي، ولكنه
يأخذك وظائف في الداخل.
لذلك إذا كنت قد كتبت في وظيفة رمز أو الخاص بك إذا كنت ترغب في استكشاف
إلى i، على سبيل المثال، يمكنك ضرب ثانية، و بدلا من الذهاب إلى السطر التالي من
الملف الذي كنت تريد الذهاب من خلال الحق الآن، عليك أن الخطوة فعلا في
هذه الوظيفة وانظر التعليمات البرمجية الخاصة به.
>> قائمة يظهر لك، في الاستعمال جدا تنسيق و10 أو حتى خطوط في جميع أنحاء
أين أنت حاليا في التعليمات البرمجية حتى تتمكن من رؤية الواقع الملف
بدلا من الاضطرار لمبادلة ذهابا و ذهابا بين وجهات نظر مختلفة.
الطباعة مثل printf، كما يوحي اسمها.
أن يظهر لك ما يساوي متغير.
>> معلومات السكان المحليين مفيد حقا.
هذا هو إصدار خاص من الطباعة.
معلومات السكان المحليين يظهر لك كل من المحلية المتغيرات، يطبع كل منهم للكم
المتوفرة حاليا.
لذلك أنا عموما، بدلا من الاضطرار إلى طباعة المتغيرات الأربعة التي أنا
غريبة عن إذا أنا في لحلقة، ل سبيل المثال، أنا فقط كتابة معلومات السكان المحليين،
وسوف تظهر لي ما بلدي مكافحة ط يساوي، فضلا عن مجموعة بأني
العمل على قدم المساواة.
>> أخيرا، تواصل.
كتابة كسر توقف لكم في نقطة فاصل.
يمكنك المشي من خلال الخط من قبل تمشيا مع الخطوة التالية و.
مواصلة تشغيل البرنامج الخاص بك المقبل كسر نقطة أو حتى الانتهاء إذا
لم تكن هناك نقاط لكسر الارسال.
تعطيل يزيل نقاط لكسر الارسال إذا كنت قررت وكان الخروج في الرئيسية
غير مناسب، وتريد أن تعيينها في مكان آخر.
وأخيرا ف، الإقلاع عن التدخين، يخرج من GDB.
>> لذلك هذا البرنامج،. / قيصر، ونحن نذهب لننظر من خلال الوقت الراهن، ونحن
سوف تستخدم للعثور على GDB الخلل في هذا البرنامج.
ركضت هذا البرنامج في وقت سابق مع تحقق 50، وحصلت على عبوس واحدة.
كل شيء كان موجودا، فإنه جمعها، فإنه مرت الكثير من الاختبارات، ولكن ل
سبب ما، فإنه لم يمر على الخامس الاختبار، وتحول BARFOO، كل مباراة دولية، في
E-D-U-I-R-R، كل مباراة دولية، باستخدام ثلاثة كمفتاح.
حصلت على وثيقة جدا.
نزلت بواسطة حرف واحد.
لذلك هناك بعض خطأ صغير هنا.
لقد بدا من خلال قانون بلدي.
أنا لا يمكن أن الرقم بها.
نأمل، يمكن يا رفاق مساعدتي معرفة ما هو هذا الخطأ.
>> ذلك أن الخطأ نحن تبحث عنه.
دعنا ننتقل إلى GDB.
مرة أخرى، لقد تشغيل GDB. / قيصر، وحتى الآن نحن في GDB.
وما هو الأولى شيء يجب أن أقوم به؟
لقد دخلت للتو GDB.
شخص ما تعطيني جيدة الأوامر لدخول.
>> الطالب: كسر الرئيسي.
>> JASON هيرشهورن: كسر الرئيسي.
رائعة.
دعونا اكتب فيها أن
يمكنك مشاهدة الرجال هنا أو اتباع جنبا إلى جنب على أجهزة الكمبيوتر.
كسر الرئيسي، وسترى تم تعيين نقطة فاصل في -
انه يعطيني بعض عنوان الذاكرة غريبة، وأنه يعطي لي أيضا رقم السطر.
إذا كان لي أن ننظر إلى الوراء في هذا الملف، وأود أن ندرك أن الرئيسي
حدث في خط 21.
ما يجب أن أركض في المرة القادمة؟
وبرنامجي تشغيل؟
لا.
ذلك ما ينبغي أن أركض في المرة القادمة؟
>> الطالب: تشغيل.
>> JASON هيرشهورن: تشغيل.
يجب أن مجرد تشغيل المدى، أو ينبغي أود أن أضيف بعض الأشياء الأخرى في؟
>> الطالب: تشغيل مع الحجة.
>> JASON هيرشهورن: تشغيل مع الحجج الأوامر.
ومنذ أنا التصحيح محددة جدا الحالة، يجب أن الدخول في هذا
وسيطة سطر الأوامر.
ولذا فإنني سوف لا تشغيل ثلاثة، والذي هو، مرة أخرى، الإخراج حصلت عليها من تحقق 50.
بدء تشغيل البرنامج.
نذهب من خلال بضعة أسطر.
سترى الآن أن نحن على خط 21.
كيف لي أن أعرف أننا على خط 21؟
لأنه إذا نظرتم إلى اليسار من نافذة محطة بلدي، وهناك
تقول خط 21.
والذي يعطي لي، في الواقع، و التعليمات البرمجية التي هي في خط 21.
لذلك أنا اخطأ في وقت سابق.
الرئيسية ليست في الواقع في خط 21.
الرئيسي هو بضعة أسطر أعلاه 21.
ولكن في السطر 21، وهذا أين نحن كسر.
هذا سطر من التعليمات البرمجية لديها لم ينفذ حتى الآن.
هذا أمر مهم.
خط ترى لم أعدم حتى الآن.
هذا هو السطر التالي من التعليمات البرمجية كنت على وشك أن تنفذ.
>> حتى السطر التالي، وأنتم ربما دراية، وهذا هو
حالة التحقق لمعرفة ما إذا كان لدي دخل وسيطة سطر الأوامر.
وإلى i، ما هو الثاني جزء من ذلك تفعل؟
ما هو إلى i؟
>> الطالب: تغيير ذلك إلى عدد صحيح.
>> JASON هيرشهورن: عذرا؟
>> الطالب: انها تغيير حجة إلى عدد صحيح.
>> JASON هيرشهورن: لذا فإن لط يتغير ARG V1 من سلسلة إلى عدد صحيح.
ثم ما هو التدقيق؟
>> الطالب: إذا كان هناك الثانية وسيطة سطر الأوامر، جانبا
من تشغيل البرنامج.
>> JASON هيرشهورن: وما هو في النصف الثاني من هذا
التحقق التعبير منطقية؟
هذا الجزء أكثر من هنا، وإلى i؟
>> الطالب: اذا كان سلبيا.
>> JASON هيرشهورن: التأكد من ماذا؟
>> الطالب: التأكد من ذلك هو، في الواقع، إيجابية.
>> JASON هيرشهورن: بالضبط.
هذا هو التحقق لمعرفة ما اذا كان السلبية، وإذا كان هو سلبي، وأنا
لدي شعور جبروت السطر التالي أن لي يصرخ في المستخدم.
لذلك دعونا ضرب حد لتنفيذ هذا الخط.
نحن لا نرى أن الخط الذي الرجال من المتوقع أن نرى ربما يصرخ في
المستخدم ومن ثم العودة، وذلك لأن لم يتم تنفيذ هذا الخط.
دخلت 3.
لذلك أنا لم، في الواقع، أدخل اثنين من الأوامر وسائط سطر، و 3 هو
أكبر من الصفر.
لذلك رأينا أن الخط، ونحن تنفيذها، لكننا لم تتدخل
داخل إذا كان الشرط.
>> وحتى الآن، المقبل، أرى أنا وضع مفتاح كثافة يساوي إلى i ARG V1.
حتى لا يكون لي خلق مفتاح متغير.
حتى لو كنت تطبع الرئيسية في الوقت الراهن، لأن الذي يسمح لك أن ترى
القيمة داخل متغير، المفتاح يساوي 47.
هذا غريب، ولكن بطبيعة الحال، هذا لأنني لم
تنفيذ هذا الخط حتى الآن.
حتى الآن إذا أنا ضربت ن، تنفيذ هذا الخط، والقيام مفتاح الطباعة، والمفتاح يساوي 3،
وهو ما نتوقع أن يساوي.
>> ذلك مرة أخرى، في GDB، الخط الذي أراك لم ينفذ بعد.
عليك ان تضرب ن ق أو أو عدد من أوامر أخرى إلى الواقع
تنفيذ هذا الخط.
مفتاح الطباعة.
والمفتاح في 3.
حتى الان جيدة جدا.
سلسلة هو نص عادي.
دعونا تنفيذ هذا الخط.
أنا الحصول على سلسلة من المستخدم.
>> دعونا نرى في بلدي تحقق 50، وأنا دخول BARFOO كل مباراة دولية، لذلك
هذا ما سوف تدخل.
إذا أنا الآن طباعة نص عادي.
سترى أنه يساوي سلسلة.
انه يعطيني بعض الست عشري غريبة أخرى العدد، ولكنه في
الواقع يقول أن سلسلة بلدي BARFOO.
إذا أردت أن أرى ما يعادل الرئيسية في هذه النقطة، كيف يمكن أن تحقق المفتاح؟
>> الطالب: مفتاح طباعة.
>> JASON هيرشهورن: مفتاح طباعة، بالضبط.
وفعلا، وهناك اختصار.
إذا كنت تتعب من الكتابة والطباعة، يمكنك فقط اكتب ع.
حتى ع مفتاح يفعل الشيء نفسه بالضبط.
ومرة أخرى، أرى أنه يساوي 3.
>> إذا أردت أن تعرف ما حد سواء الرئيسية ويعادل BARFOO في نفس الوقت
لكنني كنت تعبت من كتابة كل واحد من أصل كل على حدة، وأنا
يمكن كتابة معلومات السكان المحليين.
أن يعطيني المفتاح يساوي 3.
نص عادي يساوي BARFOO.
انه يعطيني أيضا هذه أشياء غريبة اثنين في القمة، هذا المتغير i و
هذا ن متغير.
>> تلك الموجودة في الواقع و في برنامجي الرئيسي.
نحن لم اجه منهم حتى الآن، ولكن بوصفها المعاينة، وتلك
توجد في بلدي للحلقة.
حتى الآن، فإنها تساوي بعض غريب الأرقام لأنها لم تكن
تهيئة بعد، لكنها لا تزال موجودة في الذاكرة، حتى انهم مجرد مجموعة
لبعض القيمة القمامة.
لكننا نرى الرئيسية في سهل النص هناك حق.
>> لذلك أنا ذاهب لتنفيذ هذا الخط، خط 34، وللحلقة.
ونحن في طريقنا إلى القفز في للحلقة من خلال ضرب ن.
ونحن داخل لحلقة.
نحن في الاختيار الأول.
ومرة أخرى، وهذه يجب أن ننظر نوع من مألوفة بالنسبة لك لأن هذا كان
برنامج قيصر التي تم كتابتها، ولكن مرة أخرى، لديه نوعا من الشوائب.
>> والآن إذا كنت تفعل معلومات السكان المحليين، لأنني داخل هذا للحلقة، سترى
أنني يساوي الصفر، كما نتوقع.
هذا ما وضعناها لتهيئة و لأنه في لحلقة.
ن يساوي 6.
أن من المنطقي أيضا لأن وضعنا إلى strlen من النص العادي.
لذلك أود أن تفعل معلومات من السكان المحليين أو الطباعة لمتغير في كثير من الأحيان للتأكد من أن
كل شيء هو دائما ما أتوقع أن تساوي.
في هذه الحالة، كل شيء ما أتوقع أن تساوي.
>> لذلك دعونا نبدأ التحرك من خلال هذا للحلقة.
خط أنا على الخط هو 36، إذا عادي ط النص هو أكبر من العادي و
ط النص هو أقل من أو يساوي إلى الياء.
أنا أعرف مشكلتي ليست مع بلدي الأول الرسالة، انها مع الرسالة الثانية.
إذا نظرنا إلى الوراء في تحقق 50، B يذهب إلى E يرام.
أنا أخذ ألف وتركها كما على ألف، وليس تغييره لذلك D.
شيء هو الخطأ مع الرسالة الثانية.
لذلك أنا ذاهب الى التحرك هناك في الثانية.
>> ولكن إذا لم ترغب في التحقق ما سهل النص الأول في هذا يعادل خاصة
القضية، وأعتقد أنه يجب أن يكون ماذا؟
ما ينبغي نص عادي أنا يساوي في هذا الجولة الأولى من خلال لحلقة؟
>> الطالب: صفر؟
>> JASON هيرشهورن: نص عادي من أنا؟
لذلك ينبغي أن يكون رأس المال B. أنا، بالطبع، يساوي الصفر، ولكن نص عادي
قوس قوس مغلقة يساوي الصفر B لأن السلاسل، كما رأينا الأسبوع الماضي،
هي مجموعة، لذلك نحن الحصول على الحرف الأول من ذلك.
ذلك مرة أخرى، إذا كنت تطبع النص العادي أنا، أنا لا، في الواقع، والحصول على شخصية
B. وهذا هو أنيق، أليس كذلك؟
ليس لدي في الواقع نص عادي I. هذا ليس واحدا من المتغيرات أحدد
أو تهيئة، ولكن يمكنك طباعة من مجموعة كاملة من الأشياء
إذا كنت ترغب في.
>> ولكن دعنا ننتقل من خلال.
إذا نص عادي أنا أكبر من ألف و نص عادي أنا أقل من أو يساوي
Z، وهذا هو بوضوح صحيح لأن لدينا وB. العاصمة انا ذاهب لتشغيل
بعض الأوامر على ذلك.
رأينا أن الرياضيات في الأسبوع الماضي، لذلك سنقوم أعتبر أمرا مفروغا منه أنه يعمل
الحق وفقا لتحقق 50.
>> هذه الأقواس المتعرجة، أول واحد وأظهرت أنني كنت الخروج من إذا
الشرط، والثاني أظهر أنني الخروج من حلقة ل.
وحتى الآن عندما ضرب المقبل، سنرى نعود في لحلقة مرة أخرى.
ونحن في طريقنا من خلال لحلقة مرة أخرى.
دعونا الخطوة فعلا في الثانية التكرار من أجل حلقة ونوع
معلومات السكان المحليين.
>> لذلك نحن في التكرار الثاني من لدينا حلقة.
أنا يساوي 1، والتي نتوقع.
N يساوي 6، والتي نتوقع.
المفتاح يساوي 3، والتي نتوقع.
والنص العادي، سترى، يساوي EARFOO الآن، وليس بعد الآن لأن BARFOO
لدينا في التكرار السابقة، كان B غيرت الى العاصمة E. لذلك نحن على وشك
لمواجهة هذه المشكلة، لذلك هذا هو المكان الذي نحن ذاهبون ل
يغوص في التصحيح.
ولكن لا أحد لديك أي أسئلة حول ما فعلناه حتى الآن؟
رائعة.
>> لذلك نحن على وشك تنفيذ هذا إذا حالة، وقوس نص عادي أغلقت
قوس أكبر من ألف ونص عادي أنا أقل من أو يساوي Z. ولكن قبل
أذهب إلى ذلك، لأن هذا هو المكان أنا أعرف بلدي هو الخطأ، وأنا أريد أن أشير
من النص العادي الأول لذلك دعونا نضع الطباعة بها.
فإنه لا يساوي حرف A، بحيث يبدو حتى الآن، كل شيء حسن وجيد.
>> لذلك أتوقع هذا الخط في المنطق بلدي، وينبغي أن يكون هذا الخط الصحيح.
انها حرف.
ولكن إذا أنا ضربت ن، ونحن لا ندرك أن هذا الخط، في واقع الأمر، ولم يتم تنفيذه.
قفزت وصولا الى آخر إذا.
لماذا حدث ذلك؟
>> الطالب: لأن لديك حالتك من نص عادي أكبر
من A، لا يساوي أو أكبر من.
>> JASON هيرشهورن: لذا كان لي نص عادي أنا أكبر من A، ليس أكبر
من أو يساوي.
بكل وضوح، عاصمة A لم يؤدي هذا اذا كان الشرط، وفعلنا
لا خطوة في ذلك، وفعلنا لا تفعل التحول اللازمة.
لذلك هذا كل شيء، في الواقع.
فكنت أحسب بلدي الشوائب.
أنا يمكن أن أعود في ملف مصدر بلدي، تغييره، وتحديثه و
تشغيل تحقق 50 مرة أخرى.
>> ولكن سنرى، لمجرد التربية و أجل، إذا كنت الاستمرار.
وآخر إذا لم يتم تنفيذ سواء، ولكن ما بدلا يساوي هو الأمر
لا تغيير.
حتى انها لم تتغير على الإطلاق، وإذا كنت طباعة نص عادي هنا، سنرى الذهاب
من خلال ذلك للحلقة لم يكن، في الواقع، تغيير ذلك الحرف الثاني على الإطلاق.
انها لا تزال العاصمة A.
>> ذلك مرة أخرى، ونحن تصحيحه خطأ لدينا.
أدركنا أن هناك بعض المنطق في عداد المفقودين.
ونحن تصحيحه ذلك في وقت مبكر قبل في الواقع تنفيذ هذا الخط،
ولكن كنت قد لاحظت كان لدينا فقط ضرب التالي والقفز إلى أن آخر إذا،
وهذا يعني أن هذا الشرط إذا لم يكن صحيحا.
لم نكن، في الواقع، والحصول على نتيجة توقعنا.
حتى ذلك الحين نحن كان يمكن المطالبة، كان نحن لم المخضرمين ذلك، للنظر في
أنه إذا شرط ومعرفة ما اذا كان، في الواقع، اوضاعنا ينبغي تقييم ل
صحيح في السياق الحالي.
>> هذا كل شيء لتصحيح هذا البرنامج.
هل لدى أي شخص أي أسئلة؟
ما الأمر يمكن أنا ضربت لإنهاء GDB؟
Q. ثم سأكون المطالبة، الإقلاع عن التدخين على أية حال؟
نعم أو لا.
أنا سوف تصل نعم، وسأكون قد استقال GDB.
>> لذلك كان على أن التمهيدي السريع لGDB.
في الواقع، في سيناريو حقيقي، فعلت ذلك في ساعات العمل.
أنا GDBed هذا البرنامج المحدد في ساعات العمل مع الطلاب.
وإذا رجعنا إلى الأوامر رأينا من قبل، كنا استراحة الرئيسي، الأول
شيء فعلناه.
كنا المدى مع وسائط سطر الأوامر، الشيء الثاني فعلنا.
كنا المقبل الكثير للتحرك لنا من خلال خطوط.
ومرة أخرى، مقطعة من هو ن المقبل.
هذا في الأقواس في الرمادي على الشريحة.
>> لم نستخدم الخطوة، لكننا لم تحتاج بالضرورة للهذه القضية.
ولكننا قد تستخدم في بعض الشيء في وقت لاحق على اليوم لو أننا التصحيح، ل
عندما سبيل المثال، البحث الثنائي ثنائي ويسمى البحث في منفصلة
ولكن هناك وظيفة بعض الخطأ معها.
نحن ذاهبون الى يريد أن يتدخل في الدعوة إلى البحث الثنائي و
تصحيح فعلا.
قائمة لم نستخدم إما لأننا كان ل شعور جيد من التعليمات البرمجية لدينا، ولكن إذا أنا
لم ترغب في الحصول على شعور ما أنا رمز وكان حولها، ويمكنني أن مجرد استخدام القائمة.
>> طباعة كنا، معلومات السكان المحليين كنا.
مواصلة نحن لم تكن في حاجة لاستخدامها في هذه الحالة، لا لم نحن بحاجة إلى استخدام
إنهاء تعطيل، ولكن فعلنا الاستخدام.
مرة أخرى، هذه الأوامر 10، يمارسونها.
إذا فهمت هذه الأوامر 10، يجب أن يتم تعيين لتصحيح أي
إصدار مع GDB.
>> لذلك نحن على وشك الذهاب على، مرة أخرى، إلى جوهر القسم اليوم، والذهاب أكثر
هذه الفرز والبحث الخوارزميات.
قبل ان نفعل ذلك، مرة أخرى، على أية أسئلة، تعليقات والمخاوف لGDB؟
لذلك الجميع ذاهب الى استخدام GDB بدلا من printf؟
لذلك الجميع، لأجل الأبد، و الجميع الايماء رئيس حقهم
الآن، لذلك سوف أرى لك في ساعات العمل وجميع TFS سوف أراك و
سيقولون، وتبين لي كيفية استخدام GDB، وعليك أن تكون قادرا
لتبين لهم، أليس كذلك؟
نوع من؟
ربما نأمل.
بارد.
>> لذلك نحن ذاهبون للانتقال إلى الفرز والبحث.
سترى لدي قائمة تم فرزها بالفعل بالنسبة لنا، ولكن هذا لن
ليكون هذا هو الحال دائما.
وذلك في مشكلة تحديد مواصفات مشكلة تعيين ثلاثة، لديك شورت
أنه يمكنك مشاهدة، وفعلا يسألك لمشاهدة تلك السراويل.
أيضا في محاضرة الأسبوع الماضي، ذهبنا أكثر الكثير من هذه الخوارزميات، لذلك أنا
لن قضاء بعض الوقت في الصف ذاهب أكثر هذه الخوارزميات مرة أخرى أو الرسم
صور لكيف يمكن لهذه العمل الخوارزميات.
مرة أخرى، أن المعلومات التي يمكن إعادة الساعات محاضرة، أو أن المعلومات
يتم التقاط رائع على السراويل لعمليات البحث هذه، كل
وهي متوافرة في cs50.net.
>> لذا بدلا من ذلك، ما نحن ذاهبون ل القيام به هو كتابة هذه البرامج.
لدينا شعور، وهذا نموذج العقلية، كيف يعملون فيها، وذلك ما نحن ذاهبون
القيام به هو رمز لهم لريال مدريد.
ونحن في طريقنا لتحويل هذا النموذج العقلي، تلك الصورة، اذا صح التعبير، في
الرمز الفعلي.
وإذا كنتم قليلا الخلط أو ضبابي على نموذج العقلية، أنا تماما
فهم.
>> نحن لن فعلا ل القفز إلى رمز فورا.
ذلك في حين أن هذا موجه في هذه الشريحة يسأل لك رمز البحث الثنائي، و
في الواقع، نسخة تكرارية من البحث الثنائي، فإن أول شيء أنا
نريد حقا لك القيام به هو كتابة بعض شبة الكود.
بحيث يكون لديك هذا النموذج العقلي كيف يعمل البحث الثنائي.
تأخذ بها ورقة إذا كان لديك واحدة متاحة بسهولة، أو فتح
محرر النص، وأود الجميع في الكتابة.
تستغرق أربع دقائق لكتابة شبة الكود للبحث ثنائي.
>> مرة أخرى، والتفكير في هذا النموذج العقلي.
سآتي حول إذا كانت لديك أسئلة ويمكننا رسم الصورة بها.
ولكن أولا، قبل أن نبدأ البرمجة، أود أن أكتب
شبة الكود للبحث ثنائي حتى عندما و الغوص في، لدينا بعض الاتجاه كما
إلى المكان الذي يجب أن يتوجه.
>> الطالب: هل يمكننا تحمل مجموعة من يتم فرز القيم نحصل بالفعل؟
>> JASON هيرشهورن: إذن للبحث ثنائي للعمل - سؤال ممتاز - كنت
يجب أن تأخذ في فرزها مجموعة من القيم.
لذلك نفترض أنه سوف يعمل.
سوف نعود إلى هذه الشريحة.
سترى في الأرجواني وظيفة الإعلان هو منطقي binary_search الباحث
قيمة، قيم كثافة العمليات، وكثافة العمليات ن.
وهذا ينبغي أن تبدو مألوفة إذا كنت قد اقترب بالفعل أو حصلت الخاص
الأيدي القذرة مع مجموعة مشكلة.
>> ولكن هذا تعريف الدالة الخاصة بك.
مرة أخرى، يجب أن لا داعي للقلق حول أن الكثير في هذه اللحظة.
ما أريد حقا لك أن تفعل هو أن تأخذ أربع دقائق إلى ثنائي شبة الكود
بحث، ومن ثم سنذهب على أن كمجموعة.
وسوف تأتي حولها.
إذا كان لديك أسئلة، لا الحرة لرفع يدك.
>> لماذا لا تأخذ اثنين دقائق أكثر لإنهاء ما يصل إلى شبة الكود؟
أعرف أن هذا قد يبدو سخيفا أن نحن ننفق الكثير من الوقت على
هذا ليس شيئا حتى في الواقع C، ولكن بصفة خاصة لهذه المزيد
خوارزميات تحديا ومشكلة مجموعات التي لدينا لمعرفة،
ابتداء من شبة الكود لا يدعو للقلق حول بناء الجملة، فقط القلق حول
منطق، هو مفيدة بشكل لا يصدق.
وبهذه الطريقة، وكنت لا حل اثنين المشاكل الصعبة بشكل لا يصدق في آن واحد.
كنت مجرد التركيز على المنطق، و ثم قمت بنقل في بناء الجملة.
>> موافق.
دعونا نبدأ يمر في شبة الكود.
كنت قد كتبت هنا، ثنائي البحث شبة الكود.
سنقوم أكتب هذا على الصعود معا.
أو انني سوف اكتبها وسوف تعطي لي المطالبات أحتاج.
لذلك أي شخص يمكن أن تعطيني الأولى خط شبة الكود لك
كتب عن البحث الثنائي؟
نعم، آني؟
>> الطالب: على الرغم من طول قائمة أكبر من الصفر.
>> JASON هيرشهورن: على الرغم من طول من قائمة أكبر من الصفر.
ومرة أخرى، نرى بعض C المظهر الأمور النحوية هنا.
ولكن الأهم من هذا هو باللغة الإنجليزية.
لم لدى أي شخص أي خط وضعوا قبل هذا في حياتهم الزائفة رمز؟
>> الطالب: احصل على صفيف من فرز الأرقام.
>> JASON هيرشهورن: أنت كتبت "الحصول على مجموعة من الأرقام التي تم فرزها. "لكل و
إعلان وظيفة، ونحن سوف يمر صفيف أرقام فرزها.
>> الطالب: [غير مسموع].
>> JASON هيرشهورن: إذن سيكون لدينا ذلك.
ولكن نعم، إذا لم يكن لدينا ذلك، ونحن ستحتاج لفرز لدينا مجموعة من
الأرقام، لأن البحث الثنائي يعمل فقط على صفائف فرزها.
وذلك في حين طول القائمة يساوي صفر، وأنا ذاهب لوضع بعض الأقواس المتعرجة
لجعلها تبدو أكثر قليلا مثل C. ولكن في حين، ويبدو أن الخريطة على ل
في حين حلقة، حتى داخل هذا بينما حلقة ماذا نحن بحاجة إلى
القيام للبحث ثنائي؟
>> شخص آخر لم يقدم لي الإجابة حتى الآن ولكن الذي كتب هذا؟
>> الطالب: الذهاب إلى وسط القائمة.
>> JASON هيرشهورن: توم.
انتقل إلى وسط القائمة.
ومسألة المتابعة، ما نفعل مرة واحدة أننا في
منتصف القائمة؟
>> الطالب: هل فحص ما إذا كان هذا الرقم الذي تبحث عنه.
>> JASON هيرشهورن: ممتاز.
انتقل منتصف قائمة وتحقق إذا قيمة لدينا هناك -
رائعة.
لم لدى أي شخص أي شيء آخر التي كانت مختلفة من هذا؟
هذا صحيح تماما.
>> أول شيء نقوم به في البحث الثنائي وانتقل إلى وسط القائمة و
تحقق لمعرفة ما إذا كانت القيمة دينا هناك.
لذلك أفترض إذا قيمة لدينا هو هناك، ماذا نفعل؟
>> الطالب: نعود صفر [غير مسموع].
>> JASON هيرشهورن: نعم، إذا لدينا القيمة هي هناك، وجدنا أنه.
لذلك يمكننا ان نقول بعض الطريق، ولكن هذا يتم تعريف وظيفة، ونحن نقول للمستخدم
وجدنا أنه.
إذا لم يكن هناك، على الرغم من أن هذا حيث يحصل هذا صعب.
حتى إذا لم يكن هناك، وشخص آخر الذين كان يعمل على بحث ثنائية أو
وفكرة الآن، ماذا نفعل؟
>> الطالب: السؤال.
>> JASON هيرشهورن: نعم؟
>> الطالب: هو مجموعة فرزها بالفعل؟
>> JASON هيرشهورن: نعم، نحن على افتراض يتم فرز بالفعل مجموعة.
>> الطالب: حتى ذلك الحين كان لديك للتحقق مما إذا القيمة التي تراه هو أكبر من
القيمة التي تريد، يمكنك نقل إلى منتصف النصف الآخر.
>> JASON هيرشهورن: حتى إذا كان منتصف القائمة هو أكبر من ما نحن
تبحث عنه، فإننا لا ماذا؟
نحن نتحرك أين؟
>> الطالب: أنت تريد أن تتحرك ل النصف من القائمة مع
أرقام أقل من ذلك.
>> JASON هيرشهورن: لذا سنقوم ندعو أن اليسار.
حتى إذا الأوسط هو أكبر، يمكننا البحث النصف الأيسر من القائمة.
ومن ثم عن طريق البحث، ما أعني البحث؟
>> الطالب: [غير مسموع].
>> JASON هيرشهورن: نذهب إلى الوسط.
ونحن في الواقع تكرار هذا الشيء.
نعود من خلال حلقة في حين لدينا.
سأعطيك مشاركة واحدة -
آخر، إذا والمتوسطة هي اقل مما نحن لا، ماذا نفعل هنا؟
>> الطالب: اذهب إلى اليمين.
>> JASON هيرشهورن: البحث في الحق.
هذا يبدو جيدا، ولكن لا أحد لديهم أي شيء أننا قد تكون مفقودة أو
أي شيء آخر أن كنت وضعت في الخاص الزائفة رمز؟
لذلك هذا هو ما لدينا حتى الآن.
في حين أن طول قائمة أكبر من الصفر، ونحن في طريقنا للذهاب
إلى منتصف القائمة و معرفة ما اذا كان لدينا قيمة هناك.
>> إذا كان الوسط هو أكبر، ونحن في طريقنا ل بحث اليسار، الا اذا المنتصف هي
أقل، ونحن في طريقنا للبحث في الحق.
حتى لقد كان كل ما بعض الألفة مع شروط نستخدمها في علوم الكمبيوتر
والأدوات لدينا.
ولكن ستلاحظ بالفعل كنا الناطقة باللغة الإنجليزية، ولكن وجدنا
الكثير من الأشياء التي يبدو أن الخريطة على ل أدوات لدينا في الترميز مجموعة من الأدوات.
حتى الحق قبالة الخفافيش، ونحن لسنا الذهاب إلى رمز في الواقع حتى الآن.
>> ما الذي نراه هنا في اللغة الإنجليزية أن الخرائط إلى الأشياء التي يمكن أن يكتب في C؟
>> الطالب: حين.
>> JASON هيرشهورن: بينما.
لذلك هذا بينما هنا الخرائط على لماذا؟
>> الطالب: حلقة الوقت.
>> JASON هيرشهورن: حلقة في حين؟
أو ربما، وبصورة أعم، حلقة.
نحن نريد أن نفعل شيئا مرارا وتكرارا.
لذلك نحن ذاهبون إلى رمز حلقة.
ونحن نعرف بالفعل، لأننا قد فعلت هذا بضع مرات، ونحن
لدينا الكثير من الأمثلة هناك، كيف فعلا لكتابة
هذا المؤشر للحلقة.
بحيث ينبغي أن يكون من السهل جدا.
يجب أن نكون قادرين على الحصول على هذا بدأت بسرعة كبيرة.
>> ماذا لا نرى هنا؟
ما غيرها من الهياكل جمل، وأشياء أننا على دراية في C، فهل نحن
لديهم بالفعل شعور ومقرها الخروج من الكلمات التي تستخدم؟
نعم، آنا؟
[غير مسموع]
مجرد مزاح.
آنا، والمضي قدما.
>> الطالب: إذا وآخر.
>> JASON هيرشهورن: إذا و آخر - الحق هنا.
فماذا تلك تبدو وكأنها؟
>> الطالب: وإذا بيان آخر.
>> JASON هيرشهورن: نعم، الظروف، أليس كذلك؟
ولذا فإننا سوف ربما تحتاج إلى كتابة بعض الشروط.
ومرة أخرى، على الرغم ربما مربكا في أولا، لدينا عموما شعور الآن
كيفية كتابة الشروط و بناء الجملة من أجل الظروف.
وإذا لم نفعل ذلك، ونحن مجرد بحث عن بناء الجملة من أجل الظروف، قص ولصق
ذلك، لأننا نعلم أننا تحتاج شرط هنا.
أي أمور أخرى ونحن نرى أن على الخريطة الأشياء التي قد تحتاج إلى القيام به في C؟
نعم، Aleha؟
>> الطالب: قد يكون هذا واضحا، عن طريق فحص فقط إذا كان
قيمة يساوي شيئا.
>> JASON هيرشهورن: كيف لنا إذن أن تحقق و- لذلك يذهب إلى منتصف القائمة
ومعرفة ما اذا كان لدينا قيمة هناك؟
كيف نفعل ذلك في C؟
ما هو بناء الجملة من أجل ذلك؟
>> الطالب: يساوي، يساوي.
>> JASON هيرشهورن: يساوي، يساوي.
ولذلك فإن هذا الاختيار هو على الارجح أن يكون متساوين، يساوي.
ولذا فإننا سوف نعرف أننا بحاجة إلى ذلك في مكان ما.
وفعلا، فقط في كتابة هذا التقرير، ونحن نرى تلك الأشياء الأخرى.
ونحن في طريقنا لديك للقيام ببعض عوامل المقارنة في هناك -
رائعة.
لذلك تبدو فعلا مثل، من خلال و كبيرة، ونحن لم تكتب
كلمة من التعليمات البرمجية C حتى الآن.
ولكن حصلنا على نموذج العقلية أسفل عبر المحاضرات وتلك السراويل.
>> كتبنا الزائفة رمز كمجموعة.
وبالفعل، لدينا 80٪ إن لم يكن 90٪ من ما يتعين علينا القيام به.
الآن، ونحن بحاجة فقط إلى رمز ، والذي مرة أخرى، هو
المشكلة غير تافهة لحلها.
ولكن على الأقل نحن عالقون على المنطق.
على الأقل الآن عندما نذهب إلى ساعات العمل، أستطيع أن أقول، وأنا أعرف ما أحتاج
القيام به، ولكن يمكنك تذكير لي من جملة؟
أو حتى إذا تزدحم ساعات العمل، وكنت يمكن أن جوجل لبناء الجملة، بدلا
من تمسك يجري على المنطق.
>> ومرة أخرى، بدلا من محاولة حل المنطق ومشاكل في بناء الجملة جميع
في آن واحد، غالبا ما يكون أفضل بكثير ل كسر هذه المشاكل من الصعب اثنين قبالة في
اثنين منها أكثر قابلية للإدارة والقيام الزائفة رمز أولا ثم التعليمات البرمجية في C.
لذلك دعونا نرى ما فعلته ل الزائفة رمز في وقت مبكر.
>> في حين أن طول قائمة أكبر من الصفر، أن ننظر في الوسط
من القائمة.
إذا وجدت عدد عاد الحقيقية، وإلا إذا كان رقم أعلى، والبحث اليسرى.
الا اذا عدد أقل من ذلك، البحث الحق، والعودة كاذبة.
بحيث تبدو متطابقة تقريبا إن لم يكن متطابقة تقريبا مع ما كتبنا.
في الواقع، توم، ما قلته أولا، كسر منتصف القائمة، وإذا
عدد جدت في بيانين هو في الواقع ما فعلته.
>> أنا مجتمعة لهم هناك.
وأرجو أن يكون استمع إلى كنت أول مرة.
بحيث هو الزائفة رمز لدينا.
إذا كنت تريد أن الآن، آسف، انتقل عد إلى مشكلة الأولية لدينا.
دعونا كود binary.c.
وتنفيذ ذلك إصدار التكرارية ل البحث الثنائي باستخدام التالية
وظيفة الإعلان.
>> وأنت لا تحتاج إلى نسخ عليه فقط حتى الآن.
أنا فعلا ذاهب لفتح حتى هنا binary.c.
حتى لا يكون هناك تعريف الدالة في منتصف الشاشة.
وسترى أخذت الزائفة رمز من على الجانبين بلدي، ولكن متطابقة تقريبا
ما كتبنا، و وضع هذا في لك.
وحتى الآن، دعونا نلقي خمس دقائق إلى رمز هذه الوظيفة.
>> ومرة أخرى، إذا كان لديك أي أسئلة، ارفع يدك، واسمحوا لي أن أعرف، وسوف أكون
تأتي حولها.
>> الطالب: [غير مسموع].
>> JASON هيرشهورن: فأخذت الثنائية تعريف البحث في
أعلى، على الخط 12.
وهذا ما حصلت عليه لشريحة بلدي.
وبعد ذلك كل هذا زائف رمز أنا فقط نسخ ولصق من الشرائح،
الزائفة رمز الشريحة.
ما زلت لا نسمع [غير مسموع].
>> لذلك إذا كنت قد أنهى الخاص التنفيذ، أريد أن التحقق من ذلك.
لي بالبريد الإلكتروني لك ملف helpers.h في هذه الفئة في وقت سابق.
وسوف تكون متاحة على الانترنت كذلك للتحميل للناس يشاهدون
هذا القسم الوقت تأخر.
وأنا فقط استخدام توزيع عامة رمز من pset3.
لذلك أخذت find.C، استخدم ملف helpers.h بلدي بدلا من الملف helpers.h
وهذا ما يرد في قانون التوزيع.
>> وكان لي لجعل التغيير الآخر في find.C بدلا من استدعاء ببساطة
البحث، والدعوة binary_search.
حتى إذا كنت ترغب في اختبار التعليمات البرمجية الخاصة بك، أعرف أن هذه هي الطريقة للقيام بذلك.
في الواقع، عندما سنكون تشغيل هذه التعليمات البرمجية الآن، وأنا أدلى به للتو نسخة من
بلدي الدليل pset3، مرة أخرى، تبادلت خارج الملفات المساعدين ثم جعلت ذلك
تغيير في find.C للاتصال binary_search بدلا من مجرد البحث.
>> JASON هيرشهورن: نعم.
لديك سؤال؟
>> الطالب: فما باللك.
>> JASON هيرشهورن: لا تقلق.
حسنا، دعونا نبدأ.
سوف نقوم رمز هذا كمجموعة.
ملاحظه واحدة أخرى.
مرة أخرى، يتم، يمكن بسهولة أن تبادلت هذه في لمشكلة تعيين ثلاثة.
لدي ملف helpers.h بلدي الذي، بدلا من helpers.h نحن معين،
تعلن ثنائي البحث، فقاعة نوع، واختيار نوع.
وفي find.c ستلاحظ على الخط، ما هي، خط 68، فإننا ندعو الثنائية
بحث بدلا من البحث.
ذلك مرة أخرى، رمز ما هو متاح عبر الإنترنت أو التعليمات البرمجية التي كنت
خلق الآن يمكن تبديل بسهولة في لتعيين ص 3 للتحقق من ذلك.
>> ولكن أولا، دعونا رمز البحث الثنائي.
لدينا تعريف الدالة، نعود ومنطقي.
نأخذ عدد صحيح يسمى القيمة.
نأخذ مجموعة من الأعداد الصحيحة يسمى القيم، ونحن نأخذ ن يكون
حجم المصفوفة.
على خط 10، والحق هنا، ولدي وتشمل حادة stdbool.h.
لا أحد يعرف لماذا هذا هناك؟
فماذا الذي سطر من التعليمات البرمجية تفعل؟
>> الطالب: انها تسمح لك ل استخدام نوع إرجاع منطقي.
>> JASON هيرشهورن: بالضبط.
>> الطالب: أو انها المكتبة التي تسمح لاستخدام نوع إرجاع منطقي.
>> JASON هيرشهورن: إذن حادة تشمل خط stdbool.h يعطيني بعض
تعريفات والإعلانات عن الأشياء أنني سمحت لاستخدامها في
هذه المكتبة.
حتى بين أولئك يقول ان هناك هذا النوع يسمى منطقي، وأنه يمكن أن يكون
صحيحة أو خاطئة.
وهذا ما يفعل ذلك الخط.
وإذا لم يكن لديك هذا الخط، وأود أن تحصل في ورطة لكتابة هذا
كلمة حق هنا، منطقيا، أليس هناك.
صحيح تماما.
لذلك أنا بحاجة إلى ذلك في هذا الرمز.
موافق.
لذلك هذا، مرة أخرى، هو تكراري نسخة، وليس واحدة متكررة.
لذلك دعونا نبدأ.
>> دعونا نبدأ مع هذا أولا سطر من التعليمات البرمجية الزائفة.
ونأمل، ونحن سوف - أم لا أمل.
ونحن في طريقنا للذهاب في جميع أنحاء الغرفة.
سنذهب سطرا سطرا، وأنا سأساعد يمكنك معرفة الخط الذي نحتاج
لكتابة الأول.
وذلك في حين طول قائمة أكبر من الصفر.
دعونا نبدأ في الجبهة.
ما سطر يجب أن يكتب هنا، في التعليمات البرمجية؟
>> الطالب: في حين قوسين n هو أكبر من 0.
>> JASON هيرشهورن: على الرغم من n هو كبيرة من 0.
لذلك n هو حجم القائمة، ونحن التحقق إذا -
>> [VOICES فاصلة]
>> JASON هيرشهورن: - آسف؟
>> الطالب: كيف لنا أن نعرف أن n هو حجم القائمة؟
>> JASON هيرشهورن: آسف.
في مواصفات pset، والبحث ويعمل النوع تحتاج إلى كتابة،
n هو حجم القائمة.
لقد نسيت ان اوضح هنا.
ولكن نعم. n هو حجم القائمة، في هذه الحالة.
وذلك في حين أن n هو أكبر من 0.
موافق.
قد تثبت إشكالية قليلا رغم ذلك، إذا سارت الأمور على.
لأننا سوف نستمر في معرفة حجم قائمة طوال هذه
وظيفة، ولكن نقول اننا تبدأ مع مجموعة من 5 أعداد صحيحة.
ونحن نمضي من خلال وقمنا ضاقت عليه الآن ل
مجموعة من 2 أعداد صحيحة.
2 الأعداد الصحيحة التي هي؟
حجم هو 2 الآن أننا نريد أن ننظر، ولكن الذي هو أن 2؟
لا تجعل المعنى، هذا السؤال؟
>> موافق.
أنا أطلب ذلك مرة أخرى.
لذلك نحن تبدأ مع هذه المجموعة من 5 أعداد صحيحة، و n يساوي 5، أليس كذلك؟
سنقوم من خلال تشغيل هنا.
أننا ربما سوف تغير حجم، الحق، وسارت الأمور على.
وهو ما نقوله نحن نريد أن نفعل.
نحن لا نريد للبحث الشيء الكامل مرة أخرى.
لذلك أقول أننا تغييره إلى 2.
نأخذ نصف القائمة التي الغريب.
حتى مجرد اختيار 2.
وحتى الآن ن يساوي 2.
أعتذر للفقراء محو علامات الجافة.
أليس كذلك؟
ونحن تبحث من خلال قائمة مرة أخرى مع قائمة من حجم 2.
حسنا، لدينا مجموعة لا يزال من حجم 5.
نحن نقول اننا نريد فقط أن بحث 2 البقع في ذلك.
ذلك الذي 2 البقع هي تلك؟
>> فهل هذا يعقل؟
هم اليسار 2 البقع؟
هم على حق 2 البقع؟
هم منتصف 2 البقع؟
لقد كسرنا المشكلة باستمرار، ولكننا في الواقع لا أعرف أي جزء من
المشكلة اننا لا تزال تبحث في، فقط من خلال وجود هذه المتغيرات 2.
لذلك نحن بحاجة أكثر قليلا ثم، بينما n أكبر من 0.
نحن بحاجة إلى معرفة حيث أن n هو في مجموعة الفعلي لدينا.
>> لذلك لا أحد لديها تغيير هذا الخط؟
معظم هذا الخط هو الصحيح تماما.
بالإضافة إلى ذلك هناك آخر؟
يمكننا مبادلة شيء لن ل جعل هذا الخط أفضل قليلا؟
مم جلالة؟
>> الطالب: هل يمكنك تهيئة متغير مثل طول لن التي سوف ثم استخدامها
في وقت لاحق في وظيفة؟
>> JASON هيرشهورن: إذن تهيئة طول متغير إلى n،
ونحن نستخدم ذلك لاحقا؟
ولكن بعد ذلك ونحن فقط نقوم بتحديث طول و لا تزال تعمل في هذه المشكلة حيث أننا
خفض طول مشكلة لدينا، ولكننا لم نعرف أين، في الواقع،
أن طول خرائط على.
>> الطالب: أليس هذا سيحدث في وقت لاحق عندما كنت تقول، بحث اليسار،
بحث أليس كذلك؟
وأنت تسير للذهاب إلى مختلف مجال الخاص -
>> JASON هيرشهورن: ونحن في طريقنا للذهاب إلى المنطقة، ولكن كيف لنا أن نعرف
التي هي للذهاب إلى؟
اذا كان لدينا فقط مجموعة وهذا ن، كيف لنا أن نعرف إلى أين
تذهب إليه في صفيف.
في الظهر، نعم؟
>> الطالب: هل لديك، مثل، أقل منضم ومتغير الحد الأعلى أو
شيء من هذا القبيل؟
>> JASON هيرشهورن: OK.
لذلك هذا هو فكرة أخرى.
بدلا من مجرد تتبع لل حجم، ونحن تتبع الدنيا و
متغير الحد الأعلى.
لذلك كيف نحسب حجم من والأدنى والحد الأعلى؟
>> [VOICES فاصلة]
>> JASON هيرشهورن: الطرح.
وأيضا تتبع السفلي مقيدة وملزمة العليا في إعلامنا،
نحن تبحث هذين؟
نحن تبحث هذين أكثر من هنا؟
نحن تبحث منتصف اثنين؟
ربما ليس في منتصف اثنين، لأن هذا، في الواقع، هو البحث الثنائي.
ولكن نحن الآن سوف تكون قادرة على الحصول على حجم، ولكن أيضا حدود الصفيف.
في جوهرها، إذا كان لدينا لدينا العملاقة دفتر الهاتف، ونحن مزق عليه في النصف.
ونحن نعلم الآن حيث أن أصغر دليل الهاتف هو.
ولكن نحن لا تمزيق الواقع دليل الهاتف في النصف.
ما زلنا بحاجة لمعرفة مكان حدود جديدة من مشكلتنا.
هل لدى أي شخص أي أسئلة عن ذلك؟
نعم؟
>> الطالب: وهل تعمل عن طريق خلق متغير، ط، التي تحول بعد ذلك فقط
موقف ط قياسا إلى الموقف الحالي، وطول، ن؟
>> JASON هيرشهورن: وما هو أنا؟
>> الطالب: مثل ط يجري مثل نوع من -
كأنك تهيئة ط أن تكون موقف وسط مجموعة.
ومن ثم، إذا كانت القيمة في موقف ط في وسط مجموعة في العثور على ل
أن يكون أقل من القيمة التي تحتاج إليها، وأنا الآن يصبح طول الصفيف، بالإضافة إلى
قيمة ط مقسوما على 2.
مثل، انظر، هل تحول ط -
>> JASON هيرشهورن: الحق.
>> الطالب: - حتى -
>> JASON هيرشهورن: لذلك أنا تقريبا إيجابية من شأنها أن تعمل.
ولكن النقطة، تحتاج إلى جزأين قطعة من المعلومات هنا.
يمكنك أن تفعل ذلك مع بداية ونهاية، أو يمكنك أن تفعل ذلك مع حجم، ثم
بعض علامة.
ولكنك تحتاج قطعتين المعلومات هنا.
لا يمكنك الحصول عليه مع واحد فقط.
هل هذا منطقي؟
>> لذلك نحن في طريقنا للذهاب من خلال، و ونحن في طريقنا للقيام [غير مسموع]
وخلق بعض علامات.
لذلك ماذا كنت تكتب في التعليمات البرمجية الخاصة بك؟
>> الطالب: قلت للتو كثافة العمليات المربوطة واحد يساوي 0.
>> JASON هيرشهورن: دعونا نسمي أن كثافة العمليات، ابتداء.
>> الطالب: OK.
>> JASON هيرشهورن: وهذا يجعل أكثر منطقية بالنسبة لي.
و؟
>> الطالب: قلت، أعتقد، وكثافة العمليات المنتهية.
>> JASON هيرشهورن: الباحث النهاية.
>> الطالب: أعتقد، ن ناقص 1، أو شيء من هذا القبيل.
مثل، العنصر الأخير.
>> JASON هيرشهورن: إذن أنت كتبت، وكثافة العمليات تبدأ يساوي 0، الفاصلة المنقوطة، وكثافة العمليات
إنهاء يساوي ن ناقص 1، منقوطة.
ذلك أساسا، ما نقوم به هنا، 0 المركز الأول.
وكما نعلم في المصفوفات، فإنها لا تذهب حتى ن، فإنها ترتفع إلى n ناقص 1.
لذلك لدينا بعض حدود مصفوفة لدينا.
وهذه الحدود الأولية يحدث ليكون حدود الأولي من مشكلتنا.
موافق.
بحيث يبدو جيدا.
ثم إذا عدنا إلى هذا الخط، في حين طول القائمة هو أكبر من 0،
ما، بدلا من ن، ينبغي وضعنا هنا؟
>> الطالب: كتابة المنتهية ناقص البداية.
>> JASON هيرشهورن: بينما تنتهي ناقص بدأت أكبر من 0؟
موافق.
ويمكننا، إذا أردنا أن جعل هذا ألطف قليلا، ما
آخر يمكن أن نفعل؟
إذا أردنا لتنظيف هذا الرمز قليلا؟
كيف يمكننا التخلص من 0؟
هذا هو مجرد مسألة أسلوب.
انها صحيحة في الوقت الحالي.
>> الطالب: لا تنتهي بداية قدم المساواة؟
>> JASON هيرشهورن: يمكننا أن نفعل ماذا؟
>> [VOICES فاصلة]
>> الطالب: إنهاء أكبر؟
>> JASON هيرشهورن: نعم.
يمكننا القيام به فقط حين تنتهي أكبر من البداية.
الحق.
أضفنا بداية إلى الجانب الآخر لذلك، ونحن تخلصوا من 0.
حتى هذا يبدو مجرد قليلا أكثر نظافة.
موافق.
لذلك، في حين أن طول القائمة هو 0، كتبنا أنه في حين تنتهي أكبر
من البداية.
نحن ذاهبون لوضع اللازمة لدينا الأقواس المتعرجة، ومن ثم فإن أول شيء
نريد أن نفعله هو أن ننظر في لهم في قائمة قليلا.
لك؟
يمكنك أن تعطيني -
>> الطالب: إذا قوسين قيمة مربع قوس -
>> JASON هيرشهورن: إذا قوسين قيمة مربع قوس.
>> الطالب: تنتهي مقسوما على 2.
>> JASON هيرشهورن: تنتهي؟
>> الطالب: أرى مشكلة مع ك -
>> JASON هيرشهورن: OK.
كذلك، أن ننظر في الوسط.
كيف لنا أن نعرف ما هو الوسط؟
نعم.
لذلك اسمحوا لي أن حذف التعليمات البرمجية.
كيف لنا أن نعرف ما هو الوسط؟
في أي شيء، عندما يكون لديك بداية ونهاية، كيف تجد
الوسط؟
>> الطالب: أنت في المتوسط.
>> الطالب: أنت إضافتها معا وبعد ذلك -
>> JASON هيرشهورن: إضافة لهم معا، وبعد ذلك؟
>> الطالب: ومتوسط ​​لك.
نقسمه 2.
>> JASON هيرشهورن: إضافة لهم معا والقسمة على 2.
بحيث يساوي منتصف الباحث؟
توم، يمكنك تعطيه لي؟
>> الطالب: بداية زائد تنتهي -
>> JASON هيرشهورن: بداية المنتدى بالإضافة إلى النهاية.
>> الطالب: جميع، قوس، مقسوما على 2.
>> JASON هيرشهورن: جميع، بين قوسين، مقسوما على 2.
بحيث يعطيني الوسط من أي شيء، صحيح؟
>> الطالب: أنت بحاجة أيضا لجولة عنه.
>> JASON هيرشهورن: ماذا تفعل أنت يعني، ولست بحاجة لجولة عنه؟
>> [VOICES فاصلة]
>> الطالب: لأنه إذا انها غريبة العدد، ثم انها مثل -
>> JASON هيرشهورن: حسنا، حسنا.
حتى أتمكن من جولة عنه.
ولكن اذا كان عدد فردي، على بعد 5، يمكنني 1 اتخاذ بعيدا عن الوسط.
أو إذا كان عدد زوجي، بدلا من ذلك، وهذا هو الحال أفضل.
اذا كان 4، لدينا 4 فقط، وأنا يمكن أن تتخذ أول "الوسط"، واقتبس، أو نهاية الاقتباس
والثاني "الوسط" واحد.
إما أن نعمل من أجل البحث الثنائي، لذلك أنا لا تحتاج في الواقع لتقريب ذلك.
ولكن هناك شيء واحد أنا الأخرى بحاجة الى ان ننظر في هذا الخط.
ونحن قد لا يدركون ذلك بعد، ولكننا سوف نعود إليها.
لأن هذا الخط في الواقع لا يزال يحتاج شيئا واحدا الأخرى.
>> ولكن حتى الآن، لدينا كتب أربعة أسطر من التعليمات البرمجية.
لدينا لدينا بداية وتنتهي علامات.
لدينا حلقة في حين، التي تقوم بتعيين على مباشرة إلى شبة الكود لدينا.
نحن نبحث في الوسط لخرائط مباشرة على شبة الكود لدينا.
أود أن أقول هذا يذهب إلى الوسط من القائمة، وهذا سطر من التعليمات البرمجية.
ثم، مرة واحدة نذهب إلى منتصف القائمة، والشيء التالي الذي عليك القيام به
ومعرفة ما اذا كان لدينا هناك قيمة ل في شبة الكود كتبنا في وقت سابق.
>> لذلك كيف يمكننا معرفة ما اذا كان لدينا قيمة هو في منتصف القائمة؟
لك.
لماذا لا نفعل ذلك؟
>> الطالب: إذا كان لدينا قيمة هو في منتصف يساوي
مهما وضعنا -
أعني متساوية يساوي -
>> JASON هيرشهورن: إنه -
موافق.
>> الطالب: أنا لست متأكدا ما نحن نبحث متغير
لذلك، هو أنه -
>> [VOICES فاصلة]
>> الطالب: [غير مسموع].
>> JASON هيرشهورن: بالضبط.
في تعريف الدالة، نحن نبحث عن قيمة.
لذلك نحن نبحث عن القيمة في مجموعة من القيم.
لذلك كنت على حق تماما.
ستفعل، إذا قوس قيمة PAREN مفتوحة وسط مغلق متساوين قوس
يساوي قيمة، وهناك داخل ماذا علينا أن نفعل؟
اذا كان لدينا قيمة هناك، ما لا يتعين علينا القيام به؟
>> [VOICES فاصلة]
>> الطالب: الرجوع الصفر.
>> JASON هيرشهورن: العودة الحقيقية.
>> الطالب: العودة الحقيقية.
>> JASON هيرشهورن: مايكل، ماذا تفعل هذا الخط؟
>> الطالب: [غير مسموع] قد تشغيل البرنامج مجراها، وهذا هو أكثر، و
كنت قد ما عليك القيام به؟
>> JASON هيرشهورن: البرنامج أم ماذا؟
في هذه الحالة؟
>> الطالب: وظيفة.
>> JASON هيرشهورن: وظيفة.
وهكذا، إلى العودة إلى ما يسمى وإعطائها قيمة، صحيح.
صحيح تماما.
الرئيسية.
ما هو نوع الإرجاع من الرئيسي، مايكل؟
>> الطالب: كثافة العمليات، صحيح؟
>> JASON هيرشهورن: كثافة العمليات، بالضبط.
عدد صحيح.
كان هذا مجرد سؤال للتأكد من كان يا رفاق على أعلى من ذلك.
ما الذي يتطلبه الأمر عادة العودة، إذا كل الأشياء تعمل بشكل جيد؟
>> الطالب: صفر.
>> JASON هيرشهورن: صفر.
صحيح تماما.
>> الطالب: إذا كان هذا يعود فقط صحيحا، ليس هناك معلومات يولى
حول ما -
أوه، هذا هو فقط أقول أن هذا قيمة من داخل مجموعة.
>> JASON هيرشهورن: بالضبط.
هذا البرنامج هو عدم اعطاء المعلومات من حيث القيمة هي بالضبط.
انها اكتفت بالقول، نعم، وجدنا عليه، أو لا، لم نجد ذلك.
لذلك إذا وجدت عدد، والعودة الحقيقية.
حسنا، في الواقع نحن لم يفعلوا ذلك حقا بسرعة مع أن سطر واحد من التعليمات البرمجية.
ولذا فإنني سوف يتحرك هذا الخط من شبة الكود.
>> الطالب: لا نحتاج لتغيير مجموعة؟
يجب أن تكون القيم، وليس القيمة، أليس كذلك؟
>> JASON هيرشهورن: آسف.
شكرا لك.
>> الطالب: نعم.
>> JASON هيرشهورن: هذا الخط يجب أن تكون القيم.
صحيح تماما.
موافق.
ولذا فإننا قد بحثت في قائمة الوسط.
إذا وجدت عدد العودة الحقيقية.
مع استمرار على شبة الكود لدينا، إذا الوسط هو أكبر، وترك البحث.
لذلك اضطررت هنا، إذا كان رقم أعلى، ترك البحث.
قسنطينة، يمكنك ان تعطي لي هذا السطر من التعليمات البرمجية؟
>> الطالب: إذا كان قيمة الوسط -
>> JASON هيرشهورن: حتى إذا القيمة -
إذا PAREN مفتوحة القيم قوس قوس إغلاق الوسط -
>> الطالب: هل أصغر من القيمة؟
>> JASON هيرشهورن: هل أقل من.
>> الطالب: أقل من القيمة.
>> JASON هيرشهورن: القيمة.
حسنا، في الواقع، تريد معرفة ما اذا كان عدد -
آسف.
هذا هو مربكة قليلا.
ولكن إذا كان عدد آخر في منتصف القائمة هو أكبر.
>> الطالب: أوه، حسنا.
>> JASON هيرشهورن: سوف يغير ذلك.
والا اذا الأوسط هو أعلى، ونحن تريد البحث اليسار، حسنا؟
وماذا نفعل في الداخل هذا اذا كان الشرط؟
>> الطالب: هل يمكنني إجراء تغيير صغير ل الشرط، تغييره إلى آخر إذا؟
>> JASON هيرشهورن: آخر إذا؟
موافق.
لذلك هذا الكود وتنفيذ عن نفسه.
ولكن الشيء الجميل حول استخدام إذا، وإلا إذا، وإلا إذا أو إذا، وإلا إذا، وإلا
يعني أن واحدا فقط من هؤلاء هو الذهاب الى أن يتم التحقق، وليس كل ثلاثة منهم،
يحتمل.
وهذا ما يجعلها قليلا أجمل على الكمبيوتر هذا
تشغيل البرنامج.
>> حتى [؟ قسنطينة،؟]
نحن داخل هذا الخط، الا اذا القيم، قوس منتصف قوس إغلاق
أكبر من القيمة.
ماذا علينا أن نفعل؟
نحن بحاجة للبحث في اليسار.
كيف نفعل ذلك؟
انا ذاهب الى ان نعطيكم البداية.
>> لدينا اثنين من هذه الأشياء تسمى تبدأ وتنتهي.
وذلك ما يجب أن يحدث إلى بداية؟
إذا كنت تريد البحث يسار قائمة، وحصلنا على بداية الحالي.
ماذا علينا أن نفعل ذلك؟
>> الطالب: وضعنا بداية إلى الوسط زائد 1.
>> JASON هيرشهورن: حتى إذا نحن البحث في اليسار؟
>> الطالب: عذرا، وسط ناقص -
حتى النهاية سيكون الوسط ناقص 1 وبداية -
>> JASON هيرشهورن: وماذا يحدث للبداية؟
>> الطالب: إنه يبقى على حاله.
>> JASON هيرشهورن: إذن معنى يبقى على حاله.
إذا كان لنا أن تبحث اليسار، ونحن باستخدام نفس البداية -
صحيح تماما.
وتنتهي؟
آسف، ما يقوم به تنتهي متساوية مرة أخرى؟
>> الطالب: ناقص الأوسط 1.
>> JASON هيرشهورن: ناقص الأوسط 1.
الآن، لماذا ناقص 1 والمتوسطة ليس فقط؟
>> الطالب: وسط وخرج من صورة بالفعل، لأننا كان ل
فحص أنه من أصل؟
>> JASON هيرشهورن: هذا صحيح تماما.
الوسط هو خارج الصورة.
بحثنا بالفعل الوسط.
لذلك نحن لا نريد "الوسط" الاقتباس نهاية الاقتباس، أن يستمر في
مجموعة أننا نبحث.
لذلك هذا أمر رائع.
>> والا اذا القيم قوس المنتصف هي أكبر من قيمة تنتهي التساوي
وسط ناقص 1.
جيف، ماذا عن هذا السطر الأخير؟
>> الطالب: آخر.
القيم المتوسطة هي أقل من القيمة؟
>> JASON هيرشهورن: سنقوم كنت إعطائي آخر.
لذلك إذا كنت لا تعطيني -
>> الطالب: حتى ذلك الحين بدأت سيكون منتصف زائد 1.
>> JASON هيرشهورن: متساوين بداية الوسط زائد 1، مرة أخرى، لنفس
السبب أن قسطنطين قدم لنا في وقت سابق.
وفي النهاية، الذين لم تعط لي سطر من التعليمات البرمجية حتى الآن؟
عودة كاذبة، Aleha، ما لا نكتب هنا؟
>> الطالب: عودة كاذبة.
>> JASON هيرشهورن: عودة كاذبة.
ونحن بحاجة إلى أن تفعل ذلك، لأنه إذا نحن لا تجد ذلك، ونحن بحاجة إلى أن أقول نحن
لم تجد.
وقلنا أننا ذاهبون للعودة منطقيا، لذلك لدينا بالتأكيد للعودة
ومكان منطقي.
>> لذلك دعونا تشغيل هذا الرمز.
انا ذاهب فعلا ل-
لذلك نحن في المحطة.
سنقوم مسح إطار عملنا.
دعونا جعل جميع.
وجدنا هناك خطأ واحد.
هناك خطأ على خط 15، المتوقع منقوطة في نهاية
الإعلان.
وذلك ما لم أنسى؟
>> الطالب: الفاصلة المنقوطة.
>> JASON هيرشهورن: الفاصلة المنقوطة الحق هنا.
اعتقد ان هذا كان رمز توم.
حتى توم، [غير مسموع].
مجرد مزاح.
دعونا لا تجعل جميع مرة أخرى.
>> الطالب: ما قطاف الدليل يجب أن نكون في هذا؟
>> JASON هيرشهورن: حتى يمكنك مشاهدة فقط لهذا الشيء.
ولكن مرة أخرى، إذا أردت نقل هذا رمز إلى دليل pset3 لمحاولة
من ذلك، وهذا ما فعلته.
إذا كنت ستلاحظ هنا - آسف، سؤال جيد.
>> [؟ LS،؟]
لدي هنا رمز find.c من التعليمات البرمجية توزيعة هذا الأسبوع.
لدي helpers.h.
لدي ملف نوع السيارة التي أنا في الواقع تحرير قليلا لتشمل هذه جديدة
ملفات اننا الكتابة.
كل ذلك سوف تكون متاحة كود، لا رمز التوزيع، ولكن الجديد
جعل الملف، ملف سوف helpers.h جديدة تكون متاحة على الانترنت للتحميل.
مرة أخرى، حتى تلك هي رموز اضافية لدينا.
>> لذا تأكد كل شيء، في هذا الخط، يجعل العثور عليها، ثنائي، واختيار فقاعة - يجعل
كل ثلاثة منهم ويجمع في هذا الاكتشاف قانون قابل للتنفيذ.
لذلك عموما، ونحن لا نريد على التوالي لcheck50.
نحن نريد لتشغيل بعض الاختبارات لوحدنا.
ولكن فقط حتى نتمكن من تسريع هذا قليلا، سوف check50 2013 pset3.find تمرير
في helpers.c - بلدي سيئة.
>> ليس لدي هذا الحق الآن.
لذلك نحن ذاهبون فعلا ل تشغيل التعليمات البرمجية لريال مدريد.
Usage.find /، وانت تعرف ماذا يعني ذلك؟
>> الطالب: كنت في حاجة الى الثانية سطر الأوامر على ذلك.
>> JASON هيرشهورن: أحتاج سطر الأوامر الثاني.
وفقا للمواصفات، ولست بحاجة لإدخال ما تبحث عنه.
لذلك دعونا ننظر ل42.
وسوف نستمر في فرزها، لأننا لم أكتب وظيفة الفرز حتى الآن -
42، 43، 44.
>> وتحكم D لم تجد إبرة في كومة قش.
فهذا أمر سيئ.
انها بالتأكيد هناك.
دعونا نجرب شيئا آخر.
ربما حان لأن أضع ذلك في البداية.
>> دعونا نفعل 41، 42، 43.
هناك نذهب.
وجدت ذلك.
دعونا نضع ذلك في نهاية الآن، فقط ولذا فإننا يمكن أن يكون شاملا -
40، 41، 42.
لم يجد الإبرة.
لذلك أنا ذكرت هذا في وقت سابق.
للأسف، وأنا أعرف هذا كان على وشك أن يحدث.
>> ولكن لأغراض تربوية، انها جيدة لاستكشاف ذلك.
أنها لا تعمل.
لسبب ما، فإنه لا يمكن العثور عليه.
ونحن نعلم ما في هناك، ولكن نحن لا يجدون.
ذلك شيء واحد يمكننا القيام به هو الذهاب من خلال GDB للعثور عليه، ولكن لا أحد،
دون المرور عبر GDB، لديها الشعور أين نحن ثمل؟
[؟ مادو؟ ؟]
>> الطالب: أعتقد أنه قد يكون عندما تنتهي يساوي البداية، وانها
مجرد قائمة من عنصر واحد.
فإنه يتجاهل فقط بدلا للتحقق فعلا.
>> JASON هيرشهورن: هذا صحيح تماما.
عندما يساوي نهاية بداية، هل نحن لا تزال لديها عنصر في قائمتنا؟
>> الطالب: نعم.
>> JASON هيرشهورن: نعم، في الواقع، ونحن لديك واحدة وعنصر واحد فقط.
والتي من المرجح أن يحدث عندما، في رمز اختبرنا، نحن في
أمام كومة قش أو في نهاية كومة قش.
حيث ان بداية و إنهاء يجري على قدم المساواة
واحد، مع البحث الثنائي.
حتى في هاتين الحالتين لم يعمل، لأن إنهاء كان يساوي البداية.
>> ولكن إذا المنتهية يساوي البداية، هل هذا في حين حلقة تنفيذ؟
لم يحدث ذلك.
ونحن يمكن أن يكون فحص ذلك مرة أخرى من خلال GDB.
فكيف يمكننا حل هذا الرمز، لأن عندما تنتهي حين يساوي
بداية، ونحن نريد أيضا هذه في حين حلقة لتشغيل.
>> ذلك ما يمكن أن نجعل الإصلاح إلى خط 18؟
>> الطالب: [غير مسموع] أكبر من أو يساوي.
>> JASON هيرشهورن: الحق بالضبط.
بينما المنتهى هو أكبر من أو يساوي البداية.
وحتى الآن، أن نتأكد من الحصول على هذا حالة الزاوية في نهاية المطاف.
ودعونا نرى.
دعونا تشغيل هذا مرة واحدة أكثر من ذلك.
>> دعونا نجعل جميع.
مرة أخرى، سيكون لديك لمجرد متابعة على طول هنا.
تجد 41 هذا الوقت.
تبقي فقط متسقة.
>> تجد 42.
دعونا نضع ذلك في بداية -
42، 43، 44.
وجدنا أنه.
بحيث كان في الواقع التغيير نحن بحاجة لجعل.
>> وكان أن الكثير من الترميز نحن مجرد فعل، البحث الثنائي.
هل لدى أي شخص أي أسئلة قبل أنتقل إلى خطوط على كتبنا في
البحث الثنائي أو كيف برزت لنا ما أننا لم معرفة؟
قبل أن ننتقل، أريد أيضا أن أشير إلى أن إلى حد كبير، ونحن تعيين
لدينا الزائفة رمز واحد ل واحدة على رمز لنا.
>> نحن لم يكون هذا شيء صعب لمعرفة مع
تبدأ وتنتهي.
ولكن قد لا أحسب أنه من أصل، كنت قد كتبت الى حد كبير
كود متطابقة، باستثناء تلك أعلى سطرين.
وبعد ذلك كنت قد أدركت عندما قمت بها في الضوابط والحالات التي
كنت بحاجة الى شيء آخر.
ذلك حتى لو كنت قد اتبعت لدينا خط الزائفة رمز إلى الخط، وكنت قد قمت
حصلت جميع ولكن اثنين من خطوط رمز كنت في حاجة إلى الكتابة.
>> وسأكون على استعداد للمراهنة على أن يا رفاق كان كل أحسب أنه من أصل
بسرعة كبيرة، التي كنت في حاجة لوضع نوعا من علامة في هناك لمعرفة
من أين كنتم.
ذلك مرة أخرى، هي قوة للقيام الزائفة رمز في وقت مبكر.
لذلك يمكننا أن نفعل المنطق أولا، ثم يمكننا أن تقلق على بناء الجملة.
>> نحن قد تم الخلط حول المنطق أثناء محاولة كتابة هذا الرمز في C،
كنا قد حصلت على كل عابث.
ومن ثم فإننا سنكون طرح أسئلة حول المنطق وبناء الجملة والربط
كل منهم معا.
ونحن قد حصلت المفقودة في ما يمكن أن تصبح بسرعة
مشكلة صعبة للغاية.
لذلك دعونا ننتقل الآن لاختيار نوع.
>> لدينا 20 دقيقة من النهاية.
لذلك لدي شعور أننا لن تكون قادرة على من خلال الحصول على كل من اختيار نوع
وفقاعة الفرز.
ولكن دعونا على الأقل محاولة لإنهاء اختيار نوع.
وتنفيذ ذلك اختيار نوع استخدام التالية ظيفة الإعلان.
>> مرة أخرى، يؤخذ هذا من مشكلة تعيين مواصفات.
قيم كثافة العمليات هو بين قوسين، هو مجموعة من الأعداد الصحيحة.
وint.n هو حجم هذا الصفيف.
اختيار نوع يجري لفرز هذه المجموعة.
>> لذلك في نموذج العقلية لدينا الاختيار نوع، ونحن سحب -
أولا، نذهب من خلال القائمة الأولى الوقت، والعثور على أصغر عدد،
وضعه في البداية، تجد الثاني أصغر عدد، ووضعها في
المركز الثاني إذا كنا نريد أن الفرز في ترتيب تصاعدي.
أنا لا يجبرك على الكتابة الزائفة رمز الآن.
>> ولكن قبل ان نفعل الكود كما في فئة خمس دقائق، ونحن نذهب لكتابة
الزائفة رمز لذلك لدينا بعض الشعور من أين نحن ذاهبون.
حتى محاولة لكتابة رمز الزائفة لوحدك.
ثم محاولة تحويل هذا الزائفة رمز إلى رمز.
وسوف نفعل ذلك كمجموعة في خمس دقائق.
>> وبطبيعة الحال، اسمحوا لي أن أعرف إذا لديك أي أسئلة.
>> الطالب: هذا هو؟
>> JASON هيرشهورن: انظر كيف كنت بعيدا يمكن أن تحصل في اثنين من أكثر دقيقة.
أنا أفهم أنك لن تكون قادرة على الانتهاء.
ولكن سوف نذهب أكثر هذه كمجموعة.
>> كنت كل ذلك الترميز [غير مسموع]، لذلك أنا آسف لإيقاف ما تفعلونه.
ولكن دعنا نذهب من خلال هذا كمجموعة.
ومرة أخرى، البحث الثنائي، لكم جميعا إعطاء لي واحد إن لم يكن أكثر الأسطر من التعليمات البرمجية.
أشكركم على ذلك.
ونحن في طريقنا للقيام بنفس الشيء هنا، والرمز معا كمجموعة.
>> حتى اختيار نوع - دعونا إرسال بعض سريعة الزائفة التعليمات البرمجية.
لكل نموذج العقلية، ويمكن للشخص أن تعطيني السطر الأول من رمز الزائفة، من فضلك؟
ماذا أريد أن أفعل؟
>> الطالب: في حين أن قائمة هو خارج الترتيب.
>> JASON هيرشهورن: OK، في حين القائمة هو خارج الترتيب.
وماذا تعني "من النظام؟"
>> الطالب: على الرغم من [غير مسموع]
لم يتم فرزها.
>> JASON هيرشهورن: على الرغم من أن قائمة هو من أمر، ماذا نفعل؟
أعطني السطر الثاني، من فضلك، ماركوس.
>> الطالب: لذا تجد المقبل أصغر رقم.
وسوف تكون بادئة بذلك.
>> JASON هيرشهورن: حتى العثور على المقبل أصغر رقم.
ثم شخص آخر؟
مرة واحدة نجد أصغر المقبل العدد، ماذا نفعل؟
انا ذاهب الى القول تجد أصغر رقم.
هذا ما نريد أن نفعله.
>> لذلك تجد على أقل عدد.
ثم ماذا نفعل؟
>> الطالب: [غير مسموع] إلى البداية.
>> JASON هيرشهورن: عذرا؟
>> الطالب: وضعه في بداية القائمة.
>> JASON هيرشهورن: حتى وضعه في في بداية القائمة.
وماذا نفعل الشيء ل كان ذلك في بداية
من القائمة، أليس كذلك؟
نحن الكتابة شيئا.
إذن، أين نضع ذلك؟
نعم، آنا؟
>> الطالب: أين أصغر وكان العدد؟
>> JASON هيرشورن: لذا وضعت بداية من القائمة حيث
وكان أقل عدد.
وذلك في حين أن القائمة خارج الترتيب، والعثور على أصغر عدد، وضعه في
في بداية القائمة، ووضع بداية القائمة حيث
وكان أقل عدد.
ماركوس، يمكنك إعادة صياغة هذا الخط في حين أن القائمة هي خارج الترتيب؟
>> الطالب: في حين أن الأرقام لم يتم فرزها؟
>> JASON هيرشورن: OK، وذلك من أجل نعلم أن الأرقام لم تكن
فرزها، ماذا علينا أن نفعل؟
وكم نحتاج ل تذهب من خلال هذه القائمة؟
>> الطالب: لذا أعتقد لحلقة، أو بينما، في حين فحص أرقام أقل
من طول القائمة؟
>> JASON هيرشورن: حسنا، هذا امر جيد.
أعتقد أنني misphrased سؤالي سيئة.
كنت مجرد محاولة للحصول على ونحن في طريقنا لدينا للذهاب
من خلال اللائحة بأكملها.
وذلك في حين أن القائمة خارج الترتيب، بالنسبة لي، من الصعب على الخريطة.
ولكن أساسا، هذه هي الطريقة أفكر في هذا.
تذهب من خلال القائمة بأكملها، والعثور على أصغر عدد، وضعه في
تبدأ - في الواقع، أنت على حق.
دعونا نضع لهم على حد سواء.
>> ذلك في حين أن قائمة خارج النظام، و في حاجة للذهاب من خلال القائمة بأكملها
مرة واحدة، والعثور على أصغر رقم، مكان في بداية القائمة، وطرح
في بداية القائمة حيث وكان أقل عدد، ومن ثم إذا كان
لا تزال قائمة من أجل، لدينا حصلت على الذهاب من خلال هذا
العملية مرة أخرى، أليس كذلك؟
هذا هو السبب في اختيار نوع، كبير-O وقت التشغيل اختيار نوع، أي شخص؟
>> الطالب: ن المربعة.
>> JASON هيرشورن: ن المربعة.
لأن مثل ماركوس وأدركت فقط هنا، نحن ذاهبون لدينا ل
تذهب من خلال قائمة قائمة عدد من المرات.
حتى يمر شيء من طول ن ن عدد المرات
يتم في الواقع المربعة ن.
>> لذلك هذا هو شبة الكود لدينا.
هذا يبدو جيدا جدا.
هل لدى أي شخص أي أسئلة حول شبة الكود؟
لأن الواقع ينبغي اختيار النوع ربما تأتي 12:59، رمز من
شبة الكود.
لذلك أي أسئلة حول منطق شبة الكود؟
يرجى أسأل عليه الآن.
>> اختيار نوع - في حين أن قائمة خارج من النظام، ونحن في طريقنا للذهاب من خلال ذلك
والعثور على أصغر في كل مرة ووضعها في الجبهة.
وذلك في حين أن القائمة خارج الترتيب، يمكن شخص أن تعطيني سطر من التعليمات البرمجية الذي
لم يقدم لي خط من التعليمات البرمجية بعد، من فضلك؟
هذا يبدو وكأنه ماذا؟
>> الطالب: هذا هو لحلقة.
>> JASON هيرشورن: يبدو مثل حلقة for.
حسنا، يمكنك أن تعطيني لحلقة؟
ل-
>> الطالب: ط يساوي 0.
>> JASON هيرشورن: أنا أو -
ما نحن في عداد المفقودين؟
ما يجري هنا؟
>> الطالب: كثافة العمليات.
>> JASON هيرشورن: بالضبط.
(كثافة العمليات ط = 0؛ -
>> الطالب: أنا <ن؛ ط + +).
>> JASON هيرشورن: مسمر، جيف.
ونحن في طريقنا من خلال قائمة، أليس كذلك؟
شاهدنا هذا الرمز من قبل.
الكمال.
لذلك دعونا نضع الأقواس المتعرجة لدينا هنا.
انا ذاهب الى وضع بعض الأقواس المتعرجة هنا.
>> وذلك في حين انها 0، ونحن بحاجة للذهاب من خلال القائمة بأكملها.
لذلك كل مرة نذهب من خلال القائمة، ماذا نريد أن تتبع؟
>> الطالب: إذا تم إجراء أي مقايضة.
>> JASON هيرشورن: البحث أصغر رقم.
لذلك ينبغي علينا ربما تتبع أصغر عدد في كل مرة.
ذلك الخط الذي يمكنني القيام به للحفاظ على المسار من أصغر عدد؟
Aleha، وكيف يمكن أن أظل المسار من شيء؟
>> الطالب: بدء متغير جديد.
>> JASON هيرشورن: بدء متغير جديد.
لذلك دعونا إنشاء متغير.
ما هو نوع؟
>> الطالب: كثافة العمليات.
>> JASON هيرشورن: كثافة العمليات.
دعنا نسميها أصغر.
وماذا يفعل عندما متساوية نحن كنت بدأت للتو؟
ونحن لم يذهب من خلال قائمة حتى الآن.
نحن في الجزء الأول من قائمة المرة الأولى التي نشارك بها.
ما تقوم به على قدم المساواة، و أصغر عدد؟
>> الطالب: القيم ط.
>> JASON هيرشورن: القيم ط.
يبدو أن حق تماما، أليس كذلك؟
أصغر عدد في بداية هو ما نحن فيه.
حتى الآن لدينا أصغر لدينا، ونحن بحاجة من خلال الذهاب الى القائمة بأكملها و
مقارنة هذا أصغر على كل شيء آخر.
حتى لا نذهب من خلال القائمة مرة أخرى؟
مايكل؟
>> الطالب: كنت بحاجة للتأكد آخر للحلقة.
>> JASON هيرشورن: آخر لحلقة.
دعونا نفعل ذلك.
تعطيني بعض التعليمات البرمجية.
>> الطالب: لحلقة -
لأصغر -
مجرد الباحث ي، هل يمكن أن أقول؟
= 0؛ بحيث -
>> JASON هيرشورن: حسنا، إذا كنا نريد من خلال الذهاب الى القائمة بأكملها -
>> الطالب: ي <ن، ي + +).
>> JASON هيرشورن: ممتاز.
ونحن في طريقنا للذهاب من خلال وللحلقة مرة أخرى.
وكيف نجد أصغر عدد؟
توم؟
لدينا عدد أصغر الحالية، فكيف نجد أصغر الجديد؟
>> الطالب: يمكننا معرفة ما اذا كان أصغر لدينا عدد أكبر من
تقدر قوس ي.
>> JASON هيرشورن: حتى إذا كان أصغر هي أكبر من القيم قوس ي.
إذا كان الأمر كذلك لدينا أصغر الحالي أكبر من -
انا ذاهب الى التحرك هذين الخطين من التعليمات البرمجية هناك لفترة ثانية.
لأنه قبل أن نفعل أي مبادلة، ونحن في حاجة للذهاب من خلال القائمة بأكملها.
لذلك ينبغي في الواقع هذا شبة الكود تكون خارج تلك الداخلية للحلقة.
لذلك يذهب من خلال القائمة بأكملها.
إذا أصغر أكبر من ي القيم ثم ماذا؟
>> الطالب: ثم أصغر تساوي القيم ي.
>> JASON هيرشورن: ممتاز.
سؤال واحد سريع -
المرة الأولى التي تذهب من خلال هذه الحلقة، أنا ذاهب الى تساوي 0، ي يجري
ليساوي 0 مرة نحصل على هنا.
لذلك نحن ذاهبون الى أن مقارنة عدد لنفسها.
غير أن كفاءة؟
لا، انها ليست فعالة حقا.
فهل لدينا ي حاجة للذهاب من 0 إلى n في كل مرة؟
نحتاج دائما للتحقق من خلال القائمة بأكملها؟
[غير مسموع]؟
>> الطالب: ابدأ مع ط بدلا من ذلك.
>> JASON هيرشورن: ي يمكن تبدأ مع ماذا؟
>> الطالب: ط.
>> JASON هيرشورن: ي يمكن أن تبدأ مع ط.
وحتى الآن ما قارنا ابتداء مع واحد نحن على.
ولكن حتى ذلك الحين، هو أنه فعالة قدر الإمكان؟
>> الطالب: ط + 1.
>> JASON هيرشورن: ط + 1 ويبدو أن الأكثر كفاءة، لأننا
ط ديك بالفعل.
نحن مشيرا إلى أن مثل أصغر في خط 15.
ونحن في طريقنا للبدء مع المرحلة التالية تلقائيا.
لذلك نحن نذهب من خلال لحلقة.
سنذهب من خلال كل الوقت.
سنذهب من خلال عدد من المرات.
ونحن الآن قد حصلت خلال هذا الداخلية للحلقة.
لدينا يحفظ أصغر قيمة.
نحن بحاجة إلى وضعه في بداية القائمة.
فكيف يمكنني وضعه في ابتداء من القائمة؟
ما هو المتغير الذي يشير إلى بداية القائمة؟
نحن في هذا خارج عن حلقة، وذلك ما يشير إلى
ابتداء من القائمة؟
>> الطالب: القيم ط.
>> JASON هيرشورن: الحق بالضبط.
القيم ط هو بداية -
أو آسف، لا بداية.
كان ذلك مربكا.
انها ما نحن فيه في بداية جزء لم يتم فرزها من القائمة.
حتى القيم ط.
وماذا يفعل ذلك على قدم المساواة؟
>> الطالب: أصغر.
>> JASON هيرشورن: القيم ط يساوي ماذا؟
>> الطالب: أصغر.
>> JASON هيرشورن: أصغر.
صحيح تماما.
لذلك نحن وضعه في بداية من القائمة، ونحن الآن في حاجة إلى وضع
في بداية القائمة حيث وكان أقل عدد.
فكيف يمكنني إرسال حيث كان أصغر عدد؟
قيم ماذا؟
>> الطالب: 0.
>> JASON هيرشورن: والصغيرة عدد من عند 0؟
>> الطالب: نعم.
>> JASON هيرشورن: ماذا لو كان أصغر وكان الرقم في نهاية
هذه القائمة لم يتم فرزها؟
>> الطالب: عفوا، ما هو السؤال؟
>> JASON هيرشورن: أين هو أصغر عدد؟
أخذنا أصغر ووضعها في بداية، مع هذا الخط هنا.
>> الطالب: وينبغي أن يكون تم تخزينها في بعض -
>> الطالب: ي القيم.
>> JASON هيرشورن: حسنا، انها القيم ليس بالضرورة ي.
بل لا وجود لها في هذه المرحلة.
>> الطالب: عليك أن تعلن متغير في وقت سابق و
ثم إسناد ذلك إلى -
عند العثور على أصغر عدد، تعيين مؤشر من هذا العدد ل
بعض متغير أو شيء من هذا القبيل.
>> JASON هيرشورن: وهكذا يمكن كنت أقول ذلك مرة أخرى؟
>> الطالب: فأين كنت أعلن الباحث أصغر، يجب عليك أيضا أن يعلن الباحث
أصغر مؤشر = ط، أو شيء من هذا القبيل.
>> JASON هيرشورن: فأين أنا لا الباحث أصغر، يجب أن تتبع ليس فقط
من قيمة ولكن الموقع.
الباحث smallest_location = في هذه حالة، وسوف نبذل أنا فقط.
نحتاج أن نعرف أين هو.
وصلنا إلى نهاية رمز، ونحن أدركت كان لدينا أي فكرة ما كان عليه.
وهكذا مرة أخرى، ونحن لرسم الخرائط هذا على واحد إلى واحد.
يا رفاق الترميز هذا على الإرادة الخاصة بك ربما تحصل على نفس المشكلة.
كيف هيك يمكنني العثور عليه؟
ثم كنت أدرك، الانتظار، وأنا تحتاج إلى تتبع ذلك.
>> إذا كان الأمر كذلك أصغر أكبر من القيم ي.
وضعناها أصغر يساوي القيم ي.
ماذا نحتاج للتغيير؟
كونستانتين، ماذا تفعل نحن بحاجة إلى تغيير؟
>> الطالب: الموقع.
>> JASON هيرشورن: بالضبط.
حتى تعطي لي هذا الخط في التعليمات البرمجية.
>> الطالب: smallest_location = ي.
>> JASON هيرشورن: بالضبط.
ثم انخفض في نهاية المطاف، إذا كنا نريد أن وضع بداية القائمة حيث
وكان أقل عدد، كيف لا نشير إلى حيث
كان أصغر عدد؟
ماركوس؟
>> الطالب: وكان أقل عدد تقع في أصغر موقع.
>> JASON هيرشورن: حتى في القيم smallest_location.
وماذا وضعنا هناك؟
بداية القائمة، ما هذا؟
>> الطالب: حسنا، نحن لا نعرف حقا بعد الآن لأننا بالكتابة فوق.
حتى انها تبادلت المواقع من هذين الخطين؟
إذا قمت بالتبديل هذين الخطين حولها.
>> JASON هيرشورن: موافق، لذلك نحن لا بعد الآن، لأننا قد إعادة تعيين خط
قبل القيم ط إلى أصغر.
ذلك لأننا خسرنا القيمة الأولية.
لذلك قلت مبادلة هذين الخطين.
وحتى الآن وضعت بداية القائمة حيث كان أصغر رقم.
حتى smallest_location يساوي القيم ط.
أن يتحرك بداية هذا لم يتم فرزها جزء من القائمة إلى
أصغر موقع.
ومن ثم إلى القيم ط أننا نسير أن أقل عدد.
>> هل هذا معقول لماذا نحن كان لجعل هذا المبادلة؟
كنا قد الكتابة فوق هذه القيمة - شيء آخر وربما كنت لن يكون
أحسب وجدت في الناتج المحلي الإجمالي.
لذلك قمنا الاعتناء بها جميع شبة الكود.
هل هناك أي شيء آخر ونحن تحتاج إلى كتابة هنا؟
أي شخص يمكن أن يفكر في أي شيء؟
>> الطالب: كيف يمكنك أن تعرف عند الانتهاء من ذلك؟
>> JASON هيرشورن: كيف يمكننا نعرف متى ننتهي؟
السؤال الكبير.
لذلك كيف نعرف متى ننتهي.
>> الطالب: إنشاء متغير للحفاظ على العد من إذا كان هناك مقايضة جعلت أم لا
وتذهب من خلال تمريرة.
>> JASON هيرشورن: OK.
التي من شأنها أن تعمل في فقاعة الفرز.
ولكن لاختيار نوع، إذا لم نفعل ذلك جعل المبادلة، التي قد يكون مجرد
لأن أصغر قيمة هي في ذلك المكان حقها.
قد يكون لدينا قائمة 1، 2، 4، 3.
للمرة الثانية خلال نحن لن يجعل أي مقايضة.
سنكون على عدد 2، ولكن سنقوم لا تزال بحاجة إلى الاستمرار.
لذلك نحن بحاجة إلى تتبع عندما نحن القيام به، أو نريد فقط للذهاب
حتى يتم الانتهاء من هذا؟
>> الطالب: نحن يمكن أن تذهب فقط حتى الانتهاء من وضعها.
>> JASON هيرشورن: نحن يمكن فقط يذهب حتى يتم الانتهاء من هذا.
في فقاعة النوع، أنت على حق تماما، جيف وAleha، مع الحل الخاص بك -
انه امر رائع لتتبع كيفية العديد من مقايضة قمت بها، لأنه في فقاعة
نوع، إذا كنت تفعل في الواقع جعل أي مقايضة، الانتهاء من ذلك وربما يمكنك خفض الخاص
المشكلة لأسفل قليلا.
ولكن لاختيار نوع، وكنت قد حقا حصلت على الذهاب حتى النهاية ل
سرد كل المرة.
>> لذلك هذا هو ذلك.
لدينا اثنين من دقائق غادر.
دعونا نجعل جميع.
اسمحوا لي أن مجرد فتح البحث هنا، وجعل متأكد أنا في الواقع استدعاء -
أنا لا أدعو فقاعة الفرز.
دعونا تغيير هذا إلى اختيار نوع.
جعل جميع. / العثور عليها.
دعونا تجد 42.
هذه المرة نحن ذاهبون لتمرير قائمة لم يتم فرزها، لأنه يجب فرز
الأولى، في رمز العثور - يجب فرز الأولى باستخدام وظيفة الفرز لدينا ومن ثم
البحث عن شيء.
عبرت أصابع الجميع.
>> يا إلهي.
قف، قلبي كان الضرب.
لذلك هذا هو الصحيح.
في الواقع، إذا ركضنا هذا أكثر على نطاق واسع، رمز، بقدر ما أستطيع
أقول، هو الصحيح تماما.
هناك بعض الاقتراحات كنت أود أن يكون بالنسبة لك.
على سبيل المثال، 15 و 16 يبدو قليلا زائدة عن الحاجة.
يبدو مثلك ليس بالضرورة تحتاج إلى حفظ كل هؤلاء.
إذا كان لديك موقع أصغر، كنت يمكن بسهولة العثور على أصغر قيمة من قبل
مجرد كتابة القيم ط.
>> حتى إذا كان لي أن تكون الدرجات التعليمات البرمجية الخاصة بك، والتي سوف تكون في الواقع، وأود أن
ربما تقلع نقطة إذا كنت شملت كل من هذه، لأنك
لا تحتاج كل من هذه.
إذا كان لديك موقع، يمكنك من السهل جدا الحصول على قيمة.
ويبدو غريب قليلا لتخزين كل منهما.
ربما ليس حتى تأخذ نقطة، ولكن بالتأكيد أن هذا التعليق هو ربما
ليس خيارا الأسلوبية كنت بحاجة للتأكد.
بطبيعة الحال، لا يزال رمز يعمل بشكل جيد تماما.
>> لذلك للأسف لم نكن وصول الى فقاعة الفرز.
أنا آسف لذلك.
فعلنا اختيار نوع النهاية.
هل لدى أي شخص أي أسئلة النهائي حول اختيار نوع؟
>> حسنا، قبل أن يخرج، وأنا أريد منك لفتح متصفح كروم الخاص بك.
آسف، كان ذلك مجرد سد الصارخ لنوع واحد من متصفح الانترنت.
يمكنك فتح أي نوع المتصفح، لكنه سوف يكون على الارجح كروم.
ويذهب إلى هذا الموقع التالي -
sayat.me/cs50.
إذا كنت لا تكتب في جهاز الكمبيوتر الخاص بك الآن، وكنت واضحا
لا تفعل ذلك، توم.
>> ويرجى القيام بذلك إما الحق الآن أو في ساعة القادمة -
أعطني بعض ردود الفعل.
هذا هو القسم الثاني فقط.
لدينا أكثر عديدة معا، لذلك أنا لديهم الكثير من غرفة لتحسين.
أنا أيضا نأمل فعل بعض الأشياء بشكل جيد.
حتى تتمكن من تجعلني اشعر كلها سيئة، ولكن إذا أنت أيضا تريد أن تعطيني مبتسم
الوجه، وأود أن نقدر ذلك أيضا.
ملء التي فيها
>> ودقيقة واحدة مع اليسار، أن كان ثلاثة أسابيع.
سوف تقف خارج قليلا إذا كان لديك أي أسئلة.
سوف أرى يا رفاق في محاضرة غدا.