[MUSIC پخش] ROB Boden در: بسیار خوب. بنابراین، اولین چیزی که برای اولین بار، از ویدیو از یک چهره آشنا. [پخش ویدئو] همه راست. این CS50 است، و این است آغاز هفته سه. من متاسفم من نمی توانستم وجود دارد با شما هستم امروز، اما به من اجازه را به شما معرفی خود راب Boden در CS50 است. [END پخش ویدئو] [کف زدن و تشویق] ROB Boden در: فیلم شناسی در که ویدیو فوق العاده است. بسیار خوب. پس اول، ناهار دیگر وجود دارد. فردا در 01:15 است. هیچ ناهار وجود دارد این جمعه. آن را با Quora است. و به تامی نه در اینجا، اما یکی از مردم CF سابق وجود دارد، تامی McWilliam. بنابراین او یک پسر سرگرم کننده است. شما باید آمده است. بسیار خوب. بنابراین در هفته گذشته، ما شروع به شکستن از هم جدا در مورد آنچه که یک رشته واقعا است. ما از آغاز شناخته شده است که آن را دنباله ای از کاراکتر ها است. اما هفته گذشته، ما را به این واقعیت زده که آنچه که واقعا یک دنباله از حرف، خوب، ما در حال حاضر آرایه از کاراکتر ها. و ما می دانیم که یک رشته، آن را به یک آرایه از کاراکتر ها، در پایان، ما باید این بایت های پوچ خاص، این بک اسلش 0، نشان می دهد که در پایان رشته. و به این ترتیب یک رشته آرایه ای از است حرف، اما ما می توانیم بیش از فقط آرایه ای از کاراکتر ها، ما می توانیم یک آرایه از هر گونه دارند نوع از چیزی که ما می خواهیم. بنابراین، اگر شما نسبت به هفته قبل به یاد می آورند، برنامه قرون که دیوید معرفی واقعا به سرعت. پس اولین چیزی که ما می خواهیم انجام دهیم این است از کاربر برای یک عدد صحیح، تعداد زیادی از مردم در اتاق. زمانی که ما که عدد صحیح، ما در حال اعلام یک آرایه. توجه به این نحو براکت. شما در حال رفتن به رسیدن به آن استفاده می شود. بنابراین ما اعلام آرایه ای از اعداد صحیح به نام سنین، و ازت وجود دارد اعداد صحیح در این آرایه. بنابراین این الگوی حق در اینجا، این 4 هوشمند من برابر با 0، من کمتر از N است، من به علاوه به علاوه، که همچنین برای رفتن به یک الگوی که شما بسیار استفاده می شود. از آنجا که تقریبا چگونه شما همیشه به تکرار بیش از آرایه. بنابراین به یاد داشته باشید که نفر است طول آرایه است. و بنابراین، در اینجا، ما بارها و بارها درخواست برای سن شخص من در اتاق. بعد از این، ما به پایین، و به هر دلیل خودسرانه، ما پس از آن نسخه قابل چاپ کردن چند ساله آنها در حال رفتن به یک سال از زمان حاضر. و در حال اجرا است که برنامه، اجازه دهید را سن، نقطه سنین بریده بریده. بنابراین تعداد زیادی از مردم در اتاق، اجازه دهید بگویم سه وجود دارد. و می گویند، اولین کسی که 13 است، بعدی 26 است و 30 است. پس آن را در طول آن سه تکرار مردم، از چاپ 14، 27، و 31. بنابراین به یاد داشته باشید که زمانی که ما اعلام مجموعه ای از اندازه n، شاخص در آن آرایه، آرایه دارای ارزش ها و شاخص های 0، 1، 2، تمام راه تا N منهای 1. بنابراین، هنگامی که ما گفته بودند سه نفر وجود دارد در اتاق، و ما در اینجا قرار دهید تکرار برای اولین بار از طریق این حلقه، من در حال رفتن به 0. بنابراین در شاخص 0. ما اختصاص اولین سن که کاربر وارد. سپس در یک بعد، ما در حال ورود به دوم وارد کنید، و در در کنار دو، آخرین نفر. بنابراین توجه کنید که آرایه ای از اندازه سه هیچ چیزی ندارد در شاخص سه. این معتبر نیست. بسیار خوب. بنابراین، رفتن به اینجا. بنابراین در حال حاضر که ما با آرایه ها پرداخته ام، ما باید برخی از آشنایی. در حال حاضر ما در حال رفتن به حرکت بر روی فرمان آرگومان خط، که در حال رفتن به خیلی مربوط به این مشکل مجموعه. پس تا اکنون، هر زمان که شما اعلام عملکرد اصلی خود را، ما گفت: بی اعتبار اصلی بین المللی. پس از درجه اعتبار ساقط فقط بدان معناست که ما در هر عبور نمی آرگومان این تابع. در حال حاضر ما قصد داریم که برای دیدن اصلی می توانید برخی از استدلال است. در اینجا ما آنها را هوشمند تعداد آنها و رشته براکت و argv. براکت، یک بار دیگر، نشان می دهد که ما در حال برخورد با آرایه ها. بنابراین در اینجا، براکت و argv رشته، ما هستیم خرید و فروش با آرایه ای از رشته ها. بنابراین تعداد آنها، که رفتن به نشان می دهد چگونه بسیاری از استدلال کرده ایم که ما تصویب این برنامه است. و برای دیدن آنچه که بدان معنی است، اجازه دهید این نزدیک است. OK. پس تا اکنون، ما هر اجرا شود برنامه مانند سن بریده بریده نقطه. ما همچنین می توانیم، در خط فرمان، گذشته آرگومان، در نتیجه مدت، فرمان آرگومان خط. پس آرگومان اول، سلام جهان است. بنابراین در اینجا، تعداد آنها خواهد بود سه. این تعداد از استدلال است در خط فرمان. تعداد آنها همیشه حداقل 1، از نقطه بریده بریده سنین، به خودی خود، شمارش به عنوان یکی از استدلال خط فرمان. سپس سلام اول است. اگر سن بریده بریده نقطه صفر است، پس از آن سلام اول است، و جهان است دستور دوم آرگومان خط. بنابراین argv را رشته، ما قصد داریم برای دیدن، شامل رشته ها، نقطه اسلش سن، سلام، و جهان است. و با درخواست داود، ما قصد داریم بازی یک ویدیو معرفی آن است. [پخش ویدئو] ، تا در حال حاضر در برنامه ایم نوشته شده است، ما اعلام کرده ایم اصلی بی اعتبار اصلی را به عنوان اعضای هیات. و در تمام این زمان، که از درجه اعتبار ساقط است به سادگی مشخص شده است که برنامه هیچ را ندارد آرگومان خط فرمان. به عبارت دیگر، هنگامی که کاربر اجرا می شود برنامه، او می تواند دستور ارائه آرگومان خط را با نوشتن های اضافی کلمات یا عبارات پس از برنامه نام در اعلان. خوب، اگر شما می خواهید برنامه خود را به را استدلال خط فرمان، یک یا مانند کلمات بیشتر، ما نیاز به جایگزین از درجه اعتبار ساقط با یک زن و شوهر از استدلال. بنابراین اجازه دهید کار را انجام دهید. شامل CS50.h. شامل io.h. استاندارد اعضای هیات تحریریه اصلی. و در حال حاضر، به جای خالی، من قصد دارم مشخص از نوع int به نام تعداد آنها، و آرایه ای از رشته ها نام و argv. در حال حاضر، تعداد آنها و argv را می به سادگی کنوانسیون. ما می توانیم این استدلال کرده اند به نام هر چیزی که ما می خواهیم. اما آنچه مهم است این است که تعداد آنها است اعضای هیات زیرا، بنا به تعریف، آن است که رفتن به شامل تعداد بحث، تعداد واژه ها در کل که کاربر در اعلان خود را تایپ. 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 برای؟ رفتن که تبدیل رشته به عدد صحیح. بنابراین اگر رشته عبور I، یک دو سه، به atoi، که شما تبدیل که به عدد صحیح، یک دو سه. بنابراین ما قصد داریم برای تبدیل اول خط فرمان آرگومان به یک عدد صحیح، و پس از آن فقط چاپ است که عدد صحیح. بنابراین اساسا، ما به نوعی هستیم reimplementing getint، فقط عدد صحیح است که در فرمان وارد خط به جای در برنامه تعاملی. بنابراین پس از آن، ساخت و argv 0، اجازه دهید انجام آن را در اینجا، و نزدیک است که. بنابراین در حال اجرا و argv 0، و اجازه دهید را وارد کنید عدد صحیح، یک دو سه چهار یک دو. پس از آن خواهید عدد صحیح چاپ، یک دو سه چهار یک دو. برخی از پیچیدگی های خاص به atoi که وجود دارد آن را متوقف مراقبت در مورد هر چیزی فراتر از یک کاراکتر عددی معتبر، اما این مهم نیست. بنابراین چه چیزی شما فکر می کنم اتفاق می افتد اگر من این کار؟ گسل تقسیم بندی. پس چرا است؟ اگر شما نگاهی به برنامه های ما، ما هستیم تبدیل و argv 1، آرگومان اول بعد از نام برنامه، به یک عدد صحیح. اما هیچ آرگومان وجود دارد بعد از نام برنامه. بنابراین در اینجا، ما می بینیم که این یک حشره دار است برنامه، از آن زمان، اگر ما سعی می کنیم آن را اجرا کنید بدون هیچ گونه استدلال، آن را فقط سقوط خواهد کرد. بنابراین یکی دیگر از الگوی معمول شما خواهید دید است چیزی شبیه به این، اگر تعداد آنها کمتر است از دو، نشان می دهد این بود که نمی وجود دارد حداقل نام برنامه و آرگومان اول، پس از آن خواهیم چیزی را انجام دهید مانند چون printf، کافی نیست آرگومان خط فرمان. این یکی خوب برای چاپ احتمالا نه، آن را احتمالا چیزی مانند شما باید یک عدد صحیح را وارد کنید در خط فرمان. من فقط آن را به پایان وجود دارد. و سپس بازگشت 1. بنابراین به یاد داشته باشید که در پایان ما برنامه، اگر دوباره 0، آن نوع نشان دهنده موفقیت است. و اصلی نیز به صورت خودکار باز می گردد 0 اگر شما نمی کنند. بنابراین در اینجا، ما در حال retuning 1 نشان می دهد که که موفقیت نیست. و شما می توانید به بازگشت هر آنچه می خواهید، فقط، 0 نشان می دهد موفقیت، و هر چیز دیگری نشان می دهد شکست. بنابراین اجازه دهید این نسخه از چیزها را اجرا کنید. بنابراین در حال حاضر، اگر ما خط فرمان وارد کنید بحث، آن را به درستی می گویم ما، به اندازه کافی خط فرمان. آیا این حکم را به اتمام برساند. دیگر، اگر ما در واقع آن را تصویب یک، آن را می توانید از این برنامه کامل است. پس این است که چگونه شما می توانید تعداد آنها در استفاده از به منظور تایید اعتبار تعداد آرگومان خط فرمان است که در واقع گذشت. بنابراین اجازه دهید را در این برنامه کمی بیشتر پیچیده، و در نگاه دوم تکرار همه چیز. بنابراین در حال حاضر، ما نه تنها چاپ اولین دستور بحث خط. در اینجا، ما در حال تکرار از برابر من هوشمند 0، من کمتر از تعداد آنها است، من به علاوه به علاوه، چاپ و argv را، شاخص من. بنابراین این الگو، دوباره، این همان است الگوی به عنوان قبل از، به جز به جای از تماس متغیر N، ما با استفاده از تعداد آنها. بنابراین این تکرار بیش از هر شاخص در آرایه و چاپ هر عنصر در آرایه. و به این ترتیب، زمانی که ما این برنامه را اجرا کنید، خوب، من هیچ خط فرمان وارد کنید استدلال، پس از آن فقط چاپ نام برنامه. اگر من وارد یک دسته از چیزها، آن را خواهید یک، هر یک در خط خود را چاپ کنید. OK. خب بیایید یک مرحله دیگر. و به جای آن از چاپ هر آرگومان در خط خود، اجازه دهید هر چاپ شخصیت هر آرگومان در خط خود را دارد. بنابراین به یاد داشته باشید که argv را است آرایه ای از رشته ها. پس چه رشته ای است، اما آرایه ای از کاراکتر؟ به طوری که بدان معنی است که argv را واقعا آرایه ای از آرایه ای از کاراکتر. بنابراین با استفاده از آن، اجازه دهید این در حال حاضر نادیده گرفت. بیایید فقط در نظر و argv رشته 0. بنابراین اگر ما می خواهیم را به هر یک از شخصیت های و argv 0 در خط خود را، پس از آن من می خواهم برای انجام این طرح که به آن عادت، من است کمتر از طول آرایه، که در اینجا، از strlen، که نه آنچه من می خواهم به انجام این کار، رشته ها برابر و argv 0. بنابراین من کمتر از طول ما آرایه، که در این مورد یک آرایه است از شخصیت، من به علاوه به علاوه. و به این ترتیب، همانطور که ما در هفته گذشته دیدم، آن ایده آل اگر ما حرکت می کند که در خارج از strlen این بیماری، از نفر بود با اضافه کردن خواهد کرد strlen از بازدید کنندگان در هر بار ما به از طریق حلقه، و آن را رفتن به تغییر شود. پس ما آن را به N اینجا مساوی تنظیم شده است. OK. بنابراین در حال حاضر، ما در حال شمارش هر شاخص در آرایه. و به این ترتیب، اگر ما می خواهیم برای چاپ هر شخصیت در آن آرایه، درصد ج است پرچم ما می خواهیم به استفاده از برای شخصیت. و در حال حاضر من براکت است برای رفتن به رشته، شخصیت اول من، بنابراین اگر رشته سلام بودند. پس از آن ها 0 است برای رفتن به H، S براکت 1 خواهد بود الکترونیکی، و غیره. بنابراین در حال حاضر ما می خواهیم به ترکیب این دو چیز. ما می خواهیم برای چاپ هر یک از شخصیت از هر آرگومان خط فرمان. بنابراین ما در حال رفتن به برای حلقه های تو در تو. و مرسوم، اولین مبارزه این است که من، بعد برای رفتن به j، N خواهد بود که strlen از argv را من، من کمتر از N، من به همراه اضافه شده است. و در حال حاضر به جای چاپ و argv من، پس و argv براکت من در حال رفتن به شاخص - که برای رفتن به خط فرمان i ام بحث، argv را I و J است که رفتن به شود شخصیت j ام از بحث i ام. من از این در حال حاضر اینجا خلاص کردن از آنجایی که ما آن را که حلقه قرار داده است. بنابراین معادل برابر رشته است argv را من، و سپس بازدید کنندگان براکت J. خب، ما نیازی به اعلام این متغیرها. در عوض، ما فقط این ترکیب دو به آنچه که ما تا به حال، و argv i و j. SPEAKER 1: [نامفهوم]. ROB Boden در: تماس خوب. پس این خراب شده است. اگر من در واقع آن را زد، ما را این را درک کرده اند. بنابراین مقابله با من در مورد مراقبت از در این به ویژه برای حلقه J، تکرارکننده است. بنابراین شما می توانست به مسائل مربوط به اجرا، احتمالا در حلقه بی نهایت، اگر ما ثابت نشده بود که. به همین دلیل ما نیز صحبت در مورد اشکال زدایی امروز. OK. بنابراین اجازه دهید این برنامه اجرا شود. و اجازه دهید در واقع چون printf جداگانه اضافه در اینجا است که فقط به چاپ خواهد خط دیگر، از آنجا که این بدان معنی است که وقتی ما اجرای برنامه، آنجا خواهم بود خالی خط در بین هر یک از شخصیت های هر آرگومان خط فرمان. خب، خواهیم دید که چه معناست. OOP. در برخی از اشکال. خطا به طور ضمنی اعلام کرد تابع کتابخانه strlen. پس از بازگشت به برنامه های ما، I را فراموش کرده به هش عبارتند از string.h. بنابراین string.h است برای رفتن به فایل هدر که اعلام کرد تابع strlen. OK، آن را کامپایل. در حال حاضر، اجازه دهید آن را اجرا کنید. بنابراین درست است که. آن را به نسخه قابل چاپ کردن ما نام برنامه، سلام جهان است. آن را به چاپ هر چیزی، هر شخصیت، در خط خود را دارد. OK. بنابراین اجازه دهید در واقع این را یک قدم بیشتر. و به جای استفاده از string.h، اجازه دهید فکر می کنم در مورد چگونه ما می خواهم خود ما اجرا تابع strlen. بنابراین من بلافاصله شما را امضا تابع. بنابراین اجازه دهید در my_strlen تماس بگیرید، و آن را رفتن به یک رشته به عنوان آرگومان، و ما انتظار داریم برای بازگشت به طول آن رشته است. بنابراین، جایی که مرد؟ بله. OK. پس از اسلاید های قبلی به یاد داشته باشید که همچنین از هفته گذشته بود که آرایه ای از کاراکتر ها، و، رشته، بنابراین اجازه دهید بگویم این رشته ها ما است. بنابراین اگر بازدید کنندگان رشته است، سلام، پس از آن، H-E-L-L-O، در حافظه، که رفتن به باشد، و پس از آن این بک اسلش 0 شخصیت. پس چگونه ما دریافت نمایید از بازدید کنندگان؟ خوب، نکته این است که به دنبال این واکنش 0 شخصیت، این تهی نابودگر. بنابراین الگوریتم آیا رفتن به چیزی شبیه به چند شخصیت به اندازه کافی است که - اجازه دهید این دست نشان دهنده برخی از ضد، اجازه دهید این طول هوشمند تماس بگیرید. بنابراین، با شروع از اینجا، ما هستیم رفتن به تکرار بیش از رشته ما. بنابراین اولین کاراکتر، آن را H، و آن را پشت بریده بریده 0 نیست، بنابراین طول 1 است. تکرار به کاراکتر بعدی، E، و آن را به 0 بک اسلش نیست. طول 2 است. L، 3. L، 4. O، 5. و در نهایت، ما بک اسلش رسیدن 0، و به طوری که به معنی، خوب، این رشته شده است. بنابراین اجازه دهید بازگشت 5. پس در واقع اجرای آن، برای اولین بار، طول n ام برابر با 0، دست راست من. و ما قصد داریم به تکرار - SPEAKER 1: [نامفهوم] ROB Boden در: اوه، شلیک کنید. تماس خوب است. بوم. بنابراین طول n برابر 0. بنابراین در حال حاضر، طول در حالی که بازدید کنندگان را نمی کند برابر و پس از آن، بک اسلش 0. بنابراین به یاد داشته باشید، این بک اسلش 0، آن است شخصیت های واقعی، و آن را نشان می دهد در پایان رشته است. درست مانند، نیز، بک اسلش n یک شخصیت واقعی است. بک اسلش 0 است که نشان می دهد در پایان از رشته ما. من نمی خواهم برای قرار دادن آن وجود دارد. و در حالی که بازدید کنندگان نمایه های طول است به نابودگر تهی برابر، و سپس ما فقط به افزایش طول. بنابراین پس از آن، در پایان از برنامه های ما، طول است در نهایت رفتن به 5 در این مورد. و ما فقط طول گشت. OK. بنابراین در حال حاضر در اینجا، من نیست انجام my_strlen. اجازه دهید آن را کامپایل کنید تا مطمئن شوید همه چیز اجرا می کند هموار. شد I در 2 انجام می دهند؟ یا این بود که 1؟ که باید انجام دهید. بسیار خوب. بنابراین این argv را 2 است. این نسخهها کار میکند به عنوان پیش بینی شده، اگر چه این بود که من آن را در انجام دادند؟ بله. OK. این نسخه از همه چیز لازم نیست خط چون printf جدید کنه، اما آن هیچ تغییری ایجاد نشد. OK. بنابراین کار به عنوان انتظار می رود. در حال حاضر ما حتی می توانید از ترکیب این یک گام علاوه بر این، که در آن هشدار، خوب، اول، ما در حال strlen از argv را گرفتن من، و پس از آن ما در حال شمارش هر یک از شخصیت در آن رشته است. بنابراین به جای انجام این کار، اگر ما فقط ترکیب این منطق انتظار تا زمانی که ما ضربه بک اسلش 0 سمت راست به این حلقه؟ بنابراین تکرار در حالی که argv را i و j می کند بک اسلش برابر 0. بنابراین اجازه دهید ابتدا آن را اجرا کنید. بسیار خوب. بنابراین در اینجا، این وضعیت می گوید - اجازه دهید واضح است که. بنابراین در حال حاضر، اجازه دهید این است و argv است. بنابراین، هنگامی که من فقط فرار است که برنامه قبل از، و argv به آرایه ای از رشته ها است. و به این ترتیب، اگر من آن را اجرا کنید با argv را بریده بریده نقطه 2، سلام جهان، پس از آن و argv خود را به طول 3 است، برای argv را صفر، سلام، و جهان است. و در داخل هر یک از این شاخص ها است، خود را یک آرایه، که در آن این می شود نقطه، این خواهد بود که بریده بریده، من نمی دانم در صورتی که در مسیر درست بود، من فکر نمی کنم آن بود. A-R-V فاصله، نیاز به فضای بیشتری. اجازه بدهید به این آرایه را کاهش دهد. A-R-V فاصله 0، و سپس بک اسلش 0. و پس از آن در هم ریخته خواهد شد سلام. اجازه دهید بگویم، H-E بک اسلش 0. و در نهایت، W-O بک اسلش 0. بنابراین الگوریتمی که ما فقط نوشت، تو در تو برای حلقه ها، چه آنها انجام شده است، ما برای اولین بار از این مقابله با من و سپس د. این امر می تواند آسان تر با کد در صفحه نمایش، اجازه بازگشت به این. OK. بنابراین توجه کنید که من تکرارکننده که است تکرار بیش از هر دستور آرگومان خط. و د تکرار تکرار است بیش از هر کاراکتر در آن دستور بحث خط. پس چه است این چون printf درونی در حال انجام است، ما شده اند و argv 0 0، چون printf چون printf و argv 0 1، چون printf و argv 0 2 0 3 0 4 0 5، 0 6، اما در حال حاضر، و argv 0 7 در حال رفتن به بک اسلش برابر 0. پس ما خارج است که برای حلقه، و در حال حاضر من به 1 تکرار. و در حال حاضر ما در حال رفتن به نسخه قابل چاپ و argv 1 0، و argv 1 1 - خوب، در حال حاضر، از من قطع سلام کوتاه، و argv 1 2 دوباره برای رفتن به بک اسلش 0. و به این ترتیب، افزایش من و ادامه، و به همین ترتیب، تا زمانی که ما از چاپ همه جهان، و آن سه خط فرمان استدلال، و ما از خارج از حلقه بیرونی ترین و برنامه ما به پایان برسد. OK. بنابراین اجازه دهید به اینجا آمده است. بنابراین شما برخی از آشنایی با به دست آوردن آرگومان های خط فرمان در این مشکل خاصی تنظیم شده است. در حال حاضر، اشکال زدایی. بنابراین شما احتمالا در حال حاضر تا به حال انجام برخی از اشکال زدایی با قبلی خود مشکل تنظیم شده است. و یکی از راه های بسیار آسان از اشکال زدایی، اول، اجازه دهید نگاهی به یک برنامه حشره دار نگاه کنید. خوب، راه رفتن را از طریق این برنامه، ما قصد داریم به درخواست کاربر برای عدد صحیح، با شتاب که عدد صحیح، و پس از آن، خودسرانه، ما باید یک حلقه در حالی که فقط رفتن به واحد کم میکنیم من تا زمانی که به 10 برابر است. اجازه دهید فرض کنیم من ورود یک عدد صحیح بزرگتر از 10. بنابراین من کم میکنیم تا زمانی که به 10 برابر است. و پس از آن ما باید حلقه در حالی که دیگر است که، در حالی که من برابر نیست 0، ما هستیم رفتن به واحد کم میکنیم من 3. بنابراین اگر شما قصد از اشکال را ببینید در اینجا، این است که این را کم میکنیم من به 10، و پس از آن این حلقه در حالی که اراده کاهش من از 10، 7، 4، 1، به منفی 2، منفی 5، و غیره، تا بی نهایت منفی، از من در واقع هرگز برابر با 0. و سپس در پایان این برنامه، ما باید تابع تولی است که در حال رفتن به نسخه قابل چاپ کردن که من. این یک برنامه کوتاه و بی اهمیت است، و اشکال واضح و روشن است، به خصوص پس از من فقط گفت: چه اشکال بود. اما هدف در اینجا این است، خوب، این ممکن است در واقع مانند برخی از نگاه شما راه حل از حریص از آخرین مشکل تعیین می کنند، و شاید شما مجبور برخی از حلقه بی نهایت را در برنامه خود، و شما هیچ نظری ندارم آنچه در آن باعث. بنابراین یک روش اشکال زدایی بسیار مفید این است که تنها اضافه کردن printfs تمام کد شما. بنابراین در اینجا من می خواهم چون printf در خارج در حالی که حلقه اول است. و در اینجا من می خواهم چون printf، و من فقط من نسخه قابل چاپ. من هم برایتان انجام اولین در حالی که حلقه، من. در خارج، دوم در حالی که حلقه. یک بار دیگر، چاپ در داخل از اینجا، ارزش من. و اجازه دهید این را اجرا کنید. اشکال زدایی بریده بریده بنابراین نقطه. یک عدد صحیح را وارد کنید. اجازه دهید 13. و رونق. ما می بینیم که ما حلقه بی نهایت داخل حلقه در حالی که دوم. بنابراین در حال حاضر ما می دانیم چه اشکال است. اما اشکال زدایی چون printf کاملا بزرگ است، اما هنگامی که برنامه های خود را دریافت کنید طولانی تر و پیچیده تر است، وجود دارد راه حل های پیچیده تر به گرفتن همه چیز کار می کند. بنابراین اجازه دهید حذف تمام این printfs. و اجازه دهید مطمئن شوید من نیست شکستن هر چیزی. OK. بنابراین برنامه ما در حال رفتن معرفی به نام GDB، برای GNU دیباگر. خوب، در واقع، اجازه دهید اشکال زدایی حذف برای دوم، و اشکال زدایی دوباره. خوب، در واقع برای اولین بار، یک درس خوب در آرگومان خط فرمان. توجه داشته باشید که این دستور صدای شیپور است که جمع آوری همه چیز در حال تصویب در خط فرمان، این آرگومان خط فرمان. بنابراین دقیقا چه شما می خواهید به استفاده از آرگومان خط فرمان، به عنوان ما قبل از انجام، و به عنوان شما را در PSET 2، این که چگونه صدا کردن با استفاده از آنها. بنابراین توجه داشته باشید که این پرچم برای اولین بار، خط تیره ggdb3، آنچه که گفته است، صدای جرنگ جرنگ، شما باید این فایل را با کامپایل قصد که ما در نهایت خواهد شد باید آن را اشکال زدایی. بنابراین تا زمانی که شما که پرچم، پس ما می توانیم اشکال زدایی GDB. و آن را به باز کردن دیباگر GNU. بنابراین در بسیاری از دستورات وجود دارد که شما نیاز به استفاده می شود به. اول که شما احتمالا فورا باید اجرا شود. بنابراین آنچه که اجرای کاری انجام دهید؟ آن را به شروع برنامه ما. بنابراین اجرا، با شروع برنامه، برنامه برای یک عدد صحیح، 13 از ما می خواهد. و سپس آن را حلقه بی نهایت را به عنوان انتظار می رود، به جز من حذف printfs، بنابراین ما حتی نمی بینیم که. خارج شده به طور معمول. آه. این امکان وجود دارد که آن پیچیده شده همه راه دور، به - نادیده گرفتن آن است. فرض کنید آن را به خارج شوید به طور معمول. یک پاسخ پیچیده برای این است که وجود دارد. بنابراین در حال حاضر، این بسیار مفید است. پس فقط در حال اجرا برنامه های ما در داخل از این دیباگر به ما در هر کمک نمی کند راه، از ما می تواند فقط انجام می شود نقطه بریده بریده اشکال زدایی از خارج از GDB. پس از یک دستور است که شما احتمالا - و من این را ترک کنید. کنترل-D یا ترک، هر دو کار. بنابراین اجازه دهید آن را باز کنید تا دوباره. دستور دیگری که شما احتمالا فورا می خواهید عادت به شکستن است. پس ما در اصلی در حال حاضر برای شکستن، و پس از آن من توضیح دهید که. خوب، در اینجا ما می بینیم که ما مجموعه ای از یک نقطه انفصال در این خط در debug.c. پس چه معنی استراحت است که زمانی که من نوع اجرا، برنامه در حال رفتن به ادامه در حال اجرا تا من به یک نقطه. بنابراین، هنگامی که من ضربه اجرا، برنامه شروع می شود، و سپس آن را در اسرع وقت آن را می شکند وارد تابع اصلی. فرار از اصلی است که به چیزی شما تقریبا به طور معمول انجام دهد. و در حال حاضر، به شما معرفی به برخی از دستورات است. توجه در اینجا، آن است که گفت ما در خط 11 است که شکست چون printf، وارد یک عدد صحیح. بنابراین دستور بعدی است برای رفتن به چگونه ما به خط کد بعدی بروید. این است که به ما اجازه می دهد تا گام به گام از خط برنامه ما به خط. بنابراین بعد. در حال حاضر خط 12، ما قصد داریم برای دریافت عدد صحیح. بعدی. و اگر شما فقط ضربه را وارد کنید دوباره آن را خواهید ازنو آخرین چیزی که انجام داد. بنابراین من لازم نیست به نوع بعد در هر زمان. بنابراین یک عدد صحیح، 13 را وارد کنید. بنابراین در حال حاضر، خط 14، در حالی که من بیشتر است از 10، و من در کنار انجام دهد. و ما می بینیم که ما در حال رفتن به واحد کم میکنیم من. بنابراین ما قصد داریم به واحد کم میکنیم من دوباره. بنابراین در حال حاضر، یکی دیگر از مفید دستور چاپ است. پس چاپ در حال رفتن به نسخه قابل چاپ کردن مقدار متغیر. اجازه دهید را از ارزش از متغیر من. اجازه دهید من نسخه قابل چاپ. آن را به من می گویند 11 است. در حال حاضر ما بعد دوباره در حالی که من بیشتر از 10 است. پس من هنوز هم بیشتر از 10، از آن 11. من منهای منهای. اجازه دهید دوباره من نسخه قابل چاپ. همانطور که انتظار می رود، آن را 10. بنابراین در حال حاضر، آینده. این بازگشت به شرایط، من است بزرگتر از 10 است، اما من در حال حاضر 10 تا آن را به بیشتر از 10 نیست، بنابراین ما انتظار داریم آن را به خارج از حلقه در حالی که سقوط. و در حال حاضر ما در زیر این خط از کد است. و دستور دیگر، فهرست، فقط رفتن برای نمایش قبلی و بعدی چند خط از کد، در مورد شما خود را از دست داد. بنابراین ما فقط خارج از این حلقه در حالی که، و در حال حاضر ما این وارد در حالی که حلقه، خط 18. بنابراین در حالی که من برابر نیست 0. و، بعد، من برابر من منهای 3، و ما توجه کنید، این فقط ادامه دهم. و ما می توانیم من نسخه قابل چاپ. هر فرمان نوع از کلید های میانبر است. بنابراین ص کوتاه را برای چاپ است. بنابراین ما می توانیم P من. فقط نگه داشتن N نگه دارید، و یا نگه داشتن انجام بعدی. کرده و من. شما در حال حاضر آن را به منفی 167. پس این برای همیشه لطفا برای رفتن، اما نه واقعا برای همیشه، از شما فقط دیدم، آن در واقع در برخی از نقطه پایان خواهد رسید. به طوری که ابتدا GDB. اما اجازه دهید یک چیز بیشتر در GDB. آه، اشکال زدایی. بنابراین، در این مورد خاص، حلقه بی نهایت اتفاق افتاده است به داخل می شود تابع اصلی. و در حال حاضر، فقط شرایط که که من هستم رفتن به حرکت در حلقه بی نهایت را تابع تولی. فقط به یاد داشته باشید که، در پایان این برنامه، خوب، این در اصل تماس تولی، که تنها بود رفتن به چاپ من. اما در حال حاضر ما در حال تماس تولی، که رفتن به واحد کم میکنیم من تا زمانی که آن را به 0، و پس از آن که متغیر را چاپ کنید. OK. را ذخیره کنید. را اشکال زدایی. و در حال حاضر، اشکال زدایی از gdb. OK. بنابراین اگر من فقط اجرای سپس من قصد دارم تا نه قادر به در واقع از طریق گام به گام من برنامه خط به خط. بنابراین اجازه دهید در اصلی شکستن، و پس از آن اجرا تایپ کنید. پس از این برود، چون printf را وارد کنید یک عدد صحیح، دریافت عدد صحیح، 13. بنابراین ما در حال نگه داشتن یک طرح ساده تا زمانی که من بیشتر از 10 است. پس از آن ما قصد داریم از طریق به سقوط در حالی که حلقه، و رسیدن به خط - اجازه دهید آن را به باز کردن در یک پنجره جداگانه. بنابراین ما decremented تا زمانی که من دیگر بود بیشتر از 10، و پس از آن ما به نام تابع، تولی. پس چه در اسرع وقت من ضربه اتفاق افتاد تابع تولی، خوب، من بنام foo، و پس از آن من دیگر هیچ کنترلی بر GDB بود. بنابراین به محض من ضربه بعدی در این خط، همه چیز ادامه داشت تا این اتفاق افتاده است، که در آن برنامه خارج هنگام - فرض آن بود، سرانجام وجود ندارد. شما را دیدم آن را برای کمی مکث هر چند. پس چرا من از دست دادن را کنترل این برنامه که در آن نقطه؟ خوب، وقتی که من نوع بعدی، می رود که به خط بعدی تحت اللفظی از کد که اجرا خواهد شد. بنابراین بعد از خط 21 خط کد بعدی به اجرا در آوردن خط 22 است، است که، خروج از اصلی. بنابراین من نمی خواهم به فقط به به خط بعدی کد. من می خواهم برای رفتن به تابع، تولی، و پس از آن نیز از طریق گام به گام آن خط کد. پس برای که، ما باید یک جایگزین. بیایید ترک که دوباره. فرار از اصلی. آه، 1، بعد، بعدی، 13، بعدی، بعد، بعدی، با دقت، قبل از ما به خط تولی. OK. بنابراین در حال حاضر، ما در خط 21 است، که در آن ما تولی تماس بگیرید. ما نمی خواهیم به نوع بعدی، از آنجا که فقط فراخوانی تابع تولی و رفتن به خط بعدی کد. گام آنچه ما می خواهیم برای استفاده است. پس یک تفاوت بین مرحله وجود دارد و بعد، که در آن گام مراحل را به کار کند، و بعد می رود بیش از تابع. این فقط اجرا تمامیت عملکرد و نگه می دارد رفتن. بنابراین مرحله است که به ما به تابع، تولی. و ما در اینجا مشاهده می کنید، در حال حاضر، ما پشت در است این حلقه در حالی که، در تئوری، رفتن به ادامه برای همیشه لطفا برای. و اگر شما ضربه مرحله، زمانی که آن را حتی یک تابع به تماس، سپس آن را یکسان به بعد. پس از آن تنها زمانی که شما در یک خط هستیم که خواستار یک تابع است که گام در حال رفتن به از بعدی متفاوت است. بنابراین گام ما را به اینجا بیاوریم. گام، گام، گام، گام، گام، گام، و ما فقط یک حلقه بی نهایت برای همیشه لطفا برای. بنابراین شما ممکن است به عنوان استفاده می شود شما راه شناسایی حلقه بی پایان است، فقط نگه داشتن این کلید را وارد کنید ببینید که در آن شما گیر کرده است. راه های بهتر برای انجام این کار وجود دارد، اما در حال حاضر، که کاملا کافی است. و سبک نگارش، به مطابقت با سبک 50، من باید این را انجام داده اند. OK. بنابراین یکی از آخرین دستور را به شما معرفی. خوب، اجازه دهید در اشکال زدایی GDB شوید بنابراین به جای شکستن در اصلی، اگر من می دانیم که تابع تولی است مشکل، پس من می توانم فقط گفت، شکستن در تولی، به جای. اجازه دهید بگویم من در شکستن هر دو اصلی و تولی. بنابراین شما می توانید به عنوان بسیاری از نقاط توقف مجموعه به عنوان شما می خواهید. وقتی که من نوع اجرا، این رفتن برای متوقف کردن در - آه، اجازه دهید آنرا کامپایل مجدد، از سال من همه چیز را تغییر داد. شما این خط، هشدار، منبع را ببینید فایل های اخیر بیشتر از اجرایی است. به طوری که بدان معنی است که من فقط در اینجا رفت و به پیروی از سبک تغییر این 50، اما من آنرا کامپایل مجدد ندارد برنامه. بنابراین GDB من از آن آگاه می سازد. من ترک، را اشکال زدایی دوباره، ضربه اشکال زدایی از gdb. OK. بنابراین در حال حاضر، به آنچه که من انجام شده بود. فرار از اصلی، شکست تولی. اگر من به اجرای برنامه، پس از آن رفتن به ادامه بازدید نقطه. که نقطه انفصال به اتفاق می افتد که یکی از نخستین در اصلی. در حال حاضر، به جای انجام بعدی، بعد، بعدی، بعد، بعدی، تا زمانی که من ضربه تولی، I می توانید نوع ادامه، ادامه خواهد داد که تا زمانی که تو به نقطه انفصال بعدی. من برای اولین بار برای ورود به عدد صحیح است. ادامه ادامه خواهد داد تا زمانی که من ضربه نقطه انفصال بعدی، که این است که عملکرد مواد غذایی. بنابراین اجرای اجرا خواهد شد تا زمانی که شما به یک نقطه انفصال، اما شما فقط اجرا نوع زمانی شما با شروع برنامه، و پس از آن، از آن پس، آن را ادامه خواهد داد. اگر من فقط شکستن های اصلی و پس از آن بود، که آن را در شکستن اصلی، و سپس ادامه دهید. از آنجا که من نقطه شکست در تولی ندارد، را وارد کنید عدد صحیح، پس از آن در حال حاضر من قصد ندارم به شکستن در تولی. این فقط رفتن به بی نهایت حلقه تا زمانی که. OK. به طوری که معرفی به GDB است. شما باید شروع به استفاده از آن در مجموعه مشکل شما. این می تواند بسیار مفید برای شناسایی اشکالات. اگر شما در واقع فقط، خط به خط، به از طریق کد خود را، و مقایسه آنچه است در واقع با آنچه شما انتظار دارند اتفاق می افتد اتفاق می افتد، پس آن را بسیار دشوار به دست اشکالات خود را. OK. بنابراین در هفته گذشته دیوید به ارمغان آورد تا این مسائل رمزنگاری مخفی کلید برای اولین بار، که در آن ما نمی خواهیم کلمه عبور فقط بر روی ذخیره می شود ما کامپیوتر در بعضی از فایل های متنی ساده، که در آن کسی که بیش از و فقط می تواند آن را باز کنید و آنها را بخوانند. در حالت ایده آل، آنها را رمزگذاری می شود در برخی از راه. و در مجموعه مسائل 2، به شما امکان خرید و فروش با یک روش رمزگذاری، و یا، خوب، دو روش، اما آنها آنقدر بزرگ نیست. اگر شما نسخه هکر، شما همچنین رفتن به خرید و فروش با رمزگشایی برخی از چیزهایی. بنابراین این موضوع در حال حاضر، به خوبی، حتی اگر ما باید قوی رمزگذاری الگوریتم در جهان، اگر شما را انتخاب کنید رمز عبور به ویژه فقرا، سپس آن را شما کمک خواهد کرد بسیار زیاد است، از مردم هنوز هم قادر به آن را کشف کردن خواهد بود. حتی اگر دیدن رشته رمز شده و آن را مانند یک ظرف غذا از زباله به نظر می رسد این بدان معناست که چیزی به آنها، در صورتی که هنوز هم فقط نیاز به سعی چند کلمه عبور آن را کشف کردن، و سپس شما بسیار امن نیست. بنابراین تماشای یک ویدیو که باعث می شود آن نقطه است. [پخش ویدئو] کلاه، شما شیطان. چه خبر است؟ شما را چه به دختر من کار می کنی؟ ، اجازه من را به شما معرفی درخشان جراح پلاستیک جوان، دکتر فیلیپ Schlotkin، بزرگترین بینی مرد کار در کل جهان، و بورلی هیلز. ، شما حضرت والا. بینی کار؟ متوجه نمی شوم. او در حال حاضر یک شغل بینی بود. این یک شیرین شانزده حاضر بود. بدون. این چیزی است که شما فکر می کنید نیست. این خیلی، خیلی بدتر است. اگر شما به من ترکیب را به سپر هوا، دکتر Schlotkin خواهد شد است دختر خود را به عقب بینی قدیمی خود را. بدون. که در آن شما را انجام داد؟ همه راست. من می گویم. من می گویم. نه، بابا. خیر، شما باید نیست. -You're راست، عزیز من. I بینی جدید خود را از دست ندهید. اما من او را به ترکیب نگو، بدون توجه به آنچه. -خیلی خوب. دکتر Schlotkin، بدترین شما انجام دهد. ، من لذت بردن. [TOOLS بودن تیز] بدون. صبر کنید. صبر کنید. من می گویم. من می گویم. ، من می دانستم که آن را به کار می کنند. بسیار خوب. آن را به من بده. -ترکیبی است. یک. یک. دو. دو. دو. سه. سه. سه. چهار. چهار. چهار. پنج. پنج. پنج. ، بنابراین ترکیب یک است، دو، سه، چهار، پنج. این احمقانه ترکیبی است من هرگز در زندگی ام شنیده می شود. این نوع از چیزی که ادم سفیه و احمق است را در توشه خود را داشته باشد. ، تشکر از شما، حضرت والا شما. چه کار کردی؟ -I خاموش دیوار. بدون شما انجام نمی شود. شما خاموش فیلم تمام. -I باید دکمه را اشتباه فشار داده اند. خوب، آن را پشت در. قرار دادن فیلم پشت در. بله، آقا. بله، آقا. -بریم، آرنولد. بیا، گرچن. البته، شما می دانید که من هنوز هم باید به شما صورتحساب برای این. [END پخش ویدئو] ROB Boden در: بسیار خوب. پس اکنون که ما در حال حاضر صحبت کردن در مورد امنیت در برخی از روش های، زیبا پوستر فیلم کوچک، پس در اخیر روز، این مسائل با NSA نظارت بر همه چیز است. این می تواند مشکل به مانند شما احساس می کنید نوعی از حریم خصوصی در جهان آنلاین، اگر چه من نمی تواند بگوید شما بیشتر از جزئیات PRISM. بنابراین فراتر از PRISM در حال حرکت، ما نمی به صحبت کردن در مورد آن، در حال حاضر در مورد لپ تاپ شما فکر می کنم. پس تا اینجا، من می خواهم به تغییر دهید به حساب واقعی من، با پنگوئن کوچک من. بنابراین من یک مجموعه ای رمز عبور، و رمز عبور است هر آنچه من می خواهم آن را به. اما به یاد داشته باشید که آنچه من ورود به سیستم با، پس از این وارد سریع، برخی از برنامه است. این برخی از برنامه ای است که بود است نوشته شده توسط برخی از افراد. و به این ترتیب، آن شخص، اگر که آنها هم ویژه های مخرب، آنها می توانند گفته اند، همه حق است، پس اگر رمز عبور که من وارد برابر است با من رمز عبور واقعی، یا آن را برابر به برخی از رمز عبور ویژه - دیوید عالی و یا چیزی است - سپس آنها را اجازه ورود بنابراین یک برنامه نویس های مخرب می تواند داشته باشد دسترسی به تمام مکینتاش خود را، و یا ویندوز، و یا هر چیزی. به طوری که خیلی از نگرانی نیست، از، منظورم این است که، این برنامه وارد است که با OS X، صدها نفر حمل می شود و یا هزاران نفر از مردم داشته باشد بررسی این کد. و به این ترتیب، اگر، در کد خود را در جایی، شما می گویند اگر این رشته را برابر برابر دیوید بسیار جذاب است، ورود به سیستم، پس از آن کسی است برای رفتن به، مانند، صبر کنید. این درست نیست. این امر نه باید اینجا باشد. به طوری که یکی از راه های ما همه چیز را به نوع امن. اما فکر می کنم در مورد برنامه حتی که تو می نویسم. بیایید می گویند شما برنامه وارد نوشت. بنابراین این برنامه وارد است که شما نوشت، بنابراین بدیهی است که، شما خوب برنامه نویس. شما نمی خواهید برای قرار دادن هر گونه مخرب اگر x برابر است با برابر دیوید عالی است را به کد خود را. اما این برنامه، آنچه شما انجام دهد استفاده به کامپایل این برنامه؟ یه چیزی مثل صدای جرنگ جرنگ. پس چه اگر کسی که به اتفاق افتاد ارسال ویژه صدا کردن سربار در صدای جرنگ جرنگ چیزی شبیه به این، اگر I تدوین هستم برای ورود به برنامه، و سپس این کد را وارد کنید به برنامه وارد است که می گوید، اگر X برابر است با برابر دیوید بسیار جذاب است؟ بنابراین نه کاملا رتبهدهی نشده است، اما ما همان موضوع در اینجا، جایی که صدای شیپور، خوب، هزاران نفر، اگر دهها نمی هزار نفر از مردم، در صدای جرنگ جرنگ نگاه کرد، باید در خطوط آن از کد نگاه کرد و گفت، همه حق است، هیچ چیز بد در اینجا وجود دارد. بدیهی است، هیچ کس در حال انجام هر چیزی در این مخرب. اما آنچه که خود را صدای جرنگ جرنگ، مانند، چه می شود اگر من کامپایل صدای جرنگ جرنگ؟ اگر من برخی از کامپایلر که کامپایل صدای جرنگ جرنگ که وارد صدای جرنگ جرنگ این هک ویژه ای است که می گوید، همه حق است، وقتی که من کامپایل صدای جرنگ جرنگ، پس از آن اجرایی من به ویژه باید نگاه در داخل این برنامه وارد و درج این رمز عبور، برابر با برابر دیو بسیار جذاب است؟ بنابراین به یاد داشته باشید که کامپایلر شما خود را نیاز به در برخی از نقطه وارد می شود. بنابراین اگر آنچه که شما انتخاب می کنید برای کامپایل صدای جرنگ جرنگ با، به خودی خود مخرب است، پس شما می توان پیچ کل راه را به پایین خط. بنابراین در اینجا، ما کن تامپسون و دنیس ریچی. بنابراین این یک عکس نمادین است. دنیس ریچی در سمت راست است. او مهم است - تقریبا نوشت C. بنابراین شما می توانید با تشکر از او را برای این کلاس. است کن تامسون در سمت چپ. دو نفر از آنها اساسا نوشت UNIX. خوب، آنها مؤثر بوده بود در UNIX. بودند برخی دیگر وجود دارد. بنابراین کن تامپسون، در برخی از نقطه، او برنده جایزه تورینگ. و جایزه تورینگ، من همیشه شنیده ام آن اشاره شده این راه، آن را به جایزه نوبل علوم کامپیوتر. بنابراین در جایزه تورینگ، او به را سخنرانی او. و او می دهد این سخنرانی بسیار مشهور در حال حاضر، تأملاتی در اعتماد به نام اعتماد، که ما آن را مرتبط به وب سایت البته. و در این سخنرانی، او می گوید، همه حق است، بنابراین من نوشت UNIX، و در حال حاضر همه شما مردم با استفاده از UNIX. در حال حاضر، امروز به یاد داشته باشید که لینوکس است از نوادگان مستقیم از UNIX. OS X به طور مستقیم با استفاده از UNIX. ویندوز بسیار نیست، اما بسیاری از ایده ها را از UNIX گرفته شد. بنابراین او به روی صحنه می رود و می گوید: همه حق است، من UNIX نوشته است. و فقط شما بچه ها می دانید، من هستم قادر به ورود به هر یک واحد از کامپیوتر شما. از آنجا که من یکی از این ویژه اگر x قرار داده برابر برابر کن تامسون بسیار جذاب است، پس از آن من اجازه شوید. بنابراین مردم مانند، خوب، چطور انجام این کار؟ ما در برنامه وارد نگاه و هیچ چیز وجود دارد. او مانند، خوب، من اصلاح کامپایلر برای ورود به برنامه وارد به طوری که در برنامه وارد کن خواهد شد که x برابر است با برابر کن تامپسون عالی است. و آنها می گویند، خوب، این درست نیست. ما به دنبال کامپایلر، و کامپایلر هیچ خط ندارد کد مانند آن. او مثل، OK، اما آنچه شما می باشد کامپایل کامپایلر با؟ و آنها فکر می کنم، و او، مانند، خوب، من کسی هستم که تو رو به این کامپایلر هستم شما با استفاده از کامپایل کامپایلر، بنابراین شما کامپایل کامپایلر، که خود مخرب است، و شکستن این برنامه وارد سایت شوید. بنابراین اساسا، در آن نقطه، وجود دارد هیچ راهی وجود ندارد که شما می توانید در منبع نگاه کد برنامه ورود به سیستم برای دیدن چه چیزی اشتباه است. شما نمی تواند حتی در نگاه کد منبع کامپایلر برای دیدن چه چیزی اشتباه است. شما نیاز به در ماشین نگاه کد باینری واقعی کامپایلر کامپایل برای دیدن، صبر کنید، این خط کد باید در اینجا باشد. اما کن تامپسون آن را در زمان یک گام بیشتر و گفت، خوب، وجود دارد این برنامه ویژه ای است که در واقع به شما کمک کند به عنوان خوانده شده باینری از برنامه ها، و به همین ترتیب اگر کسی که برنامه ای برای استفاده خواندن باینری، آنها را به این نگاه کنید خط کد. او تغییر آن برنامه که می گویند، همه درست است، اگر شما به دنبال در کامپایلر، خود را نشان نمی این خاص مجموعه ای از دودویی. پس شما نیاز دارید که که یک گام بیشتر و اساسا، که می تواند داشته باشد سطوح مختلف گرفته شده غیر مستقیم، و در برخی موارد، هیچ کس در واقع رفتن به چک شود. بنابراین اخلاقی داستان این است، شما رفتن به نوشتن می شود صدای جرنگ جرنگ در این کلاس. شما در حال رفتن به توان با استفاده از بالا رفتن از صدای جرنگ جرنگ زیادی در این کلاس. برای همه شما می دانید، صدای جرنگ جرنگ مخرب است برنامه ای است که تخریب هر برنامه تنها شما تا به حال وارد شده اید. و به شما می رود در آن بسیار شوم توجه داشته باشید، شما در روز چهارشنبه را ببینید. [تشویق حضار] SPEAKER 2: در CS50 بعدی. SPEAKER 3: آیا شما جرات گفت که. شما می توانید این کار را انجام. شما قبل از این انجام داده ایم، شما می توانید این کار را انجام امروز، شما می توانید این کار را فردا. شما انجام شده است ام این سال ها. فقط برو بالا وجود دارد و این کار را. شما می توانید این کار را انجام. [MUSIC پخش]