>> [عزف الموسيقى]
>> ROB BODEN: حسنا.
لذلك، أول شيء أول من الفيديو من وجها مألوفا.
>> [تشغيل الفيديو]
>> حسنا.
هذا هو CS50، وهذا هو بداية ثلاثة أسابيع.
أنا آسف لأني لا يمكن أن يكون هناك معكم اليوم، ولكن اسمحوا لي أن أعرض
الخاصة روب بودن CS50 ل.
>> [END تشغيل الفيديو]
>> [تصفيق وهتافات]
>> ROB BODEN: إن أفلامه في هذا الفيديو هو رائع.
حسنا.
لذلك الأولى، وهناك وجبة غداء أخرى.
انها غدا في الساعة 1:15.
ليس هناك غداء يوم الجمعة.
هذا هو الحال مع قرة.
وهذا تومي ليس هنا حتى الآن، ولكن واحدة من الشعب هناك CF الرئيس السابق،
تومي ب McWilliam.
ذلك انه رجل المتعة.
يجب أن تأتي.
>> حسنا.
حتى الأسبوع الماضي، بدأنا تفكك حول ما هو سلسلة حقا.
لقد عرفنا منذ البداية أن انها سلسلة من الأحرف.
لكن في الاسبوع الماضي، ونحن يفتش حقيقة أن ما هو في الحقيقة سلسلة من
الشخصيات، حسنا، لدينا الآن صفائف حرفا.
ونحن نعلم أن سلسلة، انها مجموعة من الشخصيات، في النهاية،
لدينا هذا بايت فارغة خاصة، وهذا مائل 0، الذي يشير إلى نهاية
السلسلة.
>> وهكذا سلسلة عبارة عن صفيف حرفا، لكننا يمكن أن يكون أكثر من
مجرد مجموعة من الحروف، فإننا يمكن أن يكون أي مجموعة من
نوع من شيء نريده.
لذلك، إذا كنت تذكر من الأسبوع الماضي، و برنامج الأعمار التي قدم ديفيد
بسرعة حقا.
أولا حتى شيء نحن ذاهبون الى القيام به هو يطلب من المستخدم لعدد صحيح، و
عدد الأشخاص في الغرفة.
مرة واحدة لدينا أن عدد صحيح، نحن معلنا صفيف.
تلاحظ هذه الجملة قوس.
وأنت تسير لتعتاد على ذلك.
>> لذلك نحن تصرح عن مصفوفة من الأعداد الصحيحة دعا الأعمار، وهناك ن
أعداد صحيحة في هذه المجموعة.
لذلك هذا النمط الحق هنا، وهذا 4 الباحث ط يساوي 0، ط أقل من ن، ط زائد
بالاضافة الى ذلك، أن يجري أيضا أن يكون نمط أن تعتاد جدا.
لأن هذا هو الى حد كبير كيف كنت دائما ما يكرر أكثر من المصفوفات.
حتى أن نتذكر أن n هو طول مجموعة لدينا.
وحتى هنا، نطالب مرارا وتكرارا بالنسبة لعمر الشخص وأنا في الغرفة.
>> بعد هذا، نذهب إلى أسفل، وأيا كانت السبب التعسفي، ونحن بعد ذلك
طباعة كيف انهم ذاهبون القديمة ليكون بعد عام من الآن.
وتشغيل هذا البرنامج، دعونا جعل الأعمار، دوت مائل الأعمار.
لذلك عدد الأشخاص في الغرفة، دعنا نقول أن هناك ثلاثة.
ويقول: الشخص الأول هو 13، هو 26 المقبل، وآخر هو 30.
حتى ذلك الحين انها سوف تكرار عبر هؤلاء الثلاثة الناس، وطباعة 14، 27، و 31.
>> حتى أن نتذكر أنه عندما نعلن ل مجموعة من حجم ن، المؤشرات في هذا
مجموعة، مجموعة لديها قيم و مؤشرات 0، 1، 2، على طول الطريق
يصل إلى n ناقص 1.
وذلك عندما قال كنا هناك ثلاثة أشخاص في الغرفة، ونضع هنا
التكرار الأول من خلال هذا حلقة، وأنا سوف يكون 0.
وذلك في مؤشر 0.
نحن تعيين أول العمر يدخل المستخدم.
ثم في المرحلة التالية، ونحن دخول الثاني ن يدخل المستخدم، و
بجانب اثنين، وآخر ن.
>> لذلك نلاحظ أن مجموعة من حجم ثلاثة لا يملك أي شيء
في مؤشر الثلاثة.
هذا غير صحيح.
حسنا.
لذلك، يعود هنا.
وحتى الآن بعد أن قمنا التعامل مع المصفوفات، لدينا بعض الألفة.
الآن ونحن في طريقنا للانتقال إلى قيادة وسائط سطر، والتي ستكون
ذات الصلة جدا لهذه المجموعة المشكلة.
>> لذلك حتى الآن، كلما قمت أعلن المهمة الرئيسية الخاصة بك، لدينا
وقال الباحث باطلة الرئيسي.
الفراغ بحيث يعني فقط أن نحن لا يمر أي
الحجج لهذه الوظيفة.
الآن ونحن في طريقنا لنرى أن الرئيسي يمكن أن يستغرق بعض الحجج.
ونحن هنا ندعو لهم كثافة ARGC وسلسلة أقواس ARGV.
الأقواس، مرة أخرى، مشيرا إلى أن نتعامل مع المصفوفات.
حتى هنا، بين قوسين سلسلة ARGV، نحن التعامل مع مجموعة من السلاسل.
حتى ARGC، وهذا سوف تشير إلى كيف العديد من الحجج قمنا
مرت لهذا البرنامج.
ونرى ما يعني أنه، دعونا إغلاق هذا.
>> موافق.
لذلك حتى الآن، قمنا بتشغيل كل برنامج مثل الأعمار مائل نقطة.
يمكننا أيضا، في سطر الأوامر، في الماضي تمرير الوسائط، وبالتالي فإن المدى، الأمر
وسائط سطر.
وبالتالي فإن الحجة الأولى، مرحبا العالم.
حتى هنا، سوف يكون ARGC الثلاثة.
انها العد من الحجج في سطر الأوامر.
ARGC دائما لا يقل عن 1، منذ نقطة خفض الأعمار، في حد ذاته، باعتباره واحدا من التهم
وسيطات سطر الأوامر.
>> ثم مرحبا هو الأول.
إذا الأعمار مائل نقطة هو الصفري، ثم مرحبا هي الأولى، والعالم هو
الثاني سيطة سطر الأوامر.
وبالتالي فإن ARGV سلسلة، ونحن في طريقنا لرؤية، يحتوي على سلاسل، مائل نقطة
الأعمار، مرحبا، والعالم.
و، حسب الطلب داود، ونحن في طريقنا للعب الفيديو إدخال ذلك.
>> [تشغيل الفيديو]
>> حتى الآن، في البرامج التي قمت مكتوبة، ونحن قد تعلن
الرئيسية باطلة الرئيسي كثافة كما.
وطوال هذا الوقت، هذا الفراغ لديه ببساطة تم تحديد أن
البرنامج لا تتخذ أي وسائط سطر الأوامر.
وبعبارة أخرى، عندما يدير المستخدم البرنامج، وقال انه أو انها يمكن أن توفر القيادة
وسائط سطر من خلال كتابة إضافية كلمات أو عبارات بعد البرنامج
اسم في موجه.
>> حسنا، إذا كنت تريد برنامج ل تأخذ وسيطات سطر الأوامر، واحد أو
المزيد من مثل هذه الكلمات، ونحن في حاجة لاستبدال إبطال مع اثنين من الحجج.
لذلك دعونا نفعل ذلك.
وتشمل CS50.h.
وتشمل io.h. القياسية
الباحث الرئيسي.
والآن، بدلا من الفراغ، وانا ذاهب ل تحديد كثافة دعا ARGC، و
مجموعة من السلاسل دعا ARGV.
الآن، ARGC وARGV هي ببساطة الاتفاقيات.
>> أننا يمكن أن تسمى هذه الحجج معظم أي شيء نريده.
ولكن ما هو مهم هو أن ARGC هو عدد صحيح لأنه، بحكم التعريف، هو
الذهاب لاحتواء عدد حجة، و عدد الكلمات في مجموعه أن
تمت كتابة المستخدم في موجه له أو لها.
ARGV، وفي الوقت نفسه، ناقلات الحجة، هو سوف يكون في الواقع مجموعة تخزين
كل الكلمات أن المستخدم لديه كتبته في موجه له أو لها.
>> دعونا المضي قدما أن تفعل شيئا الآن مع واحد أو أكثر من هذه
وسائط سطر الأوامر.
على وجه الخصوص، دعونا نمضي قدما والطباعة مهما كانت كلمة أنواع المستخدم
بعد اسم البرنامج في موجه.
فتح قوس.
على مقربة قوس.
ق مائل Printf في المئة وفاصلة.
والآن أحتاج أن أقول ما قيمة printf بهدف سد العجز في هذا العنصر النائب.
أريد الكلمة الأولى أن المستخدم لديه كتابتها بعد اسم البرنامج،
وحتى وأنا ذاهب لتحديد ARGV قوس 1، وثيقة
قوسين، منقوطة.
>> الآن، لماذا قوس 1، وليس قوس 0؟
كذلك، اتضح وتخزينها تلقائيا في ARGV 0 سوف يكون
اسم البرنامج الفعلي.
وبالتالي فإن الكلمة الأولى التي يكتب المستخدم بعد اسم البرنامج هو، من خلال
الاتفاقية، ستكون تخزينها في ARGV 1.
دعونا الآن تجميع و تشغيل هذا البرنامج.
>> جعل ARGV 0، نقطة مائلة ARGV 0.
والآن كلمة واحدة مثل مرحبا.
دخول.
ويوجد لدينا ذلك، مرحبا.
>> [END تشغيل الفيديو]
>> ROB BODEN: حسنا.
إغلاق ذلك.
ذلك أن نلقي نظرة على هذا البرنامج الذي قدمنا ​​فقط لنا، حسنا، فقط
لإظهار، واذا كنا طباعة ARGV 0، وجعل، والآن ما هو عليه، ARGV 0، نقطة مائلة ARGV 0.
لذلك، كما هو متوقع، انها تطبع خارج اسم البرنامج، منذ ARGV 0 هو
دائما ما يكون اسم البرنامج.
ولكن دعونا نفعل شيئا ل بت أكثر إثارة للاهتمام.
>> وذلك في مجموعة المشكلة، عليك أن تكون قدم لهذه الوظيفة، atoi.
وذلك ما لم نستخدم atoi ل؟
أن يحدث لتحويل سلسلة إلى عدد صحيح.
حتى لو كنت تمرير السلسلة، واحد اثنين ثلاثة، لatoi، والتي سوف تحويل هذا
إلى عدد صحيح، واحد اثنين ثلاثة.
لذلك نحن ذاهبون لتحويل أول سيطة سطر الأوامر إلى عدد صحيح،
وبعد ذلك فقط طباعة هذا صحيح.
>> ذلك أساسا، نحن نوع من reimplementing getint، فقط
يتم إدخال عدد صحيح في الأمر بدلا من خط في البرنامج
بشكل تفاعلي.
حتى ذلك الحين، مما يجعل ARGV 0، دعونا نفعل في هنا، وإغلاق ذلك.
حتى تشغيل ARGV 0، ودعونا دخول صحيح، واحد اثنين ثلاثة أربعة واحد اثنين.
لذلك سوف طباعة عدد صحيح، واحد اثنان ثلاثة أربعة واحد اثنين.
هناك بعض الخفايا التي لatoi انها سوف تتوقف عن رعاية أي شيء
أبعد من أحرف رقمية صالحة، ولكن هذا لا يهم.
>> فما رأيكم يحدث إذا كنت تفعل هذا؟
خطأ تجزئة.
فلماذا ذلك؟
إذا كنت ننظر إلى الوراء في برنامجنا، ونحن تحويل ARGV 1، الوسيطة الأولى
بعد اسم البرنامج، إلى عدد صحيح.
ولكن ليس هناك حجة مرت بعد اسم البرنامج.
حتى هنا، ونحن نرى أن هذا هو عربات التي تجرها الدواب البرنامج، منذ ذلك الحين، لو كنا في محاولة لتشغيله
دون أي حجج، انها سوف تعطل فقط.
>> لذلك النمط الشائع أخرى سترى وشيء من هذا القبيل، إذا ARGC أقل
من اثنين، مشيرا إلى أنه لم يكن هناك على الأقل اسم البرنامج و
الوسيطة الأولى، ثم سنقوم تفعل شيئا مثل printf، لا يكفي
وسائط سطر الأوامر.
وهذا ربما ليس فكرة جيدة لطباعة، انها على الارجح شيئا، مثل
يجب عليك إدخال عدد صحيح في سطر الأوامر.
أنا مجرد وضع حد لها هناك.
ثم العودة 1.
حتى أن نتذكر أنه في نهاية لدينا البرنامج، إذا نعود 0، هذا النوع من
يشير النجاح.
والرئيسي أيضا تلقائيا بإرجاع 0 إذا كنت لا تفعل ذلك.
>> حتى هنا، نحن إعادة ضبطها 1 للإشارة أن هذا ليس النجاح.
ويمكنك العودة ما تريد، فقط، 0 إلى النجاح، و
أي شيء آخر يشير إلى الفشل.
لذلك دعونا تشغيل هذا الإصدار من الأشياء.
وحتى الآن، وإذا كنا لا تدخل سطر الأوامر حجة، وأنها سوف اقول بشكل صحيح
لنا، لا يكفي سطر الأوامر.
لم يكمل الجملة.
آخر، إذا كنا فعلا تمرير واحدة، ويمكن استكمال البرنامج.
لذلك هذا هو كيف سيستخدم في ARGC أجل التحقق من صحة عدد من
وسائط سطر الأوامر التي يتم تمرير الواقع.
>> لذلك دعونا جعل هذا البرنامج أكثر قليلا معقدة، وإلقاء نظرة على الثانية
التكرار من الأشياء.
وحتى الآن، ونحن لسنا مجرد طباعة أول وسيطة سطر الأوامر.
هنا، نحن بالتكرار من التساوي ط كثافة العمليات 0، ط أقل من ARGC، ط زائد
بالاضافة الى ذلك، والطباعة ARGV، مؤشر ط.
لذلك هذا النمط، ومرة ​​أخرى، وهذا هو نفس نمط كما كان من قبل، باستثناء بدلا
من استدعاء متغير ن، نستخدمه ARGC.
>> لذلك هذا هو بالتكرار على كل مؤشر في مجموعة، وطباعة كل
عنصر في هذا الصفيف.
وهكذا، عندما نقوم بتشغيل هذا البرنامج، وأيضا، أنا لم أدخل أي سطر الأوامر
الحجج، لذلك يطبع فقط اسم البرنامج.
إذا دخلت مجموعة من الأشياء، وأنها سوف طباعة واحد، كل على السطر الخاص به.
>> موافق.
لذلك دعونا اتخاذ هذه الخطوة واحدة أخرى.
وبدلا من طباعة كل حجة على السطر الخاص به، دعونا طباعة كل
شخصية كل حجة على السطر الخاص به.
حتى أن نتذكر أن ARGV هو مجموعة من السلاسل.
فما هو سلسلة، ولكن مجموعة من الأحرف؟
وهذا يعني أن ARGV هو في حقيقة الأمر مجموعة من مجموعة من الأحرف.
لذلك الاستفادة من ذلك، دعونا تجاهل هذا الآن.
دعونا مجرد النظر في سلسلة ARGV 0.
>> لذلك إذا كنا نريد أن يحضر كل حرف من ARGV 0 على السطر الخاص به، ثم أريد
للقيام نمط اعتدنا على، أنا هو أقل من طول المصفوفة،
التي هنا، وstrlen من، هذا ليس ما أريد القيام به، سلسلة
ق يساوي ARGV 0.
لذلك أنا هو أقل من طول لدينا مجموعة، وهو في هذه الحالة عبارة عن صفيف
من الشخصيات، ط زائد زائد.
وهكذا، كما رأينا في الاسبوع الماضي، انها مثالية إذا نحن نمضي أن strlen خارج
للحالة، سيتم منذ مضيفا ن وstrlen من ليالي كل مرة نذهب
خلال الحلقة، وانها لن يتغير.
ولذا فإننا سوف تعيينها يساوي ن أكثر من هنا.
>> موافق.
وحتى الآن، ونحن على بالتكرار كل مؤشر في الصفيف.
وهكذا، إذا كنا نريد لطباعة كل حرف في ذلك الصفيف، هو في المئة ج
العلم أننا نريد أن استخدام لأحرف.
والآن أنا قوس سوف يكون سلسلة، والطابع مؤشر ط، لذلك إذا كانت
سلسلة ومرحبا.
ثم ق 0 ستكون ح، ق قوس 1 سوف تكون الإلكترونية، وهلم جرا.
>> وحتى الآن نحن نريد أن الجمع بين هذين الأمرين.
نحن نريد لطباعة كل حرف كل وسيطة سطر الأوامر.
لذلك نحن ذاهبون الى ومتداخلة للحلقة.
وتقليديا، العداد الأول وأنا، والقادم سيكون ي، ن
سيكون strlen من ARGV ط، ط أقل من ن، ط زائد زائد.
والآن بدلا من الطباعة ARGV ط، لذلك ARGV قوس ط هو الذهاب الى مؤشر -
التي ستكون سطر الأوامر ط ال حجة، ARGV ط، ي هو الذهاب الى
أن يكون الحرف من jth حجة ط ال.
سوف نتخلص من هذا الأمر هنا الآن منذ أن وضعه في تلك الحلقة.
وذلك هو ما يعادل التساوي سلسلة ق ARGV ط، ثم ق قوس ي.
>> حسنا، نحن لسنا بحاجة إلى إعلان هذا و متغير.
بدلا من ذلك، سنقوم فقط الجمع بين هذه اثنين الى ما كان لدينا، ARGV ط، ي.
>> سرور 1: [غير مسموع].
>> ROB BODEN: الكلمة الطيبة.
لذلك هذا هو كسر.
إذا أنا فعلا تجلى ذلك، فإننا وقد أدرك هذا.
وبالتالي فإن مكافحة يهمني في هذا خاص ل
الحلقة ي، ومكرر.
لذلك كنت قد واجهت مشاكل، ربما حلقة لا نهائية، وإذا كنا
لم الثابتة التي.
هذا هو السبب في أننا نتحدث أيضا حول تصحيح الأخطاء اليوم.
>> موافق.
لذلك دعونا تشغيل هذا البرنامج.
ودعونا في الواقع إضافة printf منفصلة الحق هنا أن سيطبع فقط
خط آخر، لأن هذا يعني أننا عندما تشغيل البرنامج، سوف يكون هناك فارغة
الخط بين كل حرف من كل وسيطة سطر الأوامر.
حسنا، سنرى ماذا يعني ذلك.
OOP.
حصلت على بعض الشوائب.
الخطأ معلنا ضمنيا وظيفة المكتبة strlen.
>> حتى تعود إلى برنامجنا، وأنا نسيت أن تجزئة تشمل string.h.
حتى string.h سوف يكون ملف الرأس الذي يعلن
وظيفة strlen.
موافق، فإنه يجمع.
الآن، دعونا تشغيله.
بحيث فقط.
انها تسير لطباعة لدينا اسم البرنامج، مرحبا العالم.
انها تسير لطباعة كل شيء، كل حرف، على السطر الخاص به.
موافق.
>> لذلك دعونا نغتنم هذه في الواقع خطوة واحدة أخرى.
وبدلا من استخدام string.h، دعونا نفكر في كيفية تنفيذ كنا منطقتنا
وظيفة strlen.
ولذا فإنني سوف تعطي فورا وظيفة التوقيع.
لذلك دعونا ندعو في my_strlen، وانها ذاهب الى اتخاذ سلسلة كوسيطة،
ونتوقع أن يرجع طول تلك السلسلة.
لذلك، أين ذلك الرجل؟
نعم.
موافق.
لذلك تذكر من الشريحة في وقت سابق أن وكان أيضا من الأسبوع الماضي، أن
مجموعة من الشخصيات، حسنا، سلسلة، لذلك دعونا نقول هذا هو سلسلة ليالي لدينا.
إذا كان الأمر كذلك ليالي هي السلسلة، مرحبا، ثم، H-E-L-L-O، في الذاكرة، وهذا يحدث ل
تكون، ومن ثم هذا مائل 0 حرف.
>> فكيف نحصل على طول من ليالي؟
جيدا، والحيلة هي تبحث عن هذا حركة ارتجاعية 0 حرف، وهذا باطل
فاصل.
وبالتالي فإن خوارزمية هل تسير أن يكون شيء من هذا القبيل قليلة
يكفي الأحرف التي -
دعونا لها هذا من ناحية تمثل بعض العداد، دعونا نسمي هذا طول كثافة العمليات.
لذلك، بدءا من هنا، نحن الذهاب الى تكرار عبر سلسلة لدينا.
>> وبالتالي فإن الحرف الأول، انها H، وانها ليست خفض الظهر 0، لذلك
طول هو 1.
تكرار إلى الحرف التالي، E، وانها ليست مائل 0.
طول هو 2.
L، 3.
L، 4.
O، 5.
وأخيرا، نصل مائل 0، وهكذا وهذا يعني، أيضا،
هذه السلسلة قد انتهت.
لذلك دعونا العودة 5.
>> حتى تنفيذ في الواقع أنه، أولا، بلدي ن طول يساوي 0، يدي اليمنى.
ونحن في طريقنا لتكرار -
>> سرور 1: [غير مسموع]
>> ROB BODEN: أوه، واطلاق النار.
الكلمة الطيبة.
الازدهار.
حتى ن طول يساوي 0.
وحتى الآن، في حين ق طول لا على قدم المساواة ومن ثم، مائل 0.
لذلك تذكر، وهذا مائل 0، وهو الطابع الفعلي، وأنه يشير
نهاية السلسلة.
تماما مثل، أيضا، مائل n هو حرف الفعلية.
0 مائل سوف تشير نهاية سلسلة لدينا.
أنا لا أريد أن أضع ذلك هناك.
وبينما ق فهرستها من قبل طول ليس يساوي فاصل فارغة، ثم
نحن ذاهبون لمجرد زيادة الطول.
حتى ذلك الحين، في نهاية برنامجنا، طول يجري في نهاية المطاف إلى
5 أن يكون في هذه الحالة.
ونحن سوف يعود فقط لطول.
>> موافق.
وحتى الآن إلى هنا، وأنا لا القيام my_strlen.
دعونا تجميع ذلك للتأكد من كل شيء يسير بشكل سلس.
وأفعل في 2؟
أو كان ذلك 1؟
يجب أن تفعل.
حسنا.
لذلك هذا هو ARGV 2.
يعمل كما كان متوقعا، على الرغم من وكان أن واحدة أنا فعلت هذا في؟
نعم.
موافق.
لم يكن لديك هذا الإصدار من الأشياء الخط الجديد printf بعد، ولكنه
لا يجعل أي اختلاف.
موافق.
لذلك عملت كما هو متوقع.
>> الآن يمكننا حتى الجمع بين هذه الخطوة واحدة أبعد من ذلك، حيث إشعار هنا، أيضا،
أولا، نحن الاستيلاء على strlen من ARGV ط، ثم نقوم بالتكرار عبر
كل حرف في هذه السلسلة.
وذلك بدلا من القيام بذلك، ما إذا كنا مجرد الجمع بين هذا المنطق من الانتظار
حتى ضربنا مائل 0 الحق في هذه الحلقة ل؟
حتى تكرار بينما ARGV ط، ي لا لا يساوي مائل 0.
لذلك دعونا تشغيل لأول مرة.
>> حسنا.
حتى هنا، وهذا الشرط هو قوله -
دعونا مسح ذلك.
وحتى الآن، دعونا أن يكون هذا ARGV لدينا.
لذلك عندما ركض أنا فقط هذا البرنامج من قبل، ARGV هي مجموعة من السلاسل.
وهكذا، إذا كنت تشغيله مع نقطة مائلة ARGV 2، مرحبا العالم، ثم ARGV
في حد ذاته هو طول 3، لARGV الصفر، مرحبا، والعالم.
>> وداخل كل من هذه المؤشرات هو، نفسها صفيف، حيث سوف يكون هذا
نقطة، وهذا سوف يكون مائل، وأنا لا أعرف إذا كان هذا هو الاتجاه الصحيح، وأنا
لا أعتقد أنه كان.
A-R-V شرطة، بحاجة إلى مساحة أكبر.
دعونا مقطعة إلى هذه المجموعة.
اندفاعة 0، ثم مائل 0 A-R-V.
ثم في حالة من الفوضى سيكون مرحبا.
دعنا نقول، H-E مائل 0.
وأخيرا، W-O مائل 0.
>> وبالتالي فإن الخوارزمية التي كتبنا فقط، والمتداخلة للحلقات، ما كنت
غير القيام، لدينا لأول مرة مواجهة ط ثم ي.
وهذا سيكون أسهل مع رمز على الشاشة، دعونا نعود إلى هذا.
موافق.
لذلك تلاحظ أن i هو مكرر هذا بالتكرار على كل أمر
وسيطة سطر.
وي هو بالتكرار مكرر على كل حرف في هذا
وسيطة سطر الأوامر.
ذلك ما تقوم به هذه printf الأعمق و، قمنا printf ARGV 0 0، printf
ARGV 0 1، printf ARGV 0 2، 0 3، 4 0، 0 5، 6 0، ولكن الآن، ARGV 0 7 هو الذهاب الى
مائل تساوي 0.
>> لذلك فإننا الخروج أن للحلقة، والآن أنا بالتكرار إلى 1.
والآن ونحن في طريقنا إلى الطباعة ARGV 1 0، ARGV 1 1 -
حسنا، الآن، منذ أن قطعت مرحبا قصيرة، ARGV 1 2 يجري مرة أخرى لتكون
مائل 0.
وهكذا، ط زيادة والاستمرار، و هلم جرا، حتى ونحن طباعة جميع
العالم، وهؤلاء هم ثلاثة سطر الأوامر الحجج، وسنقوم الخروج من
الحلقة الأبعد، و الانتهاء من برنامجنا.
موافق.
>> لذلك دعونا نعود هنا.
لذلك عليك كسب بعض الألفة مع وسائط سطر الأوامر في هذا
تعيين مشكلة معينة.
>> الآن، وتصحيح الأخطاء.
لذلك ربما كنت قد سبق أن تفعل بعض التصحيح مع السابقة
تعيين المشكلة.
وطريقة واحدة سهلة جدا من التصحيح، أولا، دعونا ننظر في برنامج عربات التي تجرها الدواب.
كذلك، والمشي من خلال هذا البرنامج، ونحن في طريقنا ليطلب من المستخدم ل
صحيح، والاستيلاء على أن عددا صحيحا، وبعد ذلك، بشكل تعسفي، لدينا حلقة في حين أن
هو مجرد الذهاب إلى إنقاص ط حتى انها تساوي 10.
دعونا نفترض فقط أنا دخول عدد صحيح أكبر من 10.
لذلك إنقاص ط حتى انها تساوي 10.
>> ومن ثم لدينا حلقة في حين آخر ذلك، بينما أنا لا يساوي 0، ونحن
الذهاب إلى إنقاص ط ب 3.
حتى إذا كنت ترى القصد من الشوائب هنا، فهو أن هذا سوف إنقاص ط ل
تكون 10، ثم هذه الحلقة في حين الإرادة ط إنقاص من 10 إلى 7، 4، 1،
إلى سلبية 2، لالسلبية 5، وهلم جرا، إلى ما لا نهاية سلبية، منذ أن كنت سوف
أبدا في الواقع يساوي 0.
ثم في نهاية هذا البرنامج، لدينا وظيفة فو الذي هو
يحدث الطباعة إلى أن ط.
>> لذلك هذا هو البرنامج القصير وتافهة، وعلة واضحة،
خاصة بعد أنا فقط وقال ما كان علة.
ولكن القصد هنا هو، أيضا، وهذا قد تبدو فعلا مثل بعض الخاصة بك
حلول من الجشع من الماضي مشكلة تعيين، وربما يجب عليك
بعض حلقة لا نهائية في البرنامج، وليس لديك فكرة
ما يسبب ذلك.
حتى تقنية التصحيح مفيدة جدا هو مجرد إضافة printfs
في جميع أنحاء التعليمات البرمجية.
>> حتى هنا أريد printf خارج أول حلقة من الوقت.
وهنا أريد printf، وأنا مجرد طباعة ط.
حتى سأفعل الأولى حين حلقة، ط.
في الخارج، في حين أن الثاني الحلقة.
مرة أخرى، طباعة داخل من هنا، فإن قيمة ط.
ودعونا تشغيل هذا.
>> نقطة التصحيح حتى مائلة.
إدخال عدد صحيح.
دعونا نفعل 13.
والازدهار.
ونحن نرى أننا حلقات لانهائية داخل حلقة في حين الثانية.
وحتى الآن نحن نعرف ما هو الخطأ.
ولكن التصحيح printf كبيرة تماما، ولكن بمجرد الحصول على البرامج الخاصة بك
أطول وأكثر تعقيدا، وهناك حلول أكثر تطورا ل
الحصول على الأشياء تعمل.
لذلك دعونا إزالة كل هذه printfs.
ودعونا تأكد من أنني لم كسر أي شيء.
موافق.
>> وبالتالي فإن البرنامج ونحن في طريقنا لإدخال ما يسمى
GDB، لالمصحح جنو.
حسنا، في الواقع، دعونا إزالة التصحيح ل الثانية، وجعل التصحيح مرة أخرى.
حسنا، في الواقع الأولى، درسا جيدا في وسائط سطر الأوامر.
لاحظ أن هذا الأمر هو أن ضجيج تجميع يتم تمرير كل شيء
في سطر الأوامر، وهذه وسائط سطر الأوامر.
ذلك بالضبط كيف أنت ذاهب إلى استخدام وسائط سطر الأوامر، ونحن
فعلت من قبل، وكما شئت في PSET 2، هذه هي الطريقة التي يتم استخدامها ضجيج.
>> لذلك تلاحظ أن هذا أول علم، اندفاعة ggdb3، ما هذا ما يقول هو، ضجيج،
يجب تجميع هذا الملف مع القصد أننا في نهاية المطاف
تحتاج إلى تصحيح ذلك.
لذلك طالما لديك هذا العلم، وبعد ذلك يمكننا GDB التصحيح.
وانها سوف تفتح المصحح جنو.
>> لذلك هناك الكثير من الأوامر التي تحتاج إلى التعود على.
أول واحد عليك أن الأرجح تحتاج على الفور هو تشغيل.
فما هو تشغيل تنوي القيام به؟
انها تسير لبدء برنامجنا.
حتى تشغيل، بدء تشغيل البرنامج، البرنامج يطلب منا لعدد صحيح، 13.
ثم انها حلقات لانهائية كما المتوقع، إلا أنني إزالة
printfs، لذلك نحن لا نرى حتى ذلك.
خرجت بشكل طبيعي.
اه.
فمن الممكن أنه ملفوفة جميع الطريق حول، والعودة إلى - تجاهل ذلك.
نفترض أنها لم تخرج بشكل طبيعي.
هناك إجابة معقدة لذلك.
>> وحتى الآن، وهذا ليس مفيدا للغاية.
حتى مجرد تشغيل برنامجنا داخل هذا المصحح لا تساعدنا في أي
طريقة، لأننا قد فعلت فقط نقطة خفض التصحيح من خارج GDB.
وبالتالي فإن أمر واحد أن عليك ربما -
وأنا سوف إنهاء هذا.
السيطرة د أو إنهاء، سواء العمل.
لذلك دعونا فتحه مرة أخرى.
>> أمر آخر أن عليك ربما تريد على الفور ل
تعتاد على هو فاصل.
ولذا فإننا سوف كسر على الرئيسي في الوقت الراهن، ثم ساوضح ذلك.
حسنا، هنا نرى وضعنا نقطة توقف في هذا الخط في debug.c.
فما الوسائل كسر هو أنني عندما اكتب المدى، البرنامج هو الذهاب الى
متابعة تشغيل حتى أنا ضربت نقطة توقف.
لذلك عندما ضرب المدى، يبدأ البرنامج، ومن ثم وقوعه في أقرب وقت لأنها
يدخل الوظيفة الرئيسية.
كسر الرئيسي سيكون شيئا كنت عادة جميلة تفعل.
>> والآن، أن أعرض لكم لبعض الأوامر أكثر من ذلك.
نلاحظ هنا، أنه ما يقول نحن كسر في خط 11، والذي هو
printf، إدخال عدد صحيح.
ذلك الأمر التالي سيكون كيف نذهب إلى السطر التالي من التعليمات البرمجية.
هذا هو ذاهب للسماح لنا إلى الخطوة من خلال خط برنامجنا سطرا.
بحيث المقبل.
>> الآن خط 12، ونحن في طريقنا للحصول على عدد صحيح.
المقبل.
وإذا كنت مجرد ضرب أدخل مرة أخرى، وأنها سوف إعادة آخر شيء قمت به.
لذلك أنا لا تحتاج إلى كتابة في كل مرة المقبل.
لذلك إدخال عدد صحيح و 13.
وحتى الآن، خط 14، في حين ط أكبر من 10، وسأفعل المقبل.
ونحن نرى ونحن في طريقنا إلى إنقاص ط.
لذلك نحن ذاهبون الى إنقاص ط مرة أخرى.
>> وحتى الآن، مفيدا آخر الأمر طباعة.
حتى يتم الانتقال إلى طباعة طباعة قيمة المتغير.
دعونا تبرز قيمة ط متغير.
دعونا طباعة ط.
انها سوف يقول أنا هو 11.
ونحن الآن مرة أخرى أثناء التالي ط أكبر من 10.
لذلك أنا لا تزال أكبر من 10، لأنه 11.
ط ناقص ناقص.
دعونا طباعة ط مرة أخرى.
كما هو متوقع، فمن 10.
>> وحتى الآن، المقبل.
انها تعود الى حالة، i غير أكبر من 10، ولكن أنا الآن 10، وذلك
انها ليست أكبر من 10، لذلك نحن نتوقع لتسقط من حلقة الوقت.
ونحن الآن تحت هذا الخط من التعليمات البرمجية.
والقيادة، وآخر قائمة، هو مجرد الذهاب لعرض السابقة والقادمة
بضعة أسطر من التعليمات البرمجية، في حال كنت فقدت نفسك.
لذلك نحن للتو خرجت هذا في حين حلقة، والآن دخلنا هذا
في حين حلقة، خط 18.
وذلك في حين أنا لا يساوي 0.
و، المقبل، ط ط يساوي ناقص 3، وسنقوم إشعار، وهذا سوف مجرد الاستمرار.
ويمكننا طباعة ط.
>> كل أمر له نوع من الاختصارات.
حتى ع قصيرة لطباعة.
حتى نتمكن من ع ط.
تبقي فقط عقد ن، أو تستمر في فعل التالي.
طباعة ط مرة أخرى.
ترى الآن حان السلبية 167.
ولذلك فإن هذا سوف تستمر إلى الأبد، ولكن ليس إلى الأبد حقا، منذ رأيت للتو، فإنه
ستنتهي فعلا في بعض نقطة.
>> بحيث يتم بداية GDB.
ولكن دعونا نفعل شيئا آخر في GDB.
اه، التصحيح.
لذلك، في هذه الحالة بالذات، و حدث حلقة لا نهائية أن يكون داخل
وتتمثل المهمة الرئيسية.
والآن، مجرد قبول أن هذا أنا الذهاب لنقل حلقة لا نهائية في
وظيفة فو.
فقط تذكر أنه في نهاية هذا برنامج، حسنا، وكان هذا أصلا
داعيا فو، الذي كان مجرد الذهاب الى طباعة ط.
ولكن الآن نحن داعيا فو، الذي هو الذهاب إلى إنقاص ط حتى انها 0، و
ثم طباعة هذا المتغير.
موافق.
حفظ ذلك.
جعل التصحيح.
والآن، جدب التصحيح.
موافق.
>> حتى لو كنت مجرد تشغيل ثم أنا لا أذهب ل تكون قادرة على التدخل في الواقع من خلال بلدي
خط سطرا البرنامج.
لذلك دعونا كسر في الرئيسي، ثم اكتب التشغيل.
لذلك يذهب من خلال هذا، printf، أدخل عدد صحيح، والحصول على عدد صحيح و 13.
لذلك نحن في طريقنا للحفاظ على decrementing حتى أنا أكبر من 10.
ثم ونحن في طريقنا للسقوط من خلال في حين حلقة، والحصول على خط -
دعونا فتحه في نافذة منفصلة.
لذلك نحن decremented حتى أنا لم يعد أكبر من 10، ومن ثم نحن
استدعاء الدالة، فو.
>> ذلك ما حدث في أقرب وقت أنا ضربت وظيفة فو، حسنا، دعوت فو، و
ثم أنا لم يعد لديه السيطرة على GDB.
ذلك في أقرب وقت أنا ضربت التالي في هذا الخط، استمرت الامور حتى هذا حدث،
حيث خرجت من البرنامج عندما -
نفترض أنها لم تكن موجودة في نهاية المطاف.
رأيت ذلك وقفة قليلا بالرغم من ذلك.
فلماذا لم أفقد السيطرة على البرنامج في تلك المرحلة؟
حسنا، عندما كنت اكتب المقبل، أن يذهب إلى السطر التالي من التعليمات البرمجية التي الحرفي
سيتم تنفيذ.
حتى بعد خط 21، السطر التالي من التعليمات البرمجية التي ستنفذ هي خط 22،
وهو، تخرج من الرئيسي.
لذلك أنا لا أريد أن أذهب فقط إلى السطر التالي من التعليمات البرمجية.
أريد أن أذهب إلى وظيفة، فو، ثم الخطوة أيضا من خلال
تلك الأسطر من التعليمات البرمجية.
>> لذلك لذلك، لدينا بديل.
دعونا إنهاء ذلك مرة أخرى.
كسر الرئيسي.
اه، 1، المقبل، المقبل، 13، المقبل، المقبل، المقبل، بعناية،
قبل أن تصل خط فو.
موافق.
>> وحتى الآن، ونحن في خط 21، حيث نسميه فو.
نحن لا نريد لكتابة المقبل، لأن ذلك سوف فقط استدعاء الدالة فو، و
انتقل إلى السطر التالي من التعليمات البرمجية.
ما نريد أن استخدامها هو الخطوة.
لذلك هناك فرق بين الخطوة وبعد ذلك، حيث الخطوات الخطوة في
وظيفة، ويذهب التالي أكثر من وظيفة.
أن ينفذ فقط مجمل وظيفة واستمر على هذه الحال.
>> حتى يتم الانتقال إلى الخطوة تجلب لنا في وظيفة، فو.
ونحن نرى هنا، والآن، نعود في هذه الحلقة في حين أن هذا، من الناحية النظرية،
سوف تستمر إلى الأبد.
وإذا كنت أصاب الخطوة، عندما لا يكون حتى وظيفة للدعوة، ثم انها
متطابقة إلى التالي.
لذلك فقط عندما كنت في الخط الذي يتم استدعاء دالة أن الخطوة
سوف تختلف عن التالي.
لذلك الخطوة سوف تجلب لنا هنا.
خطوة، خطوة، خطوة، خطوة، خطوة، خطوة، و سنقوم حلقة لا نهائية فقط إلى الأبد.
>> لذلك قد تعتاد على ذلك ك طريقة تحديد حلقات لانهائية، هو
مجرد عقد هذا مفتاح Enter ل ترى أين واجهتك مشكلة.
هناك طرق أفضل للقيام بذلك، ولكن في الوقت الراهن، وهذا هو تماما ما يكفي.
وأسلوبيا، لتتوافق مع نمط 50، وأرجو أن يكون عمله هذا.
موافق.
>> ذلك الأمر الأخير واحد لإدخال.
حسنا، دعونا GDB التصحيح فيها.
وذلك بدلا من كسر في الرئيسي، وإذا كنت تعرف وظيفة فو هو أيضا
المشكلة، ثم أنا يمكن أن يكون فقط وقال، في كسر فو، بدلا من ذلك.
دعنا نقول أنا كسر في كلا الرئيسي وفو.
حتى تتمكن من تحديد العديد من نقاط التوقف على النحو الذي تريد.
عندما كنت اكتب المدى، انها تسير التوقف عند -
أوه، دعونا إعادة ترجمة، منذ لقد غيرت الأشياء.
سترى هذا الخط، تحذير، مصدر ملف أحدث من تنفيذ.
وهذا يعني أن أنا فقط ذهبت هنا وغيرت هذه لتتوافق مع نمط
50، ولكن لم أكن إعادة ترجمة البرنامج.
حتى GDB يجعلني على بينة من ذلك.
سوف الإقلاع عن التدخين، جعل التصحيح مرة أخرى، ضرب جدب التصحيح.
موافق.
>> وحتى الآن، والعودة إلى ما كنت أفعله.
كسر الرئيسي، وكسر فو.
الآن إذا قمت بتشغيل البرنامج، لذلك فمن سوف يستمر حتى يضرب
نقطة توقف.
أن توقف يحدث ل تكون أول واحد على الرئيسي.
الآن، بدلا من القيام المقبل، المقبل، المقبلة، المقبل، المقبلة، حتى أنا ضربت فو، وأنا
يمكنك كتابة الاستمرار، والتي سوف تستمر حتى تصل إلى نقطة المقبل.
لدي لدخول عدد صحيح أولا.
تواصل سيستمر حتى أنا ضربت نقطة المقبل، وهو أن
وظيفة من فو.
>> لذلك سيتم تشغيل تشغيل حتى كنت أصاب نقطة توقف، ولكن كنت فقط اكتب التشغيل عند
كنت بدء البرنامج، وبعد ذلك، منذ ذلك الحين، انها تستمر.
إذا أنا فقط لم كسر الرئيسي و ثم ركض، وأنها سوف كسر في
الرئيسية، ويستمر بعد ذلك.
منذ ليس لدي نقطة فاصل في فو، أدخل عدد صحيح، ثم أنا الآن
لن كسر في فو.
انها مجرد الذهاب إلى لانهائية حلقة حتى ذلك.
موافق.
>> حتى أن مقدمة إلى GDB.
يجب عليك البدء في استخدامه في مجموعات مشكلتك.
يمكن أن تكون مفيدة جدا لتحديد الخلل.
إذا كنت في الواقع مجرد، خط سطرا، انتقل خلال التعليمات البرمجية الخاصة بك، وقارن بين ما هو
يحدث في الواقع مع ما تتوقعه أن يحدث، ثم انها جميلة
من الصعب أن تفوت البق الخاص بك.
موافق.
>> لذلك جلبت ديفيد الاسبوع الماضي عن هذا الاشياء التشفير السري الرئيسية لل
المرة الأولى، حيث أننا لا نريد كلمات السر مجرد خزنها على موقعنا
الكمبيوتر في بعض ملف نص عادي، حيث شخص ما يمكن أن تأتي مرارا وفقط
فتحه وقراءتها.
من الناحية المثالية، فإنها تكون مشفرة بطريقة أو بأخرى.
ومشكلة في تعيين 2، فسوف يكون التعامل مع أسلوب واحد من التشفير،
أو، حسنا، طريقتين، ولكن فهي ليست كبيرة جدا.
اذا كنت تفعل الطبعة القراصنة، وكنت أيضا سوف يكون التعامل مع
فك شفرة بعض الأشياء.
>> وبالتالي فإن القضية الآن، حسنا، حتى لو لدينا أقوى التشفير
الخوارزمية في العالم، وإذا اخترت كلمة الفقيرة بشكل خاص، بعد ذلك
لن يساعد كثيرا لك، لأن الناس وسوف لا يزال قادرا على معرفة ذلك.
حتى لو رؤية سلسلة المشفرة و يبدو وكأنه حالة من الفوضى في القمامة
هذا لا يعني شيئا لهم، إذا كانوا لا تزال بحاجة فقط لمحاولة بضعة كلمات السر
لأنها من أصل الرقم، فإنك ليست آمنة جدا.
حتى مشاهدة الفيديو الذي يجعل تلك النقطة.
>> [تشغيل الفيديو]
>> -الخوذة، كنت مدمن.
ما الذي يحدث؟
ماذا تفعل لابنتي؟
>> -اسمحوا لي أن أعرض الرائعة جراح التجميل الشباب، والدكتور فيليب
Schlotkin، أعظم الأنف رجل عمل في كامل
الكون، وبيفرلي هيلز.
>> -صاحب السمو.
>> الأنف وظيفة؟
أنا لا أفهم.
انها كانت بالفعل على وظيفة الأنف.
وكان ستة عشر الحلو الحاضر.
>> ، لا.
انها ليست ما هو رأيك.
انها كثيرا، وأسوأ من ذلك بكثير.
إذا كنت لا تعطيني تركيبة ل درع الهواء، والدكتور Schlotkin سوف
إعطاء ابنتك ظهرها القديمة الأنف.
>> ، لا.
من أين لك هذا؟
>> حسنا.
انا اقول.
لا، بابا.
لا، لا يجب عليك.
>> أنت على حق،، يا عزيزي.
سأشتاق الأنف الجديد.
ولكن أنا لن أقول له الجمع، مهما كانت.
>> -جدا أيضا.
الدكتور Schlotkin، تفعل أسوأ الخاصة بك.
>> بين بلدي المتعة.
>> [الأدوات التي يجري شحذ]
>> ، لا.
الانتظار.
انا اقول.
>> -I عرف انها ستعمل.
حسنا.
تعطيه لي.
>> -مزيج واحد.
>> واحد.
>> اثنين.
>> ثلاثة و.
>> فور.
>> خمسة و.
>> لذا، مزيج واحد، اثنان، ثلاثة، أربعة، خمسة.
هذا هو أغبى مزيج أنا سمعت في حياتي.
هذا هو النوع من الشيء احمق سيتعين على أمتعته.
>> شكرا لك، سموكم.
>> وماذا فعلتم؟
>> -I إيقاف الجدار.
>> ، لا أنت لم تفعل ذلك.
قمت بإيقاف الفيلم كله.
>> -I يجب أن يكون الضغط على الزر الخطأ.
>> حسنا، ووضعها مرة أخرى.
وضع الفيلم مرة أخرى.
>> نعم، يا سيدي.
نعم، يا سيدي.
>> دعنا نذهب، أرنولد.
تأتي، غريتشن.
بالطبع، كنت أعرف أنني سوف لا تزال يجب أن فاتورة لكم لهذا.
>> [END تشغيل الفيديو]
>> ROB BODEN: حسنا.
حتى الآن أن نتحدث بالفعل عن الأمن في بعض الطرق، لطيفة
قليلا ملصق الفيلم، وذلك في الآونة الأخيرة أيام، هذه القضايا مع وكالة الأمن القومي
مراقبة كل شيء.
قد يكون من الصعب أن تشعر وكأنك يكون نوعا من الخصوصية في
عالم الانترنت، على الرغم من أنني لا يمكن أن أقول كنت معظم تفاصيل المنشور.
بحيث تجاوز PRISM، ونحن لن أن نتحدث حول ذلك، والآن
نفكر في جهاز الكمبيوتر المحمول.
حتى هنا، أريد أن التحول إلى حسابي الفعلية،
مع بلدي البطريق الصغير.
وذلك لدي مجموعة كلمة السر، والتي كلمة السر هي كل ما أريد لها أن تكون.
>> ولكن تذكر أن ما أقوم تسجيل في مع، لذلك هذا الدخول
موجه، هو بعض البرامج.
انها بعض البرامج التي كانت كتبه شخص.
وهكذا، وهذا الشخص، إذا كانت الخبيثة بشكل خاص، ما في وسعهم
وقال، كل الحق، لذلك إذا كانت كلمة المرور أنني أدخل يساوي بلدي
كلمة السر الفعلية، أو أنها على قدم المساواة لبعض السر الخاصة -
ديفيد هو رائع أو شيء من هذا -
ثم السماح لهم بالدخول.
لذلك يمكن أن يكون مبرمج الخبيثة الوصول إلى كافة أجهزة ماكينتوش الخاصة بك، أو
النوافذ، أو أي شيء.
>> بحيث ليس الكثير من القلق، منذ ذلك الحين، أعني، وهذا هو برنامج لتسجيل الدخول
وهذا ما يتم شحنها مع OS X، ومئات أو آلاف من الناس لديهم
مراجعة هذه التعليمات البرمجية.
وهكذا، إذا، في التعليمات البرمجية في مكان ما، كنت القول ما اذا كان هذه السلسلة يساوي يساوي
ديفيد هو رائع، تسجيل الدخول، ثم شخص ما ستكون، مثل، الانتظار.
هذا ليس صحيحا.
هذا لا ينبغي أن يكون هنا.
ذلك أن طريقة واحدة نحصل على الأشياء أن يكون نوع من آمن.
>> ولكن التفكير حتى برامج أن تكتب.
دعنا نقول أنك كتبت برنامج تسجيل الدخول.
لذلك هذا البرنامج تسجيل الدخول الذي كتبته، لذلك من الواضح، كنت جيدة
مبرمج.
كنت لن تضع أي الخبيثة إذا كان x يساوي يساوي ديفيد هو رائع
في التعليمات البرمجية.
ولكن هذا البرنامج، وماذا عن استخدامها لترجمة هذا البرنامج؟
شيء من هذا القبيل ضجيج.
ذلك ما إذا كان الشخص الذي حدث ل إرسال ضجيج الخاصة فتش في ضجيج
شيء من هذا القبيل، إذا أنا تجميع دخول البرنامج، ثم أدخل هذا الرمز
في برنامج تسجيل الدخول الذي يقول، إذا x تساوي يساوي ديفيد هو رائع؟
حتى لا تماما حتى الآن، ولكن لدينا نفس تصدر هنا، حيث ضجيج، حسنا،
الآلاف، إن لم يكن عشرات الآلاف من الناس، ونظرت إلى ضجيج، لديها
نظرت إلى خطوطها من التعليمات البرمجية، وقال: كل الحق، لا يوجد شيء سيئ هنا.
من الواضح، لا أحد يفعل أي شيء هذا الخبيثة.
>> ولكن ما هو رنة نفسها، مثل، ماذا لو أنني تجميع ضجيج؟
ماذا لو كان لدي بعض المترجم أن يجمع ضجيج الذي يدرج في ضجيج
هذا الإختراق الخاصة التي تقول، كل الحق، عندما كنت تجميع ضجيج، ثم
تنفيذ أحصل ينبغي أن ننظر خصيصا داخل البرنامج تسجيل الدخول وإدراج
كلمة المرور هذه، يساوي يساوي ديف هو رائع؟
لذلك تذكر أن المترجم الخاص بك نفسه يتعين جمعها في مرحلة ما.
حتى إذا ما اخترت لتجميع ضجيج مع، في حد ذاته هو ضار، فإنك
يمكن أن يكون مشدود كله الطريق إلى أسفل الخط.
>> حتى هنا، لدينا كين تومسون ودينيس ريتشي.
لذلك هذا هو الصورة الأيقونية.
دينيس ريتشي هو على حق.
فهو الرئيسية -
كتب حد كبير C. لذا يمكنك أشكره على هذه الفئة.
كين تومسون على اليسار.
اثنين منهم كتب أساسا UNIX.
حسنا، وكانوا من المساهمين الرئيسيين في UNIX.
كانت هناك بعض الآخرين.
حتى كين تومسون في مرحلة ما،، فاز في جائزة تورينج.
وجائزة تورينج، لقد سمعت دائما أنها تشير بهذه الطريقة، انها
جائزة نوبل لعلوم الكمبيوتر.
>> حتى في جائزة تورينج، لديه ل إعطاء خطاب القبول.
وقال انه يعطي هذا الخطاب مشهورة جدا الآن، ودعا تأملات في الثقة
الثقة، ونحن وربطت لعلى موقع بالطبع.
وفي هذا الخطاب، كما يقول، كل الحق، لذلك أنا كتبت UNIX، والآن كل من
أيها الناس تستخدم UNIX.
الآن، تذكر اليوم أن لينكس هو سليل مباشر من UNIX.
OS X يستخدم مباشرة UNIX.
نوافذ لا ليس كثيرا، ولكن الكثير من الأفكار أخذت من UNIX.
>> حتى انه يذهب الى المسرح ويقول: كل الحق، كتبت UNIX.
وفقط حتى تعرف يا رفاق، وأنا قادرا على تسجيل الدخول إلى كل
واحد من أجهزة الكمبيوتر.
منذ أضع واحدة من هذه خاصة إذا كان x يساوي يساوي كين تومسون هو رائع،
ثم أنا سمحت للدخول.
حتى الناس مثل، حسنا، كيف فعلت ذلك؟
ونحن ننظر في برنامج تسجيل الدخول ولا شيء هناك.
انه مثل، حسنا، أنا عدلت المترجم لتسجيل الدخول في البرنامج
ذلك أن البرنامج سوف يكون الدخول الآن أن x تساوي يساوي كين تومسون
هو رهيبة.
>> ويقولون، حسنا، هذا ليس صحيحا.
نحن نبحث في المجمع، و ليس لديها أي خطوط المترجم
رمز من هذا القبيل.
انه مثل، حسنا، ولكن ما أنت تجميع مترجم مع؟
ويعتقدون، وانه، مثل، حسنا، أنا واحد الذي قدم لك المترجم
كنت تستخدم لتجميع المترجم، لذلك كنت تجميع مترجم، أن
هو نفسه الخبيثة، وسوف كسر برنامج تسجيل الدخول.
ذلك أساسا، في تلك المرحلة، وهناك أي وسيلة يمكن أن ننظر إلى المصدر
مدونة لبرنامج تسجيل الدخول لمعرفة ما هو الخطأ.
أنت لا تستطيع حتى ننظر في شفرة المصدر من مترجم
لمعرفة ما هو الخطأ.
>> وكنت بحاجة أن ننظر إلى آلة رمز، ثنائي الفعلي لل
مترجم ترجمة لرؤية، انتظر، هذه الأسطر من التعليمات البرمجية لا ينبغي أن يكون هنا.
ولكن كين تومسون يعتبر خطوة واحدة أبعد من ذلك وقال، حسنا، هناك
هذه البرامج الخاصة التي فعلا تساعدك على قراءة ثنائي من البرامج،
وحتى اذا كان شخص يستخدم هذا البرنامج ل قراءة الثنائية، فإنها ترى هذه
الأسطر من التعليمات البرمجية.
انه تعديل تلك البرامج أن أقول، كل الحق، إذا كنت تبحث في
مترجم، لا تظهر هذا خاص مجموعة من ثنائي.
>> لذلك فأنت بحاجة لاتخاذ هذه الخطوة أبعد من ذلك وأساسا، يمكن أن يكون
مستويات متعددة اتخذت من المراوغة، وعند نقطة ما، لا أحد في الواقع
سيتم التحقق.
وبالتالي فإن المغزى من القصة هو، كنت لن تكون الكتابة
رنة في هذه الفئة.
وأنت تسير إلى استخدام التسلق رنة الكثير في هذه الفئة.
للجميع تعلمون، هو ضجيج الخبيثة البرنامج الذي يتم تخريب كل
برنامج واحد كنت قد جمعت من أي وقت مضى.
وأترك ​​لكم على هذا المشؤومة جدا ملاحظة، أراك يوم الاربعاء.
>> [تصفيق]
>> المتحدث 2: في CS50 المقبل.
>> SPEAKER 3: لا أجرؤ على القول أن.
يمكنك القيام بذلك.
كنت قد فعلت هذا من قبل، يمكنك القيام بذلك اليوم، يمكنك القيام بذلك غدا.
كنت قد تم القيام بذلك لعدة سنوات.
اذهبوا الى هناك والقيام بذلك.
يمكنك القيام بذلك.
>> [عزف الموسيقى]