JASON HIRSCHHORN: خوش آمدید تا هفته سوم، هر کس. ما یک شلوغ اما هیجان انگیز بخش جلوتر از ما. پس اول، چون ما را ساخته اند برخی از پیشرفت با دوره اما ما هنوز بسیاری از آموزش از چپ به کار، من هستم برای نشان دادن شما بچه ها برخی از منابع است که باید ثابت کند که فوق العاده است مفید که شما نه تنها نزدیک شما مجموعه مسائل، بلکه هضم همه مواد ما به شما بچه ها در را سخنرانی ها و شورت و بخش. سپس ما در حال رفتن به صرف اولین 20 25 دقیقه از بخش بیش از رفتن GDB، که شما ممکن است یا نه ممکن است مورد استفاده در این نقطه، اما آن است ابزار فوق العاده مفید خواهد که به شما کمک کند اشکال زدایی برنامه های خود را. بسیاری از شما ممکن است چون printf در استفاده وسط برنامه های خود را به شکل که چه چیزی یک متغیر برابر. GDB است حتی بهتر از printf و به این پیچ نیست تا کد خود را به خاطر شما اجرای آن را در یک فایل اجرایی. پس ما بیش از 10 بیشتر مفید به به شما فرمان برای GDB نیاز دارند، و ما رفتن به تمرین با هم تا در مشکل تنظیم سه و فراتر از آن، شما می تواند GDB برای کمک به دیباگ استفاده کنید برنامه های خود را. و در نهایت، ما قصد داریم به برخی از به مرتب سازی و جستجو الگوریتم که شما در سخنرانی دیدم، و ما رفتن به واقع کد، و نه فقط شبه، اما کد جستجوی دودویی، مرتب سازی حبابی، و انتخاب مرتب سازی بر. بنابراین برای اولین بار، من می خواهم به بر منابع. این فهرست گسترده است، و آن را فونت های کوچکتر چون من تا حد زیادی به حال مناسب در اینجا. اما این نه تنها به شما کمک خواهد کرد، دوباره، با مجموعه مسائل و اطلاعات هضم به شما آموخته، اما قطعا، آمده است زمان مسابقه، این خواهد شد فوق العاده موثر است. پس اول، از جزوات. اگر شما به cs50.net/lectures بروید و به هفته و روز خاص رفته، شما خواهید دید که یادداشت برای هر یک وجود دارد سخنرانی، که به سادگی نمی متن، اما یک نسخه ویرایش شده از آنچه در سخنرانی با کد پوشیده شده بود قطعه و خیلی چیزهای مفید باشد. من به شدت توصیه رفتن بیش از آن. و پس از آن نیز، این کد منبع وجود دارد در دسترس از هر سخنرانی. و دوباره، این اسلاید نیز خواهد بود در دسترس آنلاین در cs50.net/sections این شب. بنابراین دومین شورت می باشد هر هفته که موضوعات تحت پوشش، معمولا 5 تا 15 در طول چند دقیقه. و کسانی که امیدوارم به شما می دهد آغازگر بزرگ در مورد موضوعات مختلف. سوم - و این نام تجاری این جدید است سال - study.cs50.net است. اگر شما آن را چک نمی کند، من به شدت توصیه است که شما انجام این کار. شما دریافت می کنید به انتخاب یک موضوع. ما ده ها تن از موضوعات وجود دارد. بنابراین برای مثال، شما انتخاب کنید توابع. این به شما می دهد برخی از اسلاید و نکاتی در مورد توابع. کسانی که در واقع اسلاید که TFS تشویق در استفاده از ما ارائه شده در بخش. همچنین راهنمایی و ترفندها برای خرید و فروش وجود دارد با توابع، و وجود دارد مشکلات عملی که کمک شما با توابع کار می کنند. ما نیز به شما لینک به کوتاه در را به من بدهید توابع و برابر توابع شده اند تا در سخنرانی آمده است. بنابراین study.cs50.net، با نام تجاری جدید این سال، یک منبع فوق العاده است. بعد، من مرد، که کتابچه دارند دستور است که شما می توانید در اجرا خط فرمان. بنابراین اگر شما هر گونه سوال در مورد دستور، به عنوان مثال، رند، که ما آن را هفته گذشته در بخش مواجه می شوند و شما که به احتمال زیاد در مواجه مشکل خود را تنظیم زمانی که رفتن را از طریق تولید کد، اما اگر شما مرد نوع رند، به شما در صفحه دریافت کنید که همه به شما می گوید در مورد رند. این به شما آنچه در آن طول می کشد، پارامترهای آن را می گیرد، و همچنین بازگشت نوع و شرح مختصر از آن تابع. بنابراین بررسی از رند. این می تواند یک کمی دارای اطناب و گیج کننده است، گاهی اوقات به طوری که پیدا کردن من به سادگی گوگلینگ چه من می خواهم به دانستن است بهترین راه برای پیدا کردن پاسخ. بنابراین با Google تمرین. دریافت خوب در گوگل. آن را تبدیل به بهترین دوست شما. و همچنین گوگل، اگر شما می توانید آن را پیدا کند در گوگل، cs50.net/discuss، آن را انجمن بحث و گفتگو. شانس هستند اگر شما یک سوال، یک از 700 + همسالان خود را نیز دارد که پرسش و ممکن است خواسته اند در حال حاضر در بحث انجمن ها و آن پاسخ داده اند. بنابراین اگر شما یک سوال مشترک یا یک سوال از شما است که شما فکر می کنم شاید افراد دیگر ممکن است به اجرا، اتمام cs50.net/discuss. در نهایت، دو، اگر شما می خواهید صحبت کردن با یک انسان، دفتر واقعی ساعت از دوشنبه تا جمعه. همچنین ساعات اداری آنلاین برای دانش آموزان پسوند. و آخرین اما قطعا نه کم، من، علامت تعجب. همه شما باید اطلاعات تماس با من. اگر شما نیاز به هر چیز، لطفا هرگز دریغ با من تماس بگیرید. همیشه تمایل به انجام این کار. تعداد بسیار کمی از شما من در Gchat اضافه شده اند، به طوری که تا به ناامید کننده بوده است، اما امیدوارم که شما بین تغییر این و بخش بعدی. هر گونه سؤال که تا کنون در منابع؟ بزرگ. در نهایت، پلاگین دیگری برای بازخورد، sayat.me/cs50. شما می توانید به من بازخورد ناشناس را در مورد چگونگی من انجام می دهند. که در هفته گذشته واقعا مفید بود. من یک زن و شوهر از نظر از شما بچه ها رو درست بعد از بخش، به علاوه از دانش آموزان دیگری که آن را تماشا در طول هفته، و آن را فوق العاده مفید بود. من می خواهم به منظور تلاش برای محدود کردن استفاده از من از کلمه "شیرین"، اما نشان خواهم داد من شور و شوق و هیجان از راه های دیگر. اما دیگر اضافی وجود دارد بازخورد اساسی، هر دو علامت + و دلتا. پس لطفا، من به شما بچه ها بازخورد در مجموعه مشکل شما. در صورت تمایل به من بازخورد بدهد در آموزش من. من برای شما بچه ها اینجا هستم. بزرگ. این همه من برای دارند بخش اول. آیا هر کسی هر گونه سوالات تا کنون؟ و من توجه داشته باشید برای مرکز کنترل. دانش آموزان فرمت به من messaged گفت: آنها در حال گرفتن هر گونه صدا نیست، اما از قدرت من به تعمیر. پس امیدوارم، که می شود حل و فصل در مدت کوتاهی. اگر شما در حال مشاهده آنلاین، سلام، اما شما می توانید من را نمی شنوند. پس اول، ما می رویم از طریق GDB بروید. GDB، که من در قبل از آن اشاره کرد، یک ابزار اشکال زدایی است خیلی بهتر از چون printf. بنابراین برای کار با GDB، شما بچه ها، اگر آغاز شده شما می خواهید به باز کردن دستگاه شما و فایل که من به شما ایمیل فرستاده قبل از آن - این فایل نیز خواهد بود آنلاین در دسترس در کمی - و اجرا GDB. / نام فایل. اول، البته، شما باید کامپایل فایل به دلیل GDB فقط کار می کند در فایل های اجرایی. اما اگر شما همیشه می خواهم برای شروع GDB، اولین چیزی که شما باید انجام دهید، شما GDB. / سزار را اجرا کنید. به طوری که از نام این برنامه ما است رفتن به رفتن با آن در حال حاضر. من می خواهم به ارسال را سزار، که به من یک فایل اجرایی را در اینجا به رنگ سبز برجسته. و سپس من قصد دارم برای اجرای GDB. / سزار. و در آنجا شما می باشد. شما می بینید که ما به برخی از متن به من گفتن در مورد نسخه از GDB، به من برخی از اطلاعات گارانتی، و پس از آن ما که سریع تولید ناخالص داخلی، که به نظر می رسد نوعی مانند فرمان ما خط سریع، اما شما ببینید آن را باز پرانتز، GDB، پرانتز بسته. قبل از اینکه ما ادامه و اشکال زدایی این فایل که من به تمام شما ارسال می شود، اجازه دهید نگاه برخی از دستورات مفید بنابراین ما باید حس از آنچه که ما می رویم به پوشش میدهد. این دستورات در اینجا در ذکر شده است منظور که در آن من به طور کلی از آنها استفاده کنید. بنابراین برنامه من در حال اجرا را شروع کنم GBD. / نام برنامه، در این مورد، سزار. و پس از آن اولین چیزی که من انجام 99.9٪ از زمان است نوع استراحت بود. که مجموعه نقطه شکست در اصلی. اساسا، آنچه شما انجام وجود دارد است این برنامه در حال رفتن به توقف در اصلی آن، بنابراین شما می توانید شروع به بررسی آن خط توسط خط، و نه در حال اجرا تمام راه را از طریق. شما می توانید در نقاط مختلف در شکستن کد خود را، اما اصلی است به طور کلی محل خوبی برای شروع. دستور بعدی من اجرا اجرا است. شروع می شود که برنامه در حال اجرا، و اگر شما نیاز به ورود به خط فرمان استدلال، شما آن را اجرا کنید که فرمان. اجرای با استدلال. بنابراین از آنجایی که ما در حال رفتن بیش از یک نسخه از C است که برنامه شما بچه ها نوشت برای pset دو - این، البته، تا به برخی از اشکالات در آن است که امیدوارم ما را پیدا خواهید کرد - ما قصد داریم به اجرا اجرا با برخی از دستور آرگومان خط چون سزار، به شما بچه ها در هر مشکل دانم مجموعه تنظیمات، طول می کشد برخی از آرگومان خط فرمان. زن و شوهر بعد از دستورات، بعدی یکی است که در واقع بعدی نامیده می شود. این یکی هم شما را خط به خط از طریق برنامه های خود را. بنابراین هدف قرار دادن N و سپس وارد کنید شما طول می کشد به خط بعدی، اجرای خط های قبلی است. مرحله نه تنها شما را به خط بعدی، اما آن را شما توابع در داخل طول می کشد. بنابراین اگر شما یک تابع در نوشته اند کد یا خود را اگر شما می خواهید برای کشف به من، به عنوان مثال، شما می توانید برخورد و به جای رفتن به خط بعدی فایلی که قصد دارید از طریق راست در حال حاضر، در واقع شما می خواهید به گام این تابع و کد آن را مشاهده کنید. لیست شما نشان می دهد، در بسیار کاربر پسند فرمت، 10 و یا تا خطوط اطراف که در آن شما در حال حاضر در کد شما می باشد بنابراین شما در واقع می توانید فایل را ببینید به جای اینکه به مبادله عقب و جلو بین دیدگاه های مختلف. چاپ مثل چون printf، به عنوان نام آن پیداست. که به شما نشان می دهد که یک متغیر برابر است. مردم محلی اطلاعات واقعا مفید است. این یک نسخه ویژه چاپ است. اطلاعات مردم محلی را نشان می دهد همه از محلی متغیر، همه آنها را چاپ برای شما که در حال حاضر در دسترس است. بنابراین من به طور کلی، به جای اینکه به چاپ از چهار متغیر که من هستم کنجکاو در مورد اگر من در یک حلقه for، برای کنم به عنوان مثال، من فقط ارسال اطلاعات مردم محلی، و آن را به من چه ضد من من نشان می دهد برابر، و همچنین به عنوان مجموعه ای که من هستم کار در برابر. در نهایت، ادامه خواهد داد. تایپ شکسته شما را متوقف می کند در نقطه شکست. شما می توانید از طریق خط به راه رفتن با آینده و گام به گام. ادامه برنامه اجرا می شود به آینده شما نقطه شکستن و یا تا زمانی که کاملا اگر نقاط استراحت بیشتر وجود دارد. غیر فعال کردن حذف نقطه شکسته اگر شما تصمیم گرفت از شکستن در اصلی بود نامناسب است، شما می خواهید آن را در جایی دیگر. و در نهایت س، ترک، می شود از GDB. پس از این برنامه،. / سزار، ما می رویم را از طریق نگاه در حال حاضر و ما قصد استفاده از GDB برای پیدا کردن اشکالات در این برنامه است. من این برنامه را با فرار زودتر چک 50، و من یک اخم کردم. همه چیز در آن وجود داشت، آن وارد شده، آن را به تصویب بسیاری از آزمون ها، اما برای برخی از دلایل، آن را پنجمین عبور نمی کند آزمون، تبدیل BARFOO، همه کلاه، به E-D-U-I-R-R، همه کلاه، با استفاده از سه به عنوان یک کلید. من بسیار نزدیک است. I کردن با یک نامه است. بنابراین در برخی از اشتباه کوچک در اینجا وجود دارد. من را از طریق کد من نگاه کرد. من می توانم آن شکل نیست. امیدوارم، شما بچه ها می تواند به من کمک کند چهره ای از آنچه این اشکال را دارد. به طوری که خطای ما را جستجو برای. اجازه دهید به GDB حرکت می کند. باز هم، من GDB. / سزار اجرا شود، بنابراین در حال حاضر ما در GDB است. و آنچه که اول چیزی که من باید انجام دهید؟ من فقط وارد شده GDB. کسی به من را خوب دستور را وارد کنید. STUDENT: فرار از اصلی. JASON HIRSCHHORN: فرار از اصلی. فوق العاده است. اجازه دهید به نوع که وارد شما بچه ها می توانید در اینجا تماشا کنید و یا به دنبال همراه بر روی رایانه های خود را. فرار از اصلی، و شما خواهید دید نقطه شکستن در راه اندازی شد - آن را به من می دهد برخی از آدرس حافظه عجیب و غریب، و آن را نیز به من می دهد شماره خط. اگر من به نگاه در این فایل، من که متوجه اصلی در خط 21 اتفاق افتاده است. چه چیزهایی را باید اجرا کرد؟ آیا برنامه من در حال اجرا؟ شماره پس چه باید اجرا کرد؟ STUDENT: اجرای. JASON HIRSCHHORN: اجرای. آیا باید فقط اجرا اجرا شود، یا باید I اضافه کردن برخی چیزهای دیگر در؟ STUDENT: اجرای با این استدلال. JASON HIRSCHHORN: اجرای با استدلال فرمان. و از آنجایی که من برای رفع اشکال یک بسیار خاص مورد، من باید وارد کنید که دستور بحث خط. پس من کار اجرا سه، که، دوباره، خروجی I از ورود به 50 است. شروع برنامه است. ما را از طریق یک زن و شوهر از خطوط بروید. شما هم اکنون خواهید دید که ما در خط 21 است. چگونه من می دانم که ما در خط 21 هستید؟ چرا که اگر شما را به سمت چپ نگاه کنید از پنجره ترمینال من، وجود دارد آن را می گوید خط 21. و این به من، در واقع، کد این است که در خط 21. پس من زودتر misspoke. است بخش اصلی و نه در واقع در خط 21. بخش اصلی یک زن و شوهر از خطوط بالاتر از 21 است. اما در خط 21، که که در آن ما در حال شکستن است. این خط از کد است هنوز اجرا نشده. این مهم است. خط شما را مشاهده نکرده است هنوز اعدام شده اند. این خط کد بعدی است شما در مورد به اجرا هستند. بنابراین خط بعدی، همانطور که شما بچه ها احتمالا با آن آشنا، این است که شرایط بررسی میکند که اگر من وارد یک بحث خط فرمان. و به من، آنچه دوم بخشی از آن انجام می دهند؟ چه به من است؟ STUDENT: تغییر آن را به یک عدد صحیح. JASON HIRSCHHORN: ببخشید؟ STUDENT: این در حال تغییر آرگومان به یک عدد صحیح. JASON HIRSCHHORN: پس به من تغییر ارگ V1 از یک رشته به عدد صحیح. و سپس آنچه را چک؟ STUDENT: اگر یک دوم وجود دارد خط فرمان استدلال، به کنار از در حال اجرا برنامه است. JASON HIRSCHHORN: و چیزی که در نیمه دوم این چک کردن عبارت بولی؟ این بخش اینجا، یک به من؟ STUDENT: اگر آن را منفی است. JASON HIRSCHHORN: مطمئن باشید که چه؟ STUDENT: مطمئن شوید آن را است، در واقع، مثبت است. JASON HIRSCHHORN: دقیقا. این بررسی میکند که اگر آن را منفی، و اگر منفی است، I یک احساس ممکن است خط بعدی می شود به من در کاربر فریاد. بنابراین اجازه دهید پایان رسید برای اجرای این خط. ما که خط دید که شما بچه ها شاید انتظار می رود برای دیدن فریاد در کاربر و پس از بازگشت، به دلیل این خط را اجرا نمی کند. من وارد 3. بنابراین من، در واقع، وارد دو دستور آرگومان خط و 3 است بزرگتر از صفر. بنابراین ما شاهد آن خط، ما اعدام، اما ما قدم نه در داخل اگر وضعیت. بنابراین در حال حاضر، بعدی، می بینم من تنظیم کلید هوشمند برابر به من ارگ V1. به طوری که من ایجاد یک کلید متغیر است. بنابراین اگر من نسخه قابل چاپ کردن کلید در حال حاضر، به دلیل که اجازه می دهد تا شما را به دیدن مقدار داخل متغیر، کلید برابر است با 47. این عجیب است، اما البته، که چون من ندارد اعدام این خط است. بنابراین در حال حاضر اگر من ضربه N، اجرای این خط، و انجام کلیدی چاپ، کلیدی برابر خواهد شد 3، است که آنچه که ما انتظار آن را برابر. بنابراین دوباره، در GDB، خط شما ببینید شما اجرا نشده است. شما باید برای ضربه N یا S یا تعداد از دستورات دیگر را به واقع اجرای این خط. کلید چاپ. در اصلی 3. تا کنون، خیلی خوب است. عبارات متن ساده. اجازه دهید که خط را اجرا کند. من گرفتن یک رشته از کاربر. اجازه دهید در ورود من 50، من وارد BARFOO همه کلاه است، بنابراین این چیزی است که من را وارد کنید. اگر من در حال حاضر متن ساده چاپ کنید. شما آن را برابر با یک رشته است. این برخی از هگزادسیمال عجیب و غریب دیگر به من می دهد تعداد، اما آن را در می کند حقیقت می گویند که رشته من BARFOO است. اگر من می خواستم برای دیدن آنچه که کلید مساوی در این نقطه، چگونه می تواند کلید I را چک کنید؟ STUDENT: کلید چاپ. JASON HIRSCHHORN: کلید چاپ، دقیقا. و در واقع، یک میانبر وجود دارد. اگر شما از تایپ کردن چاپ خسته، شما فقط می توانید نوع P. پس از کلید P می کند دقیقا همان. و دوباره، من آن را برابر با 3. اگر من می خواستم برای پیدا کردن هر دو چه کلیدی و BARFOO برابر در همان زمان اما من از تایپ هر خسته بود یکی از به صورت جداگانه، I می تواند مردم محلی اطلاعات را تایپ کنید. که به من می دهد برابر کلیدی 3. متن ساده برابر BARFOO. همچنین به من این دو چیز عجیب و غریب در بالا، این متغیر i و این متغیر n. کسانی که در واقع موجود در برنامه اصلی من است. ما آنها را مواجه نشده است، اما به عنوان یک پیش نمایش، آن در من برای حلقه وجود داشته باشد. بنابراین در حال حاضر، آنها برابر برخی از عجیب و غریب تعداد زیرا آنها نشده است مقداردهی اولیه نشده است، اما آنها هنوز هم وجود دارد در حافظه، به طوری که آنها فقط مجموعه به برخی از ارزش زباله. اما ما کلیدی را در دشت متن سمت راست وجود دارد. من می خواهم برای اجرای این خط، خط 34، از حلقه for. ما قصد داریم برای پرش به برای حلقه را با ضربه N. و ما در داخل حلقه است. ما در ابتدا چک ما است. و باز هم، این نوع باید نگاه آشنا به شما به خاطر این بود برنامه سزار که نوشته شده بود، اما دوباره، تا به نوعی از اشکال. و در حال حاضر اگر من مردم محلی اطلاعات، چون من در داخل حلقه for، شما خواهید دید که من برابر با صفر است، به عنوان انتظار می رود. این چیزی است که ما آن را به تعیین و مقداردهی اولیه آن را در برای حلقه. نفر برابر 6. این نیز قابل قبول است چون ما راه آن را به strlen از متن ساده. بنابراین من می خواهم به انجام این کار مردم محلی اطلاعات یا چاپ به متغیر اغلب مطمئن شوید که همه چیز همیشه من انتظار دارم آن را برابر. در این مورد، همه چیز است آنچه که من انتظار آن را برابر. بنابراین شروع به حرکت را از طریق اجازه این حلقه. خط من هستم خط 36 است، اگر ساده متن من بیشتر از یک و دشت است متن من کمتر یا Z برابر است. من می دانم که مشکل من این است با اولین من نیست نامه، آن را با نامه دوم است. اگر ما نگاه پشت در ورود به 50، B می رود به E خوب است. من می گیرم و می روم آن را به عنوان A، تغییر، از آن به D. بنابراین نمی چیزی اشتباه است با نامه دوم. من می خواهم به حرکت در یک ثانیه وجود دارد. اما اگر من می خواهم برای بررسی چه ساده متن I در این خاص مساوی مورد، من فکر می کنم باید چه باشد؟ چه باید متن ساده من در این برابر است دور اول از طریق حلقه؟ STUDENT: صفر؟ JASON HIRSCHHORN: متن ساده از من؟ پس از آن باید سرمایه B. است I، البته، برابر با صفر است، اما متن ساده براکت صفر براکت بسته برابر است با B چون رشته ها، به عنوان ما در هفته گذشته را دیدم، می باشد آرایه، بنابراین ما در حال گرفتن اولین کاراکتر از آن. پس دوباره، اگر من از چاپ متنی من، من، در واقع، می توانید از شخصیت B. و این شسته و رفته، درست است؟ من در واقع نه متن ساده I. دارند که یکی از متغیرهای I تنظیم نشده و یا مقداردهی اولیه، اما شما می توانید نسخه قابل چاپ از یک میزبان کامل از همه چیز اگر شما می خواهم به. اما اجازه دهید از طریق حرکت می کند. اگر متن ساده من بیشتر از و است متن I دشت کمتر از یا برابر است با Z، که به وضوح درست است، زیرا ما B. سرمایه من قصد دارم برای اجرای برخی از فرمان بر روی آن. ما که ریاضی دیدم در هفته گذشته، پس ما آن را برای مسلم است که کار می کند سمت راست با توجه به بررسی 50. این آکولاد، یکی از اولین نشان داد که من خروج شد اگر شرط، دوم نشان داد که من خروج از حلقه for. و بنابراین در حال حاضر زمانی که من ضربه بعدی، خواهیم دید ما پشت در دوباره است برای حلقه. ما قصد داریم از طریق برای حلقه دوباره. اجازه دهید در واقع به دومین مرحله تکرار از حلقه for و نوع مردم محلی اطلاعات. بنابراین ما در تکرار دوم هستید از حلقه برای ما. I برابر 1 است که ما انتظار داریم. N برابر 6 است که ما انتظار داریم. کلید برابر با 3 است که ما انتظار داریم. و متن ساده، شما خواهید دید، برابر با EARFOO در حال حاضر، BARFOO نمی شوم چون در تکرار قبلی ما، B بود به یک سرمایه E. تغییر پس ما هستی برای مواجهه با این مشکل، بنابراین این جایی است که ما قصد داریم به شیرجه رفتن به اشکال زدایی. اما آیا هر کسی هر گونه سوال در مورد آنچه که ما تا کنون انجام داده ام؟ فوق العاده است. بنابراین ما در مورد به اجرای این اگر هستید شرایط، براکت متن ساده من بسته براکت بزرگتر از A و متن من ساده کمتر یا Z. برابر اما قبل از من به آن برود، به دلیل این است که در آن من می دانم که خطای من است، من می خواهم به نقطه از متنی I. بنابراین اجازه دهید به چاپ قرار داده است. این کار برابر با شخصیت، به طوری که به نظر می رسد تا کنون، همه به خوبی و خوب است. بنابراین من انتظار دارم این خط در منطق من، این خط باید درست باشد. این یک حرف بزرگ است. اما اگر من ضربه N، ما متوجه است که این خط، در واقع، به اجرا نیست. من شروع به پریدن کرد را به دیگری اگر. چرا این اتفاق افتاد؟ STUDENT: شرایط خود را از آنجا که شما از متن ساده بیشتر است از A، نه مساوی یا بزرگتر از. JASON HIRSCHHORN: پس من متن ساده من بود من بیشتر از A، نه بیشتر است از یا مساوی. بنابراین به وضوح، پایتخت نبود موجب این شرط، و ما انجام دادیم به آن مرحله نیست، و ما انجام دادیم تغییر لازم را انجام دهید. به طوری که آن را، در واقع. من نمیفهمد اشکال من. من می توانم به عقب در فایل منبع رفتن من، آن را تغییر دهید، و به روز رسانی آن و اجرا بررسی 50 دوباره. اما خواهیم دید، فقط برای آموزش است خاطر، اگر من ادامه دهم. اگر دیگری می کند اجرا است یا نه، اما چه جای برابر فرمان است است که تغییر نمی کند. پس این تغییر نه در همه، و اگر من چاپ متن ساده در اینجا، خواهیم دید که رفتن از طریق این حلقه نیست، در واقع، تغییر که شخصیت دوم در همه. این هنوز A. سرمایه پس دوباره، خطای ما debugged. ما متوجه آنجا بود که برخی از منطق از دست رفته. و ما آن را جلوتر از زمان قبل از debugged در واقع اجرای این خط، اما شما را متوجه حال ما فقط ضربه بعدی و پرش به آن دیگری اگر، که بدان معنی است که که اگر شرایط بود درست نیست. ما، در واقع، دریافت در نتیجه ما انتظار می رود. پس ما می توانست باعث شده است، حال ما نبوده است تا دقیق، به نگاه که اگر شرایط و اگر، در واقع بررسی، وضعیت ما باید برای ارزیابی در متن جاری درست است. که برای رفع اشکال این برنامه همه. آیا هر کسی هر گونه سوال؟ چه فرمان می تواند به من ضربه به ترک GDB؟ Q. و سپس من را وادار می شود، حال ترک میکنید؟ بله یا نه. من ضربه بله، و می خواهم که GDB را ترک کنید. به طوری که آغازگر سریع به GDB بود. در واقع، در یک سناریوی واقعی، من این را در ساعات اداری انجام داد. من این برنامه دقیق آن در GDBed ساعات اداری با یک دانش آموز. و اگر ما به بازگشت به دستورات ما شاهد قبل از ما استفاده اصلی شکستن، برای اولین بار چیزی که ما انجام دادیم. ما در اجرا با آرگومان های خط فرمان استفاده می شود، دومین چیزی که ما انجام دادیم. ما استفاده بعدی زیادی به حرکت ما را از طریق خطوط. و دوباره، نسخه کوتاه از بعدی نفر است. که در پرانتز به رنگ خاکستری در اسلاید. ما گام به گام استفاده نمی کند، اما ما نمی لزوما باید برای این مورد. اما ما ممکن است آن را در یک بیت بعد استفاده امروز اگر ما در حال رفع اشکال، برای به عنوان مثال، جستجوی دودویی هنگامی که باینری جستجو در یک جداگانه به نام تابع اما وجود دارد برخی از خطا با آن است. ما در حال رفتن به می خواهم به گام به فراخوان به جستجوی دودویی و در واقع آن را اشکال زدایی. لیست ما از هر دو استفاده نمی کند چرا که ما تا به حال درک خوبی از حس کد ما، اما اگر من آیا می خواهید برای دریافت یک حس کد آنچه که من در اطراف بود، من فقط می تواند لیست استفاده کنید. چاپ ما استفاده می شود، مردم محلی اطلاعات ما مورد استفاده قرار گیرد. ادامه ما نیاز به استفاده از در این مورد، نه که ما نیاز به استفاده از غیر فعال کردن، اما ما استفاده را ترک کنید. باز هم، این 10 فرمان، آنها را تمرین کنید. اگر شما را در درک این 10 فرمان، شما باید برای اشکال زدایی هر مجموعه صدور با GDB. بنابراین ما در مورد به در، دوباره هستید، به معما از بخش امروز، بیش از رفتن این مرتب سازی و جستجو الگوریتم باشد. قبل از اینکه ما این کار را، دوباره، هر گونه سوال، نظرات، نگرانی برای GDB؟ بنابراین همه قصد استفاده از GDB و نه چون printf؟ بنابراین همه، به خاطر ابد در، همه به تکان سمت راست سر خود را در حال حاضر، بنابراین من شما را در ساعات اداری مراجعه کنید و تمام TFS شما را و ببینید آنها می گویند، به من نشان دهد که چگونه به استفاده از GDB، و شما قادر خواهید بود به آنها نشان می دهد، درست است؟ نوع؟ شاید امیدوارم. دانلود. بنابراین ما در حال به حرکت به مرتب سازی و جستجو. شما خواهید دید من یک لیست در حال حاضر طبقه بندی شده اند دارند برای ما، اما است که قصد ندارم به صورت همیشه. بنابراین در مشکل خصوصیات مجموعه مشکل مجموعه سه، شما باید شورت که شما می توانید در واقع تماشا کنید، و آن را از شما می خواهد به تماشای آن فیلم های کوتاه. همچنین در سخنرانی هفته گذشته، ما بیش رفت بسیاری از این الگوریتم ها، پس من هستم رفتن به صرف زمان در کلاس رفتن بیش از این الگوریتم ها دوباره و یا نقاشی تصاویر برای این که چگونه این الگوریتم های کار می کنند. باز هم، که اطلاعات شما می توانید دوباره ساعت سخنرانی، و یا که اطلاعات است فوق العاده در شورت اسیر برای این جستجوها، تمام که در cs50.net در دسترس هستند. بنابراین به جای آن، چیزی است که ما در حال رفتن به انجام شده است ارسال این برنامه ها. ما به یک معنا، یک مدل ذهنی، چگونه کار می کنند، و بنابراین آنچه که ما در حال رفتن برای انجام این کار است که کد آنها را برای واقعی است. ما قصد داریم به نوبه خود است که مدل ذهنی، این تصویر، اگر شما خواهد شد، به کد واقعی. و اگر شما کمی گیج و یا بودند مبهم و مه آلود در مدل ذهنی، من کاملا درک کنید. ما در واقع رفتن به نمی پرش به کد رک و بی پرده. بنابراین در حالی که این اعلان در این اسلاید می پرسد شما به کد جستجوی دودویی، و در واقع، نسخه تکراری از جستجوی دودویی، اولین چیزی که من واقعا می خواهید شما را به انجام است ارسال برخی از شبه. بنابراین شما باید این مدل ذهنی چگونه با این نسخهها کار جستجوی دودویی. نگاهی از یک ورق کاغذ اگر شما یکی به راحتی در دسترس و یا باز کردن ویرایشگر متن، و من می خواهم همه به نوشتن. نگاهی به چهار دقیقه برای نوشتن شبه برای جستجوی دودویی. باز هم، در مورد که مدل ذهنی فکر می کنم. من در اطراف شما می آیند اگر سوالی دارید و ما می توانیم تصویر از قرعه کشی. اما در ابتدا، قبل از شروع برنامه نویسی، من می خواهم به ارسال شبه برای جستجوی دودویی تا زمانی که ما شیرجه رفتن در، ما باید برخی از جهت به جایی که ما باید سر. STUDENT: می توانیم فرض کنیم که ما مجموعه ای از ارزش ما در حال حاضر طبقه بندی شده اند؟ JASON HIRSCHHORN: بنابراین برای جستجوی دودویی به کار - سوال بسیار عالی - شما باید در یک مرتب شده مجموعه ای از ارزش. بنابراین فرض آن کار می کنند. ما به این اسلاید بروید. شما در بنفش تابع را مشاهده کنید اعلام بولی اعضای هیات binary_search است ارزش، ارزش های بین المللی، اعضای هیات N. این باید نگاه آشنا اگر شما در حال حاضر با نزدیک شدن یا بدست خود دست های آلوده با مجموعه ای مشکل است. اما این اعلان تابع شما. باز هم، نباید نیاز به نگرانی در مورد که بسیار در این لحظه. چیزی که من واقعا می خواهم شما را به انجام است را چهار دقیقه به باینری شبه جستجو، و پس از آن خواهیم به بیش از آن به عنوان یک گروه. و من در اطراف خواهد آمد. اگر سوالی دارید، احساس رایگان برای بالا بردن دست خود را. چرا شما دو دقیقه بیشتر نیست برای پایان دادن به شبه؟ من می دانم که این ممکن است به نظر می رسد مسخره است که ما صرف زمان زیادی در چیزی که حتی در واقع در نه C، اما به ویژه برای این تر الگوریتم های چالش انگیز و مشکل مجموعه های است که ما باید به شکل از، با شروع در شبه هیچ گونه نگرانی ندارد در مورد نحو، تنها نگرانی در مورد منطق، فوق العاده موثر است. و به این ترتیب، شما در حال حل دو نمی مشکلات فوق العاده دشوار در یک بار. شما فقط با تمرکز بر منطق، و سپس شما را به نحو حرکت می کند. OK. بیایید شروع رفتن را از طریق شبه. من نوشته شده تا اینجا، باینری شبه جستجو. ما این را بر روی ارسال هیئت مدیره با هم. و یا من آن را ارسال و شما را من دهید من نیاز دارند. بنابراین می تواند به هر کسی من اولین را خط از شبه شما برای جستجوی دودویی را نوشته است؟ بله، آنی؟ STUDENT: در حالی که طول فهرست بزرگتر از صفر است. JASON HIRSCHHORN: در حالی که طول از لیست بزرگتر از صفر. و دوباره، ما می بینیم برخی از C، به دنبال همه چیز نحوی در اینجا. اما بسیاری از این به زبان انگلیسی است. آیا هر کسی هر گونه خط آنها قرار داده پیش از این در خود شبه کد؟ STUDENT: دریافت یک آرایه از اعداد طبقه بندی شده اند. JASON HIRSCHHORN: شما نوشت "دریافت آرایه ای از اعداد مرتب شده است. "پستها در طول اعلان تابع، ما خواهید بود عبور آرایه ای از اعداد طبقه بندی شده اند. STUDENT: [نامفهوم]. JASON HIRSCHHORN: پس ما باید که. اما بله، اگر ما که نیست، ما نیاز به مرتب سازی آرایه ما اعداد، به دلیل جستجوی دودویی تنها در آرایه های طبقه بندی شده اند کار می کند. بنابراین در حالی که طول لیست برابر با صفر، من هستم رفتن به در برخی از آکولاد قرار داده آن را به نگاه کمی بیشتر شبیه C. اما در حالی که، به نظر می رسد به نقشه بر روی یک در حالی که حلقه، بنابراین در داخل این در حالی حلقه ما چه چیزی داریم به نیاز برای جستجوی دودویی انجام دهید؟ شخص دیگری که به من داده نشده است پاسخ رتبهدهی نشده است اما کسی که این را نوشته است؟ STUDENT: برو به وسط لیست. JASON HIRSCHHORN: تام. برو به وسط لیست. و سوال پیگیری، چه کنیم زمانی که ما در هستی وسط لیست؟ STUDENT: آیا بررسی کنید که آیا این شماره شما دنبال آن هستید. JASON HIRSCHHORN: بسیار عالی. برو وسط لیست و بررسی اگر ارزش های ما است وجود دارد - فوق العاده است. آیا هر کسی هر چیزی دیگری که متفاوت از این بود؟ این دقیقا همان سمت راست. اولین چیزی که ما در جستجوی باینری انجام به وسط لیست بروید و چک کنید اگر ارزش های ما است وجود دارد. بنابراین من فرض اگر ارزش های ما است وجود دارد، ما چه کاری انجام دهید؟ STUDENT: ما صفر بازگشت [نامفهوم]. JASON HIRSCHHORN: بله، اگر ما ارزش وجود دارد، ما آن را در بر داشت. بنابراین ما می توانیم برخی از راه بگویم، با این حال این تابع تعریف شده است، ما به کاربر ما آن را در بر داشت. اگر آن وجود ندارد، هر چند، که جایی که این مشکل می شود. بنابراین اگر آن وجود ندارد، یک نفر دیگر که در جستجوی دودویی و یا مشغول به کار بود تا به یک ایده در حال حاضر، ما چه کاری انجام دهید؟ STUDENT: سوال. JASON HIRSCHHORN: بله؟ STUDENT از: آیا آرایه در حال حاضر طبقه بندی شده اند؟ JASON HIRSCHHORN: بله، ما با فرض آرایه در حال حاضر طبقه بندی شده اند. STUDENT: پس شما باید چک کنید اگر ارزش است که شما می بینید بیشتر از است ارزش است که شما می خواهید، شما می تواند حرکت کند به وسط نصف دیگر. JASON HIRSCHHORN: بنابراین اگر وسط فهرست بزرگ تر از آنچه ما است به دنبال، پس ما چه؟ ما حرکت می کند که در آن؟ STUDENT: شما می خواهید را به حرکت به نیمی از این لیست با اعداد کمتر از آن. JASON HIRSCHHORN: پس ما تماس بگیرید که سمت چپ. بنابراین اگر وسط بیشتر است، ما می توانیم جستجو نیمه چپ از لیست. و سپس با جستجو، چه انجام جستجو چیست؟ STUDENT: [نامفهوم]. JASON HIRSCHHORN: ما به میدن. ما در واقع این چیزی که تکرار کنید. ما به عقب از طریق حلقه در حالی که ما. من شما را یکی از آخرین را - دیگری، اگر، متوسط ​​کمتر از آنچه است ما، آنچه که ما در اینجا انجام دهید؟ STUDENT: برو به سمت راست. JASON HIRSCHHORN: جستجو در سمت راست. این به نظر می رسد خوب است، اما کسی باید هر چیزی را که ما ممکن است گم شده و یا هر چیز دیگری که شما را در خود شبه کد؟ بنابراین این چیزی است که ما تا کنون. در حالی که طول لیست بیشتر است از صفر است، ما قصد داریم به به وسط لیست و بررسی کنید که آیا ارزش ما است وجود دارد. اگر وسط بزرگتر است، ما قصد داریم به جستجوی سمت چپ، دیگر در صورتی که وسط است کمتر است، ما قصد داریم برای جستجو در سمت راست. بنابراین ما همه برخی از آشنایی با حال شرایط ما در علوم کامپیوتر استفاده و ابزار ما داشته باشد. اما شما در حال حاضر متوجه ما صحبت کردن به زبان انگلیسی است، اما ما در بر داشت بسیاری از چیزهایی که به نظر می رسید به نقشه بر روی ابزار ما در جعبه ابزار ما برنامه نویسی داشته باشد. پس حق کردن خفاش، ما نه رفتن به واقع کد است. چه ما در اینجا به زبان انگلیسی را ببینید که نقشه به چیزهایی که ما می تواند در C ارسال؟ STUDENT: در حالی که. JASON HIRSCHHORN: در حالی که. پس از این در حالی که حق در اینجا نقشه به چه؟ STUDENT: A حلقه. JASON HIRSCHHORN: A حلقه در حالی که؟ و یا احتمالا، به طور کلی، یک حلقه. ما می خواهیم برای انجام کاری و بیش از بیش. بنابراین ما در حال به کد یک حلقه. و ما در حال حاضر می دانیم، چرا که ما انجام داده ایم این چند بار و ما مقدار زیادی از نمونه های خارج وجود دارد، چگونه در واقع به ارسال این شاخص برای یک حلقه. به طوری که باید بسیار آسان باشد. ما باید قادر به دریافت می شود که به سرعت آغاز شده است. چه چیز دیگری که ما در اینجا مشاهده کنید؟ چه دیگر ساختارهای گرامرهای خاص، همه چیز که ما در C آشنا هستید، ما در حال حاضر یک حس مبتنی بر کردن از گفته های ما استفاده می شود؟ بله، آنا؟ [نامفهوم] فقط شوخی. آنا، پیش بروید. STUDENT: اگر و. JASON HIRSCHHORN: اگر و دیگری - حق در اینجا. پس چه کسانی است؟ STUDENT: اگر بیانیه دیگری. JASON HIRSCHHORN: آره، شرایط، درست است؟ بنابراین ما احتمالا نیاز به ارسال برخی از شرایط. و دوباره، هر چند شاید گیج کننده در اول، ما به طور کلی یک حس کن چگونه برای نوشتن شرایط و نحو برای شرایط. و اگر ما را انجام دهد، ما فقط نگاه کردن به نحو برای شرایط، برش و چسباندن است که، از آنجا که ما می دانیم نیاز به یک شرایط در اینجا. هر چیز دیگر مشاهده می کنیم که نقشه بر روی چیزهایی که ما ممکن است نیاز به انجام در C؟ آره، Aleha؟ STUDENT: این ممکن است آشکار است، تنها با چک کردن اگر ارزش برابر است با چیزی. JASON HIRSCHHORN: پس چگونه بررسی می کنیم و - تا به وسط لیست بروید و بررسی کنید که آیا ارزش ما است وجود دارد؟ چگونه کار می کنیم که در C؟ نحو برای آن چیست؟ STUDENT: برابر، برابر است. JASON HIRSCHHORN: برابر، برابر است. بنابراین این چک است احتمالا به عنوان یک برابر، برابر. بنابراین ما می دانیم که ما نیاز داریم که جایی. و در واقع، تنها در نوشتن آن، ما می بینیم کسانی که همه چیز دیگر. ما قصد داریم که باید برای انجام برخی از عملگرهای مقایسه ای در آن وجود دارد - فوق العاده است. پس از آن در واقع به نظر می رسد، و توسط بزرگ، ما نوشته شده است کلمه از کد C نشده است. اما ما از مدل های ذهنی را کردم از طریق سخنرانی ها و کسانی که شورت. ما شبه کد به عنوان یک گروه نوشت. و در حال حاضر، ما باید 80٪ اگر نه 90٪ از آنچه ما باید انجام دهیم. در حال حاضر، ما فقط نیاز به کد آن، که دوباره است، مشکل غیر جزیی را حل کند. اما حداقل ما در منطق گیر کرده است. حداقل در حال حاضر هنگامی که ما به ساعت اداری به، می توانم بگویم، من می دانم آنچه که من نیاز برای انجام این کار، اما می تواند به شما یادآوری من از نحو؟ و یا حتی اگر ساعات اداری هستند شلوغ، شما می توانید برای نحو گوگل، و نه از بودن در منطق گیر کرده است. و دوباره، به جای تلاش برای حل منطق و مشکلات نحو همه در یک بار، آن است که اغلب بسیار بهتر را به شکستن این دو مشکلات سخت کردن به دو کنترل بیشتر و انجام شبه کد و سپس کد را در C. بنابراین اجازه دهید ببینیم که چه چیزی من برای شبه کد جلوتر از زمان. در حالی که طول لیست بیشتر است از صفر است، در وسط نگاه از لیست. اگر تعداد یافت بازگشت واقعی، دیگری اگر تعداد، جستجو چپ. دیگری اگر تعداد کمتر، جستجو راست، بازگشت کاذب. به طوری که به نظر می رسد تقریبا یکسان اگر نه نزدیک به چیزی است که ما نوشت یکسان. در واقع، تام، چیزی که شما گفت: برای اولین بار، شکستن وسط لیست و اگر تعداد یافت به دو بیانیه در واقع آنچه من انجام داد. من آنها را در ترکیب وجود دارد. من باید به گوش شما اولین بار. به طوری که شبه کد ما است. اگر شما را به حال حاضر می خواهم، متاسفم، به به مشکل اولیه ما عقب. اجازه دهید کد binary.c. پس از نسخه تکراری از پیاده سازی جستجوی دودویی با استفاده از زیر اعلان تابع. و شما لازم نیست که برای کپی کردن آن را فقط رتبهدهی نشده است. من می خواهم برای باز کردن تا حق در اینجا binary.c. بنابراین اعلان تابع وجود دارد در وسط صفحه نمایش. و شما خواهید دید من شبه کد و جو در زمان از دو طرف من، اما تقریبا یکسان به آنچه که ما نوشته است، و قرار است که در را برای شما. بنابراین در حال حاضر، اجازه دهید پنج دقیقه کد این تابع. و دوباره، اگر شما هر گونه سوال، بالا بردن دست خود، اجازه دهید من می دانم، من در سراسر آمده است. STUDENT: [نامفهوم]. JASON HIRSCHHORN: بنابراین من در زمان باینری تعریف جستجو در بالا، در خط 12. این چیزی است که من برای اسلاید من است. و سپس تمام این شبه کد من فقط کپی و جا به جا از اسلاید، اسلاید شبه کد. من هنوز دادرسی نیست [نامفهوم]. بنابراین اگر شما به پایان رسید شما اجرای، من می خواهم به آن را بررسی کنید. من فایل helpers.h شما ایمیل فرستاده شده پیش از آن در این کلاس. و آن را به صورت آنلاین در دسترس به عنوان به خوبی می شود دانلود برای تماشای مردم در این زمان بخش به تعویق افتاد. و من فقط با استفاده از توزیع عمومی کد از pset3. بنابراین من در زمان find.C، استفاده از فایل helpers.h من به جای فایل helpers.h که در کد توزیع شده است. و من تا به حال برای ایجاد یک تغییر دیگر در find.C به جای تماس فقط به سادگی جستجو، تماس binary_search. بنابراین اگر شما می خواهید برای تست کد خود را، می دانیم که این است که چگونه آن را انجام دهد. در واقع، زمانی که ما خواهید بود اجرای این کد در حال حاضر، من فقط ساخته شده است یک کپی از دایرکتوری pset3 من، دوباره، جابجا کردن فایل یاران و پس از آن ساخته شده است که تغییر در find.C به binary_search تماس بگیرید نه به سادگی جستجو کنید. JASON HIRSCHHORN: بله. شما سوالی دارید؟ STUDENT: بی خیال. JASON HIRSCHHORN: بدون نگرانی. خوب، اجازه دهید شروع کنید. ما این را به عنوان یک گروه کد خواهد شد. یک نکته دیگر. باز هم، این است، می تواند به راحتی تعویض شود در برای مجموعه مسائل سه. من فایل helpers.h من که نه از helpers.h ما داده می شود، اعلام جستجوی دودویی، حباب مرتب کردن بر اساس، و انتخاب مرتب سازی بر. و در find.c شما متوجه در خط، چه شده است که، خط 68، ما باینری تماس بگیرید جستجو به جای جستجو. پس دوباره، کد است که در دسترس آنلاین و یا کدی که شما می ایجاد در حال حاضر می تواند به راحتی تعویض در برای P مجموعه 3 آن را چک کنید. اما در ابتدا، اجازه دهید کد جستجوی دودویی. اعلان تابع ما، ما بازگشت بولی. ما را یک عدد صحیح نامیده می شود ارزش. ما یک آرایه از اعداد صحیح به نام ارزش ها، و ما را N می شود اندازه آرایه. در خط 10، در اینجا، من SHARP شامل stdbool.h. آیا کسی می داند چرا که وجود دارد؟ پس چه چیزی است که خط از کد انجام دهید؟ STUDENT: این برنامه به شما اجازه می دهد تا به استفاده از یک نوع بازگشت بولی. JASON HIRSCHHORN: دقیقا. STUDENT: یا آن را یک کتابخانه است که اجازه می دهد تا برای استفاده از یک نوع بازگشت بولی. JASON HIRSCHHORN: پس SHARP شامل خط stdbool.h به من می دهد برخی از تعریف ها و اعلان برای همه چیز که به من اجازه استفاده در این کتابخانه. بنابراین در میان کسانی که می گوید وجود دارد که این نوع به نام بولی، و می توان آن را درست یا نادرست. پس این چیزی است که خط می کند. و اگر من که خط ندارد، من می خواهم دردسر برای نوشتن این کلمه حق در اینجا، بولی، سمت راست وجود دارد. دقیقا درست است. بنابراین من باید که در این کد. OK. پس از این، دوباره، تکرار شونده نسخه است و نه بازگشتی. بنابراین، بیایید آغاز شده است. بیایید با اولین بار از این شروع خط از کد شبه. و امیدوارم، ما - یا نه امیدوارم. ما قصد داریم به اطراف اتاق بروید. ما خط به خط، و من کمک خواهد کرد شما از شکل خط است که ما نیاز برای نوشتن اولین. بنابراین در حالی که طول لیست بزرگتر از صفر است. بیایید در مقابل شروع می شود. چه خط باید ارسال I در اینجا، در کد؟ STUDENT: در حالی که پرانتز N بزرگتر از 0 باشد. JASON HIRSCHHORN: در حالی که N بزرگ تر از 0 است. بنابراین نفر به اندازه یک لیست است، و ما در حال چک کردن اگر - [INTERPOSING صداهای] JASON HIRSCHHORN: - متاسفم؟ STUDENT: چگونه ما می دانیم که N به اندازه لیست باشد؟ JASON HIRSCHHORN: متاسفم. در طول مشخصات pset، جستجو و مرتب سازی بر توابع شما نیاز به ارسال، n اندازه از لیست می باشد. من را فراموش کرده به توضیح است که در اینجا. اما بله. N به اندازه است لیست، در این مورد. بنابراین در حالی که N بزرگتر از 0 باشد. OK. که ممکن است کمی مشکل ساز هر چند، اگر به. از آنجا که ما ادامه خواهد داد به دانستن اندازه این فهرست در سراسر این تابع، اما می گویند که ما شروع کردن با آرایه ای از اعداد صحیح 5. و ما از طریق رفتن و ما هم اکنون آن را به پایین تنگ شده آرایه ای از اعداد صحیح 2. که 2 عدد صحیح است؟ اندازه 2 در حال حاضر که ما به خواهید در نگاه کنید، اما آن 2 است که؟ آیا این را حس، این سوال؟ OK. من دوباره آن را بپرسید. بنابراین ما شروع به بازی با این مجموعه ای از 5 اعداد صحیح و n برابر با 5، درست است؟ ما از اینجا اجرا کنید. ما احتمالا به اندازه تغییر، راست، به عنوان چیز در بروید. که چیزی است که ما می گویند که ما می خواهیم انجام دهیم. ما نمی خواهیم برای جستجو چیزی که کامل است. بنابراین می گویند که ما آن را به 2 تغییر دهید. ما نیمی از لیست است که عجیب و غریب. پس فقط انتخاب کنید 2. بنابراین در حال حاضر N برابر است با 2. I برای فقرا معذرت خواهی خشک نشانگر پاک کردن. درست است؟ و ما از طریق جستجو در فهرست دوباره با یک لیست از اندازه 2. خوب، آرایه ما هنوز به اندازه 5. ما می گویند که ما فقط می خواهید جستجو 2 لکه در آن است. بنابراین که 2 نقاط کسانی هستند؟ آیا این را حس؟ آیا آنها 2 نقاط سمت چپ؟ آیا آنها حق 2 لکه؟ آیا آنها 2 نقاط وسط؟ ما شکسته اند این مشکل را، اما ما در واقع نمی دانم که بخشی از مشکل ما هنوز در به دنبال، تنها با داشتن این 2 متغیر. بنابراین ما نیاز به یک کمی پس از آن بیشتر، در حالی که N بزرگتر از 0 باشد. ما نیاز به دانستن که در آن است که n در آرایه واقعی ما است. بنابراین کسی که یک تغییر در این خط؟ بسیاری از این خط است کاملا درست است. آیا علاوه بر دیگری وجود دارد؟ آیا ما می توانیم مبادله چیزی برای n به ساخت این خط کمی بهتر؟ MM-HM؟ STUDENT: آیا می توانم یک متغیر را مقداردهی اولیه طول مدت به N است که پس از آن مورد استفاده قرار گیرد بعد از آن در تابع؟ JASON HIRSCHHORN: پس مقداردهی اولیه طول متغیر به n، و ما استفاده از آن بعد از آن؟ اما پس از آن ما فقط طول و ما به روز رسانی هنوز هم به این مشکل اجرا که در آن ما کاهش طول مشکل ما، اما ما هرگز، می دانم که در آن در واقع، طول نقشه ها بر روی. STUDENT: آیا این اتفاق می افتد بعد زمانی که شما می گویید، جستجو به سمت چپ، جستجوی درست است؟ شما در حال رفتن به رفتن به مختلف منطقه خود را - JASON HIRSCHHORN: ما قصد داریم به به منطقه، اما چگونه ما می دانیم که برای رفتن به؟ اگر ما فقط آرایه و این را N، چگونه ما می دانیم که در آن به به در آرایه. در پشت، بله؟ STUDENT: آیا شما، مانند، پایین تر محدود و متغیر حد بالا یا چیزی شبیه به آن؟ JASON HIRSCHHORN: OK. بنابراین این ایده دیگری است. و نه تنها پیگیری اندازه، ما پیگیری پایین تر و متغیر حد بالا. بنابراین ما چگونه محاسبه اندازه از حد بالا و پایین محدود؟ [INTERPOSING صداهای] JASON HIRSCHHORN: تفریق. و نیز پیگیری پایین محدود و محدود بالا به ما اطلاع دهید، ما در جستجوی این دو؟ آیا ما در جستجوی این دو بیش از اینجا؟ آیا ما جستجو در دو وسط؟ احتمالا نه دو وسط است، چرا که این، در واقع، جستجوی دودویی است. اما در حال حاضر ما قادر خواهید بود برای به دست آوردن اندازه، بلکه از محدودیت های آرایه. در واقع، اگر ما غول ما دفترچه تلفن، ما آن را تبدیل به نصف. ما اکنون می دانیم که در آن است که کوچکتر دفترچه تلفن است. اما ما در واقع تبدیل نمی دفترچه تلفن در نیم. ما هنوز هم باید بدانید که در آن مرزهای جدید از مشکل ما است. آیا هر کسی هر گونه سوال در مورد آن؟ بله؟ STUDENT: آیا آن را با ایجاد کار متغیر، من، که بعد از آن شما فقط تغییر موقعیت من نسبت به آن موقعیت فعلی، و طول، N؟ JASON HIRSCHHORN: و آنچه من می باشد؟ STUDENT: مثل من که مثل نوعی - مثل وقتی که مقدار دهی اولیه من می شود موقعیت وسط آرایه. و پس از آن، اگر مقدار در موقعیت من در وسط آرایه را در بر داشت به کمتر از ارزش شما نیاز دارید، من در حال حاضر طول آرایه می شود، به علاوه ارزش من تقسیم بر 2. مانند، نگاه کنید، شما تغییر من - JASON HIRSCHHORN: راست. STUDENT: - تا - JASON HIRSCHHORN: بنابراین من تقریبا هستم مثبت است که کار خواهد کرد. اما نکته، شما نیاز به دو قطعه از اطلاعات را در اینجا. شما می توانید آن را با شروع و پایان کار، یا شما می توانید آن را با اندازه انجام، و پس از آن برخی از نشانگر. اما شما نیاز به دو قطعه اطلاعات در اینجا. شما نمی توانید با تنها با یک دریافت کنید. آیا این را حس می کند؟ بنابراین ما قصد داریم از طریق رفتن، و ما قصد داریم برای انجام [نامفهوم] و ایجاد برخی از نشانگر. بنابراین what'd شما در کد خود را بنویسید؟ STUDENT: من فقط گفت بین المللی محدود یکی از برابر با 0 است. JASON HIRSCHHORN: بیایید تماس بگیرید که int، آغاز شده است. STUDENT: OK. JASON HIRSCHHORN: که باعث می شود حس برای من. و؟ STUDENT: من گفتم، من حدس می زنم، اعضای هیات پایان دادن به. JASON HIRSCHHORN: اعضای هیات پایان دادن به. STUDENT: من حدس می زنم، n منهای 1، و یا چیزی شبیه به آن. مانند، آخرین عنصر. JASON HIRSCHHORN: بنابراین شما نوشت، اعضای هیات آغاز برابر 0 و نقطه و ویرگول و بین المللی پایان برابر N منهای 1، نقطه و ویرگول بدین. بنابراین اساسا، آنچه که ما در حال انجام در اینجا، 0 مقام اول. و در حالی که در آرایه می دانیم، آنها نمی رویم تا N، آنها را به n منهای 1 بروید. بنابراین ما باید برخی از مرزهای آرایه است. و این مرزهای اولیه اتفاق می افتد از مرزهای اولیه مشکل ما. OK. به طوری که برای تلفن های موبایل خوب است. سپس اگر ما به بازگشت به این خط، در حالی که طول لیست بزرگتر از 0 باشد، چه، به جای N، باید ما در اینجا قرار داده است؟ STUDENT: نوشتن پایان دادن به آغاز منهای. JASON HIRSCHHORN: در حالی که پایان دادن به منفی شروع بزرگتر از 0 باشد؟ OK. و ما می توانیم، اگر ما به خواست را که کمی بهتر است، چه چیز دیگری می تواند ما را انجام دهید؟ اگر ما می خواستیم برای تمیز کردن این کد رو کمی؟ چگونه میتوان از 0 خلاص شوید؟ این فقط یک سوال سبک است. در حال حاضر آن صحیح است. STUDENT: پایان ندارد آغاز یکسان است؟ JASON HIRSCHHORN: ما می توانیم چه کاری انجام دهید؟ [INTERPOSING صداهای] STUDENT: پایان دادن به بزرگتر است؟ JASON HIRSCHHORN: آره. ما فقط می توانید انجام دهید در حالی که پایان دادن به بیشتر از آغاز است. راست. ما شروع به سمت دیگر اضافه شده از آن، و ما از 0 خلاص شدند. بنابراین این فقط به نظر می رسد پاک کننده کمی. OK. بنابراین، در حالی که طول لیست 0 است، ما نوشت است که، در حالی که پایان دادن به بزرگتر است از آغاز. ما قصد داریم تا در ضروری ما قرار داده است آکولاد، و پس از آن اولین چیزی که ما می خواهیم انجام دهیم این است نگاه آنها را در یک لیست کوچک. شما؟ آیا می توانید به من بدهید - STUDENT: اگر پرانتز ارزش براکت - JASON HIRSCHHORN: اگر پرانتز ارزش براکت مربع است. STUDENT: پایان دادن به تقسیم بر 2. JASON HIRSCHHORN: پایان دادن به؟ STUDENT: من یک مشکل با خود را ببینید - JASON HIRSCHHORN: OK. خوب، در وسط نگاه کنید. چگونه ما می دانیم که چه چیزی وسط است؟ آره. پس اجازه دهید که کد را حذف کنید. چگونه ما می دانیم که چه چیزی وسط است؟ در هر چیزی، هنگامی که شما به آغاز و در پایان، چگونه می توانم به شما در پیدا کردن وسط؟ STUDENT: شما به طور متوسط. STUDENT: شما آنها را اضافه کنید با هم و پس از آن - JASON HIRSCHHORN: اضافه کردن آنها با هم و سپس؟ STUDENT: و شما به طور متوسط. آن را تقسیم بر 2. JASON HIRSCHHORN: اضافه کردن آنها با هم و تقسیم بر 2. بنابراین وسط بین المللی برابر است با؟ تام، شما می توانید آن را به من بدهید؟ STUDENT: آغاز به علاوه پایان دادن به - JASON HIRSCHHORN: آغاز به علاوه پایان دادن به. STUDENT: همه، براکت، تقسیم بر 2. JASON HIRSCHHORN: همه، در پرانتز، تقسیم بر 2. به طوری که در وسط به من می دهد از هر چیز، درست است؟ STUDENT: شما همچنین باید آن را دور تا. JASON HIRSCHHORN: چه می کنید؟ به این معنی، من باید آن را دور تا؟ [INTERPOSING صداهای] STUDENT: از آنجا که اگر این فرد تعداد، سپس آن را مانند است - JASON HIRSCHHORN: خوب، OK. بنابراین من می تواند آن را تا دور. اما اگر آن را به عدد فرد، 5 است، من می توانم مصرف 1 به دور از عمق. یا اگر آن را حتی یک عدد، به جای، که یک مورد بهتر است. اگر آن را 4، ما فقط 4 دارم و می توانم را اولین "متوسط"، نقل قول، نقل قول را تمام کردن و یا دوم یک "متوسط". در هر دو صورت برای یک جستجوی دودویی کار، بنابراین من در واقع نه باید آن را دور. اما یک چیزی که من دیگر وجود دارد باید در این خط نگاه کنید. ما ممکن است آن را متوجه نشده است، اما ما به آن می آیند. از آنجا که این خط در واقع هنوز هم باید یک چیز دیگر. اما تا کنون، ما نوشته شده است چهار خط کد. ما ابتدا ما رو و پایان دادن به استفاده از نشانگر. ما حلقه در حالی که ما، که نقشه ها در به طور مستقیم به شبه ما. ما به دنبال در وسط است که نقشه ها طور مستقیم بر روی شبه ما. من می خواهم بگویم این می رود به وسط از لیست، این خط از کد. و پس از آن، زمانی که ما به وسط بروید لیست، چیزی که بعد از ما باید انجام دهیم است بررسی کنید که آیا ارزش ما است وجود دارد برای شبه که قبلا نوشتم. پس چگونه بررسی می کنیم اگر ارزش های ما در وسط لیست؟ شما. چرا شما این کار؟ STUDENT: اگر ارزش های ما است در وسط برابر است با هر آنچه که ما مجموعه - منظور من برابر با برابر - JASON HIRSCHHORN: این - OK. STUDENT: من مطمئن هستم که چه متغیر ما به دنبال برای هر چند، به دلیل است که - [INTERPOSING صداهای] STUDENT: [نامفهوم]. JASON HIRSCHHORN: دقیقا. در اعلان تابع، ما به دنبال یک ارزش. بنابراین ما به دنبال ارزش در مجموعه ای از ارزش ها. بنابراین شما دقیقا حق با شماست. شما را انجام خواهد داد، اگر ارزش پرانتز باز براکت وسط بسته برابر براکت برابر است با ارزش، و در داخل وجود دارد ما چه باید انجام دهید؟ اگر ارزش های ما وجود دارد، چه ما نیاز به انجام این کار؟ [INTERPOSING صداهای] STUDENT: بازگشت به صفر. JASON HIRSCHHORN: بازگشت درست است. STUDENT: بازگشت درست است. JASON HIRSCHHORN: مایکل، چه این خط انجام دهید؟ STUDENT: [نامفهوم] برنامه را اجرا کرده است البته آن، و است که بیش از، و شما باید آنچه شما باید انجام دهید؟ JASON HIRSCHHORN: این برنامه و یا چه؟ در این مورد؟ STUDENT: تابع. JASON HIRSCHHORN: تابع. و به این ترتیب، به بازگشت به هر نام آن و آن را به ارزش، درست است. دقیقا درست است. اصلی. نوع بازگشت چیست از اصلی، مایکل؟ STUDENT: عدد صحیح، عدد صحیح؟ JASON HIRSCHHORN: هوشمند، دقیقا. یک عدد صحیح. این تنها یک سوال مطمئن شوید بود شما بچه ها شده اند در بالای آن بوده است. چه معمولا و در صورت همه چیز خوب کار کرده؟ STUDENT: صفر. JASON HIRSCHHORN: صفر. دقیقا درست است. STUDENT: اگر فقط می گرداند درست است، هیچ اطلاعات که داده وجود دارد در مورد آنچه که - اوه، این است که فقط گفت که که ارزش در داخل آرایه است. JASON HIRSCHHORN: دقیقا. این برنامه اطلاعات دادن نیست از جایی که دقیقا ارزش است. این کرد و گفت: بله، ما در بر داشت آن، و یا نه، ما آن را پیدا کند. بنابراین اگر تعداد یافت، به راست. خوب، در واقع ما فقط کار را انجام داد واقعا به سرعت با یک خط از کد. پس من که خط از شبه حرکت می کند. STUDENT: آیا ما آرایه را تغییر دهید؟ باید ارزش ها، نه ارزش باشد، درست است؟ JASON HIRSCHHORN: متاسفم. متشکرم. STUDENT: آره. JASON HIRSCHHORN: این خط باید ارزش باشد. دقیقا درست است. OK. بنابراین ما در لیست وسط نگاه کرد. اگر تعداد یافت بازگشت درست است. در ادامه با شبه ما، اگر متوسط ​​بیشتر است، جستجو به سمت چپ. بنابراین من در اینجا اگر به حال، تعداد بالاتر، جستجو به سمت چپ. کنستانتین، می تواند به شما بدهد من این خط از کد؟ STUDENT: اگر ارزش متوسط ​​- JASON HIRSCHHORN: بنابراین اگر ارزش - اگر پرانتز باز ارزش براکت براکت نزدیک وسط - STUDENT: کمتر از ارزش است؟ JASON HIRSCHHORN: کمتر از است. STUDENT: کمتر از مقدار است. JASON HIRSCHHORN: ارزش. خوب، در واقع، شما می خواهید چک کردن شماره - متأسفم. این است که کمی گیج کننده است. اما دیگر در صورتی که شماره در وسط لیست بیشتر است. STUDENT: اوه، OK. JASON HIRSCHHORN: من را تغییر دهد. دیگری اگر متوسط ​​بالاتر است، ما می خواهید برای جستجو به سمت چپ OK؟ و ما چه در داخل این اگر شرایط؟ STUDENT: آیا من می توانم ایجاد یک تغییر کوچک به شرایط، آن را تغییر دهید به دیگری اگر؟ JASON HIRSCHHORN: اگر دیگری؟ OK. بنابراین این کد را اجرا خواهد کرد در مورد همان. اما نکته خوب در مورد استفاده از اگر، دیگری اگر، اگر دیگری و یا اگر، اگر دیگری، دیگری بدان معنی است که تنها یکی از آن است که رفتن به بررسی خواهد شد، نه همه سه تن از آنها، به طور بالقوه. و که آن را کمی می کند بهتر است در کامپیوتر است که در حال اجرا برنامه های خود را. پس [؟ کنستانتین،؟] ما در داخل این خط اگر ارزش هستید، دیگر، براکت وسط براکت نزدیک بیشتر از ارزش است. چه ما باید انجام دهیم؟ ما نیاز به جستجو در سمت چپ. ما چگونه انجام این کار؟ من قصد دارم به شما یک شروع است. ما باید این دو چیز را به نام شروع و پایان دادن به. بنابراین آنچه باید اتفاق می افتد برای شروع؟ اگر شما می خواهید برای جستجو در سمت چپ لیست، ما ابتدا در حال حاضر ما دریافت کنید. چه ما باید آن را انجام دهید؟ STUDENT: ما مجموعه ای از آغاز به وسط به علاوه 1. JASON HIRSCHHORN: بنابراین اگر ما جستجو در سمت چپ؟ STUDENT: با عرض پوزش، منهای متوسط ​​- تا پایان خواهد بود وسط منهای 1 و آغاز - JASON HIRSCHHORN: و چه به ابتدای اتفاقی می افتد؟ STUDENT: این همان باقی می ماند. JASON HIRSCHHORN: پس معنای ثابت می ماند. اگر ما در جستجوی سمت چپ، ما هستیم با استفاده از همان ابتدا همان - دقیقا درست است. و پایان دادن به؟ با عرض پوزش، چه پایان دادن به مساوی دوباره؟ STUDENT: منهای میانه 1. JASON HIRSCHHORN: منهای میانه 1. در حال حاضر، به همین دلیل منهای 1، نه فقط وسط؟ STUDENT: وسط است از تصویری که از قبل، چرا که ما به حال بررسی می شود که این از؟ JASON HIRSCHHORN: که دقیقا درست است. وسط است از تصویر. ما در حال حاضر بررسی می شود وسط. بنابراین ما نمی خواهیم که "در عمق" اعلان نقل قول را تمام کردن، برای ادامه به در است مجموعه ای که ما دنبال آن هستید. بنابراین این فوق العاده است. دیگری اگر ارزش براکت متوسط ​​بیشتر است از ارزش پایان دادن به برابر منهای متوسط ​​1. جف، چه در مورد این خط آخر؟ STUDENT: کس دیگری. ارزش متوسط ​​کمتر از ارزش است؟ JASON HIRSCHHORN: ما شما به من دادن دیگری. بنابراین اگر شما به من نمی دهد - STUDENT: پس از شروع خواهد بود به علاوه وسط 1. JASON HIRSCHHORN: آغاز برابر به علاوه وسط 1، دوباره، برای همین همین دلیل است که کنستانتین ما به پیش از آن. و در پایان، که داده نشده است من یک خط کد است؟ بازگشت کاذب، Aleha، چه ما در اینجا ارسال؟ STUDENT: بازگشت نادرست است. JASON HIRSCHHORN: بازگشت نادرست است. و ما باید انجام دهیم این است که، چرا که اگر ما آن را پیدا کنید، ما نیاز به گفتن ما آن را پیدا کند. و ما گفت: ما قصد داریم برای بازگشت به بولی، بنابراین ما قطعا به بازگشت جایی بولی. بنابراین اجازه دهید این کد را اجرا کنید. من می خواهم - بنابراین ما در ترمینال هستند. ما پنجره ما را روشن. بیایید همه. ما در بر داشت یک خطا وجود دارد. یک خطا در خط 15، انتظار می رود وجود دارد نقطه و ویرگول در پایان از بیانیه. پس آنچه که من را فراموش کردید؟ STUDENT: نقطه ویرگول. JASON HIRSCHHORN: نقطه ویرگول تا حق در اینجا. من فکر می کنم که کد تام بود. تام، [نامفهوم]. فقط شوخی. اجازه دهید کار را تمام کنید. STUDENT: چه دایرکتوری در Dropbox ما باید در این باشد؟ JASON HIRSCHHORN: بنابراین شما می توانید فقط برای این بیت را تماشا کنید. اما باز هم، اگر شما می خواهید به حرکت در این کد را در دایرکتوری pset3 خود را به تلاش آن را، این چیزی است که من انجام داد. اگر شما در اینجا خواهید دید - با عرض پوزش، سوال خوبی است. [؟ LS،؟] من در اینجا کد find.c از کد توزیع این هفته. من helpers.h. من یک فایل را که من در واقع ویرایش یک مقدار شامل این جدید فایل های ما در حال نوشتن. همه از آن کد های موجود، نخواهد بود کد توزیع است، اما تازه مطمئن فایل، فایل helpers.h های جدید خواهد شد در دسترس آنلاین دانلود شود. باز هم، تا آن ها کدهای اضافی ما. پس همه را، در این خط، باعث می شود پیدا، باینری، انتخاب حباب - می سازد هر سه آنها و جمع آوری به این پیدا کردن کد اجرایی. بنابراین به طور کلی، ما نمی خواهیم به مستقیما به check50. ما می خواهیم برای اجرای برخی از آزمایشات در خود ما است. اما فقط تا ما می توانیم این بیت تسریع، check50 2013 pset3.find خواهد شد در helpers.c-- بد من. من که در حال حاضر ندارد. بنابراین ما در واقع رفتن به اجرای کد برای واقعی است. Usage.find /، شما می دانید که چه معناست؟ STUDENT: شما نیاز به یک دوم خط فرمان بر روی آن. JASON HIRSCHHORN: من نیاز خط فرمان دوم. و در خصوصیات، نیاز دارم برای ورود به آنچه که ما دنبال آن هستید. بنابراین اجازه دهید برای 42 نگاه کنید. ما آن را در مرتب نگه دارید، زیرا ما یک تابع مرتب سازی بر نوشته نشده است - 42، 43، 44. و کنترل D را پیدا کند سوزن در انبار کاه. این بد است. این قطعا وجود دارد. اجازه دهید چیز دیگری را امتحان کنید. شاید به این خاطر من قرار آن را در آغاز راه است. اجازه دهید 41، 42، 43. وجود دارد می کنیم. از آن یافت می شود. اجازه دهید آن را در پایان در حال حاضر، فقط بنابراین ما می تواند کامل - 40، 41، 42. آیا سوزن را پیدا کند. بنابراین من این قبلا ذکر شد. متاسفانه، من این را می دانست قرار بود رخ دهد. اما برای اهداف آموزشی، خوب است برای کشف آن است. این کار نمی کند. برای برخی از این دلیل، می تواند آن را پیدا کند. ما می دانیم که چه چیزی در آن وجود دارد، اما ما در حال پیدا کردن آن نیست. بنابراین چیزی که ما می تواند انجام دهید این است رفتن را از طریق GDB برای پیدا کردن آن است، اما آیا کسی، بدون استفاده از GDB، یک حس که در آن ما رو خراب کرد؟ [؟ Madu؟ ؟] STUDENT: من فکر می کنم ممکن است زمانی که پایان دادن به به ابتدای برابر است، و آن را فقط یک لیست یک عنصر. سپس آن را فقط آن را به جای نادیده می گیرد از واقع آن را چک کردن. JASON HIRSCHHORN: که دقیقا درست است. وقتی که پایان دادن برابر با آغاز، ما هنوز هم یک عنصر در لیست ما داشته باشد؟ STUDENT: بله. JASON HIRSCHHORN: بله، در واقع، ما یک و تنها یک عنصر. و این به احتمال زیاد خواهد افتاد وقتی که، در این کد ما آزمایش، ما در می جلوی انبار کاه و یا در پایان کومه علف خشک. در این جاست که آغاز و پایان دادن به در حال رفتن به برابر یک، با جستجوی دودویی. بنابراین در کسانی که دو مورد آن کار نمی کند، به دلیل پایان دادن به آغاز برابر بود. اما اگر پایان دادن به آغاز برابر است، این حلقه در حالی که اجرا؟ آن را نمی کند. و ما می توانیم چک که دوباره از طریق GDB. پس چگونه می توان این مشکل را برطرف کد، به دلیل هنگامی که در حالی که پایان دادن به برابر است با در آغاز، ما همچنین می خواهم این در حالی که حلقه را اجرا کنند. پس چه ثابت می تواند ما را به خط 18؟ STUDENT: [نامفهوم] بیشتر است از یا مساوی. JASON HIRSCHHORN: دقیقا درست است. در حالی که پایان دادن به بزرگتر از است و یا به آغاز برابر است. بنابراین در حال حاضر، ما مطمئن شوید که برای دریافت مورد گوشه در پایان. و اجازه دهید را ببینید. اجازه دهید این یک بار اجرا شود. بیایید همه. باز هم، شما را به فقط به دنبال همراه در اینجا. مشاهده 41 این زمان. فقط آن را سازگار نگه دارید. مشاهده 42. اجازه دهید آن را در آغاز - 42، 43، 44. ما آن را در بر داشت. به طوری که در واقع تغییر ما نیاز به. که بسیاری از برنامه نویسی ما بود فقط، جستجوی دودویی. آیا هر کسی هر گونه سوال قبل من به خطوط ما در نوشت حرکت جستجوی دودویی و یا چگونه ما نمیفهمد از آنچه ما کشف کردن؟ قبل از اینکه، من همچنین می خواهم به نقطه که توسط بزرگ، ما نقشه برداری ما شبه کد یک به یکی بر روی کد ما. ما که چیزی روی حیله و تزویر به شکل با شروع و پایان دادن به. اما شما نمیفهمد نشده بود که، شما می شده اند بسیار نوشته شده است کد یکسان است، جز آن دو خط بالا. و سپس شما را متوجه شدم وقتی شما آن را در چک و موارد ساخته شده است که شما نیاز به چیزی دیگر. بنابراین حتی اگر شما دنبال کرده بود ما خط شبه کد به خط، شما می اید بدست همه اما دو خط از کد شما نیاز به نوشتن. و من می باشد حاضر به شرط بندی که شما بچه ها می خواهم که همه متوجه خیلی سریع، که شما نیاز به قرار دادن نوعی از نشانگر در آن وجود دارد به شکل که در آن شما بود. که دوباره، قدرت انجام است شبه کد جلوتر از زمان. بنابراین ما می توانیم منطق برای اولین بار انجام دهید، و بعد از آن ما می توانیم در مورد نحو نگران باشید. اگر ما در مورد منطق اشتباه در حالی که تلاش برای نوشتن این کد در C، ما را بدست همه را خراب کرد. و پس از آن ما می شود پرسیدن سوال در مورد منطق و نحو و ی درگیر همه آنها را با هم. و ما را از دست رفته بدست در آنچه که می تواند به سرعت تبدیل به یک مشکل بسیار دشوار است. بنابراین اجازه دهید در حال حاضر حرکت به انتخاب مرتب سازی بر. ما دقیقه 20 از سمت چپ. بنابراین من احساس ما قادر نخواهد بود به از طریق همه از انتخاب مرتب سازی بر دریافت و مرتب سازی حبابی. اما اجازه دهید حداقل تلاش را به پایان برساند انتخاب مرتب سازی بر. بنابراین نوعی با استفاده از پیاده سازی انتخاب زیر اعلان تابع. باز هم، این است که از گرفته مشکل تنظیم خصوصیات. ارزش بین المللی، براکت، است آرایه ای از اعداد صحیح. و int.n اندازه که آرایه است. مرتب کردن بر اساس انتخاب در جریان است برای مرتب سازی آرایه. بنابراین در مدل ذهنی ما از انتخاب مرتب کردن بر اساس، ما بکشد - اول، ما از طریق لیست به اولین زمان، پیدا کردن کوچکترین عدد، آن را در آغاز، پیدا کردن دوم تعداد کوچکترین، آن را در قرار داده مقام دوم اگر ما به خواهید به ترتیب صعودی. من مجبور نیست که شما برای نوشتن شبه کد در حال حاضر. اما قبل از این کد به عنوان یک کلاس در پنج دقیقه، ما در حال رفتن به ارسال شبه کد بنابراین ما باید از بعضی جهات از جایی که ما می خواهیم. بنابراین تلاش برای ارسال شبه کد در خود تغییر دهید. و پس از آن کوشند آن شبه کد به کد. ما انجام خواهد داد که به عنوان یک گروه در پنج دقیقه. و البته، اجازه دهید من می دانم اگر شما هر گونه سوال. STUDENT: که در آن است؟ JASON HIRSCHHORN: ببینید چقدر شما می تواند در دو دقیقه بیشتر دریافت کنید. من درک می کنم شما را نمی خواهد قادر به پایان برساند. اما ما بیش از این به عنوان یک گروه بروید. شما تمام برنامه نویسی به طوری [نامفهوم]، پس من هستم با عرض پوزش به توقف آنچه شما انجام. اما اجازه دهید از طریق این به عنوان یک گروه. و دوباره، جستجوی دودویی، همه شما را من یکی اگر خطوط بیشتری از کد نیست. تشکر از شما برای که. ما قصد داریم برای انجام همان چیزی در اینجا، کد هم به عنوان یک گروه. بنابراین انتخاب نوع - اجازه دهید ارسال برخی از سریع شبه کد. در مدل ذهنی، می تواند کسی به من می دهد اولین خط از شبه کد، لطفا؟ چه من می خواهم کاری انجام دهید؟ STUDENT: در حالی که در لیست است خارج از دستور. JASON HIRSCHHORN: OK، در حالی که لیست است خارج از دستور. و چه چیزی شما "خارج از دستور؟" STUDENT: در حالی که [نامفهوم] تا طبقه بندی شده اند نشده است. JASON HIRSCHHORN: در حالی که در لیست است خارج از دستور، ما چه کاری انجام دهید؟ من خط دوم را، لطفا، مارکوس. STUDENT: پس از پیدا بعدی تعداد کوچکترین. این فاصله دار خواهد شد. JASON HIRSCHHORN: بنابراین پیدا کردن بعدی تعداد کوچکترین. و پس از آن کسی دیگر؟ هنگامی که ما پیدا بعدی کوچکترین تعداد، چه کنیم؟ من قصد دارم برای گفتن پیدا کردن کوچکترین عدد. این چیزی است که ما می خواهیم انجام دهیم. بنابراین کوچکترین عدد را پیدا کنید. پس چه کنیم؟ STUDENT: [نامفهوم] به آغاز. JASON HIRSCHHORN: ببخشید؟ STUDENT: محل آن را در ابتدای فهرست. JASON HIRSCHHORN: پس از آن در محل ابتدا از لیست. و آنچه که ما به چیزی که انجام که در آغاز بود از لیست، درست است؟ ما به جای نوشتن چیزی. تا جایی که ما قرار داده است که؟ آره، آنا؟ STUDENT: از کجا کوچکترین تعداد بود؟ JASON HIRSHHORN: بنابراین قرار آغاز از لیست که در آن تعداد کوچکترین بود. بنابراین در حالی که در لیست است از سفارش، پیدا کردن کوچکترین شماره، محل آن را در ابتدای فهرست، قرار دادن ابتدای فهرست که در آن تعداد کوچکترین بود. مارکوس، می تواند به شما سؤالم این خط در حالی که در لیست است خارج از دستور؟ STUDENT: در حالی که تعداد اند طبقه بندی شده اند نشده است؟ JASON HIRSHHORN: OK، بنابراین به منظور می دانیم که اعداد نشده است طبقه بندی شده اند، چه کار باید انجام دهیم؟ چقدر ما به نیاز از طریق این لیست برود؟ STUDENT: بنابراین من حدس می زنم برای حلقه، یا در حالی که، در حالی که تعداد چک کمتر است از طول لیست؟ JASON HIRSHHORN: OK، که خوب است. من فکر می کنم من misphrased سوال من ضعیف. من فقط در تلاش بود تا در دریافت ما قصد داریم برای رفتن از کل لیست. بنابراین در حالی که در لیست است خارج از دستور، برای من، سخت به نقشه است. اما در واقع، این که چگونه من در مورد این فکر می کنم. برو از طریق لیست کل، پیدا کردن تعداد کوچکترین، محل آن را در آغاز - در واقع، حق با شماست. اجازه دهید آنها هر دو قرار داده است. بنابراین در حالی که در لیست است خارج از دستور، ما باید از طریق لیست کامل بروید یک بار، پیدا کردن کوچکترین عدد، محل آن را در ابتدای فهرست قرار دهید ابتدای فهرست که در آن تعداد کوچکترین بود، و پس از آن اگر فهرست هنوز هم خارج از دستور، ما کردم از این به روند دوباره، درست است؟ به همین دلیل انتخاب مرتب سازی بر، بزرگ O در زمان اجرا است انتخاب مرتب کردن بر اساس، هر کسی؟ STUDENT: N مربع. JASON HIRSHHORN: N مربع. از آنجا که مانند مارکوس و من فقط متوجه شدم در اینجا، ما قصد داریم که به رفتن را از طریق فهرست چند بار. پس رفتن را از طریق چیزی از طول n n تعداد بار در واقع N مربع. پس این شبه ما است. این به نظر می رسد بسیار خوب است. آیا هر کسی هر گونه سوال در مورد شبه؟ از آنجا که در واقع انتخاب مرتب سازی بر باید احتمالا یکی از آمدن به یک، کد شبه. بنابراین هر گونه سوال در مورد منطق شبه؟ لطفا هم اکنون آن را بپرسید. مرتب سازی بر انتخاب - در حالی که در لیست است نظم، ما قصد داریم تا از طریق آن به و پیدا کردن کوچکترین در هر زمان و آن را در مقابل. بنابراین در حالی که در لیست است خارج از دستور، می توانید کسی به من که خط از کد را که به من داده نشده است یک خط کد رتبهدهی نشده است، لطفا؟ آن را مانند آنچه برای تلفن های موبایل؟ STUDENT: این حلقه یک. JASON HIRSHHORN: این برای تلفن های موبایل می خواهم یک حلقه for. OK، می توانید به من از حلقه for را؟ برای - STUDENT: من برابر 0. JASON HIRSHHORN: من یا - آنچه از دست رفته می کنیم؟ چه می رود در اینجا؟ STUDENT: متوسط. JASON HIRSHHORN: دقیقا. (من بین المللی = 0؛ - STUDENT: من