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