1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID مالان: خوب. 3 00:00:11,940 --> 00:00:16,470 بنابراین این CS50 است، و این است در حال حاضر آغاز هفته سه. 4 00:00:16,470 --> 00:00:19,960 >> پس تا اکنون، ما نوشتن برنامه در C 5 00:00:19,960 --> 00:00:23,210 که نگاه کمی چیزی شبیه به این است. 6 00:00:23,210 --> 00:00:25,470 بنابراین ما یک زن و شوهر از چن تیز شامل در بالای صفحه. 7 00:00:25,470 --> 00:00:28,490 ما اعضای هیات، اصلی، از درجه اعتبار ساقط کردم، و پس از آن به چیزی برای انجام در وسط، 8 00:00:28,490 --> 00:00:30,590 برخی از دستوری که داخل از آن تابع. 9 00:00:30,590 --> 00:00:34,170 اما کلیدی است این واقعیت است که بوده است ما شده است گفت: از درجه اعتبار ساقط است. 10 00:00:34,170 --> 00:00:39,320 پس از درجه اعتبار ساقط، همه از این زمان، مشخص که این برنامه، زمانی که اجرا شود، 11 00:00:39,320 --> 00:00:41,300 تنها می توان از طریق نام خود را اجرا کنید. 12 00:00:41,300 --> 00:00:46,330 شما می توانید هر گونه عبارت دیگر نوع و یا شماره بعد از نام برنامه زمانی 13 00:00:46,330 --> 00:00:46,830 در حال اجرا است. 14 00:00:46,830 --> 00:00:51,200 بنابراین، برای مثال، اگر برنامه بود وارد شده به یک فایل به نام سلام، 15 00:00:51,200 --> 00:00:53,480 شما می توانید از انجام ./hello، اما این است که آن. 16 00:00:53,480 --> 00:00:56,750 >> تنها راه که شما می توانید فراهم ورودی به این برنامه 17 00:00:56,750 --> 00:00:57,960 است با یک تابع. 18 00:00:57,960 --> 00:00:59,790 به عنوان مثال، آنچه تابع ما با استفاده از تا کنون شده است 19 00:00:59,790 --> 00:01:00,950 برای دریافت ورودی از کاربر؟ 20 00:01:00,950 --> 00:01:02,117 >> رسید دریافت رشته است. 21 00:01:02,117 --> 00:01:04,700 DAVID مالان: برای دریافت رشته و یا دریافت هوشمند، و یا شما دیگران را دیده ام، 22 00:01:04,700 --> 00:01:07,630 حتی اگر شما از آنها استفاده نشده است، مانند گرفتن دراز و کشیده و مانند آن. 23 00:01:07,630 --> 00:01:09,380 اما فرض کنید که ما در واقع می خواهم برای شروع 24 00:01:09,380 --> 00:01:12,760 نوشتن برنامه است که کمی بیشتر است همه کاره، و، رک و پوست کنده، کمی بیشتر 25 00:01:12,760 --> 00:01:15,090 مانند دستورات است که شما در شده است گرفتن، امیدوارم، 26 00:01:15,090 --> 00:01:16,550 کمی عادت کرده اند به. 27 00:01:16,550 --> 00:01:18,560 مانند سی دی Dropbox به فضا. 28 00:01:18,560 --> 00:01:20,800 این، البته، تغییرات دایرکتوری خود را، با فرض 29 00:01:20,800 --> 00:01:23,590 شما در خانه جان هاروارد هستید دایرکتوری، به پوشه Dropbox خود را. 30 00:01:23,590 --> 00:01:27,380 در همین حال، یک دستور مثل این ایجاد یک دایرکتوری جدید به نام pset2، 31 00:01:27,380 --> 00:01:30,290 که شما ممکن است در حال حاضر و یا به زودی برای مشکل دو مجموعه. 32 00:01:30,290 --> 00:01:33,970 را خوش، البته، یک فرمان است که ایجاد یک برنامه به نام سلام 33 00:01:33,970 --> 00:01:35,770 از یک فایل به نام سلام نقطه ج. 34 00:01:35,770 --> 00:01:39,140 و در هر یک از این موارد، در حال حاضر، ما تا به حال کرده ام 35 00:01:39,140 --> 00:01:43,620 ارائه استدلال در به اصطلاح خط فرمان، سریع چشمک می زند، 36 00:01:43,620 --> 00:01:48,540 به طوری که می داند چه چیزی را برای ساخت، و به همین ترتیب که می داند چه mkdir به پوشه برای ایجاد، 37 00:01:48,540 --> 00:01:51,110 و به طوری که سی دی می داند که در آن شما می خواهید به آن بروید. 38 00:01:51,110 --> 00:01:54,720 اما تا اکنون، ما در حفظ و گفت که اصلی، عملکرد، پیش فرض شما 39 00:01:54,720 --> 00:01:58,500 تا به بیان از درجه اعتبار ساقط در داخل از آن پرانتز، 40 00:01:58,500 --> 00:02:01,250 به این معنی که می توانید هر استدلال را ندارد. 41 00:02:01,250 --> 00:02:03,240 >> از امروز شروع چیزی است که ما قصد داریم برای انجام 42 00:02:03,240 --> 00:02:06,270 است، ما قصد داریم به شروع حمایت از چیزهایی مثل این حتی. 43 00:02:06,270 --> 00:02:08,990 در واقع، در این مورد، که به شما نمی به طور معمول به صورت دستی تایپ کنید، 44 00:02:08,990 --> 00:02:11,130 را انجام شده است این برای ما وجود ندارد 45 00:02:11,130 --> 00:02:15,840 یکی، بلکه یک، دو، سه اضافی رشته بعد از برنامه به نام 46 00:02:15,840 --> 00:02:16,850 صدای جرنگ جرنگ. 47 00:02:16,850 --> 00:02:18,240 پس چگونه این دست ما؟ 48 00:02:18,240 --> 00:02:20,260 >> خوب، شروع امروز، در مواردی که ما می خواهیم 49 00:02:20,260 --> 00:02:22,855 به ارائه ورودی از طریق به اصطلاح خط فرمان، 50 00:02:22,855 --> 00:02:24,980 ما در حال رفتن به شروع به اضافه کردن اینجا چه چیزی در yellow-- 51 00:02:24,980 --> 00:02:30,520 به جای خالی با کاما جدا کنید تعداد آنها اعضای هیات رشته ی argv براکت براکت باز نزدیک است. 52 00:02:30,520 --> 00:02:32,520 در حال حاضر این جالب است برای یک زن و شوهر از دلایل. 53 00:02:32,520 --> 00:02:35,690 یکی، آن را به ما اجازه ارسال برنامه هایی که کمی پویا تر. 54 00:02:35,690 --> 00:02:37,570 اما، compellingly بیشتر، آن را به باز کردن 55 00:02:37,570 --> 00:02:40,340 در حال حاضر صحبت به چه آرایه می تواند واقعا 56 00:02:40,340 --> 00:02:43,300 شود، برای چه رشته ای استفاده می شود واقعا در زیر هود، 57 00:02:43,300 --> 00:02:47,320 تا هفته بعد وقتی که ما شروع به غواصی در حتی عمیق تر که چگونه دستگاه است 58 00:02:47,320 --> 00:02:48,590 برای ساخت این کار مسائل. 59 00:02:48,590 --> 00:02:51,920 اما در حال حاضر، اجازه دهید قرعه کشی، شاید، یک عکس. 60 00:02:51,920 --> 00:02:54,950 >> هنگامی که شما نوشتن یک برنامه با اصلی اعلام کرد 61 00:02:54,950 --> 00:02:58,810 در این راه، به طوری که اصلی دو استدلال، یک int طول می کشد 62 00:02:58,810 --> 00:03:03,233 and-- چه نوع داده آرگومان دوم است؟ 63 00:03:03,233 --> 00:03:04,529 >> رسید آرایه. 64 00:03:04,529 --> 00:03:05,320 DAVID مالان: آرایه. 65 00:03:05,320 --> 00:03:09,170 پس از آن در نگاه اول به نظر می رسد مانند آن را رشته، اما متوجه براکت مربع است. 66 00:03:09,170 --> 00:03:12,760 به یاد بیاورید زمان آخرین ما معرفی مفهوم آرایه ای. 67 00:03:12,760 --> 00:03:16,210 و آرایه ها استفاده از براکت در چند زمینه. 68 00:03:16,210 --> 00:03:19,160 شما ممکن است مربع استفاده براکت برای رفتن به یک آرایه 69 00:03:19,160 --> 00:03:22,710 و یک عنصر خاص، مانند براکت 0 یا 1 یا براکت براکت 2. 70 00:03:22,710 --> 00:03:25,500 اما ما دیدیم، اگر به طور خلاصه، در هفته گذشته است که شما نیز 71 00:03:25,500 --> 00:03:28,790 استفاده از این براکت ها اعلام به اندازه یک آرایه، 72 00:03:28,790 --> 00:03:31,790 اگر شما از قبل می دانید که چگونه بسیاری از آرگومان از نوع int و یا چگونه بسیاری از رشته ها و یا هر آنچه که شما 73 00:03:31,790 --> 00:03:32,630 در واقع می خواهم. 74 00:03:32,630 --> 00:03:34,790 پس از آن که معلوم وجود دارد زمینه سوم اینجا 75 00:03:34,790 --> 00:03:37,890 است که هیچ عدد داخل از براکت مربع است. 76 00:03:37,890 --> 00:03:41,920 هنگامی که شما را مشخص، به عنوان من در اینجا، به نام چیزی شبیه به argv را، 77 00:03:41,920 --> 00:03:44,550 که فقط یک راه فانتزی است گفت: بردار استدلال، که 78 00:03:44,550 --> 00:03:47,750 یکی دیگر از راه فانتزی است گفت: مجموعه ای از استدلال، 79 00:03:47,750 --> 00:03:50,870 براکت براکت باز نزدیک فقط بدان معنی است که شما لزوما نمی 80 00:03:50,870 --> 00:03:52,960 در پیشبرد دانم چقدر بزرگ آرایه است برای رفتن به، 81 00:03:52,960 --> 00:03:55,070 اما شما می دانید آن را به یک آرایه. 82 00:03:55,070 --> 00:03:57,320 بنابراین اگر شما نمی دانید تعداد آن را در وجود دارد قرار داده است، 83 00:03:57,320 --> 00:04:01,160 برای براکت براکت باز نزدیک بدان معنی است که argv را یک رشته نیست، 84 00:04:01,160 --> 00:04:03,124 اما آرایه ای از رشته ها. 85 00:04:03,124 --> 00:04:05,040 بنابراین قواعد، اگر شما فکر می کنم در هفته گذشته، 86 00:04:05,040 --> 00:04:09,460 آن را بسیار شبیه به گفت چیزی شبیه اعضای هیات سنین براکت باز، 87 00:04:09,460 --> 00:04:10,984 و پس از آن چیزی پس از آن. 88 00:04:10,984 --> 00:04:12,150 این ها به چه شکلی است؟ 89 00:04:12,150 --> 00:04:13,399 اجازه دهید در واقع یک عکس رسم. 90 00:04:13,399 --> 00:04:18,756 بنابراین، هنگامی که این برنامه را با بخش اصلی اجرا می کنید با دو آرگومان در داخل تعریف 91 00:04:18,756 --> 00:04:21,339 از این پرانتز، شما در اصل حداقل دو تکه 92 00:04:21,339 --> 00:04:23,560 از حافظه تحویل به شما در زیر هود. 93 00:04:23,560 --> 00:04:26,550 یکی، به عنوان من به عنوان تساوی این مستطیل، است که به آن می شود تعداد آنها. 94 00:04:26,550 --> 00:04:30,645 و فقط به عنوان یک روکش سریع، چه نوع داده از تعداد آنها است؟ 95 00:04:30,645 --> 00:04:31,270 پس از آن اعضای هیات است. 96 00:04:31,270 --> 00:04:33,480 بنابراین تعداد در جریان است به در نوبت argc-- 97 00:04:33,480 --> 00:04:35,660 که برای شمارش استدلال است. 98 00:04:35,660 --> 00:04:38,887 در همین حال، I argv را به عنوان یک آرایه رسم کرده ایم. 99 00:04:38,887 --> 00:04:40,970 و من نمی دانم چه مدت طول می خواهد، 100 00:04:40,970 --> 00:04:42,470 بنابراین برای مقاصد امروز نقطه نقطه نقطه. 101 00:04:42,470 --> 00:04:43,636 ممکن است از برخی از طول دریافت کنید. 102 00:04:43,636 --> 00:04:45,640 اما من در اینجا در تصویر ام حداقل چهار مستطیل. 103 00:04:45,640 --> 00:04:50,970 بنابراین argv را یک تکه از حافظه است که فروشگاه ها رشته رشته رشته نقطه نقطه نقطه، 104 00:04:50,970 --> 00:04:53,950 و تعداد آنها فقط یک تکه است حافظه برای یک عدد صحیح. 105 00:04:53,950 --> 00:04:55,710 >> بنابراین در حال حاضر، اجازه دهید که کمی دقیق تر. 106 00:04:55,710 --> 00:04:59,200 اگر، زمانی که من رشته دارند در این آرایه، به نام 107 00:04:59,200 --> 00:05:03,290 argv را، من می خواهم به آنها را دریافت کنید به صورت جداگانه، درست مثل هفته گذشته، 108 00:05:03,290 --> 00:05:05,670 ما در حال رفتن به استفاده از نماد مثل ی argv براکت 0 109 00:05:05,670 --> 00:05:07,650 برای دریافت اولین چیزی که یک آرایه. 110 00:05:07,650 --> 00:05:10,440 argv را پایه 1 برای دریافت نکته دوم، و غیره. 111 00:05:10,440 --> 00:05:14,597 کلید کار اینجا این است که ما هنوز هستیم 0 indexed-- ما هنوز از 0 شمارش. 112 00:05:14,597 --> 00:05:16,430 بنابراین در حال حاضر در اجازه در واقع قرار دادن چیزی در این. 113 00:05:16,430 --> 00:05:21,670 اگر من به کامپایل یک برنامه به نام سلام از یک فایل به نام سلام نقطه ج، 114 00:05:21,670 --> 00:05:24,340 و پس از آن من است که برنامه را اجرا کنید با نقطه بریده بریده سلام، 115 00:05:24,340 --> 00:05:28,380 چه کامپیوتر، لپ تاپ من من، مانند زیر کاپوت نگاه 116 00:05:28,380 --> 00:05:31,300 لحظه ای من را اجرا نقطه بریده بریده سلام و آمار را وارد کنید؟ 117 00:05:31,300 --> 00:05:33,500 خوب، این است که شاید آنچه که ما می تواند توصیف 118 00:05:33,500 --> 00:05:37,010 به عنوان محتوای کامپیوتر شما حافظه و یا حافظه دسترسی تصادفی RAM--. 119 00:05:37,010 --> 00:05:40,330 به عبارت دیگر، کامپیوتر، به نحوی برای شما جادویی، 120 00:05:40,330 --> 00:05:45,360 قرار می دهد تعداد 1 در تعداد آنها، argcount AKA، و آن را به معنای واقعی کلمه در رشته 121 00:05:45,360 --> 00:05:48,200 ./hello در argv براکت 0. 122 00:05:48,200 --> 00:05:51,750 من هیچ نظری ندارم، رک و پوست کنده، چه در براکت argv را 1 یا 2 یا 3، 123 00:05:51,750 --> 00:05:55,550 چرا که اگر کاربر تا نه هر چیزی علاوه بر ./hello تایپ شده، 124 00:05:55,550 --> 00:05:58,550 ما قصد داریم که فرض کنیم که این ارزش زباله به احتمال زیاد هستند، 125 00:05:58,550 --> 00:05:59,700 پس به صحبت می کنند. 126 00:05:59,700 --> 00:06:02,650 این تکه از حافظه وجود داشته باشد، اما آن را به ما نیست 127 00:06:02,650 --> 00:06:05,710 در نگاه به آنها، به دلیل argcount فقط یکی است. 128 00:06:05,710 --> 00:06:07,870 >> در حال حاضر، در عین حال، اگر من ارسال اجرا یک برنامه دیگر، 129 00:06:07,870 --> 00:06:12,250 سی دی است که به درستی بیش از یک دستور، در چشمک زدن فضای سی دی prompt-- شما 130 00:06:12,250 --> 00:06:17,200 Dropbox-- زمانی که من اجرا که، به طور موثر، زمانی که برنامه سی دی اجرا می شود، تعداد آنها، 131 00:06:17,200 --> 00:06:22,270 در داخل حافظه کامپیوتر من است، برای بیشترین خلاصه دوم عدد 2. 132 00:06:22,270 --> 00:06:25,936 و پس از آن argv را درجه براکت است سی دی، argv را براکت 1 تا Dropbox به، 133 00:06:25,936 --> 00:06:28,560 و پس از آن البته از دستور کامل، به طوری که همه از این حافظه 134 00:06:28,560 --> 00:06:30,420 اساسا از بین می رود و برای چیز دیگری استفاده می شود. 135 00:06:30,420 --> 00:06:32,270 و به همین دلیل من می گویم فقط یک لحظه. 136 00:06:32,270 --> 00:06:35,720 >> در همین حال، اگر ما pset2 mkdir به، تصویر به نظر می رسد تقریبا یکسان است، 137 00:06:35,720 --> 00:06:37,900 اما با رشته های مختلف در داخل argv را. 138 00:06:37,900 --> 00:06:42,570 اگر من فاصله صدا کردن سلام سلام نقطه ج، همان ایده. 139 00:06:42,570 --> 00:06:47,060 مسائل بیشتر در جهت پر argv را، و تعداد آنها، البته، 4 است. 140 00:06:47,060 --> 00:06:49,150 بنابراین به عبارت دیگر، حتی اگر این آرایه 141 00:06:49,150 --> 00:06:52,950 ممکن است نقطه نقطه نقطه، برخی از با طول متغیر، پس به صحبت می کنند، 142 00:06:52,950 --> 00:06:56,720 شما همیشه می دانم که در آن پایان آن است، چرا که تعداد آنها در حال رفتن به شما بگویم 143 00:06:56,720 --> 00:07:00,120 در چه نقطه شما را متوقف به دنبال عناصر در argv. 144 00:07:00,120 --> 00:07:03,660 شما فقط می توانید در چهار نگاه در کل در این مورد. 145 00:07:03,660 --> 00:07:06,600 >> بنابراین اجازه دهید اکنون نگاهی، شاید، یک برنامه ساده است. 146 00:07:06,600 --> 00:07:09,070 یکی که فقط می گوید: سلام به کسی مثل Zamyla. 147 00:07:09,070 --> 00:07:12,620 پس من ادعا می کنند من قصد دارم به نوشتن یک برنامه در یک لحظه از طریق که من می تواند انجام دهد 148 00:07:12,620 --> 00:07:16,670 ./hello فضای Zamyla، و پس از آن من می خواهم برنامه های من برای چاپ کردن چیزی 149 00:07:16,670 --> 00:07:18,520 فوق العاده ساده مانند "سلام، Zamyla." 150 00:07:18,520 --> 00:07:20,100 در حال حاضر در گذشته ما getstring استفاده می شود. 151 00:07:20,100 --> 00:07:22,850 بنابراین در گذشته، حتی اگر شما تازه به برنامه نویسی هستید، 152 00:07:22,850 --> 00:07:27,180 شانس هستند شما می توانید تا شلاق زدن برنامه ای است که با استفاده از getstring 153 00:07:27,180 --> 00:07:29,390 و سپس با استفاده از تابع () printf سلام به Zamyla. 154 00:07:29,390 --> 00:07:31,290 اما اجازه دهید getstring این زمان استفاده کنید. 155 00:07:31,290 --> 00:07:37,510 اجازه بدهید من به جای به Appliant به و شامل استاندارد نقطه I O ساعت. 156 00:07:37,510 --> 00:07:41,160 اجازه بدهید همچنین شامل CS50 نقطه در ساعت. 157 00:07:41,160 --> 00:07:44,730 در حال حاضر اعضای هیات اصلی، و در حال حاضر من رفتن به انجام امروز از درجه اعتبار ساقط. 158 00:07:44,730 --> 00:07:51,200 در عوض، من قصد دارم به انجام تعداد آنها اعضای هیات ی argv رشته براکت براکت باز نزدیک، 159 00:07:51,200 --> 00:07:52,640 تعیین یک عدد است. 160 00:07:52,640 --> 00:07:54,644 و در حال حاضر در اینجا من به اصطلاح انجام دهد. 161 00:07:54,644 --> 00:07:57,560 چیزی که من قصد دارم انجام دهم، من هستم رفتن به انجام یک کمی از کبیسه از ایمان، 162 00:07:57,560 --> 00:08:00,560 من قصد دارم که فرض کنیم که کاربر قصد استفاده از این برنامه به درستی، 163 00:08:00,560 --> 00:08:04,980 و من به سادگی رفتن به انجام تابع () printf سلام،٪ برف. 164 00:08:04,980 --> 00:08:06,630 بنابراین هیچ چیز جدیدی وجود دارد. 165 00:08:06,630 --> 00:08:11,470 اما من می خواهم به حال هر کلمه را نوع کاربر بعد از نام برنامه است. 166 00:08:11,470 --> 00:08:16,970 بنابراین اگر من ./hello فضای Zamyla، I می خواهم به نحوی برنامه نویسی دسترسی 167 00:08:16,970 --> 00:08:20,870 نقل قول نقل قول را تمام کردن "Zamyla." بنابراین من می توانید به بردار استدلال من، 168 00:08:20,870 --> 00:08:25,980 آرایه من از رشته، و اگر فرمان، دوباره، ./hello فضای Zamyla بود، 169 00:08:25,980 --> 00:08:29,340 چه تعداد می خواهم در argv را قرار داده که اینجا هستید؟ 170 00:08:29,340 --> 00:08:29,840 رسید: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID مالان: 1، به دلیل براکت 0 می رسد 172 00:08:32,355 --> 00:08:34,230 در حال رفتن به نام برنامه، که ما دیدم. 173 00:08:34,230 --> 00:08:37,789 بنابراین براکت 1 اولین کلمه است که من، کاربر، تایپ کرده اند. 174 00:08:37,789 --> 00:08:39,559 من قصد دارم به جلو بروید و صرفه جویی در این. 175 00:08:39,559 --> 00:08:42,830 من قصد دارم برای رفتن به پوشه من که در آن من این فایل قرار داده شده است. 176 00:08:42,830 --> 00:08:44,920 من قصد دارم به انجام را سلام 3. 177 00:08:44,920 --> 00:08:46,230 OK جربان IO است. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla را وارد کنید. 179 00:08:51,380 --> 00:08:54,480 چیزی که من اشتباه انجام دهید؟ 180 00:08:54,480 --> 00:08:57,270 من شگفت زده گرفتار شد خودم را برای فقط یک لحظه وجود دارد. 181 00:08:57,270 --> 00:08:58,230 چیزی که من اشتباه انجام دهید؟ 182 00:08:58,230 --> 00:08:59,220 >> رسید نام. 183 00:08:59,220 --> 00:09:01,767 >> DAVID مالان: فایل در واقع hello3.c نامیده می شود. 184 00:09:01,767 --> 00:09:03,850 و من که فقط برای قوام، چرا که ما کرده ایم 185 00:09:03,850 --> 00:09:06,550 حال hello.c در گذشته در کد آنلاین. 186 00:09:06,550 --> 00:09:11,550 بنابراین اجازه دهید حل این ./hello براکت فاصله 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 را وارد کنید. 188 00:09:12,370 --> 00:09:14,030 و در حال حاضر ما سلام، Zamyla. 189 00:09:14,030 --> 00:09:17,650 در همین حال، من می توانم این را تغییر دهید است راب، و یا واقعا هر کلمه دیگر. 190 00:09:17,650 --> 00:09:19,230 >> اما اجازه دهید در مورد گوشه ای در نظر بگیرند. 191 00:09:19,230 --> 00:09:24,360 چه شما انتظار می رود ممکن است در صورت اتفاق خواهد افتاد من نام کسی را تایپ کنید و در همه؟ 192 00:09:24,360 --> 00:09:25,270 >> رسید خطا. 193 00:09:25,270 --> 00:09:27,300 >> DAVID مالان: یک خطا نوعی، شاید. 194 00:09:27,300 --> 00:09:28,200 بیایید ببینید. 195 00:09:28,200 --> 00:09:29,440 را وارد کنید. 196 00:09:29,440 --> 00:09:30,210 صفر. 197 00:09:30,210 --> 00:09:33,870 بنابراین تابع () printf است که در واقع بودن کمی محافظ از ما 198 00:09:33,870 --> 00:09:38,131 در اینجا، و به معنای واقعی کلمه چاپ پرانتز باز تهی، اما همه چیز حتی بدتر می تواند رخ دهد. 199 00:09:38,131 --> 00:09:40,130 و فقط برای نشان دادن چیزی است که شما کاملا 200 00:09:40,130 --> 00:09:42,800 باید انجام دهید، چه در رفتن در اینجا و شروع مجبور باشید. 201 00:09:42,800 --> 00:09:43,300 درست است؟ 202 00:09:43,300 --> 00:09:46,410 اگر من می دانم که تصویر در حافظه اساسا این، 203 00:09:46,410 --> 00:09:52,660 ی argv براکت 1 تا Zamyla، argv را براکت 0 تا ./hello، و یا ./hello-3. 204 00:09:52,660 --> 00:09:55,400 چه در براکت 2 است؟ 205 00:09:55,400 --> 00:09:58,210 بنابراین من می توانم پاسخ به این خودم سوال، درست است؟ 206 00:09:58,210 --> 00:10:00,460 من فقط می تواند تغییر 1 به 2. 207 00:10:00,460 --> 00:10:07,270 من هم اکنون می توانید آنرا کامپایل مجدد سلام 3، ./hello3 اجازه دهید در زوم و آمار را وارد کنید. 208 00:10:07,270 --> 00:10:08,270 اوه. 209 00:10:08,270 --> 00:10:10,660 بدون علامت نقل قول. 210 00:10:10,660 --> 00:10:12,540 جالب. 211 00:10:12,540 --> 00:10:15,530 پس این نوع از خنک دیدن چه چیز دیگری است در اینجا. 212 00:10:15,530 --> 00:10:17,130 >> پس چه چیز دیگری است در داخل لپ تاپ من؟ 213 00:10:17,130 --> 00:10:20,390 اجازه دهید آن را با براکت 3 را نجات دهد. 214 00:10:20,390 --> 00:10:25,190 را hello3، ./hello-3. 215 00:10:25,190 --> 00:10:26,500 عجیب. 216 00:10:26,500 --> 00:10:30,560 و در حال حاضر اجازه دهید واقعا bold-- 50. 217 00:10:30,560 --> 00:10:34,340 به طوری که واقعا غواصی در حافظه کامپیوتر من است. 218 00:10:34,340 --> 00:10:35,930 50 شاخص در. 219 00:10:35,930 --> 00:10:41,950 پس سلام 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 عجیب. 221 00:10:42,680 --> 00:10:44,660 تمامی حقوق، در حال حاضر من فقط هستم رفتن به بی پروا. 222 00:10:44,660 --> 00:10:47,331 اجازه دهید به 5000 است. 223 00:10:47,331 --> 00:10:47,830 خوب. 224 00:10:47,830 --> 00:10:49,520 بنابراین، اجازه دهید کامپایل مجدد. 225 00:10:49,520 --> 00:10:51,460 را hello3، ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 OK. 228 00:10:56,460 --> 00:10:59,250 در حال حاضر برخی از شما وجود دارد ممکن است، یک لامپ خارج شدن. 229 00:10:59,250 --> 00:11:01,900 چگونه بسیاری از شما مشاهده این ارسال قبل از؟ 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 پس چرا؟ 232 00:11:04,420 --> 00:11:07,250 >> شانس are-- و متفاوت وجود دارد چیزهایی که می توانند از این شود، 233 00:11:07,250 --> 00:11:09,730 و به وضوح شما را در خوب است company-- ما به وضوح 234 00:11:09,730 --> 00:11:11,900 باعث آنچه به نام گسل تقسیم بندی. 235 00:11:11,900 --> 00:11:15,890 و داستان کوتاه مدت برای امروز، من بخشی از حافظه را لمس کرده اند 236 00:11:15,890 --> 00:11:17,060 که من باید ندارد. 237 00:11:17,060 --> 00:11:19,970 که در آن یک بخش فقط بدان معناست یک تکه از حافظه که باید ندارد. 238 00:11:19,970 --> 00:11:25,530 حالا کامپیوتر را تضمین می کند که اگر من اجرا ./helloZamyla که من می توانم argv را لمس 239 00:11:25,530 --> 00:11:27,760 شود براکت 0 و argv را براکت 1. 240 00:11:27,760 --> 00:11:32,730 اما تعداد آنها است ارزش 2، که به معنی من هستم تنها allowed-- این نوع افتخار 241 00:11:32,730 --> 00:11:35,180 system-- به لمس براکت 0 و براکت 1. 242 00:11:35,180 --> 00:11:37,990 اگر من به هر دورتر، وجود دارد کاملا برای رفتن به حافظه وجود دارد. 243 00:11:37,990 --> 00:11:40,660 RAM من از لحاظ جسمی وجود دارد در کامپیوتر است. 244 00:11:40,660 --> 00:11:42,080 اما چه کسی می داند چه چیزی وجود دارد؟ 245 00:11:42,080 --> 00:11:44,450 در واقع، من در حال اجرا های متعدد برنامه در یک زمان. 246 00:11:44,450 --> 00:11:46,910 من ممکن است seen-- اگر من نبود انجام این کار در Appliant 247 00:11:46,910 --> 00:11:49,937 اما در مک و یا PC-- من ممکن است مشاهده محتویات یک ایمیل به. 248 00:11:49,937 --> 00:11:52,270 من ممکن است دیده می شود یک لحظه پیام من به تازگی ارسال کرده اید. 249 00:11:52,270 --> 00:11:55,390 هر چیزی که ممکن است پرسه بزنند در حافظه 250 00:11:55,390 --> 00:11:59,180 می تواند از طریق دیده شده است این نماد براکت های دلخواه. 251 00:11:59,180 --> 00:12:02,850 یا، بدتر، شما ممکن است یافت یکی از کلمات عبور من 252 00:12:02,850 --> 00:12:05,859 که من به تازگی می خواهم در تایپ شده، که برنامه در حافظه ذخیره شده بود تا به عنوان 253 00:12:05,859 --> 00:12:07,900 به من تصدیق، و پس از آن فقط نوع آن را ترک 254 00:12:07,900 --> 00:12:09,910 در RAM تا زمانی که من آن برنامه را ترک کنید. 255 00:12:09,910 --> 00:12:12,860 >> و در واقع، این یکی از است خطر و قدرت 256 00:12:12,860 --> 00:12:15,980 استفاده از یک زبان مانند C. شما دسترسی نامحدود 257 00:12:15,980 --> 00:12:18,860 به محتویات حافظه برنامه، 258 00:12:18,860 --> 00:12:21,340 و چه بچه ها بد می تواند حتی در آن cases-- انجام 259 00:12:21,340 --> 00:12:23,807 به ویژه هنگامی که ما به برنامه نویسی تحت وب 260 00:12:23,807 --> 00:12:26,890 در پایان ترم، ما بازنگری این topic-- است بهم زدن در اطراف، 261 00:12:26,890 --> 00:12:31,660 به طور بالقوه، کسی است کامپیوتر حافظه و پیدا کردن چنین چیزهایی کنجکاو 262 00:12:31,660 --> 00:12:32,570 همانطور که ما در آنجا دیدم. 263 00:12:32,570 --> 00:12:36,900 و یا حتی بدتر از آن، کلمات عبور که او یا او پس از آن می توانید استفاده کنید به انجام کارهای بد است. 264 00:12:36,900 --> 00:12:40,240 >> بنابراین به وضوح من باید این کار را نکردند، چرا که همه چیز عجیب و غریب شروع به اتفاق می افتد. 265 00:12:40,240 --> 00:12:42,310 در واقع، این یک توفنده برنامه است. 266 00:12:42,310 --> 00:12:44,580 این معادل از سیستم عامل مک و یا در ویندوز 267 00:12:44,580 --> 00:12:46,770 پنجره برنامه فقط ناپدید می شود. 268 00:12:46,770 --> 00:12:48,300 یک خطای غیر منتظره رخ داده است. 269 00:12:48,300 --> 00:12:50,840 در محیط خط فرمان ما چیزی شبیه به این را مشاهده کنید. 270 00:12:50,840 --> 00:12:54,480 اما به همین دلیل است که من به سادگی لمس کردن حافظه که به من تعلق ندارد. 271 00:12:54,480 --> 00:12:57,090 >> بنابراین اجازه دهید در برابر این دفاع کمی در راه های مختلف 272 00:12:57,090 --> 00:12:59,010 با نگاه کردن به این برنامه است. 273 00:12:59,010 --> 00:13:01,000 پس، دوباره، اسکلت که ما دیدم earlier-- 274 00:13:01,000 --> 00:13:02,480 و من این بار اعضای هیات هایلایت شده است. 275 00:13:02,480 --> 00:13:05,900 و در تمام این زمان اصلی در واقع بازگشت به یک مقدار. 276 00:13:05,900 --> 00:13:09,120 اگر چه در بسیاری از سخنرانی ما نمونه ما یک بار هرگز استفاده می شود 277 00:13:09,120 --> 00:13:10,990 بازگشت هر چیزی در اصلی. 278 00:13:10,990 --> 00:13:13,710 ما فقط ارسال تابع () printf نزدیک آکولاد و آن. 279 00:13:13,710 --> 00:13:16,500 اما به صورت رایگان، چه کامپایلر است را برای شما انجام می دهند، 280 00:13:16,500 --> 00:13:19,510 به طور موثر، است بازگشت 0 برای شما. 281 00:13:19,510 --> 00:13:22,950 تبدیل out-- و آن را کمی counterintuitive-- که 0 خوب است. 282 00:13:22,950 --> 00:13:24,690 این به این معنا نیست نادرست در هر سه. 283 00:13:24,690 --> 00:13:29,080 0 خوب است، و هر غیر 0 ارزش، جهان تصمیم گرفته است، 284 00:13:29,080 --> 00:13:30,619 می تواند خطا نشان. 285 00:13:30,619 --> 00:13:32,910 بنابراین اگر شما همیشه آشفته ام چیزی بر روی کامپیوتر شما، 286 00:13:32,910 --> 00:13:36,600 و یا یک برنامه به تازگی بر شما مرد و شما برخی از پنجره نادرست بدست 287 00:13:36,600 --> 00:13:40,360 بر روی صفحه نمایش خود را، گفت خطا منفی 49 یا خطا 23-- 288 00:13:40,360 --> 00:13:44,170 برخی از value-- به ظاهر خودسرانه است که چرا که یک برنامه نویس است سخت رمزی 289 00:13:44,170 --> 00:13:49,370 ارزش مانند منفی 49 یا مثبت 23 برای نمایش هر تعداد، به جرات می گفت، 290 00:13:49,370 --> 00:13:53,340 از 4 میلیارد همه چیز امکان پذیر است که ممکن است به اشتباه در یک برنامه است. 291 00:13:53,340 --> 00:13:55,700 >> پس چگونه ممکن است من را استفاده از این خودم؟ 292 00:13:55,700 --> 00:13:58,970 خوب، اجازه دهید باز کردن یک برنامه که من در پیش نوشت، 293 00:13:58,970 --> 00:14:01,450 و بهم زدن در اطراف آنلاین به نام سلام 4. 294 00:14:01,450 --> 00:14:05,650 و این تقریبا یکسان است، با این تفاوت که کمی از خطا رس کردم آن است. 295 00:14:05,650 --> 00:14:09,660 در این مورد، من دوباره اعلام کرده ام اصلی به عنوان مصرف دو آرگومان، 296 00:14:09,660 --> 00:14:13,180 اما این بار، در خط 17، آگهی من انجام یک بیت از یک بررسی سلامت عقل. 297 00:14:13,180 --> 00:14:17,100 من مطمئن شوید که تعداد آنها برابر برابر 2. 298 00:14:17,100 --> 00:14:18,960 از آنجا که اگر از آن است، که یعنی من با خیال راحت می توانید 299 00:14:18,960 --> 00:14:21,420 لمس نه تنها براکت 0، اما براکت 1. 300 00:14:21,420 --> 00:14:24,330 و من به جلو و چاپ، در این مورد، Zamyla و یا راب 301 00:14:24,330 --> 00:14:26,020 و یا هر کلمه ای که تایپ کردن. 302 00:14:26,020 --> 00:14:28,020 و در حال حاضر فقط برای گرفتن کمی مناسب تر است، 303 00:14:28,020 --> 00:14:31,910 من قصد دارم به صراحت بازگشت 0 به معنی همه خوب است. 304 00:14:31,910 --> 00:14:33,300 هیچ چیز بد اتفاق افتاده است. 305 00:14:33,300 --> 00:14:38,590 >> اما طبق قرارداد، من قصد دارم به بازگشت 1، و یا رک و پوست کنده هر گونه 0 غیر ارزش، 306 00:14:38,590 --> 00:14:40,160 اگر چیزی را اشتباه رفت. 307 00:14:40,160 --> 00:14:43,270 در حال حاضر کاربر به رفتن نیست واقعا متوجه چه خبر است. 308 00:14:43,270 --> 00:14:50,410 در واقع اگر من به این شاخه بروید، ما در بزرگنمایی و ایجاد سلام 4، 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla رفتار به عنوان من انتظار دارم. 310 00:14:54,210 --> 00:14:58,570 اما اگر من به جای انجام تایپ کنید هر چیزی، هیچ چیز به نظر می رسد اتفاق می افتد، 311 00:14:58,570 --> 00:14:59,680 اما آن را نشانی از سقوط نیست. 312 00:14:59,680 --> 00:15:04,660 و اگر من به جای انجام کاری مانند راب ناظر است 313 00:15:04,660 --> 00:15:07,550 در به اشتراک گذاری Thayer-- اطلاعات دلخواه. 314 00:15:07,550 --> 00:15:13,680 اما توجه، argv را 1، 2، 3، 4، و 5 در حال حاضر باید در حافظه وجود داشته باشد. 315 00:15:13,680 --> 00:15:16,540 این، بیش از حد است، و نه آنچه برنامه من انتظار دارد، 316 00:15:16,540 --> 00:15:20,300 چون من که آیا بررسی کرده تعداد آنها برابر برابر 2 یا نه. 317 00:15:20,300 --> 00:15:22,140 بنابراین من در حال حاضر در مقابل این دفاع. 318 00:15:22,140 --> 00:15:25,290 >> در حال حاضر، به عنوان یک به کنار، ما programmer-- و یا به جای ما users-- 319 00:15:25,290 --> 00:15:29,670 هرگز دید که 0 یا 1 است اما با استفاده از یک ابزاری به نام دیباگر، و یا ابزارهای دیگر، 320 00:15:29,670 --> 00:15:32,250 به عنوان ما قبل از دیدن طولانی، شما برنامه نویس 321 00:15:32,250 --> 00:15:36,590 در واقع می توانید ببینید چه ممکن است اشتباه رفتن در داخل برنامه شما. 322 00:15:36,590 --> 00:15:39,170 >> بنابراین، هر گونه سوال در تعداد آنها؟ 323 00:15:39,170 --> 00:15:40,873 آره. 324 00:15:40,873 --> 00:15:45,292 >> رسید من دیده ام که در آن آنها اند شخصیت نداشته است، [نامفهوم] 325 00:15:45,292 --> 00:15:49,669 فقط گفت: ستاره رشته د، مانند شخصیت کاما از هم ستاره. 326 00:15:49,669 --> 00:15:50,710 آیا آنها معادل اینجا؟ 327 00:15:50,710 --> 00:15:51,626 >> DAVID مالان: آنها می باشد. 328 00:15:51,626 --> 00:15:55,080 بنابراین سوال این است، شما باید برنامه های گاه به گاه دیده می شود 329 00:15:55,080 --> 00:15:57,270 مثل این که نمی کنند می گویند براکت ی argv رشته 330 00:15:57,270 --> 00:16:01,015 اما در عوض چیزی می گویند مثل کاراکتر براکت ی argv ستاره. 331 00:16:01,015 --> 00:16:03,140 و حتی دیگر وجود دارد انواع که شما ممکن است ببینید. 332 00:16:03,140 --> 00:16:04,264 آنها در واقع معادل. 333 00:16:04,264 --> 00:16:06,240 در حال حاضر، ما باید این مرتب کردن بر اساس چرخ آموزش 334 00:16:06,240 --> 00:16:09,737 در به شکل رشته در CS50 کتابخانه، اما در کمی بیش از یک هفته 335 00:16:09,737 --> 00:16:12,570 و یا پس ما قصد داریم به حذف آن انسداد در دسترس نباشد و در واقع 336 00:16:12,570 --> 00:16:16,820 در چه کاراکتر و ستاره نگاه هستند، و چگونه آن مربوط به حافظه 337 00:16:16,820 --> 00:16:18,140 نمایندگی به طور کلی. 338 00:16:18,140 --> 00:16:19,540 بنابراین ما به آن می آیند. 339 00:16:19,540 --> 00:16:21,540 >> سوالات دیگر در argv را و یا تعداد آنها ما؟ 340 00:16:21,540 --> 00:16:22,397 آره. 341 00:16:22,397 --> 00:16:24,438 رسید چرا آن را بازگشت به خطا [نامفهوم]؟ 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID مالان: چرا این کار را کرد بازگشت خطا only-- آه! 344 00:16:29,230 --> 00:16:31,813 در مورد قبلی، زمانی که ما در اطراف با حافظه futzing شد، 345 00:16:31,813 --> 00:16:35,110 به همین دلیل آن را تنها یک خطا بازگشت زمانی که من واقعا تایپ یک عدد بزرگ؟ 346 00:16:35,110 --> 00:16:36,620 پاسخ کوتاه این است، ما فقط خوش شانس. 347 00:16:36,620 --> 00:16:39,240 به طور کلی، یک کامپیوتر حافظه را اختصاص به تکه های، 348 00:16:39,240 --> 00:16:42,900 و آن را به من داد یک تکه به اندازه کافی بزرگ است که من دور شد، بدون اینکه متوجه شده، 349 00:16:42,900 --> 00:16:46,280 از براکت لمس 2، براکت 3، براکت 50، اما به محض این که من تحت فشار قرار دادند 350 00:16:46,280 --> 00:16:49,080 شانس من، من فراتر رفت مرزهای تکه از حافظه 351 00:16:49,080 --> 00:16:50,520 سیستم عامل من داده بود. 352 00:16:50,520 --> 00:16:52,720 و این زمانی که آن را پایین نگه داشته و گفت: هیچ. 353 00:16:52,720 --> 00:16:54,580 خطای تقسیم بندی. 354 00:16:54,580 --> 00:16:55,692 آره. 355 00:16:55,692 --> 00:16:58,890 >> رسید چگونه کامپیوتر که ارزش تعداد آنها؟ 356 00:16:58,890 --> 00:17:02,390 >> DAVID مالان: چگونه کامپیوتر که ارزش تعداد آنها؟ 357 00:17:02,390 --> 00:17:07,920 هنگامی که یک برنامه را اجرا می کنید، که برنامه، طبیعت از سریع چشمک می زند، 358 00:17:07,920 --> 00:17:11,359 است دست آرایه ای از کلماتی را که تایپ شد 359 00:17:11,359 --> 00:17:13,300 در اعلان، که بود در اعلان تایپ. 360 00:17:13,300 --> 00:17:16,569 و پس از آن عامل شما است سیستم که در اصل 361 00:17:16,569 --> 00:17:20,329 پر بحث های اصلی را برای شما. 362 00:17:20,329 --> 00:17:22,829 به طوری که یکی از خدمات است که شما، نوع مخفیانه 363 00:17:22,829 --> 00:17:24,869 در زیر هود از یک سیستم عامل. 364 00:17:24,869 --> 00:17:27,118 سوالات دیگر؟ 365 00:17:27,118 --> 00:17:27,618 آره. 366 00:17:27,618 --> 00:17:29,787 >> رسید چه معنی روگرفت هسته؟ 367 00:17:29,787 --> 00:17:31,370 DAVID مالان: چه معنی روگرفت هسته؟ 368 00:17:31,370 --> 00:17:32,950 به طوری که سوال خوبی است. 369 00:17:32,950 --> 00:17:35,312 و اجازه دهید من به بازگشت به این شاخه اینجا. 370 00:17:35,312 --> 00:17:37,270 و شما متوجه خواهید شد که من یک فایل جدید وجود دارد. 371 00:17:37,270 --> 00:17:41,670 این در واقع به نام هسته، و آن را در واقع به طور معمول یک فایل مناسب و معقول به اندازه. 372 00:17:41,670 --> 00:17:45,300 این است که اساسا یک تصویر کلی از محتویات حافظه برنامه من است 373 00:17:45,300 --> 00:17:46,902 و یا RAM هنگامی که آن را سقوط کرد. 374 00:17:46,902 --> 00:17:49,110 و این مفید باشد، به طور بالقوه، diagnostically، 375 00:17:49,110 --> 00:17:52,850 زمانی که ما در یک سخنرانی در آینده صحبت و بخش در مورد اشکال زدایی، 376 00:17:52,850 --> 00:17:55,730 زیرا شما در واقع می توانید انجام دهید معادل یک کالبد شکافی دیجیتال 377 00:17:55,730 --> 00:18:00,300 در آن فایل برای کمک به کشف کردن آنچه شما اشتباه در برنامه های خود را انجام داد. 378 00:18:00,300 --> 00:18:01,220 آره. 379 00:18:01,220 --> 00:18:04,450 >> رسید از: آیا تعداد آنها یک فرمان در خود را، و یا می توانید آن را نام ببرید هر چیزی؟ 380 00:18:04,450 --> 00:18:05,575 >> DAVID مالان: سوال خوب. 381 00:18:05,575 --> 00:18:08,040 آیا تعداد آنها یک دستور را در خود، و یا می توانید آن را نام ببرید هر چیزی؟ 382 00:18:08,040 --> 00:18:09,290 این یک دستور است قطعا نیست. 383 00:18:09,290 --> 00:18:13,500 این به سادگی یک متغیر را نام یا نام یک آرگومان است، 384 00:18:13,500 --> 00:18:15,481 و کاملا ما می تواند این مواد غذایی تماس بگیرید، 385 00:18:15,481 --> 00:18:18,480 ما می توانیم این نوار، که تمایل دارند تماس بگیرید به رفتن به کلمات است که یک کامپیوتر 386 00:18:18,480 --> 00:18:19,860 دانشمند می رود به. 387 00:18:19,860 --> 00:18:22,820 اما طبق قرارداد، ما از تعداد آنها و argv را. 388 00:18:22,820 --> 00:18:25,360 اما این فقط یک انسان است کنوانسیون، نه چیزی بیشتر. 389 00:18:25,360 --> 00:18:25,860 خوب. 390 00:18:25,860 --> 00:18:28,140 پس معلوم است، من بوده ام گفتن یک بیت از یک lie-- سفید 391 00:18:28,140 --> 00:18:31,264 و رک و پوست کنده، در آینده، شما خواهید دید ما شده ایم گفتن دیگر دروغ. 392 00:18:31,264 --> 00:18:33,510 اما در حال حاضر، ما در حال رفتن به پوست پشت یکی از این. 393 00:18:33,510 --> 00:18:37,310 در این مورد در اینجا وقتی که من قبلا به یک برنامه مانند ./hello یا ./hello-3 فرار 394 00:18:37,310 --> 00:18:42,780 Zamyla، ما تا به حال از مطالب من حافظه کامپیوتر را به دنبال تقریبا شبیه به 395 00:18:42,780 --> 00:18:43,280 این. 396 00:18:43,280 --> 00:18:45,070 اما به خاطر آنچه یک رشته است. 397 00:18:45,070 --> 00:18:49,279 آنچه ما می گویند یک هفته پیش چه رشته واقع در زیر هود است؟ 398 00:18:49,279 --> 00:18:50,320 رسید آرایه ای از کاراکتر ها. 399 00:18:50,320 --> 00:18:52,111 DAVID مالان: یک آرایه ای از کاراکتر ها، درست است؟ 400 00:18:52,111 --> 00:18:55,760 بنابراین ما ممکن است یک آرایه از رشته ها، اما، به نوبه خود، یک رشته 401 00:18:55,760 --> 00:18:57,150 آرایه ای از کاراکتر ها است. 402 00:18:57,150 --> 00:19:00,010 بنابراین اگر من واقعا می خواهم به مقعد وقتی که من این تصویر قرعه کشی، 403 00:19:00,010 --> 00:19:03,290 من واقعا باید طراحی شود آن را کمی بیشتر شبیه به این، 404 00:19:03,290 --> 00:19:08,000 به موجب آن در هر یک از این شاخص از آرایه ی argv من، 405 00:19:08,000 --> 00:19:11,432 یک رشته تمام شده است خود را وجود دارد که خود را در یک آرایه است. 406 00:19:11,432 --> 00:19:13,140 و در حال حاضر دروغ سفید ما امروز گفتن 407 00:19:13,140 --> 00:19:15,181 این است که تصویر را نمی کند نگاه کاملا شبیه به این. 408 00:19:15,181 --> 00:19:19,110 در واقع، مربع کوچک به طور معمول در خارج از مستطیل بزرگ 409 00:19:19,110 --> 00:19:19,610 وجود دارد. 410 00:19:19,610 --> 00:19:21,280 اما ما به که قبل از بلند آمده است. 411 00:19:21,280 --> 00:19:25,440 اما این ./hello بک اسلش 0 است، که بودن شخصیت ویژه ای است که 412 00:19:25,440 --> 00:19:28,310 demarcates پایان یک رشته، و ما به یکدیگر پس از چن 413 00:19:28,310 --> 00:19:29,360 نام Zamyla است. 414 00:19:29,360 --> 00:19:30,900 پس چه معنی است؟ 415 00:19:30,900 --> 00:19:33,410 >> خوب، اجازه دهید پیش بروید و باز کردن دو نمونه دیگر 416 00:19:33,410 --> 00:19:35,220 در سایت حضور دارند در دسترس است. 417 00:19:35,220 --> 00:19:40,590 یکی argv1.c نام و از سوی دیگر argv2 است. 418 00:19:40,590 --> 00:19:44,260 این یک برنامه فوق العاده ساده است که متفاوت از برنامه های گذشته است 419 00:19:44,260 --> 00:19:47,260 در که در حال حاضر من با استفاده از تعداد آنها و argv را در اینجا. 420 00:19:47,260 --> 00:19:54,300 و در حال حاضر من یکپارچه سازی با حلقه for در خط 18، از من = 0 در تا تعداد آنها. 421 00:19:54,300 --> 00:19:56,850 و آنچه من را به انجام با این خط از کد که اینجا هستید؟ 422 00:19:56,850 --> 00:19:58,270 به زبان انگلیسی. 423 00:19:58,270 --> 00:20:00,510 این به وضوح نشان می دهد که استفاده از تعداد آنها. 424 00:20:00,510 --> 00:20:03,670 اما در زبان انگلیسی، چه این کار را انجام اگر من این برنامه را اجرا کنید؟ 425 00:20:03,670 --> 00:20:04,366 آره؟ 426 00:20:04,366 --> 00:20:07,386 >> رسید این خبر را به چاپ شما هر چند بار روی صفحه نمایش به عنوان شما می خواهید. 427 00:20:07,386 --> 00:20:08,260 DAVID مالان: دقیقا. 428 00:20:08,260 --> 00:20:10,480 بنابراین هر آنچه که کلمات من نوع در اعلان، آن را 429 00:20:10,480 --> 00:20:13,120 رفتن به گرداندن آنها را به من در هر خط. 430 00:20:13,120 --> 00:20:14,370 بنابراین اجازه دهید پیش بروید و این کار را. 431 00:20:14,370 --> 00:20:17,862 اجازه بدهید به فهرست من و انجام را ./argv1 argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 و در حال حاضر، اجازه دهید آن را ساده نگه دارید. 434 00:20:21,770 --> 00:20:23,834 اجازه دهید کاری انجام ندادن در ابتدا. 435 00:20:23,834 --> 00:20:26,750 این کار را کرد نسخه قابل چاپ کردن یک چیز، و که در واقع نام برنامه، 436 00:20:26,750 --> 00:20:28,240 چرا که در براکت 0 است. 437 00:20:28,240 --> 00:20:33,290 اگر من در حال حاضر می گویند مواد غذایی، آن را به انجام آن دو، و اگر من می گویم نوار مواد غذایی، 438 00:20:33,290 --> 00:20:35,580 این رفتن به می گویند این سه چیز است. 439 00:20:35,580 --> 00:20:37,740 اکنون که تا حدودی جالب توجه است، شاید. 440 00:20:37,740 --> 00:20:41,450 اما به یاد آورید که argv را آرایه ای از رشته ها است، 441 00:20:41,450 --> 00:20:45,960 اما یک رشته آرایه ای از کاراکتر است، بنابراین ما می توانیم همه چیز را یک درجه 442 00:20:45,960 --> 00:20:48,560 و اعمال است که پایه منطق و کد که 443 00:20:48,560 --> 00:20:51,160 به نظر می رسد کمی مرموز تر، مسلما. 444 00:20:51,160 --> 00:20:53,540 اما با داشتن تو در تو حلقه، چیزی شبیه 445 00:20:53,540 --> 00:20:57,030 به آنچه که شما ممکن است از ماریو یاد می آورند، به عنوان مثال، اگر شما آن را در این راه انجام داد. 446 00:20:57,030 --> 00:21:00,380 >> بنابراین در حال حاضر متوجه در خط 19، من دوباره شمارش استدلال من، 447 00:21:00,380 --> 00:21:02,410 از 0 تا بر تعداد آنها. 448 00:21:02,410 --> 00:21:05,510 و در حال حاضر در خط 21-- من وام گرفتن از یک ترفند از آخرین week-- 449 00:21:05,510 --> 00:21:11,090 من چک می کنم آنچه که طول ی argv براکت من. 450 00:21:11,090 --> 00:21:12,920 من ذخیره سازی است که پاسخ در ش. 451 00:21:12,920 --> 00:21:18,230 و سپس من یکپارچه کردن از د در تا نفر، که در آن j است که به 0 مقدار دهی شود. 452 00:21:18,230 --> 00:21:19,460 بنابراین، کنوانسیون برای شمارش. 453 00:21:19,460 --> 00:21:22,335 هنگامی که شما من استفاده می شود، اگر شما یک حلقه تو در تو، شما می توانید من را دوباره استفاده کنید، 454 00:21:22,335 --> 00:21:25,770 در غیر این صورت شما لباس عروس عکس های به طور بالقوه، ارزش در خارج از حلقه داخلی. 455 00:21:25,770 --> 00:21:27,200 بنابراین من با استفاده از جی قرارداد. 456 00:21:27,200 --> 00:21:28,020 ما ممکن است K استفاده کنید. 457 00:21:28,020 --> 00:21:31,080 اگر شما بیش از k، شما احتمالا دارای تودرتو بیش از حد، به طور معمول. 458 00:21:31,080 --> 00:21:33,800 اما در حال حاضر، متوجه تابع () printf من خط کمی متفاوت است. 459 00:21:33,800 --> 00:21:37,520 من٪ s را چاپ کنید، من هستم چاپ٪ ج، که، البته، 460 00:21:37,520 --> 00:21:39,460 یک حفره یا سوراخ برای یک کاراکتر است. 461 00:21:39,460 --> 00:21:40,770 >> و در حال حاضر متوجه این نحو. 462 00:21:40,770 --> 00:21:41,270 جدید. 463 00:21:41,270 --> 00:21:42,630 ما آن را قبل از دیده می شود. 464 00:21:42,630 --> 00:21:47,290 اما منطقی، این حالت فقط بدان معناست دریافت رشته i ام در argv 465 00:21:47,290 --> 00:21:50,067 و j ام چه؟ 466 00:21:50,067 --> 00:21:50,900 رسید شخصیت. 467 00:21:50,900 --> 00:21:52,800 DAVID مالان: شخصیت در آن رشته است. 468 00:21:52,800 --> 00:21:57,100 بنابراین با استفاده از براکت پس از براکت مربع، 469 00:21:57,100 --> 00:22:00,390 این غواصی برای اولین بار است به رشته ی argv را، 470 00:22:00,390 --> 00:22:02,225 و پس از آن دوم براکت با د 471 00:22:02,225 --> 00:22:06,580 غواصی را به کاراکتر است که رشته خاص در argv. 472 00:22:06,580 --> 00:22:09,562 و پس از آن، فقط برای اندازه گیری خوبی، من چاپ یک خط جدید در اینجا. 473 00:22:09,562 --> 00:22:12,020 بنابراین در حال حاضر اجازه دهید من به جلو و باز کردن تا یک پنجره کمی بزرگتر 474 00:22:12,020 --> 00:22:13,600 بنابراین ما می توانیم این را در عمل ببینید. 475 00:22:13,600 --> 00:22:15,700 اجازه بدهید من به آن پوشه بروید. 476 00:22:15,700 --> 00:22:22,550 و در حال حاضر را argv را، 2-- whoops-- ی argv-2، ./argv 2. 477 00:22:22,550 --> 00:22:23,110 را وارد کنید. 478 00:22:23,110 --> 00:22:24,860 و این سخت کمی به عنوان خوانده شده را به صورت عمودی، 479 00:22:24,860 --> 00:22:27,920 اما این در واقع نام برنامه، به دنبال یک خط خالی. 480 00:22:27,920 --> 00:22:30,210 حالا اجازه دهید من به جلو و انجام تولی. 481 00:22:30,210 --> 00:22:33,210 به طور مشابه سخت به خواندن، اما آن را در واقع چاپ یک کاراکتر در هر خط. 482 00:22:33,210 --> 00:22:36,780 و اگر من انجام نوار، آن را در حال حاضر چاپ آن خط به خط. 483 00:22:36,780 --> 00:22:40,140 بنابراین غذای آماده در اینجا بسیار نیست که، عجب، در این ترفند جدید شسته و رفته نگاه 484 00:22:40,140 --> 00:22:44,750 که در آن شما می توانید در محتویات دریافت از شخصیت های خاص یک آرایه را، 485 00:22:44,750 --> 00:22:48,380 بلکه چگونه ما در حال گرفتن این پایه ایده های مانند نمایه سازی را به یک آرایه، 486 00:22:48,380 --> 00:22:51,620 و سپس نمایه سازی را به آرایه است که در آن مجموعه ای بود، 487 00:22:51,620 --> 00:22:56,180 و فقط با استفاده از ایده های مشابه به نمونه های کمی پیچیده تر. 488 00:22:56,180 --> 00:22:59,560 اما اصول اولیه واقعا نمی تغییر، حتی از هفته گذشته است. 489 00:22:59,560 --> 00:23:02,350 >> در حال حاضر این است مرتب سازی بر اساس به موقع، در آن، به یاد می آورند، در هفته صفر 490 00:23:02,350 --> 00:23:04,110 ما با یک دفترچه تلفن مثل این بازی. 491 00:23:04,110 --> 00:23:06,670 و حتی اگر این واضح است که قطعات فیزیکی کاغذ، 492 00:23:06,670 --> 00:23:09,150 شما می توانید نوع از فکر می کنم کتاب تلفن را به عنوان یک آرایه. 493 00:23:09,150 --> 00:23:12,770 بدیهی است، اگر شما به reimplement این قطعه این تکه های کاغذ 494 00:23:12,770 --> 00:23:15,260 در یک کامپیوتر، احتمالا شما که چیزی استفاده 495 00:23:15,260 --> 00:23:20,270 مانند یک آرایه برای ذخیره تمام از آن نام ها و شماره ها از تمام راه 496 00:23:20,270 --> 00:23:23,800 از طریق Z. پس این خوب است، چرا که به ما اجازه می دهد تا یک فرصت، 497 00:23:23,800 --> 00:23:28,310 شاید، به نظر شما چگونه می ممکن است در واقع چیزی شبیه به آن اجرا می کنند. 498 00:23:28,310 --> 00:23:31,250 همانطور که با یک سری از درب اینجا. 499 00:23:31,250 --> 00:23:36,380 بنابراین اگر من could-- ما نیاز به یک داوطلب در آمده است. 500 00:23:36,380 --> 00:23:36,980 بیایید ببینید. 501 00:23:36,980 --> 00:23:40,650 چهره نا آشنا شاید، چهره نا آشنا شاید. 502 00:23:40,650 --> 00:23:42,090 چگونه در مورد به رنگ نارنجی؟ 503 00:23:42,090 --> 00:23:42,680 در اینجا. 504 00:23:42,680 --> 00:23:45,870 پیراهن نارنجی، در آمده است. 505 00:23:45,870 --> 00:23:52,230 >> اجازه دهید پیش رو در حال حاضر و حرکت به این درب به سمت، 506 00:23:52,230 --> 00:23:54,020 حرکت این ها را از راه را برای یک لحظه. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 نام شما چیست؟ 509 00:23:57,760 --> 00:23:58,580 >> آجی: 510 00:23:58,580 --> 00:23:58,655 >> DAVID مالان: آجی. 511 00:23:58,655 --> 00:23:58,680 دیوید. 512 00:23:58,680 --> 00:23:59,451 از ملاقات شما خوشبختم. 513 00:23:59,451 --> 00:23:59,950 خوب. 514 00:23:59,950 --> 00:24:04,500 بنابراین ما در پشت این شش درب دیجیتالی در screen-- 515 00:24:04,500 --> 00:24:07,810 یا، نه، هفت درب در screen-- یک دسته کامل از اعداد. 516 00:24:07,810 --> 00:24:10,099 و من به شما چیزی گفته ام در advance-- توافق؟ 517 00:24:10,099 --> 00:24:11,140 آجی: هیچ چیز در پیش است. 518 00:24:11,140 --> 00:24:14,730 DAVID مالان: همه من می خواهم شما را به انجام در حال حاضر این است که برای پیدا کردن من، و برای ما، 519 00:24:14,730 --> 00:24:20,920 در واقع، تعداد 50، یک گام در یک زمان. 520 00:24:20,920 --> 00:24:21,830 >> آجی: شماره 50؟ 521 00:24:21,830 --> 00:24:22,580 >> DAVID مالان: تعداد 50. 522 00:24:22,580 --> 00:24:24,746 و شما می توانید نشان می دهد چه در پشت هر یک از این درب 523 00:24:24,746 --> 00:24:27,930 به سادگی با دست زدن به آن را با یک انگشت. 524 00:24:27,930 --> 00:24:31,364 لعنتی. [خنده] 525 00:24:31,364 --> 00:24:34,560 >> [تشویق حضار] 526 00:24:34,560 --> 00:24:39,540 >> خیلی خوب انجام می شود. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 ما یک هدیه دوست داشتنی جایزه برای شما در اینجا. 529 00:24:44,090 --> 00:24:46,520 انتخاب شما از فیلم ما در هفته گذشته بحث شده است. 530 00:24:46,520 --> 00:24:47,362 >> آجی: آه، مرد. 531 00:24:47,362 --> 00:24:49,050 آه، من هرگز Spaceballs دیده می شود. 532 00:24:49,050 --> 00:24:49,520 >> DAVID مالان: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 خوب. 534 00:24:50,140 --> 00:24:53,790 بنابراین فقط یک لحظه نگه دارید. 535 00:24:53,790 --> 00:24:57,430 How-- اجازه دهید این را moment-- قابل تعلیم 536 00:24:57,430 --> 00:25:00,412 چگونه شما در مورد رفتن پیدا کردن تعداد 50؟ 537 00:25:00,412 --> 00:25:01,370 آجی: من به صورت تصادفی انتخاب کرد. 538 00:25:01,370 --> 00:25:03,420 DAVID مالان: پس شما انتخاب به صورت تصادفی و خوش شانس. 539 00:25:03,420 --> 00:25:03,790 آجی: بله. 540 00:25:03,790 --> 00:25:04,456 DAVID مالان: OK. 541 00:25:04,456 --> 00:25:05,050 عالی. 542 00:25:05,050 --> 00:25:08,470 بنابراین در حال حاضر، شما تا به حال نمی بدست خوش شانس، چه چیز دیگری 543 00:25:08,470 --> 00:25:10,210 ممکن است در پشت این درب اتفاقی افتاد؟ 544 00:25:10,210 --> 00:25:12,930 بنابراین اگر من به جلو و این اعداد نشان می دهد در اینجا، 545 00:25:12,930 --> 00:25:15,180 آنها در واقع به طور تصادفی می باشد. 546 00:25:15,180 --> 00:25:17,750 و بهترین شما می تواند داشته باشد انجام می شود، رک و پوست کنده است، توسط، در نهایت، 547 00:25:17,750 --> 00:25:19,410 در بدترین حالت، چک کردن همه آنها را. 548 00:25:19,410 --> 00:25:23,000 پس شما فوق العاده خوش شانس، که چیزی است که ما می خواهم یک الگوریتم تماس بگیرید. 549 00:25:23,000 --> 00:25:24,730 بله، تبریک. 550 00:25:24,730 --> 00:25:27,010 اما در حال حاضر طنز let's-- من، اگر شما می توانید. 551 00:25:27,010 --> 00:25:28,310 اجازه دهید به این تب اینجا بروید. 552 00:25:28,310 --> 00:25:31,460 و در اینجا اعداد در وضوح می آنچه به نظر می رسد به صورت تصادفی، 553 00:25:31,460 --> 00:25:32,280 و آنها بودند. 554 00:25:32,280 --> 00:25:35,160 اما در حال حاضر اگر من به جای ادعا که در پشت این درب 555 00:25:35,160 --> 00:25:39,070 عددی که طبقه بندی شده اند می باشد. 556 00:25:39,070 --> 00:25:41,780 هدف در حال حاضر به هم یافتن ما تعداد 50. 557 00:25:41,780 --> 00:25:45,910 اما این کار را انجام الگوریتمی، و به ما بگویید که چگونه شما در حال رفتن در مورد آن. 558 00:25:45,910 --> 00:25:48,020 و اگر شما آن را پیدا کنید، شما این فیلم را نگه دارید. 559 00:25:48,020 --> 00:25:49,520 شما را پیدا کند آن، شما آن را به عقب. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 آجی: من می خواهم برای بررسی به پایان می رسد برای اولین بار، برای تعیین اینکه آیا there's-- 562 00:25:58,112 --> 00:26:02,048 [خنده و تشویق] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID مالان: در اینجا شما بروید. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 بیایید نگاهی به یک از پیشینیان آجی را، 567 00:26:21,700 --> 00:26:25,450 شان که قرار بود کاملا به عنوان خوش شانس نیست. 568 00:26:25,450 --> 00:26:28,670 OK، بنابراین وظیفه خود را در اینجا، شان، به شرح زیر است. 569 00:26:28,670 --> 00:26:32,970 من در پشت این پنهان درب عدد هفت، 570 00:26:32,970 --> 00:26:37,200 اما دور در برخی از این درب جمع و همچنین سایر اعداد غیر منفی است. 571 00:26:37,200 --> 00:26:40,730 و هدف شما این است به این فکر می کنم ردیف بالا از اعداد فقط به عنوان یک آرایه. 572 00:26:40,730 --> 00:26:43,590 ما فقط دنباله ای از قطعات هستید کاغذ با شماره های پشت سر آنها. 573 00:26:43,590 --> 00:26:47,640 و هدف شما این است، تنها با استفاده از بالا آرایه در اینجا، من تعداد هفت پیدا کنید. 574 00:26:47,640 --> 00:26:51,200 و ما پس از آن رفتن به نقد چگونه شما در مورد انجام آن است. 575 00:26:51,200 --> 00:26:52,920 یافتن ما عدد هفت، لطفا. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 شماره 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5، 19، 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 این یک سوال ترفند نیست. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 در این مرحله نمره خود را بسیار نمی خوب، بنابراین شما نیز ممکن است ادامه دهم. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 برو. 590 00:27:39,802 --> 00:27:42,510 صادقانه بگویم، من نمی تواند کمک کند اما تعجب آنچه را که شما حتی فکر کردن در مورد. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: من می توانم تنها از ردیف بالا است. 592 00:27:44,990 --> 00:27:46,240 DAVID مالان: فقط ردیف بالا. 593 00:27:46,240 --> 00:27:47,281 پس از سه سمت چپ شما رو. 594 00:27:47,281 --> 00:27:48,310 بنابراین من 7 پیدا کنید. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [رسید فریاد توصیه] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 بنابراین هر دو از آن شگفت انگیز بود به دلایل بسیار متفاوت است. 599 00:28:26,130 --> 00:28:29,150 پس این است که در آن ما به سمت چپ خاموش یک لحظه پیش، 600 00:28:29,150 --> 00:28:32,530 و بینش کلیدی در اینجا شد این درب اعداد به حال 601 00:28:32,530 --> 00:28:37,390 پشت سر آنها است که، طبقه بندی شده اند شد ایده آل غذای آماده است که برای آن که شما می توانید انجام 602 00:28:37,390 --> 00:28:39,670 اساسا در بهتر این example-- دوم 603 00:28:39,670 --> 00:28:42,380 و، در واقع، که بود شان را اولین تلاش با اعداد تصادفی 604 00:28:42,380 --> 00:28:45,460 فقط به عنوان before-- اما به محض عنوان این شماره ها طبقه بندی شده اند، 605 00:28:45,460 --> 00:28:47,980 بسیار شبیه به دفترچه تلفن، چه می تواند شما را به وضوح انجام دهید؟ 606 00:28:47,980 --> 00:28:50,090 یا چگونه می تواند به شما اهرم که دانش؟ 607 00:28:50,090 --> 00:28:51,530 آره. 608 00:28:51,530 --> 00:28:54,910 >> رسید شما در نیمه راه به [نامفهوم]. 609 00:28:54,910 --> 00:28:55,660 DAVID مالان: آره. 610 00:28:55,660 --> 00:28:56,160 دقیقا. 611 00:28:56,160 --> 00:28:59,680 بنابراین غریزه اولیه آجی بود برای بررسی به پایان می رسد، که من به یاد می آورند، 612 00:28:59,680 --> 00:29:02,320 و پس از آن ما به نوعی به پایان رسید به عنوان مثال به سرعت. 613 00:29:02,320 --> 00:29:05,220 اما اگر ما شروع به انجام این کار بیش متد در امتداد آن خطوط، 614 00:29:05,220 --> 00:29:07,860 اما با شروع شاید در وسط، چرا که آنها در حال طبقه بندی شده اند، 615 00:29:07,860 --> 00:29:10,900 به محض آشکار شماره 16، بنابراین ما know-- 616 00:29:10,900 --> 00:29:14,850 و اجازه دهید دقیقا that-- ما بنابراین می دانیم که 50، در مورد امروز، 617 00:29:14,850 --> 00:29:16,080 کردم تا به حق باشد. 618 00:29:16,080 --> 00:29:18,735 بنابراین درست مانند در هفته صفر ما دفترچه تلفن در نیمه پاره 619 00:29:18,735 --> 00:29:21,490 و نیمی از پرتاب کرد مشکل دور، همان ایده است. 620 00:29:21,490 --> 00:29:23,680 ما می توانیم این نیمه پرتاب از مشکل دور. 621 00:29:23,680 --> 00:29:25,730 و احتمالا چیزی است که شما ممکن است الگوریتمی را انجام دهید، 622 00:29:25,730 --> 00:29:28,710 هنگامی که شما می دانید که 50 باید در سمت راست، اگر آن را در هر نقطه، 623 00:29:28,710 --> 00:29:31,390 است سعی کنید وجود دارد، در وسط از درب باقی مانده است. 624 00:29:31,390 --> 00:29:33,450 البته، 50 بالاتر است از 42 است، بنابراین ما می توانیم 625 00:29:33,450 --> 00:29:36,060 پرتاب این باقی مانده چهارم از مشکل دور، 626 00:29:36,060 --> 00:29:38,510 و، در نهایت، شناسایی چیزی شبیه به 50. 627 00:29:38,510 --> 00:29:41,050 اما همانطور که با دفترچه تلفن، این شماره 628 00:29:41,050 --> 00:29:44,560 به ما در حال حاضر در داده شد مرتب، که ما را 629 00:29:44,560 --> 00:29:47,450 با سوال، چگونه شما انجام دهد کارها را به منظور طبقه بندی شده اند؟ 630 00:29:47,450 --> 00:29:49,640 و، رک و پوست کنده، به چه هزینه؟ 631 00:29:49,640 --> 00:29:51,390 این یک چیز به تحویل دفترچه تلفن 632 00:29:51,390 --> 00:29:54,810 و پس از آن تحت تاثیر قرار دادن دوستان خود را با پیدا کردن شماره تلفن واقعا به سرعت، درست است؟ 633 00:29:54,810 --> 00:29:58,520 پاره کردن 32 صفحه از برای پیدا کردن یک فرد از 4 میلیارد صفحه، 634 00:29:58,520 --> 00:30:00,470 ما گفت: یکی از نمونه های شدید بود. 635 00:30:00,470 --> 00:30:03,320 اما چقدر وقت طول کشید ورایزون به مرتب سازی آن کتاب تلفن؟ 636 00:30:03,320 --> 00:30:06,170 چه مدت آن ما را به برای مرتب کردن این هفت عدد؟ 637 00:30:06,170 --> 00:30:10,110 این سوالی است که ما انجام داده ایم را تا کنون به طور کامل استفاده کنه. 638 00:30:10,110 --> 00:30:12,330 >> بنابراین اجازه دهید در حال حاضر این پرسش پاسخ دهد. 639 00:30:12,330 --> 00:30:15,920 و ما در حال حاضر همه از فیلم است، اما ما مجبور برخی از توپ های استرس. 640 00:30:15,920 --> 00:30:19,480 اگر، می گویند، هشت داوطلب به ما نمی ذهن پیوستن به اینجا؟ 641 00:30:19,480 --> 00:30:24,100 اجازه دهید به پیش بروید و انجام دهید، چگونه در مورد چهار نفر از شما، سه نفر از شما که اینجا هستید؟ 642 00:30:24,100 --> 00:30:25,290 دریافت برخی از چهره های جدید. 643 00:30:25,290 --> 00:30:27,220 و چهار نفر از شما وجود دارد؟ 644 00:30:27,220 --> 00:30:30,760 و now-- اجازه دهید تعصب نمی here-- و شماره هشت در اینجا در پایان. 645 00:30:30,760 --> 00:30:32,060 بیا تا. 646 00:30:32,060 --> 00:30:32,560 خوب. 647 00:30:32,560 --> 00:30:37,480 بنابراین آنچه که در اینجا برای هر یک از شما یک عدد است. 648 00:30:37,480 --> 00:30:40,055 اگر شما می خواهم به پیش رو، از این تعداد. 649 00:30:40,055 --> 00:30:40,763 نام شما چیست؟ 650 00:30:40,763 --> 00:30:41,950 >> آرتی: آرتی. 651 00:30:41,950 --> 00:30:43,100 >> DAVID مالان: آرتی، درست است. 652 00:30:43,100 --> 00:30:44,297 شما تعداد 1 است. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: امین. 654 00:30:45,310 --> 00:30:46,060 DAVID مالان: امین. 655 00:30:46,060 --> 00:30:46,820 دیوید. 656 00:30:46,820 --> 00:30:47,530 شما شماره 2 است. 657 00:30:47,530 --> 00:30:49,100 و جلو بروید، به عنوان I دست شما ورق کاغذ، 658 00:30:49,100 --> 00:30:52,130 خط خود را در مقابل موسیقی در همان جهت به عنوان وجود دارد است. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: سلام، اندی. 660 00:30:52,660 --> 00:30:53,970 >> DAVID مالان: اندی، آن را به خوبی به شما را ببینید. 661 00:30:53,970 --> 00:30:54,520 شماره 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: یعقوب. 663 00:30:55,310 --> 00:30:56,760 >> DAVID مالان: یعقوب، شماره 4. 664 00:30:56,760 --> 00:30:57,549 روی خوش آمدید. 665 00:30:57,549 --> 00:30:58,090 GRANT: گرانت. 666 00:30:58,090 --> 00:30:58,881 DAVID مالان: گرانت. 667 00:30:58,881 --> 00:31:00,348 شماره 5. 668 00:31:00,348 --> 00:31:01,200 >> ALANNA: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID مالان: Alanna، شماره 6. 670 00:31:02,766 --> 00:31:03,589 >> فرانسیس: فرانسیس. 671 00:31:03,589 --> 00:31:04,880 DAVID مالان: فرانسیس، شماره 7. 672 00:31:04,880 --> 00:31:05,200 و؟ 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: راشل. 674 00:31:05,830 --> 00:31:06,815 >> DAVID مالان: راشل، شماره 8. 675 00:31:06,815 --> 00:31:07,100 خوب. 676 00:31:07,100 --> 00:31:08,766 برو جلو و دریافت خود را در این جهت. 677 00:31:08,766 --> 00:31:11,440 به من اجازه دهید قرار دادن یک باقی مانده موسیقی ایستاده در محل. 678 00:31:11,440 --> 00:31:13,670 از کجا شما نیاز به یک موضع؟ 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 برو جلو و فقط با قرار دادن شماره های خود را که در آن مخاطبان می توانید آنها را در دیدن، 681 00:31:18,710 --> 00:31:20,340 موسیقی ایستاده رو به بیرون. 682 00:31:20,340 --> 00:31:27,240 و امیدوارم، اول ما بررسی سلامت عقل here-- 4، 2، 6. 683 00:31:27,240 --> 00:31:27,890 اوه اوه. 684 00:31:27,890 --> 00:31:29,070 یک دقیقه صبر کنید. 685 00:31:29,070 --> 00:31:31,140 ما 8 ندارد. 686 00:31:31,140 --> 00:31:35,180 من نیاز به شما اخراج از به عنوان مثال به نحوی. 687 00:31:35,180 --> 00:31:35,680 شماره 688 00:31:35,680 --> 00:31:36,940 نه، این OK. 689 00:31:36,940 --> 00:31:37,890 بیایید ببینید. 690 00:31:37,890 --> 00:31:38,880 ما می توانیم این کار را انجام. 691 00:31:38,880 --> 00:31:39,440 پایه های. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 حالا شد. 694 00:31:45,740 --> 00:31:46,800 درست است. 695 00:31:46,800 --> 00:31:47,360 خوب. 696 00:31:47,360 --> 00:31:50,260 بنابراین، در حال حاضر ما 8، 1، 3، 7 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 عالی. 699 00:31:51,360 --> 00:31:54,400 >> بنابراین سوال در دست است، در چه هزینه و از طریق چه روش، 700 00:31:54,400 --> 00:31:58,580 ما می توانیم در واقع مرتب سازی بر اساس این اعداد در اینجا به طوری که ما به نوعی می تواند به عقب کار می کنند، 701 00:31:58,580 --> 00:32:02,759 در نهایت، و decide-- آن است که واقعا قابل توجه است، آن را واقعا کارآمد، 702 00:32:02,759 --> 00:32:04,550 که من می توانم تقسیم و تسخیر یک دفترچه تلفن؟ 703 00:32:04,550 --> 00:32:06,716 آیا واقعا کارآمد است که من می توانم تقسیم و تسخیر 704 00:32:06,716 --> 00:32:08,600 آن تکه های دیجیتال کاغذ در هیئت مدیره، 705 00:32:08,600 --> 00:32:14,500 شاید اگر آن را به ما هزینه ثروت در زمان و یا چرخه انرژی یا CPU 706 00:32:14,500 --> 00:32:17,340 در واقع داده های ما به برخی از مرتب؟ 707 00:32:17,340 --> 00:32:18,930 بنابراین اجازه دهید که سوال بپرسید. 708 00:32:18,930 --> 00:32:22,077 >> پس اول از همه، این تعداد به در صورت تصادفی بسیار زیاد است، 709 00:32:22,077 --> 00:32:24,160 و من قصد دارم به پیشنهاد یک الگوریتم، و یا فرآیند 710 00:32:24,160 --> 00:32:25,970 که از طریق آن ما می توانیم این دوستان مرتب سازی بر اساس. 711 00:32:25,970 --> 00:32:28,100 من قصد دارم به روش این بسیار ساده لوحانه. 712 00:32:28,100 --> 00:32:30,730 و من قصد دارم به رسمیت شناختن که این نوع از تعداد زیادی برای من 713 00:32:30,730 --> 00:32:32,890 به نظر من قرار دادن در اطراف اطلاعات کل مجموعه در یک بار. 714 00:32:32,890 --> 00:32:33,640 اما شما می دانید چه؟ 715 00:32:33,640 --> 00:32:37,450 من قصد دارم به برخی از رفع بسیار ساده حاشیه ای. 716 00:32:37,450 --> 00:32:41,152 4 و 2 از نظم، اگر هدف این است که برای رفتن از 1 تا 8. 717 00:32:41,152 --> 00:32:41,860 بنابراین شما می دانید چه؟ 718 00:32:41,860 --> 00:32:43,776 من قصد دارم به شما بچه ها مبادله، اگر شما تغییر دهید 719 00:32:43,776 --> 00:32:46,380 از لحاظ جسمی و مواضع قطعات خود را از مقاله است. 720 00:32:46,380 --> 00:32:47,894 در حال حاضر 4 و 6، این به منظور می باشد. 721 00:32:47,894 --> 00:32:49,060 من قصد دارم به ترک آن باشد. 722 00:32:49,060 --> 00:32:50,227 6 و 8، کسانی که به منظور می باشد. 723 00:32:50,227 --> 00:32:51,185 رفتن به ترک آنها باشد. 724 00:32:51,185 --> 00:32:52,170 8 AND1، خارج از دستور. 725 00:32:52,170 --> 00:32:54,790 اگر شما دو نمی خواهد ذهن مبادله. 726 00:32:54,790 --> 00:32:57,300 در حال حاضر 8 و 3، اگر شما بچه ها می تواند مبادله. 727 00:32:57,300 --> 00:32:59,320 8 و 7، اگر شما بچه ها می تواند مبادله. 728 00:32:59,320 --> 00:33:01,790 و 8 و 5، اگر شما بچه ها می تواند مبادله. 729 00:33:01,790 --> 00:33:03,980 >> در حال حاضر، من انجام می شود؟ 730 00:33:03,980 --> 00:33:05,200 نه، بدیهی نیست. 731 00:33:05,200 --> 00:33:07,880 اما من را ساخته اند وضعیت بهتر است، درست است؟ 732 00:33:07,880 --> 00:33:09,430 نام و نام خانوادگی خود را دوباره چه بود، تعداد 8؟ 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: راشل. 734 00:33:10,055 --> 00:33:12,850 DAVID مالان: بنابراین راشل به طور موثر حباب تا خیلی دور، 735 00:33:12,850 --> 00:33:15,660 تمام راه را به پایان آرایه من از اعداد است. 736 00:33:15,660 --> 00:33:17,310 و به طوری که مشکل این است که نوع حل شده است. 737 00:33:17,310 --> 00:33:21,670 در حال حاضر، به وضوح، 2 هنوز هم نیاز به حرکت کمی، و 4 و 6 و 1. 738 00:33:21,670 --> 00:33:24,420 اما من به نظر می رسد شده اند کمی به راه حل نزدیک تر است. 739 00:33:24,420 --> 00:33:26,790 بنابراین اجازه دهید این همان اعمال اکتشافی ساده و بی تکلف است. 740 00:33:26,790 --> 00:33:27,690 2 و 4، OK. 741 00:33:27,690 --> 00:33:28,810 4 و 6، OK. 742 00:33:28,810 --> 00:33:29,930 6 و 1، میلی متر میلی متر. 743 00:33:29,930 --> 00:33:32,230 اجازه دهید مبادله. 744 00:33:32,230 --> 00:33:33,200 6 و 3، میلی متر میلی متر. 745 00:33:33,200 --> 00:33:34,420 اجازه دهید مبادله. 746 00:33:34,420 --> 00:33:35,580 6 و 7 OK است. 747 00:33:35,580 --> 00:33:36,590 7 و 5، جواب منفی. 748 00:33:36,590 --> 00:33:37,790 اجازه دهید مبادله. 749 00:33:37,790 --> 00:33:38,470 و در حال حاضر 7 و 8. 750 00:33:38,470 --> 00:33:39,862 و چه نام خود را دوباره چیست؟ 751 00:33:39,862 --> 00:33:40,570 فرانسیس: فرانسیس. 752 00:33:40,570 --> 00:33:41,445 DAVID مالان: فرانسیس. 753 00:33:41,445 --> 00:33:44,230 بنابراین در حال حاضر فرانسیس در حتی یک بهتر است موقعیت، چون در حال حاضر 7 و 8 754 00:33:44,230 --> 00:33:46,440 به درستی تا بالای حباب. 755 00:33:46,440 --> 00:33:47,510 پس از 2 و 4، OK. 756 00:33:47,510 --> 00:33:48,720 4 و 1، مبادله اجازه. 757 00:33:48,720 --> 00:33:50,410 4 و 3، مبادله اجازه. 758 00:33:50,410 --> 00:33:51,550 4 و 6، شما OK کنید. 759 00:33:51,550 --> 00:33:53,340 6 و 5، مبادله اجازه. 760 00:33:53,340 --> 00:33:54,590 و در حال حاضر آن بچه ها خوب است. 761 00:33:54,590 --> 00:33:55,780 ما تقریبا وجود دارد. 762 00:33:55,780 --> 00:33:57,706 2 و 1، از منظور، پس از مبادله. 763 00:33:57,706 --> 00:33:59,080 و در حال حاضر اجازه دهید من می توانم در یک بررسی سلامت عقل. 764 00:33:59,080 --> 00:34:03,080 2 و 3، 3 و 4، 4 و 5، 5 و 6، 6 و 7 و 8. 765 00:34:03,080 --> 00:34:05,060 OK، بنابراین ما در حال انجام می شود. 766 00:34:05,060 --> 00:34:09,310 >> اما در چه هزینه کردم مرتب سازی بر اساس این اعداد که اینجا هستید؟ 767 00:34:09,310 --> 00:34:13,960 خوب، چگونه بسیاری از مراحل من به طور بالقوه را وقتی که مرتب سازی این مردمی؟ 768 00:34:13,960 --> 00:34:15,710 خب، ما به این سوال می آیند. 769 00:34:15,710 --> 00:34:18,030 اما، رک و پوست کنده، اگر شما کردم کمی بی حوصله، که 770 00:34:18,030 --> 00:34:22,270 نوع آشکار در که این نبود شاید الگوریتم کارآمد ترین. 771 00:34:22,270 --> 00:34:25,230 و در واقع، رک و پوست کنده، من عرق کردن همه بیشتر راه رفتن به عقب و جلو. 772 00:34:25,230 --> 00:34:26,639 که احساس نمی خصوص کارآمد می باشد. 773 00:34:26,639 --> 00:34:27,805 بنابراین اجازه دهید چیز دیگری را امتحان کنید. 774 00:34:27,805 --> 00:34:31,870 اگر شما بچه ها می تواند تنظیم مجدد خودتان را به این هشت ارزش. 775 00:34:31,870 --> 00:34:32,969 کار خوب. 776 00:34:32,969 --> 00:34:36,570 >> اجازه دهید یک نگاه دیجیتالی، فقط برای یک لحظه قبل از ما چیزی را امتحان کنید دیگر، 777 00:34:36,570 --> 00:34:38,179 در چه اتفاقی افتاده. 778 00:34:38,179 --> 00:34:41,330 تا اینجا، شما در مورد برای دیدن هستیم تجسم از این هشت انسان 779 00:34:41,330 --> 00:34:44,719 به موجب آن آبی و قرمز میله نشان می دهد. 780 00:34:44,719 --> 00:34:46,670 بلندتر نوار، بزرگتر از تعداد. 781 00:34:46,670 --> 00:34:48,510 کوتاه تر از نوار، کوچکتر تعداد. 782 00:34:48,510 --> 00:34:51,560 و آنچه که شما در حال رفتن برای دیدن است در به صورت تصادفی بیشتر از هشت نفر از آنها. 783 00:34:51,560 --> 00:34:55,830 شما در حال رفتن برای دیدن این میله گرفتن توسط الگوریتم همان طبقه بندی شده اند، 784 00:34:55,830 --> 00:34:59,890 یا مجموعه ای از دستورالعمل ها، که ما از این پس شما تماس نوع حباب. 785 00:34:59,890 --> 00:35:04,000 بنابراین توجه، در هر ثانیه یا بیشتر، دو میله ها نور به رنگ قرمز، 786 00:35:04,000 --> 00:35:05,590 هستند که توسط کامپیوتر در مقایسه با. 787 00:35:05,590 --> 00:35:08,630 و سپس در صورتی که نوار بزرگ و نوار کمی از نظم، 788 00:35:08,630 --> 00:35:11,220 آنها هستند که برای من عوض میکنه. 789 00:35:11,220 --> 00:35:15,120 >> در حال حاضر این است فوق العاده خسته کننده به تماشای این، قطعا، 790 00:35:15,120 --> 00:35:18,630 برای مدت طولانی، اما متوجه takeaway-- میله بزرگ در حال حرکت به سمت راست، 791 00:35:18,630 --> 00:35:20,460 میله کمی در حال حرکت به سمت چپ. 792 00:35:20,460 --> 00:35:23,380 اجازه دهید این روند سقط و سرعت این تا 793 00:35:23,380 --> 00:35:27,330 می شود خیلی سریع تر است، بنابراین ما می توانیم حس در سطح بالا از آنچه، 794 00:35:27,330 --> 00:35:29,970 در واقع، مرتب سازی حبابی در حال انجام است. 795 00:35:29,970 --> 00:35:33,150 در واقع، آن را متلاطم تا سمت راست از لیست، 796 00:35:33,150 --> 00:35:35,260 و یا آرایه، میله بزرگتر است. 797 00:35:35,260 --> 00:35:40,020 و برعکس، میله کوچک حباب راه خود را به سمت چپ، 798 00:35:40,020 --> 00:35:42,950 البته در سرعت سریع تر که ما قبلا انجام داده است. 799 00:35:42,950 --> 00:35:45,850 بنابراین، سخت تر برای دیدن با انسان، اما بصری که در واقع چیزی 800 00:35:45,850 --> 00:35:46,540 اتفاق می افتد شده است. 801 00:35:46,540 --> 00:35:49,110 >> اما اجازه دهید سعی کنید اساسا روش های مختلف در حال حاضر. 802 00:35:49,110 --> 00:35:52,387 بیایید سعی مختلف الگوریتم به موجب آن ما شما 803 00:35:52,387 --> 00:35:59,640 بچه ها در این اصل شروع مواضع، که این منظور اینجا بود. 804 00:35:59,640 --> 00:36:00,827 و اجازه دهید پیش رو در حال حاضر است. 805 00:36:00,827 --> 00:36:02,910 و من قصد دارم برای انجام کاری حتی ساده تر، درست است؟ 806 00:36:02,910 --> 00:36:06,710 با نگاهی به گذشته، مبادله دو به دو دوباره و دوباره، تقریبا کمی باهوش. 807 00:36:06,710 --> 00:36:10,460 اجازه دهید چیزها حتی بیشتر ساده لوحانه، که در آن اگر من می خواهم به مرتب سازی این دوستان، 808 00:36:10,460 --> 00:36:12,560 اجازه دهید من فقط به دنبال حفظ برای کوچکترین عنصر. 809 00:36:12,560 --> 00:36:14,570 بنابراین در حال حاضر، 4 است کوچکترین عدد من دیده ام. 810 00:36:14,570 --> 00:36:15,695 من قصد دارم به یاد داشته باشید که. 811 00:36:15,695 --> 00:36:17,750 نه، 2 بهتر است، و به یاد داشته باشید که. 812 00:36:17,750 --> 00:36:20,730 1 است و حتی کوچکتر است. 813 00:36:20,730 --> 00:36:21,970 3، 7، 5. 814 00:36:21,970 --> 00:36:22,470 OK. 815 00:36:22,470 --> 00:36:23,750 One-- چه دوباره نام خود را؟ 816 00:36:23,750 --> 00:36:24,400 >> آرتی: آرتی. 817 00:36:24,400 --> 00:36:24,610 >> DAVID مالان: آرتی. 818 00:36:24,610 --> 00:36:25,460 بنابراین، آرتی، پیش بروید. 819 00:36:25,460 --> 00:36:27,043 من قصد دارم به شما خروج از خط. 820 00:36:27,043 --> 00:36:28,400 اگر شما می توانید به اینجا آمده است. 821 00:36:28,400 --> 00:36:30,790 و من نیاز به اتاق را برای او. 822 00:36:30,790 --> 00:36:32,040 ما یک نقطه تصمیم گیری کنید. 823 00:36:32,040 --> 00:36:36,000 چگونه ممکن است اتاق ما را برای آرتی اینجا در آغاز که در آن تعداد 1 متعلق؟ 824 00:36:36,000 --> 00:36:36,770 >> رسید شیفت. 825 00:36:36,770 --> 00:36:38,950 >> DAVID مالان: OK، ما می تواند همه تغییر. 826 00:36:38,950 --> 00:36:40,860 اما بهینه سازی ارائه شده است. 827 00:36:40,860 --> 00:36:43,410 که احساس می کند کمی آزار دهنده برای من به چهار نفر بپرسید 828 00:36:43,410 --> 00:36:44,620 به حرکت تمام راه را. 829 00:36:44,620 --> 00:36:45,520 چه چیز دیگری می توانم انجام دهم؟ 830 00:36:45,520 --> 00:36:46,360 >> رسید آنها را تغییر دهید. 831 00:36:46,360 --> 00:36:46,850 >> DAVID مالان: آنها را تغییر دهید. 832 00:36:46,850 --> 00:36:47,900 و چه نام خود را دوباره چیست؟ 833 00:36:47,900 --> 00:36:48,441 >> JACOB: یعقوب. 834 00:36:48,441 --> 00:36:50,330 DAVID مالان: یعقوب، حرکت می کند. 835 00:36:50,330 --> 00:36:54,440 بسیار کارآمد تر فقط به محل مبادله یعقوب با آرتی، 836 00:36:54,440 --> 00:36:56,710 به مجبور مخالف هر چهار از این دوستان، 837 00:36:56,710 --> 00:36:58,734 بسیار از شما سپاسگزارم، به موقعیت صحیح خود را. 838 00:36:58,734 --> 00:37:01,150 چه خوب در مورد آرتی در حال حاضر، او در موقعیت صحیح خود است. 839 00:37:01,150 --> 00:37:02,060 اجازه دهید این را دوباره انجام دهید. 840 00:37:02,060 --> 00:37:03,730 2، که کوچکترین عدد من دیده ام است. 841 00:37:03,730 --> 00:37:05,690 3، 7، 5. 842 00:37:05,690 --> 00:37:06,190 OK. 843 00:37:06,190 --> 00:37:07,467 2 قطعا کوچکترین. 844 00:37:07,467 --> 00:37:08,550 لازم نیست برای انجام هر کار. 845 00:37:08,550 --> 00:37:09,320 اجازه دهید دوباره آن را انجام دهد. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 کوچکترین؟ 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 نه. 850 00:37:11,590 --> 00:37:11,720 4؟ 851 00:37:11,720 --> 00:37:12,220 آه. 852 00:37:12,220 --> 00:37:13,420 اجازه بدهید من به یاد داشته باشید 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 اجازه بدهید من به یاد داشته باشید 3. 855 00:37:15,110 --> 00:37:16,080 7، 5. 856 00:37:16,080 --> 00:37:18,490 کوچک ترین عدد من دیده می شود در این پاس 3 است. 857 00:37:18,490 --> 00:37:20,340 اگر شما می خواهم بیرون آمده است. 858 00:37:20,340 --> 00:37:21,986 از کجا می خواهیم به شما را؟ 859 00:37:21,986 --> 00:37:22,860 و چه نام شما چیه؟ 860 00:37:22,860 --> 00:37:23,530 >> ALANNA: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID مالان: Alanna، ما رفتن به شما اخراج. 862 00:37:25,780 --> 00:37:28,670 اما این کارآمد تر، فقط به مبادله دو نفر، 863 00:37:28,670 --> 00:37:31,850 از به چند نفر دارند در واقع گریز است. 864 00:37:31,850 --> 00:37:32,850 حال بگذارید این را دوباره انجام دهد. 865 00:37:32,850 --> 00:37:34,980 من قصد دارم به 4 را انتخاب کنید، پس بیا در خارج. 866 00:37:34,980 --> 00:37:36,540 و چه کسی به حرکت؟ 867 00:37:36,540 --> 00:37:37,750 شماره 8، البته. 868 00:37:37,750 --> 00:37:40,260 اگر من در حال حاضر تعداد 5 پیدا کردن، در آمده است. 869 00:37:40,260 --> 00:37:42,104 شماره 8 رفتن به دوباره بیرون کردند. 870 00:37:42,104 --> 00:37:43,770 من در حال حاضر رفتن به پیدا کردن تعداد 6 در محل. 871 00:37:43,770 --> 00:37:44,410 7 در محل. 872 00:37:44,410 --> 00:37:45,080 8 در محل. 873 00:37:45,080 --> 00:37:48,590 >> چیزی که ما فقط در حال حاضر انجام شده است چیزی به نام انتخاب نوع، 874 00:37:48,590 --> 00:37:52,560 و اگر ما این تجسم، آن را رفتن به احساس کمی متفاوت است. 875 00:37:52,560 --> 00:37:56,800 اجازه دهید به جلو و از این به منو اینجا، در این visualization-- 876 00:37:56,800 --> 00:38:02,920 اجازه دهید این تغییر to-- آمده در، فایرفاکس. 877 00:38:02,920 --> 00:38:07,610 اجازه دهید این تغییر به انتخاب نوع. 878 00:38:07,610 --> 00:38:11,830 و اجازه دهید آن را به سرعت به عنوان قبل از، و شروع به تجسم حال حاضر. 879 00:38:11,830 --> 00:38:13,990 و این الگوریتم احساس های مختلف به آن. 880 00:38:13,990 --> 00:38:16,480 در هر تکرار، رک و پوست کنده، آن را حتی بیشتر سر راست است. 881 00:38:16,480 --> 00:38:18,385 من فقط انتخاب کوچکترین عنصر. 882 00:38:18,385 --> 00:38:21,510 در حال حاضر، رک و پوست کنده، من کمی خوش شانس بود که زمان، که در آن طبقه بندی شده اند فوق العاده سریع می باشد. 883 00:38:21,510 --> 00:38:22,660 عناصر تصادفی بود. 884 00:38:22,660 --> 00:38:25,520 این نیست، همانطور که ما در نهایت ببینید، اساسا سریع تر است. 885 00:38:25,520 --> 00:38:29,400 اما اجازه دهید یک سوم و نهایی را مشاهده کنید نزدیک در اینجا به عنوان به چه خبر است. 886 00:38:29,400 --> 00:38:36,230 بنابراین اجازه دهید پیش بروید و بچه ها شما تنظیم مجدد یک زمان نهایی به این منظور اینجا. 887 00:38:36,230 --> 00:38:38,450 >> و در حال حاضر، من قصد دارم به است کمی باهوش تر، 888 00:38:38,450 --> 00:38:40,220 تنها به دور از الگوریتم های ما. 889 00:38:40,220 --> 00:38:41,230 من قصد دارم برای انجام این کار. 890 00:38:41,230 --> 00:38:43,140 من قصد دارم برای رفتن نیست به جلو و عقب بسیار است. 891 00:38:43,140 --> 00:38:44,900 صادقانه بگویم، من از خسته ام تمام این تراورس. 892 00:38:44,900 --> 00:38:47,691 من فقط رفتن به آنچه که من هستم داده شده در ابتدای فهرست، 893 00:38:47,691 --> 00:38:49,460 و من قصد دارم به مرتب کردن بر اساس که پس از آن و وجود دارد. 894 00:38:49,460 --> 00:38:50,140 بنابراین در اینجا ما می باشد. 895 00:38:50,140 --> 00:38:51,030 شماره 4. 896 00:38:51,030 --> 00:38:53,680 من قصد دارم برای وارد کردن تعداد 4 را به لیست طبقه بندی شده اند. 897 00:38:53,680 --> 00:38:54,180 انجام می شود. 898 00:38:54,180 --> 00:38:58,300 من ادعا می کنم در حال حاضر، و فقط به این تر روشن، این بخش از لیست من طبقه بندی شده اند است. 899 00:38:58,300 --> 00:39:02,610 این نوع از ادعای احمقانه است، اما در واقع 4 در یک لیست از اندازه یک طبقه بندی شده اند. 900 00:39:02,610 --> 00:39:04,210 در حال حاضر، من قصد دارم به تعداد 2 را. 901 00:39:04,210 --> 00:39:07,670 شماره 2 من در حال حاضر به رفتن قرار دادن به جای مناسب. 902 00:39:07,670 --> 00:39:08,680 تا جایی که می کند 2 تعلق دارد؟ 903 00:39:08,680 --> 00:39:09,824 بدیهی است، بیش از اینجا. 904 00:39:09,824 --> 00:39:11,490 پس پیش بروید و حرکت به عقب، اگر شما می توانید. 905 00:39:11,490 --> 00:39:14,406 و چرا شما نمی بچه ها فقط به آهنگ های خود را با شما ایستاده است این زمان. 906 00:39:14,406 --> 00:39:17,020 و اجازه دهید به زور وارد می به ابتدای فهرست. 907 00:39:17,020 --> 00:39:17,936 پس کار کمی بیشتر. 908 00:39:17,936 --> 00:39:20,890 من تا به حال به حرکت در اطراف یعقوب، و چه نام شما چیه؟ 909 00:39:20,890 --> 00:39:21,420 >> AMIN: امین. 910 00:39:21,420 --> 00:39:22,270 >> DAVID مالان: امین. 911 00:39:22,270 --> 00:39:24,350 اما حداقل من نمی به عقب و جلو. 912 00:39:24,350 --> 00:39:25,739 من فقط گرفتن چیزهایی که من بروید. 913 00:39:25,739 --> 00:39:27,530 من فقط آنها را به قرار دادن در جای مناسب. 914 00:39:27,530 --> 00:39:29,220 6، این است که در واقع بسیار آسان است. 915 00:39:29,220 --> 00:39:31,510 اجازه دهید به شما وارد بیش از وجود دارد، اگر شما فقط می خواستم به حرکت بیش از کمی. 916 00:39:31,510 --> 00:39:32,870 شماره 8، نیز بسیار آسان است. 917 00:39:32,870 --> 00:39:33,741 راست بیش از وجود دارد. 918 00:39:33,741 --> 00:39:34,240 لعنتی. 919 00:39:34,240 --> 00:39:37,590 شماره 1 ما نمی توانیم فقط مبادله با امین در اینجا، 920 00:39:37,590 --> 00:39:39,340 به دلیل این که در آینده به یک ظرف غذا تا نظم. 921 00:39:39,340 --> 00:39:40,660 بنابراین ما باید کمی باهوش تر است. 922 00:39:40,660 --> 00:39:42,770 بنابراین، آرتی، اگر شما می توانید به بالا و برای یک لحظه. 923 00:39:42,770 --> 00:39:46,550 اجازه دهید به پیش بروید و تغییر در حال حاضر، بر خلاف الگوریتم های قبلی ما، 924 00:39:46,550 --> 00:39:50,910 به اتاق را برای آرتی حق در اینجا در آغاز. 925 00:39:50,910 --> 00:39:54,690 بنابراین در پایان روز، من از نوع هستم انجام آنچه که من می خواستم برای جلوگیری از قبل. 926 00:39:54,690 --> 00:39:57,770 و به این ترتیب الگوریتم مرتب کردن بر اساس من است از معکوس، فکری، 927 00:39:57,770 --> 00:39:59,070 از آنچه در آن اصل بود. 928 00:39:59,070 --> 00:40:01,240 من فقط انجام تغییر در یک نقطه متفاوت است. 929 00:40:01,240 --> 00:40:02,291 در حال حاضر من در 3 هستم. 930 00:40:02,291 --> 00:40:02,790 اوه، لعنتی. 931 00:40:02,790 --> 00:40:04,039 ما را مجبور به انجام کار بیشتر است. 932 00:40:04,039 --> 00:40:05,060 بنابراین اجازه دهید به شما فشار است. 933 00:40:05,060 --> 00:40:09,360 اجازه دهید حرکت 8، 6، 4-- آه oh-- و 3 در حال رفتن به سمت راست وجود دارد. 934 00:40:09,360 --> 00:40:11,490 بنابراین حداقل پس انداز کمی این زمان. 935 00:40:11,490 --> 00:40:13,100 7، و نه بیش از حد کار انجام شود. 936 00:40:13,100 --> 00:40:15,370 بنابراین اگر شما می خواهید به موسیقی پاپ پشت، اجازه دهید شما را وارد کنید. 937 00:40:15,370 --> 00:40:17,440 و در آخر، 5، اگر شما می خواهید به موسیقی پاپ به عقب، ما 938 00:40:17,440 --> 00:40:22,610 نیاز به شما تغییر، شما، شما، تا پنج در محل است. 939 00:40:22,610 --> 00:40:25,670 >> بنابراین در حال حاضر برای دیدن این در سطح بالا گرافیکی، 940 00:40:25,670 --> 00:40:31,080 اجازه دهید این الگوریتم انجام تجسم یک زمان اضافی. 941 00:40:31,080 --> 00:40:33,580 پس این ما باید نوعی درج تماس بگیرید. 942 00:40:33,580 --> 00:40:37,700 ما آن را فقط به عنوان اجرا سریع، و آن را شروع کنید. 943 00:40:37,700 --> 00:40:39,580 و این، بیش از حد، احساس متفاوت است. 944 00:40:39,580 --> 00:40:42,180 این نوع بهتر و بهتر است، اما آن را هیچ گاه کامل 945 00:40:42,180 --> 00:40:44,630 تا زمانی که من در و صاف که این فاصله است. 946 00:40:44,630 --> 00:40:47,860 از آنجا که، دوباره، من فقط مصرف چه من که از سمت چپ به راست داده شده است. 947 00:40:47,860 --> 00:40:50,350 بنابراین من می کنید خیلی خوش شانس که همه چیز کامل بود. 948 00:40:50,350 --> 00:40:54,190 به همین دلیل ما به حال این کمی mispositions که ما در طول زمان ثابت است. 949 00:40:54,190 --> 00:40:58,890 >> پس همه این الگوریتم ها به نظر می رسد در قدم کمی متفاوت اجرا شود. 950 00:40:58,890 --> 00:41:02,030 در واقع، که به شما می گویند است بهترین و سریع ترین تا کنون؟ 951 00:41:02,030 --> 00:41:03,450 حباب مرتب کردن بر اساس، برای اولین بار؟ 952 00:41:03,450 --> 00:41:05,000 مرتب کردن بر اساس انتخاب، دوم؟ 953 00:41:05,000 --> 00:41:08,450 مرتب کردن بر اساس درج، سوم؟ 954 00:41:08,450 --> 00:41:10,710 من می شنوم برخی از انواع انتخاب شود. 955 00:41:10,710 --> 00:41:13,280 دیگر افکار؟ 956 00:41:13,280 --> 00:41:16,880 >> پس معلوم است که همه از این الگوریتم ها 957 00:41:16,880 --> 00:41:22,400 اساسا فقط به عنوان کارآمد به عنوان هر other-- و یا، برعکس، فقط به عنوان 958 00:41:22,400 --> 00:41:25,980 ناکارآمد به عنوان هر یک از دیگر، چرا که ما اساسا می تواند انجام دهد 959 00:41:25,980 --> 00:41:28,120 بهتر از هر سه از این الگوریتم ها. 960 00:41:28,120 --> 00:41:29,990 و این یک بیت از یک دروغ سفید، بیش از حد. 961 00:41:29,990 --> 00:41:32,580 وقتی که من می گویند به عنوان کارآمد و یا به عنوان ناکارآمد، 962 00:41:32,580 --> 00:41:35,040 که حداقل برای ارزش فوق العاده زیادی از n است. 963 00:41:35,040 --> 00:41:38,450 هنگامی که ما در اینجا فقط هشت نفر، و یا شاید 50 یا بیشتر بارها بر روی صفحه نمایش، 964 00:41:38,450 --> 00:41:41,645 شما کاملا می تفاوت متوجه در میان این سه الگوریتم باشد. 965 00:41:41,645 --> 00:41:44,020 اما به عنوان نفر، تعداد زیادی از مردم، و یا تعدادی از شماره ها، 966 00:41:44,020 --> 00:41:46,350 و یا تعداد زیادی از مردم در گوشی کتاب، و یا تعدادی از صفحات وب 967 00:41:46,350 --> 00:41:48,230 در پایگاه داده گوگل بزرگتر و بزرگتر می شود، 968 00:41:48,230 --> 00:41:51,650 خواهیم دید که هر سه از این الگوریتم در واقع بسیار ضعیف است. 969 00:41:51,650 --> 00:41:54,060 و ما اساسا می تواند انجام دهد بهتر از آن. 970 00:41:54,060 --> 00:41:56,830 >> اجازه دهید یک نگاه، در نهایت، در چه این الگوریتم ممکن است 971 00:41:56,830 --> 00:41:59,520 صدا مانند در متن چند نفر دیگر 972 00:41:59,520 --> 00:42:03,550 و همچنین از طریق این تجسم اینجا 973 00:42:03,550 --> 00:42:06,860 است که ما را به شما معرفی تعدادی از الگوریتم باشد. 974 00:42:06,860 --> 00:42:10,330 اجازه دهید به پیش بروید و تبریک شرکت کنندگان ما در اینجا، همه از آنها 975 00:42:10,330 --> 00:42:11,690 خود را به خوبی طبقه بندی شده اند. 976 00:42:11,690 --> 00:42:15,124 اگر شما می خواهم را به یک هدیه فراق. 977 00:42:15,124 --> 00:42:16,540 شما می توانید شماره خود را به عنوان به خوبی نگه دارید. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 و آنچه خواهید دید، و یا به جای شنیدن، در حال حاضر، 980 00:42:22,520 --> 00:42:25,710 این است که به عنوان ما را برای تلفن های موبایل به هر یک از این میله 981 00:42:25,710 --> 00:42:28,660 و ارتباط آن را با نرم افزار، فرکانس های مختلف صدا، 982 00:42:28,660 --> 00:42:33,970 شما می توانید ذهن خود را audioly تر بسته بندی در اطراف هر یک از این چیزها چه 983 00:42:33,970 --> 00:42:34,470 شبیه. 984 00:42:34,470 --> 00:42:39,325 اول که مرتب سازی بر اساس درج است 985 00:42:39,325 --> 00:42:44,275 >> [تن] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> این نوع حباب دیگر است. 988 00:42:49,720 --> 00:42:54,175 >> [تن] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> مرتب کردن بر اساس انتخاب. 991 00:43:18,222 --> 00:43:22,596 >> [تن] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> چیزی به نام مرتب کردن بر اساس ادغام. 994 00:43:35,150 --> 00:43:38,140 >> [تن] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> مرتب کردن بر اساس گنوم. 997 00:43:51,278 --> 00:43:56,390 >> [تن] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> که در آن است برای CS50. 1000 00:44:09,430 --> 00:44:13,360 ما شما را در روز چهارشنبه را ببینید. 1001 00:44:13,360 --> 00:44:16,671 >> راوی: و اکنون، "عمیق افکار، "توسط Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 و چرا از آن است برای حلقه؟ 1004 00:44:21,590 --> 00:44:23,200 چرا آن را بهتر نمی کند؟ 1005 00:44:23,200 --> 00:44:25,970 من می خواهم یک پنج حلقه را. 1006 00:44:25,970 --> 00:44:28,720 >> [خنده]