1 00:00:00,000 --> 00:00:10,550 2 00:00:10,550 --> 00:00:14,050 >> DAVID J. مالان: این CS50 است و این آغاز هفته چهار است. 3 00:00:14,050 --> 00:00:18,630 و، پسر، فولکس واگن در است مشکل همه به خاطر نرم افزار است. 4 00:00:18,630 --> 00:00:20,264 اجازه دهید ما را یک نگاه. 5 00:00:20,264 --> 00:00:20,930 [پخش ویدئو] 6 00:00:20,930 --> 00:00:25,560 -Cars، باهوش ترین شخصیت در فیلم سریع و خشمگین. 7 00:00:25,560 --> 00:00:29,100 این هفته خودروساز آلمانی فولکس واگن خود را پیدا 8 00:00:29,100 --> 00:00:32,490 در وسط یک رسوایی نسبت به طور بالقوه جنایی. 9 00:00:32,490 --> 00:00:36,060 >> -Volkswagen برای میلیاردها پرانتز در جریمه، اتهامات جنایی ممکن 10 00:00:36,060 --> 00:00:38,560 برای مدیران اجرایی آن، به عنوان شرکت عذر خواهی 11 00:00:38,560 --> 00:00:41,840 برای تقلب 11 میلیون اتومبیل به کمک به آن را ضرب و شتم آزمون گازهای گلخانه ای. 12 00:00:41,840 --> 00:00:44,950 >> مدل های دیزلی -Certain شد با نرم افزار پیچیده طراحی شده 13 00:00:44,950 --> 00:00:48,440 که اطلاعات مورد استفاده از جمله موقعیت فرمان و خودرو 14 00:00:48,440 --> 00:00:51,870 سرعت برای تعیین ماشین بود تحت آزمایش گازهای گلخانه ای. 15 00:00:51,870 --> 00:00:55,650 تحت این شرایط، موتور می انتشارات سمی را کاهش دهد. 16 00:00:55,650 --> 00:00:59,070 اما ماشین برای دور زدن تقلب شده که زمانی که آن رانده شد. 17 00:00:59,070 --> 00:01:03,320 تولید گازهای گلخانه ای افزایش یافته است 10 تا 40 بار بالاتر از سطح EPA قابل قبول است. 18 00:01:03,320 --> 00:01:04,280 >> [END پخش] 19 00:01:04,280 --> 00:01:05,220 >> DAVID J. مالان: بنابراین اجازه دهید نگاهی به این 20 00:01:05,220 --> 00:01:07,250 و ببینید که دقیقا چگونه این ممکن است اجرا شود 21 00:01:07,250 --> 00:01:09,680 و چگونه این ممکن است تحت تاثیر قرار اتومبیل بسیاری مثل این. 22 00:01:09,680 --> 00:01:12,840 بنابراین در دست من در اینجا مطبوعات انتشار است که توسط EPA-- صادر شد 23 00:01:12,840 --> 00:01:14,620 محیط زیست آژانس حفاظت از که 24 00:01:14,620 --> 00:01:18,032 آژانس نظارتی آمریکا این است که دسته نگرانی های زیست محیطی، 25 00:01:18,032 --> 00:01:19,740 و پس از آن واقعی اخطار قانونی که 26 00:01:19,740 --> 00:01:22,420 ارسال به فولکس واگن تنها چند روز پیش. 27 00:01:22,420 --> 00:01:26,530 >> بنابراین سازمان حفاظت محیط زیست می نویسد، و افشا کن عمومی، یک نرم افزار پیچیده 28 00:01:26,530 --> 00:01:29,390 الگوریتم در برخی از خودروهای فولکس واگن تشخیص 29 00:01:29,390 --> 00:01:32,630 زمانی که خودرو تحت تست تولید گازهای گلخانه ای رسمی 30 00:01:32,630 --> 00:01:36,505 و تبدیل گازهای گلخانه ای کامل کنترل در تنها در طول آزمون. 31 00:01:36,505 --> 00:01:38,380 اثربخشی این آلودگی وسایل نقلیه 32 00:01:38,380 --> 00:01:43,260 دستگاه های کنترل تولید گازهای گلخانه ای تا حد زیادی در تمام رانندگی عادی کاهش می یابد 33 00:01:43,260 --> 00:01:44,320 شرایط. 34 00:01:44,320 --> 00:01:48,190 این نتایج در اتومبیل که با استانداردهای در آزمایشگاه و یا تست 35 00:01:48,190 --> 00:01:52,790 ایستگاه، اما در حین عملیات عادی منتشر می کنند oxides-- نیتروژن و یا NOx-- 36 00:01:52,790 --> 00:01:54,950 تا 40 برابر استاندارد. 37 00:01:54,950 --> 00:01:58,220 این نرم افزار تولید شده توسط فولکس واگن یک دستگاه نقل قول را تمام کردن، شکست، 38 00:01:58,220 --> 00:02:00,650 به عنوان پاک تعریف قانون هوای در ایالات متحده. 39 00:02:00,650 --> 00:02:03,410 >> آنها در رفتن به می گویند که سازمان حفاظت محیط زیست و دیگر آژانس 40 00:02:03,410 --> 00:02:07,020 کشف دستگاه را شکست نرم افزار پس از تجزیه و تحلیل مستقل 41 00:02:07,020 --> 00:02:09,660 توسط محققان در غرب دانشگاه ویرجینیا است. 42 00:02:09,660 --> 00:02:14,160 آلودگی های NOx به کمک دی اکسید نیتروژن، اوزون سطح پایه، 43 00:02:14,160 --> 00:02:15,700 و ذرات ریز. 44 00:02:15,700 --> 00:02:18,090 قرار گرفتن در معرض این آلاینده های پیوند شده است 45 00:02:18,090 --> 00:02:20,870 با طیف گسترده ای از اثرات جدی سلامت، 46 00:02:20,870 --> 00:02:23,637 از جمله افزایش آسم حملات تنفسی و سایر 47 00:02:23,637 --> 00:02:26,470 بیماری ها می تواند به اندازه کافی جدی می شود به به بیمارستان ارسال به مردم. 48 00:02:26,470 --> 00:02:28,660 قرار گرفتن در معرض ازن و ذرات نیز 49 00:02:28,660 --> 00:02:31,960 با زودرس شده است مرگ به علت مرتبط تنفسی 50 00:02:31,960 --> 00:02:35,690 و یا قلبی عروقی اثرات مربوط می شود. 51 00:02:35,690 --> 00:02:38,940 کودکان، سالمندان، افراد مبتلا به بیماری های تنفسی از قبل موجود 52 00:02:38,940 --> 00:02:42,840 به خصوص در معرض خطر هستند اثرات بهداشتی آلاینده های. 53 00:02:42,840 --> 00:02:45,056 >> کافی است که می گویند، آن را کاملا جدی است. 54 00:02:45,056 --> 00:02:46,930 و اجازه دهید در رفتن به عنوان خوانده شده فقط یک گزیده ای بیشتر 55 00:02:46,930 --> 00:02:49,370 و پس از آن ما یک نگاه مفاهیم اساسی 56 00:02:49,370 --> 00:02:50,920 این در زمینه یک ماشین. 57 00:02:50,920 --> 00:02:53,730 به طور خاص، فولکس واگن تولید و نصب 58 00:02:53,730 --> 00:02:56,210 نرم افزار در اصطلاح کنترل الکترونیکی 59 00:02:56,210 --> 00:02:59,320 module-- یا ECM-- از این وسایل نقلیه که احساس 60 00:02:59,320 --> 00:03:03,580 هنگامی که وسیله نقلیه برای مورد آزمایش قرار گرفت انطباق با استانداردهای انتشار EPA. 61 00:03:03,580 --> 00:03:07,510 بر اساس ورودی های مختلف از جمله موقعیت فرمان، خودرو 62 00:03:07,510 --> 00:03:11,280 سرعت، مدت زمان موتور را عمل، و فشار هوا، 63 00:03:11,280 --> 00:03:13,720 این ورودی دقیقا ردیابی پارامترهای 64 00:03:13,720 --> 00:03:17,600 از روش آزمون فدرال مورد استفاده برای تست انتشار برای صدور گواهینامه EPA 65 00:03:17,600 --> 00:03:18,400 اهداف. 66 00:03:18,400 --> 00:03:21,850 >> در طول آزمایش انتشار سازمان حفاظت محیط زیست، نرم افزار ECM وسایل نقلیه 67 00:03:21,850 --> 00:03:25,060 نرم افزار که تولید زد نتایج تولید گازهای گلخانه ای سازگار است. 68 00:03:25,060 --> 00:03:28,340 در همه زمان های دیگر، نرم افزار ECM خودرو 69 00:03:28,340 --> 00:03:31,090 یک جاده جداگانه زد کالیبراسیون که باعث کاهش 70 00:03:31,090 --> 00:03:34,360 اثر بخشی به طور کلی سیستم کنترل انتشار، 71 00:03:34,360 --> 00:03:37,864 به طور خاص کاتالیستی کاهش NOx استفاده ناب trap-- 72 00:03:37,864 --> 00:03:39,280 که ما در مورد در یک لحظه را ببینید. 73 00:03:39,280 --> 00:03:43,040 به عنوان یک نتیجه، انتشار NOx استفاده توسط یک عامل از 10 تا 40 برابر افزایش یافته است 74 00:03:43,040 --> 00:03:47,450 بالاتر از سطح سازگار EPA بسته به نوع از چرخه درایو. 75 00:03:47,450 --> 00:03:50,800 >> پس چه این واقعا به معنی، و کد منبع نرم افزار در حال اجرا به 76 00:03:50,800 --> 00:03:53,190 در فولکس واگن است نه هنوز افشا، 77 00:03:53,190 --> 00:03:56,460 این است که، به طور موثر، این معادل است جایی در درون وجود دارد 78 00:03:56,460 --> 00:03:57,830 کد فولکس واگن است. 79 00:03:57,830 --> 00:04:02,200 اگر شما در حال آزمایش است، و اگر ماشین تشخیص عوامل محیطی خاص 80 00:04:02,200 --> 00:04:04,330 مانند فرمان موقعیت و یا جنبش 81 00:04:04,330 --> 00:04:06,710 و یا عدم آن از ماشین و یا هر تعداد از عوامل دیگر 82 00:04:06,710 --> 00:04:09,940 که در حال حاضر فرض به بخشی از این فرمول، 83 00:04:09,940 --> 00:04:12,370 آنها به سادگی به نوبه خود در کنترل انتشار کامل. 84 00:04:12,370 --> 00:04:15,670 به عبارت دیگر، آنها شروع رهبری کمتر از آلاینده ها است. 85 00:04:15,670 --> 00:04:18,769 >> دیگری، در هر وضعیت دیگر هنگامی که آن را به عنوان تشخیص داده نشده 86 00:04:18,769 --> 00:04:20,790 در آزمایشگاه، آنها فقط نمی کنند. 87 00:04:20,790 --> 00:04:24,320 و به این ترتیب شما می توانید این را به بیشتر ساده شبه بتن با چیزی 88 00:04:24,320 --> 00:04:24,820 به این شکل. 89 00:04:24,820 --> 00:04:27,810 اگر چرخ در حال تبدیل اما فرمان است، مطرح نیست 90 00:04:27,810 --> 00:04:30,060 که ماشین است در برخی از نوع استوانه چرخان 91 00:04:30,060 --> 00:04:32,550 اما در برخی از انبار حال آزمایش است، 92 00:04:32,550 --> 00:04:36,070 پس از آن به عنوان رفتار EPA شما را به دوست. 93 00:04:36,070 --> 00:04:37,960 در غیر این صورت نیست. 94 00:04:37,960 --> 00:04:40,420 بنابراین اجازه دهید یک نگاهی از در یک فیلم کوتاه است که 95 00:04:40,420 --> 00:04:45,391 طول می کشد نگاه چه مفاهیم این در واقع مکانیکی. 96 00:04:45,391 --> 00:04:48,620 >> [پخش ویدئو] 97 00:04:48,620 --> 00:04:52,800 >> -Last جمعه EPA اعلام کرد که برخی اتومبیل آئودی ساخته شده فولکس واگن بین سال های 2009 98 00:04:52,800 --> 00:04:55,840 و در این سال با استفاده از یک به اصطلاح دستگاه شکست 99 00:04:55,840 --> 00:04:59,060 به اطراف قوانین تولید گازهای گلخانه ای طراحی شده برای حفظ هوای پاک است. 100 00:04:59,060 --> 00:05:01,700 اما به چه معنا است دقیقا؟ 101 00:05:01,700 --> 00:05:04,666 >> خب، اتومبیل های مدرن ده ها تن از کامپیوترهای درون آنها. 102 00:05:04,666 --> 00:05:07,040 و برخی از کسانی که کامپیوتر کمک به هماهنگی توابع 103 00:05:07,040 --> 00:05:09,590 از موتور برای بهینه عملکرد حالی که مطمئن شوید 104 00:05:09,590 --> 00:05:12,340 این است که زباله بیش از حد وجود ندارد از لوله اگزوز آینده. 105 00:05:12,340 --> 00:05:15,170 آنها به کار واقع شده است این راه را برای چند دهه در حال حاضر. 106 00:05:15,170 --> 00:05:17,380 در واقع، هر بخشی موتور یک ماشین مدرن 107 00:05:17,380 --> 00:05:20,080 دارای یک سنسور یا کنترلر بر روی آن، و این کامپیوترها 108 00:05:20,080 --> 00:05:23,460 در داده های هزاران نفر از خواندن بار در گیری دوم تنظیمات 109 00:05:23,460 --> 00:05:26,220 مانند نسبت سوخت به هوا که رفتن به داخل سیلندر. 110 00:05:26,220 --> 00:05:28,730 >> این تقلب فولکس واگن و مدل های آئودی دیزلی هستند، 111 00:05:28,730 --> 00:05:30,890 و موتورهای دیزلی یکی بیشتر کامپیوتر واقعا مهم 112 00:05:30,890 --> 00:05:34,030 پارامترهای کنترل، که مقدار سوخت نسوخته رفتن 113 00:05:34,030 --> 00:05:35,200 به اگزوز. 114 00:05:35,200 --> 00:05:36,310 حالا که برای تلفن های موبایل بد است. 115 00:05:36,310 --> 00:05:39,642 به صدا در نمی مانند که شما می خواهید سوختی که نسوخته رفتن به اگزوز. 116 00:05:39,642 --> 00:05:41,600 اما در مورد یک دیزل، شما چیزی 117 00:05:41,600 --> 00:05:46,110 به نام تله های NOx است که یک دستگاه است که جذب و تله برای اکسیدهای نیتروژن 118 00:05:46,110 --> 00:05:48,880 که آلاینده های است که می در غیر این صورت به اتمسفر است. 119 00:05:48,880 --> 00:05:53,040 و اثر این دام های NOx با سوختی که نسوخته افزایش یافته است. 120 00:05:53,040 --> 00:05:56,650 بنابراین یک دستگاه شکست یک برنامه خاص است در داخل این کامپیوتر که می توانید آن را 121 00:05:56,650 --> 00:05:59,527 شبیه ماشین ملاقات انتشار استانداردهای حتی زمانی که آن را نمی کند. 122 00:05:59,527 --> 00:06:01,110 فولکس واگن یک مشکل در دست خود داشتند. 123 00:06:01,110 --> 00:06:04,050 موتورهای دیزل آن شناخته شده بود برای گرفتن اقتصاد سوخت بزرگ، 124 00:06:04,050 --> 00:06:07,510 اما تله های NOx تنها خوبی کار می کند وقتی سوخت بیشتر استفاده شده است. 125 00:06:07,510 --> 00:06:10,460 به طوری که ماشین ها تشخیص، با استفاده از این دستگاه شکست، 126 00:06:10,460 --> 00:06:13,870 هنگامی که آن را گرفتن تولید گازهای گلخانه ای آزمون، آن را سوخت بیشتری استفاده کنید، 127 00:06:13,870 --> 00:06:16,830 را به کار تله های NOx خوب، تولید گازهای گلخانه ای می شود خوب است. 128 00:06:16,830 --> 00:06:21,130 اما پس از آن شما را بر روی جاده، دستگاه خاموش می شود، شما در حال سوختن سوخت کمتر 129 00:06:21,130 --> 00:06:24,256 اما شما در حال قرار دادن به اندازه 40 بار آلاینده های بیشتری به جو است. 130 00:06:24,256 --> 00:06:26,130 اما چگونه هک کردند ماشین مطمئن شوید که آن را 131 00:06:26,130 --> 00:06:27,720 برای انطباق تولید گازهای گلخانه ای تست شده؟ 132 00:06:27,720 --> 00:06:30,590 سازمان حفاظت محیط زیست می گوید که پیچیده بود سیستم بررسی می شود که همه چیز 133 00:06:30,590 --> 00:06:34,090 مانند موقعیت فرمان، سرعت، مدت زمانی که موتور روشن بود، 134 00:06:34,090 --> 00:06:35,507 و حتی فشار اتمسفر. 135 00:06:35,507 --> 00:06:37,673 به عبارت دیگر وجود دارد، به هیچ وجه این اتفاقی بود 136 00:06:37,673 --> 00:06:40,260 چون نرم افزار بود طراحی با دقت بسیار برای شناسایی 137 00:06:40,260 --> 00:06:41,630 آزمون تولید گازهای گلخانه ای رسمی. 138 00:06:41,630 --> 00:06:43,588 که برخی از بسیار جدی فریب و که 139 00:06:43,588 --> 00:06:45,420 چرا فولکس واگن در است چنین مشکل جدی است. 140 00:06:45,420 --> 00:06:48,600 در واقع، مدیر عامل شرکت، مارتین Winterkorn، فقط پا به پایین. 141 00:06:48,600 --> 00:06:49,820 >> پس چه اتفاقی می افتد؟ 142 00:06:49,820 --> 00:06:53,900 خوب، اگر شما یکی از نیم میلیون هستید Jettas دیزل، بیتلز، جوراب، Passats، 143 00:06:53,900 --> 00:06:56,220 یا آئودی A3s گردد، خبر خوب این است است 144 00:06:56,220 --> 00:06:57,886 که ماشین خود را هنوز امن به رانندگی کنید. 145 00:06:57,886 --> 00:07:00,510 شما لازم نیست که به آن گل تا زمانی که فولکس واگن مسائل مربوط به یاد می آورند. 146 00:07:00,510 --> 00:07:02,509 اما در برخی از نقطه آنها احتمالا باید 147 00:07:02,509 --> 00:07:04,230 برای به روز رسانی نرم افزار در داخل ماشین خود را. 148 00:07:04,230 --> 00:07:06,927 وقتی که اتفاق می افتد شما ممکن است گرفتن مایل کمتر در هر مخزن. 149 00:07:06,927 --> 00:07:09,260 وکلا در حال حاضر آماده برای دادخواهی عمل 150 00:07:09,260 --> 00:07:12,500 بنابراین صاحبان ممکن است جبران در برخی از نقطه در آینده است. 151 00:07:12,500 --> 00:07:15,832 اما این به رفتن نیست اتفاق می افتد هر زمان به زودی. 152 00:07:15,832 --> 00:07:16,711 >> [END پخش] 153 00:07:16,711 --> 00:07:19,960 DAVID J. مالان: پس این در واقع افزایش می دهد یک سوال جالب تصویر بزرگتر 154 00:07:19,960 --> 00:07:20,660 به عنوان به اعتماد. 155 00:07:20,660 --> 00:07:21,160 درست؟ 156 00:07:21,160 --> 00:07:24,300 همه ما اپل و یا مصنوعی و یا چیزی در جیب ما به احتمال زیاد 157 00:07:24,300 --> 00:07:26,500 این روزها، و یا لپ تاپ در دور ما که 158 00:07:26,500 --> 00:07:28,510 نرم افزار در حال اجرا ساخته شده توسط اپل و مایکروسافت 159 00:07:28,510 --> 00:07:30,710 و مجموعه ای از شرکت های دیگر. 160 00:07:30,710 --> 00:07:34,240 اما چگونه ما می دانیم که آنچه این محصولات نرم افزاری انجام می دهند 161 00:07:34,240 --> 00:07:37,680 در واقع آنچه این شرکت می گویند که انجام می دهند؟ 162 00:07:37,680 --> 00:07:39,610 >> به عنوان مثال، که به می گویند که هر زمانی که شما 163 00:07:39,610 --> 00:07:42,200 یک تماس تلفنی در آی فون خود را و یا تلفن Android یا مانند آن، 164 00:07:42,200 --> 00:07:45,650 که شماره تلفن هم است به سرور برخی از شرکت آپلود 165 00:07:45,650 --> 00:07:48,399 به دلیل برخی از برنامه ام نوشته شده است، آن است که آیا عامل 166 00:07:48,399 --> 00:07:51,070 سیستم خود مانند iOS یا آندروید، و یا اینکه شما دانلود کرده اید 167 00:07:51,070 --> 00:07:53,880 برخی از برنامه های شخص ثالث که به نحوی است که گوش دادن 168 00:07:53,880 --> 00:07:57,120 به همه چیز شما در حال تایپ کردن در و یا همه چیز شما در واقع گفت. 169 00:07:57,120 --> 00:07:59,500 چگونه شما می دانید که، زمانی که شما بچه ها در حال اجرا هستند صدای جرنگ جرنگ 170 00:07:59,500 --> 00:08:02,590 و یا به کامپایل خود را نرم افزار خود در CS50، چگونه 171 00:08:02,590 --> 00:08:06,080 شما انجام کارکنان خود که CS50 را، از طریق کتابخانه CS50، 172 00:08:06,080 --> 00:08:08,690 تا ورود هر نبوده است رشته شما تا به حال بدست 173 00:08:08,690 --> 00:08:10,276 و یا هر اینچ شما تا به حال بدست؟ 174 00:08:10,276 --> 00:08:12,900 خوب، شما قطعا می تواند نگاه در کد منبع برای چیزی 175 00:08:12,900 --> 00:08:15,233 مانند کتابخانه CS50، شما می تواند در کد منبع نگاه 176 00:08:15,233 --> 00:08:18,170 برای سیستم عامل لینوکس در حال اجرا در CS50 IDE. 177 00:08:18,170 --> 00:08:23,090 اما یک ارائه شگفت انگیز بازگشت در سال 1984 داده شد 178 00:08:23,090 --> 00:08:26,730 در دریافت جایزه تورینگ توسط دانشمند کامپیوتر بسیار مشهور شناخته شده 179 00:08:26,730 --> 00:08:29,750 as-- نام کن تامپسون که جایزه تورینگ دریافت که 180 00:08:29,750 --> 00:08:33,500 مرتب کردن بر اساس علم کامپیوتر است جایزه نوبل، اگر شما خواهد شد، 181 00:08:33,500 --> 00:08:35,309 برای کار خود را بر روی یک سیستم عامل 182 00:08:35,309 --> 00:08:39,039 یونیکس است، که در بسیار شبیه روحالقدس به آنچه که استفاده از آن لینوکس است. 183 00:08:39,039 --> 00:08:41,960 و سوال او در خواست خود سخنرانی پذیرش، در اصل 184 00:08:41,960 --> 00:08:44,910 گذاشتن چارچوب برای سال ها و سال بحث 185 00:08:44,910 --> 00:08:46,970 در مورد اعتماد و امنیت، این بود. 186 00:08:46,970 --> 00:08:50,410 تا چه حد باید یکی اعتماد بیانیه که program-- یک قطعه 187 00:08:50,410 --> 00:08:53,010 از software-- رایگان اسب های تروجان است؟ 188 00:08:53,010 --> 00:08:56,500 شاید مهم تر آن است به اعتماد افرادی که از نرم افزار نوشت. 189 00:08:56,500 --> 00:08:58,650 >> و در واقع، ما مرتبط کرده ام به بحث که او 190 00:08:58,650 --> 00:09:02,400 زمانی که پذیرش این جایزه به در '80s در وب سایت CS50 را 191 00:09:02,400 --> 00:09:04,030 در زیر صفحه سخنرانی برای امروز. 192 00:09:04,030 --> 00:09:06,071 از آنجا که آنچه شما خواهید دید این است که او در واقع می دهد 193 00:09:06,071 --> 00:09:09,430 یک مثال ساده از چگونه حتی یک کامپایلر مثل صدای جرنگ جرنگ یا هر چیز دیگری 194 00:09:09,430 --> 00:09:13,950 کامپایلر دیگران در گذشته استفاده می شود، چه می شود اگر در ما کامپایلر جاسازی شده 195 00:09:13,950 --> 00:09:18,190 خودمان را با استفاده از کمی اگر شرایط که اساسا می گوید، 196 00:09:18,190 --> 00:09:22,360 اگر شما متوجه است که این کد با استفاده از تابع از GetString یا GetInt 197 00:09:22,360 --> 00:09:26,600 تابع، به جلو و قرار دادن درب پشت و یا اسب تروجان 198 00:09:26,600 --> 00:09:29,340 به طوری که که برنامه در حال حاضر برخی صفر 199 00:09:29,340 --> 00:09:30,930 و آنهایی که انجام کاری مخرب. 200 00:09:30,930 --> 00:09:33,080 ورود به سیستم تمام خود را کلید، آپلود که داده 201 00:09:33,080 --> 00:09:35,100 به برخی از سرور، یا واقعا هر چیزی. 202 00:09:35,100 --> 00:09:37,290 >> و آنچه کن تامسون در ادامه به انجام در بحث خود 203 00:09:37,290 --> 00:09:40,580 است تا نشان دهد که حتی اگر شما دسترسی به منبع دارند 204 00:09:40,580 --> 00:09:43,794 کد یک کامپایلر که بدتر ممکن است انجام این کار، 205 00:09:43,794 --> 00:09:46,210 مهم نیست چون است این مرغ و تخم مرغ وجود دارد 206 00:09:46,210 --> 00:09:49,500 واقعیت از بسیاری از گذشته سال به موجب آن کامپایلرها 207 00:09:49,500 --> 00:09:51,960 استفاده می شود به خود را کامپایل کنید. 208 00:09:51,960 --> 00:09:55,440 به عبارت دیگر، راه برگشت وقتی کسی تا به حال به اولین کامپایلر نوشته شده است. 209 00:09:55,440 --> 00:09:59,060 و پس از آن، هر زمان که به روز شده ام یک کامپایلر با تغییر کد منبع آن، 210 00:09:59,060 --> 00:10:02,020 اضافه کردن امکانات و کامپایل مجدد آن برای افرادی مانند ما به استفاده از، خوب، 211 00:10:02,020 --> 00:10:04,270 آنها با استفاده از قدیمی نسخهی کامپایلر 212 00:10:04,270 --> 00:10:06,370 برای کامپایل جدید نسخه از کامپایلر. 213 00:10:06,370 --> 00:10:08,370 و اگر شما نگاهی در بحث که او داد، 214 00:10:08,370 --> 00:10:10,970 شما خواهید دید که به دلیل که دوری، 215 00:10:10,970 --> 00:10:14,330 شما در واقع می تواند اشکالات و یا اسب های تروجان جاسازی شده در نرم افزار 216 00:10:14,330 --> 00:10:14,990 ما با استفاده از. 217 00:10:14,990 --> 00:10:18,010 و حتی اگر شما در نگاه کد منبع برای کسانی که برنامه ها، 218 00:10:18,010 --> 00:10:21,550 آن ممکن است حتی آشکار باشد زیرا حیله گری است که در واقع 219 00:10:21,550 --> 00:10:24,710 در برخی از نسخه های قدیمی تر از کامپایلر که از زمانی که شده است 220 00:10:24,710 --> 00:10:27,340 تزریق تهدید به نرم افزار ما. 221 00:10:27,340 --> 00:10:29,740 >> است که فقط می گویند، ما واقعا نمی تواند و نباید 222 00:10:29,740 --> 00:10:32,939 نرم افزار مورد اعتماد در حال اجرا در لپ تاپ های ما و یا تلفن های یا هر تعداد از مکان. 223 00:10:32,939 --> 00:10:36,230 و در واقع، بعد از آن در این ترم که ما شروع به صحبت کردن در مورد برنامه نویسی تحت وب 224 00:10:36,230 --> 00:10:38,521 و در واقع شروع به ساخت برنامه های کاربردی وب خود، 225 00:10:38,521 --> 00:10:40,285 ما در مورد این صحبت تهدید و دیگران است. 226 00:10:40,285 --> 00:10:43,410 در حال حاضر، شما ممکن است تعجب و متوجه این بود که کمی به Darth کوچک وجود دارد 227 00:10:43,410 --> 00:10:45,842 Vader با در کلیپ ها که در آستانه نشان دادن وجود دارد 228 00:10:45,842 --> 00:10:47,550 در مورد فولکس واگن. اگر شما دیده ام هرگز، من 229 00:10:47,550 --> 00:10:49,190 هر چند که ما باید روشن خلق و خوی به دلیل این است که همه 230 00:10:49,190 --> 00:10:50,780 بسیار افسرده و ترسناک است. 231 00:10:50,780 --> 00:10:52,910 من قصد دارم به عقب نگاه در سوپر باول 2011 232 00:10:52,910 --> 00:10:55,300 هنگامی که یک تجاری توسط Volkswagen-- و این 233 00:10:55,300 --> 00:10:59,620 تقریبا باعث می شود آنها را again-- دوست داشتنی برای اولین بار در تلویزیون پخش می شود. 234 00:10:59,620 --> 00:11:04,039 این 60 کلیپ دوم که من فکر می کنم شما لذت ببرید. 235 00:11:04,039 --> 00:11:04,705 [پخش ویدئو] 236 00:11:04,705 --> 00:11:08,198 [MUSIC - تم از "جنگ ستارگان"] 237 00:11:08,198 --> 00:11:35,643 238 00:11:35,643 --> 00:11:38,138 [DOG کلمن] 239 00:11:38,138 --> 00:11:50,114 240 00:11:50,114 --> 00:11:53,607 [ماشین شروع می شود] 241 00:11:53,607 --> 00:12:04,086 242 00:12:04,086 --> 00:12:05,955 [END پخش] 243 00:12:05,955 --> 00:12:06,830 DAVID J. مالان: آره. 244 00:12:06,830 --> 00:12:07,663 من فقط چک کردن شد. 245 00:12:07,663 --> 00:12:11,360 این خودرو در لیست نقض است. 246 00:12:11,360 --> 00:12:12,000 خیلی خوب. 247 00:12:12,000 --> 00:12:14,040 بنابراین ما در برخی از نگاه شبه یک لحظه پیش. 248 00:12:14,040 --> 00:12:15,380 و در اینجا بزرگتر قطعه از کد شبه 249 00:12:15,380 --> 00:12:16,921 که ما دیده ایم چند بار تا کنون. 250 00:12:16,921 --> 00:12:19,970 و اجازه استفاده از این یک فرصت است در حال حاضر به معرفی یک برنامه نویسی جدید 251 00:12:19,970 --> 00:12:23,776 تکنیک است که ما انجام داد الگوریتمی را ببینید 252 00:12:23,776 --> 00:12:25,400 هفته گذشته هنگامی که ما در مرتب سازی بر ادغام کرد. 253 00:12:25,400 --> 00:12:28,270 اما اجازه دهید آن را رسمی و ببینید که چگونه ما ممکن است آن را در کد واقعی استفاده کنید، 254 00:12:28,270 --> 00:12:30,350 و پس از آن ما قصد داریم به استفاده از این روش پایین جاده ترین 255 00:12:30,350 --> 00:12:32,000 به احتمال زیاد برای حل برخی از مشکلات دیگر است. 256 00:12:32,000 --> 00:12:35,790 >> پس این یکی از برنامه های اول بود ما تا به حال نوشت، البته در کد شبه. 257 00:12:35,790 --> 00:12:37,790 و آنچه این برنامه به ما اجازه انجام دوره 258 00:12:37,790 --> 00:12:41,510 بود برای پیدا کردن مایک اسمیت در یک دفترچه تلفن. 259 00:12:41,510 --> 00:12:46,216 و اطلاع در خطوط خاص هشت و 11 که این بیانیه برو تا به حال. 260 00:12:46,216 --> 00:12:48,090 و در واقع، برخی از زبان، C در میان آنها، 261 00:12:48,090 --> 00:12:50,006 در واقع انجام یک بیانیه است که به معنای واقعی 262 00:12:50,006 --> 00:12:52,710 رفتن به که شما اجازه می دهد تا به پرش به یک خط خاص. 263 00:12:52,710 --> 00:12:55,470 به طور کلی بر دلیل اخم کرد می توان آن را به راحتی مورد آزار قرار گرفته 264 00:12:55,470 --> 00:12:58,490 و شما می توانید شروع به پریدن خود را برنامه همه جا به عنوان مخالف 265 00:12:58,490 --> 00:13:00,690 به استفاده از نوع منطق و کنترل جریان 266 00:13:00,690 --> 00:13:04,000 که ما تا کنون تنها با استفاده می شود حلقه ها و شرایط و مانند آن. 267 00:13:04,000 --> 00:13:08,660 >> اما ما می توانیم این الگوریتم ساده در کد شبه شرح زیر است. 268 00:13:08,660 --> 00:13:11,250 به جای این تکرار شونده و یا حلقه رویکرد 269 00:13:11,250 --> 00:13:14,160 که در آن ما را در رفتن به عقب و تماس و تماس به خط سه، 270 00:13:14,160 --> 00:13:18,300 چرا ما فقط نوع زدن توپ و بیشتر به طور کلی در خط هفت و 10 می گویند، 271 00:13:18,300 --> 00:13:20,570 فقط جای آن دو جفت از خطوط با، 272 00:13:20,570 --> 00:13:22,810 اگر دیگری اسمیت قبلی است در کتاب خواهیم 273 00:13:22,810 --> 00:13:25,110 جستجو برای مایک در نیمه سمت چپ این کتاب است. 274 00:13:25,110 --> 00:13:28,560 اگر دیگری اسمیت بعد از آن در کتاب، جستجو برای مایک در سمت راست 275 00:13:28,560 --> 00:13:29,540 نیمی از کتاب. 276 00:13:29,540 --> 00:13:31,180 و متوجه حال حاضر دوری. 277 00:13:31,180 --> 00:13:31,680 درست؟ 278 00:13:31,680 --> 00:13:34,250 من در جستجوی برای مایک در دفترچه تلفن و پس از آن 279 00:13:34,250 --> 00:13:37,090 من در نهایت ضربه شاید خط هفت و یا شاید خط 10 280 00:13:37,090 --> 00:13:41,089 و آموزش من به خودم جستجو برای مایک در نیمی از دفترچه تلفن. 281 00:13:41,089 --> 00:13:42,380 خوب، چگونه می توانم برای مایک را جستجو کنم؟ 282 00:13:42,380 --> 00:13:44,213 من در وسط هستم جستجو برای مایک، چرا 283 00:13:44,213 --> 00:13:45,860 شما مرتب کردن بر اساس من ارسال در یک دایره. 284 00:13:45,860 --> 00:13:49,590 اما این خوب است زیرا آنچه است اتفاق می افتد به اندازه مشکل، 285 00:13:49,590 --> 00:13:52,630 در خط 7 و 10 نوشته شده است؟ 286 00:13:52,630 --> 00:13:54,989 ما نه تنها گفت جستجو برای مایک، جستجو برای مایک. 287 00:13:54,989 --> 00:13:56,280 ما در حال به طور خاص گفت: آنچه؟ 288 00:13:56,280 --> 00:13:58,694 289 00:13:58,694 --> 00:14:01,610 جستجو برای او در نیمه سمت چپ در نیمه سمت راست است که به طور موثر 290 00:14:01,610 --> 00:14:03,440 نیمی از اندازه از این مشکل است. 291 00:14:03,440 --> 00:14:07,170 پس از آن خوب که ما نوع هستید در گیر شدن در این چرخش، 292 00:14:07,170 --> 00:14:09,180 این استدلال دایره ای، چرا که حداقل ما 293 00:14:09,180 --> 00:14:11,090 ساخت مشکل کوچکتر و کوچکتر. 294 00:14:11,090 --> 00:14:14,220 و در نهایت ما در حال رفتن برای رسیدن به که به اصطلاح به حالت پایه که در آن 295 00:14:14,220 --> 00:14:16,780 ما فقط یک صفحه left-- به عنوان داوطلب ما در هفته گذشته 296 00:14:16,780 --> 00:14:18,684 did-- ما یک صفحه داشته چپ و پس ما نمی 297 00:14:18,684 --> 00:14:21,600 باید برای نگه داشتن جستجو برای مایک اسمیت چرا که او هم بر روی آن صفحه 298 00:14:21,600 --> 00:14:23,080 و یا او نیست. 299 00:14:23,080 --> 00:14:27,480 >> پس چگونه می تواند این ایده، این پیاده سازی می کنیم مرتب سازی بر مدور در کد واقعی؟ 300 00:14:27,480 --> 00:14:31,030 خب، ما می توانید یک تکنیک اهرم که به طور کلی به عنوان بازگشتی شناخته شده است. 301 00:14:31,030 --> 00:14:33,960 و ما این را در دیده ام مرتب سازی بر شبه برای ادغام هفته گذشته است. 302 00:14:33,960 --> 00:14:37,190 به یاد بیاورید که این بود که شبه برای جور کردن و ادغام. 303 00:14:37,190 --> 00:14:40,560 مسلما حتی ساده تر از حباب و یا انتخاب یا مرتب سازی درجی 304 00:14:40,560 --> 00:14:43,310 فقط از نظر سادگی که با آن شما می توانید آن را بیان کنند. 305 00:14:43,310 --> 00:14:46,750 >> اما این دلیل ما از گردش هستید 306 00:14:46,750 --> 00:14:51,350 گفت: جستجو برای چیزی با جستجو برای دوباره آن را. 307 00:14:51,350 --> 00:14:53,960 اما ما در حال جستجو یا در نیمه سمت چپ و یا در نیمه سمت راست 308 00:14:53,960 --> 00:14:56,070 و سپس در نهایت ما ادغام در این مورد. 309 00:14:56,070 --> 00:14:58,520 اما در اینجا، بیش از حد، با این دو خط مرتب کردن، 310 00:14:58,520 --> 00:15:01,320 آیا ما دوباره این دارند ایده بازگشت. 311 00:15:01,320 --> 00:15:05,350 و مشخص این به چه معناست، در زمینه یک الگوریتم، 312 00:15:05,350 --> 00:15:10,880 این است که یک الگوریتم بازگشتی است اگر آن را با استفاده و یا خود را خواند. 313 00:15:10,880 --> 00:15:14,330 >> و یا از لحاظ C، یک تابع است recursive-- یک تابع به نام 314 00:15:14,330 --> 00:15:18,510 تولی بازگشتی اگر تولی است، جایی در کد منبع آن، 315 00:15:18,510 --> 00:15:21,250 ، تابع خود را تولی. 316 00:15:21,250 --> 00:15:25,790 و این بد اگر تمام تولی تا به حال می کند است دوباره و دوباره خود را پاسخ. 317 00:15:25,790 --> 00:15:30,600 این خوب است اگر تولی در نهایت متوقف می شود، به عنوان نشانی مرتبسازی ادغامی، گفت: یک دقیقه صبر کنید، 318 00:15:30,600 --> 00:15:32,980 اگر این مشکل فوق العاده است کوچک، به عنوان مثال، 319 00:15:32,980 --> 00:15:35,840 و یا او را پیدا کردم که من هستم به دنبال، تنها بازگشت. 320 00:15:35,840 --> 00:15:41,000 آیا به صورت بازگشتی، نمی چرخه دوباره خودم تماس بگیرید. 321 00:15:41,000 --> 00:15:44,200 >> و بنابراین اجازه دهید نگاهی به این در واقع ممکن است کار کند. 322 00:15:44,200 --> 00:15:48,430 بنابراین من قصد دارم به جلو بروید و باز تا دو نمونه کد منبع اینجا. 323 00:15:48,430 --> 00:15:50,321 یکی از آنها به نام سیگما 0. 324 00:15:50,321 --> 00:15:52,320 و این است که نه در همه بازگشتی، اما اجازه دهید 325 00:15:52,320 --> 00:15:53,694 یک در چه این برنامه می کند نگاه کنید. 326 00:15:53,694 --> 00:15:55,737 من ساده به همه نظر از آن اما همه 327 00:15:55,737 --> 00:15:58,070 از کد منبع در را CS50 وب سایت نظر اگر شما 328 00:15:58,070 --> 00:15:59,570 می خواهید از طریق آن بعدا دوباره. 329 00:15:59,570 --> 00:16:02,010 و اجازه دهید انجام چند از سلامت عقل را چک کنید. 330 00:16:02,010 --> 00:16:06,640 >> بنابراین در بالای این کد، ما شامل CS50.h. 331 00:16:06,640 --> 00:16:07,650 چه کاری انجام دهید؟ 332 00:16:07,650 --> 00:16:08,990 چرا از آن است که اینجا هستید؟ 333 00:16:08,990 --> 00:16:11,740 در عبارت منطقی است. 334 00:16:11,740 --> 00:16:12,424 این چیکار می کنه؟ 335 00:16:12,424 --> 00:16:12,858 آره. 336 00:16:12,858 --> 00:16:14,160 >> رسید به طوری که عملکرد GetInt کار می کند. 337 00:16:14,160 --> 00:16:16,243 >> DAVID J. مالان: به طوری که تابع GetInt کار می کند. 338 00:16:16,243 --> 00:16:18,115 از آنجا که در داخل این فایل، CS50.H که 339 00:16:18,115 --> 00:16:20,950 ما قبل از اینکه طولانی در دید شرایط استفاده از کد منبع آن، 340 00:16:20,950 --> 00:16:23,270 دارای یک دسته از توابع declared-- GetInt، از GetString، 341 00:16:23,270 --> 00:16:26,950 و یک دسته از others-- و مگر ما در واقع باید که شامل خط، 342 00:16:26,950 --> 00:16:29,320 صدای جرنگ جرنگ کامپایلر است رفتن به می دانم که آن وجود دارد. 343 00:16:29,320 --> 00:16:32,400 و همان که برای خط دو نوع int تعریف شده است که در آن 344 00:16:32,400 --> 00:16:35,101 تابع () printf است، که یک تابع ما را با استفاده از بسیار کمی است. 345 00:16:35,101 --> 00:16:37,850 در حال حاضر، خط چهار به نظر می رسد بد بو کمی چرا که آن را فقط یک بوش است. 346 00:16:37,850 --> 00:16:41,570 آن را به یک نقطه و ویرگول، هیچ اشکال مختلف پرانتز، هیچ کد داخل آن است. 347 00:16:41,570 --> 00:16:44,640 اما آنچه که ما پاسخ این چیزی که در هفته گذشته؟ 348 00:16:44,640 --> 00:16:45,140 آره. 349 00:16:45,140 --> 00:16:46,060 بنابراین یک نمونه اولیه است. 350 00:16:46,060 --> 00:16:48,390 و چرا ما باید یک نمونه که به نظر می رسد 351 00:16:48,390 --> 00:16:51,050 به یک کار برکنار کمی معمولا چون ما معمولا 352 00:16:51,050 --> 00:16:53,474 تابع دوباره ببینید بعد از آن در فایل، درست است؟ 353 00:16:53,474 --> 00:16:56,390 پس چرا ما have-- شما فقط خارش سر خود را، اما من آن را می گیرم. 354 00:16:56,390 --> 00:16:57,302 آره. 355 00:16:57,302 --> 00:17:00,000 >> مخاطبان: [نامفهوم] تابعی که بعد از اصلی. 356 00:17:00,000 --> 00:17:01,000 DAVID J. مالان: دقیقا. 357 00:17:01,000 --> 00:17:04,089 به طوری که شما می داند کامپایلر در نهایت تعریف و یا پیاده سازی 358 00:17:04,089 --> 00:17:06,579 که تابع پس اصلی، احتمالا. 359 00:17:06,579 --> 00:17:08,462 بنابراین صدای جرنگ جرنگ و کامپایلر از نوع گنگ 360 00:17:08,462 --> 00:17:10,510 و آنها فقط می دانم چه چیزی شما را به آنها بگویید. 361 00:17:10,510 --> 00:17:12,569 و اگر شما می خواهید به استفاده از یک تابع به نام سیگما، 362 00:17:12,569 --> 00:17:15,710 آموزش به شما بهتر کامپایلر که آن را در پیش وجود دارد. 363 00:17:15,710 --> 00:17:17,970 >> در حال حاضر، خود اصلی، حتی هر چند آن را یک دسته از خطوط، 364 00:17:17,970 --> 00:17:19,839 بسیار آشنا امیدوارم حال حاضر است. 365 00:17:19,839 --> 00:17:21,942 آن را به یک در حالی که حلقه که هدف در زندگی 366 00:17:21,942 --> 00:17:24,400 در اینجا ظاهرا این است که دریافت عدد صحیح مثبت از کاربر. 367 00:17:24,400 --> 00:17:27,349 و فقط نگه داشتن آزار ندهد او و یا او را تا زمانی که آنها همکاری کنند. 368 00:17:27,349 --> 00:17:30,670 سپس در خط 16 من تماس جالب است. 369 00:17:30,670 --> 00:17:31,570 IntAnswer. 370 00:17:31,570 --> 00:17:33,710 که در دست چپ سمت من می دهد یک int 371 00:17:33,710 --> 00:17:36,650 که می تواند store-- نام Answer-- است که رفتن به ذخیره، ظاهرا، 372 00:17:36,650 --> 00:17:39,090 مقدار بازگشتی از سیگما است. 373 00:17:39,090 --> 00:17:41,840 بنابراین سیگما است فقط یک نام دلخواه اما معنی دار 374 00:17:41,840 --> 00:17:44,500 که من به یک تابع داده ام که هدف در زندگی 375 00:17:44,500 --> 00:17:47,680 است به یک argument-- ما آن را N در این case-- پاسخ 376 00:17:47,680 --> 00:17:52,280 و فقط به مجموع این تعداد به علاوه هر عدد مثبت که 377 00:17:52,280 --> 00:17:53,200 کوچکتر از آن. 378 00:17:53,200 --> 00:17:58,140 >> بنابراین اگر من در شماره 2 به تصویب سیگما، من می خواهم برای اضافه کردن 2 به علاوه 1 379 00:17:58,140 --> 00:18:00,240 به علاوه 0-- نمی 0-- به طوری که به من می دهد 3. 380 00:18:00,240 --> 00:18:05,320 اگر من در 3 Sigma به تصویب، من می خواهم 3 به علاوه 2 به علاوه 1، که به من می دهد 6. 381 00:18:05,320 --> 00:18:05,900 و الی آخر. 382 00:18:05,900 --> 00:18:09,750 پس از آن فقط اضافه می کند تا همه تعداد کمتر یا مساوی به آن است. 383 00:18:09,750 --> 00:18:12,040 >> در حال حاضر، در اینجا من فقط رفتن برای چاپ کردن پاسخ. 384 00:18:12,040 --> 00:18:17,330 بنابراین به عنوان یک بررسی سلامت عقل سریع، اجازه دهید را سیگما 0-- سیگما بریده بریده نقطه 0-- 385 00:18:17,330 --> 00:18:18,690 و اجازه دهید من در نوع 2. 386 00:18:18,690 --> 00:18:19,960 و من در واقع دریافت 3. 387 00:18:19,960 --> 00:18:21,240 اجازه دهید من در نوع 3. 388 00:18:21,240 --> 00:18:22,860 من در واقع 6. 389 00:18:22,860 --> 00:18:27,636 و اگر هر کسی می تواند ریاضی به سرعت انجام دهید، اگر من 50 چه هستم من است؟ 390 00:18:27,636 --> 00:18:29,839 >> مخاطبان: [نامفهوم]. 391 00:18:29,839 --> 00:18:30,880 DAVID J. مالان: خب، نه. 392 00:18:30,880 --> 00:18:33,340 اما 1،275 است که بسیار نزدیک است. 393 00:18:33,340 --> 00:18:38,850 بنابراین این نتیجه انجام 50 است به علاوه 49 به علاوه 48 به علاوه 47 به علاوه 46 394 00:18:38,850 --> 00:18:40,349 تمام راه را به 1. 395 00:18:40,349 --> 00:18:41,390 به طوری که همه سیگما می کند. 396 00:18:41,390 --> 00:18:43,350 اما بیایید ببینید که چگونه ایم ما در حال حاضر آن اجرا شده است. 397 00:18:43,350 --> 00:18:45,790 بنابراین در اینجا تابع خود است. 398 00:18:45,790 --> 00:18:49,000 و این به نظر نمی رسد به چیزی برای انجام با بازگشت است. 399 00:18:49,000 --> 00:18:51,070 در واقع، ما با استفاده از یک روش مدرسه قدیمی. 400 00:18:51,070 --> 00:18:56,680 من مقدار دهی اولیه یک متغیر به نام مجموع به صفر، پس از آن من foreloop را در اینجا، 401 00:18:56,680 --> 00:19:00,790 و من اعلام نوع int به نام من، تنظیم آن را برابر با 1-- 402 00:19:00,790 --> 00:19:04,080 هر چند که من می تواند آن را برابر با تنظیم صفر، اما از آنجایی که من انجام علاوه بر این، 403 00:19:04,080 --> 00:19:05,340 چه کسی اهمیت میدهد اگر آن را صفر یا یک. 404 00:19:05,340 --> 00:19:06,660 آن را به اثری ندارد. 405 00:19:06,660 --> 00:19:10,110 >> بنابراین من تکرار تا زمانی که من است کمتر یا متر، برابر است که 406 00:19:10,110 --> 00:19:11,671 این استدلال که در تصویب شده است. 407 00:19:11,671 --> 00:19:13,670 و بعد من فقط حفظ افزایش I. و بینش 408 00:19:13,670 --> 00:19:20,010 از حلقه همه من انجام در حال انجام است مبلغ به علاوه I. برابر و این عمدی. 409 00:19:20,010 --> 00:19:22,326 من نمی خواهم به انجام، در این مورد، مانند جمع به علاوه به علاوه. 410 00:19:22,326 --> 00:19:24,790 من می خواهم به واقع اضافه ارزش فعلی من 411 00:19:24,790 --> 00:19:28,190 نگه می دارد که بزرگ و بزرگتر و بزرگتر به شمارش در حال اجرا. 412 00:19:28,190 --> 00:19:30,210 >> و پس از آن من خلاصه بازگشت. 413 00:19:30,210 --> 00:19:33,850 و به همین ترتیب جواب می شود مجموع ارزش. 414 00:19:33,850 --> 00:19:35,282 و سپس من آن را چاپ کنید. 415 00:19:35,282 --> 00:19:37,740 بنابراین در اینجا یک فرصت وجود دارد، هر چند، به نوع ساده 416 00:19:37,740 --> 00:19:41,260 این کد مفهومی و نوع ضربه یکی 417 00:19:41,260 --> 00:19:43,250 ذهن را در شرایط از سادگی حتی اگر آن 418 00:19:43,250 --> 00:19:45,700 طول می کشد در حالی که مرتب سازی بر اساس قدردانی چرا این 419 00:19:45,700 --> 00:19:47,330 قدرتمند در این مثالها کوچک است. 420 00:19:47,330 --> 00:19:50,380 در اینجا سیگما one-- به طوری که است نسخه دوم از این کد. 421 00:19:50,380 --> 00:19:55,290 همه چیز تا بالا یکسان است بنابراین این داستان همین امر مانند قبل. 422 00:19:55,290 --> 00:19:59,220 اما در حال حاضر اجازه دهید در نگاه اجرای سیگما که 423 00:19:59,220 --> 00:20:05,040 من تنها این پایین، محدودتر ام lines-- چهار خط کد، واقعا، 424 00:20:05,040 --> 00:20:06,980 به علاوه برخی از آکولاد و فضای سفید. 425 00:20:06,980 --> 00:20:07,930 >> اما آنچه من انجام؟ 426 00:20:07,930 --> 00:20:11,050 اگر متر کمتر از یا مساوی صفر، من نیاز به نوع رسیدگی 427 00:20:11,050 --> 00:20:12,490 مورد فوق العاده ساده است. 428 00:20:12,490 --> 00:20:15,450 و اگر شما به من دست صفر و یا هر چیز منفی است که فقط عجیب و غریب، 429 00:20:15,450 --> 00:20:17,909 من فقط رفتن به خودسرانه اما به طور مداوم صفر بازگشت. 430 00:20:17,909 --> 00:20:20,200 من این چیزی که می خواهید به وارد شدن به برخی بی نهایت عجیب و غریب 431 00:20:20,200 --> 00:20:21,810 حلقه به دلیل یک مقدار منفی. 432 00:20:21,810 --> 00:20:25,070 بنابراین من فقط گفت، اگر شما به من صفر یا کمتر، من صفر بازگشت. 433 00:20:25,070 --> 00:20:28,220 >> اما این خوب است چون که که صفحه از دفترچه تلفن 434 00:20:28,220 --> 00:20:28,790 که سمت چپ. 435 00:20:28,790 --> 00:20:32,660 من گاز گرفتن به یک مشکل خاص و چیزی نمی نامد به صورت بازگشتی. 436 00:20:32,660 --> 00:20:36,580 اما در خط 31، چه به نظر می رسد من به انجام می شود؟ 437 00:20:36,580 --> 00:20:39,780 پرانتز فقط نگه داشتن همه چیز، امیدوارم، کمی روشن تر است. 438 00:20:39,780 --> 00:20:42,110 اما همه من انجام من بازگشت m-- هر 439 00:20:42,110 --> 00:20:45,790 شما me-- به علاوه دست ارزش با عرض پوزش m--، 440 00:20:45,790 --> 00:20:49,052 به علاوه ارزش سیگما از متر منهای 1. 441 00:20:49,052 --> 00:20:50,010 پس چه معنی است؟ 442 00:20:50,010 --> 00:20:53,965 اگر شما به من شماره 3 را به عنوان ورودی، پاسخ من می خواهم به نهایت 443 00:20:53,965 --> 00:20:57,307 6 دلیل است که 3 به علاوه 2 به علاوه 1 به من 6 می دهد. 444 00:20:57,307 --> 00:20:59,390 اما چگونه می توانم در مورد فکر می کنم من چگونه این کد در حال اجرا است؟ 445 00:20:59,390 --> 00:21:03,070 اولین بار من سیگما پاسخ و من در ارزش 3 عبور می کند، 446 00:21:03,070 --> 00:21:07,960 این مثل آن است بر روی یک تکه کاغذ، در اینجا ارزش 3 است 447 00:21:07,960 --> 00:21:09,920 و من این را به عنوان سیگما تصویب شده است. 448 00:21:09,920 --> 00:21:13,090 3 واضح است که کمتر از 0 تا شرایط IF صدق نمی کند. 449 00:21:13,090 --> 00:21:14,020 دیگری می کند. 450 00:21:14,020 --> 00:21:14,990 پس چه باید بکنم؟ 451 00:21:14,990 --> 00:21:19,902 من می خواهم به بازگشت متر است، که 3، به علاوه سیگما از متر منهای 1. 452 00:21:19,902 --> 00:21:21,110 بنابراین اجازه دهید من آهنگ از این نگه می دارد. 453 00:21:21,110 --> 00:21:22,710 من قصد دارم برای قرار دادن این تکه کاغذ است. 454 00:21:22,710 --> 00:21:24,668 و ارزش، به روشن، من قصد دارم به تصویب 455 00:21:24,668 --> 00:21:26,540 به سیگما در این نقطه در داستان؟ 456 00:21:26,540 --> 00:21:28,080 چه شماره ای؟ 457 00:21:28,080 --> 00:21:28,610 2، درست است؟ 458 00:21:28,610 --> 00:21:29,670 3 منهای 1 2 است. 459 00:21:29,670 --> 00:21:32,000 بنابراین من فقط نیاز به یک کمی تکه کاغذ است. 460 00:21:32,000 --> 00:21:33,931 بنابراین در حال حاضر سیگما است به نام دوباره گرفتن. 461 00:21:33,931 --> 00:21:35,930 و من به عمد قرار داده ام این به دلیل آن پایین 462 00:21:35,930 --> 00:21:38,070 نوع مانند توقف این نسخه از داستان 463 00:21:38,070 --> 00:21:40,720 چون در حال حاضر من متمرکز هستم در سیگنال متر منهای 1. 464 00:21:40,720 --> 00:21:42,660 بنابراین متر 3، متر بود منهای 1 است 2. 465 00:21:42,660 --> 00:21:45,110 بنابراین در اینجا 2 که من گذشت شده است. 466 00:21:45,110 --> 00:21:48,510 2 بدیهی است که کمتر از 0 به طوری که مورد صدق نمی کند. 467 00:21:48,510 --> 00:21:53,445 دیگری من بازگشت متر است، که این چیزی، به علاوه سیگما از چه مقدار؟ 468 00:21:53,445 --> 00:21:56,160 469 00:21:56,160 --> 00:21:59,650 بنابراین اگر سیگما از 1--، زیرا M در حال حاضر 2 تا 2 منهای 1 1 است. 470 00:21:59,650 --> 00:22:01,950 بنابراین در حال حاضر من فقط ارزش 1. 471 00:22:01,950 --> 00:22:04,810 من عبور فقط تعداد 1 تا sigma-- تابع 472 00:22:04,810 --> 00:22:09,120 یا خودم here-- تا 1 واضح است که کمتر از صفر، هنوز هم صدق نمی کند. 473 00:22:09,120 --> 00:22:12,970 >> بازگشت دیگری به علاوه 1 سیگما از چه؟ 474 00:22:12,970 --> 00:22:13,470 0. 475 00:22:13,470 --> 00:22:14,678 بنابراین اجازه دهید یاد داشته باشید که. 476 00:22:14,678 --> 00:22:15,920 من بعدا به دریافت کنید. 477 00:22:15,920 --> 00:22:18,060 حالا من قصد دارم به جلو بروید و نقطه پایین تعداد 0 به دلیل این که 478 00:22:18,060 --> 00:22:19,470 استدلال یا پارامتر است. 479 00:22:19,470 --> 00:22:22,400 من گذشت تعداد 0 و در نهایت این فرآیند 480 00:22:22,400 --> 00:22:25,760 فقط تکرار خودم تبلیغ nauseum پاسخ بس به دلیل آنچه که 481 00:22:25,760 --> 00:22:28,820 من بلافاصله انجام یک بار من این 0. 482 00:22:28,820 --> 00:22:29,790 من صفر بازگشت. 483 00:22:29,790 --> 00:22:31,790 بنابراین در حال حاضر شما باید به عقب داستان. 484 00:22:31,790 --> 00:22:34,430 >> اگر در حال حاضر در زمان به عقب بروید، چه چیزی اخیر بود 485 00:22:34,430 --> 00:22:36,670 من اگر شما به معنای واقعی کلمه بود روندنج یک ویدیو؟ 486 00:22:36,670 --> 00:22:41,630 من قصد دارم به انتخاب کنید تا جدید ترین 1 و به من می دهد به علاوه 1 0 1 است. 487 00:22:41,630 --> 00:22:44,100 اگر من روندنج داستان، که رفتن را به من بدهد 488 00:22:44,100 --> 00:22:46,880 2 PLUS این مقدار در حال اجرا است که 1. 489 00:22:46,880 --> 00:22:47,789 به طوری که 3. 490 00:22:47,789 --> 00:22:49,330 و سپس من رفتن به نگه داشتن سیم. 491 00:22:49,330 --> 00:22:54,220 هنگامی که من برای اولین بار قرار داده تعداد 3-- تا 3 + 3 به من می دهد 6. 492 00:22:54,220 --> 00:22:57,272 >> و در حال حاضر، اگر شما از rewound ام این ویدئو تا این نقطه، 493 00:22:57,272 --> 00:22:58,980 این بسیار بود اولین سوال من پرسید. 494 00:22:58,980 --> 00:23:01,450 هنگامی که گذشت 3، چه سیگما از 3 است؟ 495 00:23:01,450 --> 00:23:04,204 آن را در واقع 6، از مجموع همه این تکه های کاغذ. 496 00:23:04,204 --> 00:23:07,120 بنابراین اگر که طول می کشد در حالی که کمی به بسته بندی و ذهن شما را در اطراف، که خوب است. 497 00:23:07,120 --> 00:23:10,700 اما در نظر گرفتن آن little-- آن بسیار سنجیده بود که من انباشته 498 00:23:10,700 --> 00:23:12,990 این اعداد در بالای هر یک دیگر. 499 00:23:12,990 --> 00:23:17,440 این نوع مانند داشتن یک حافظه یک رکورد در زمان، 500 00:23:17,440 --> 00:23:19,940 مثل یک اسکرابر در یک ویدیو، که من در واقع می توانید عقب در. 501 00:23:19,940 --> 00:23:24,350 و ما قصد داریم تا دوباره به که استعاره در فقط یک کمی. 502 00:23:24,350 --> 00:23:28,240 >> اما در ابتدا، آن را تبدیل وجود دارد که بسیاری از حرفهایها و مردم خنده دار، 503 00:23:28,240 --> 00:23:29,614 من حدس می زنم، در گوگل. 504 00:23:29,614 --> 00:23:31,530 باید کسی که بسیار خوب در ذهن در Google 505 00:23:31,530 --> 00:23:34,270 تا در آینده برای فقط یک لحظه و کمک به من برای چیزی را جستجو کنم؟ 506 00:23:34,270 --> 00:23:35,650 بسیار، کلید بسیار کم است. 507 00:23:35,650 --> 00:23:37,870 کسی که هرگز تا قبل از، شاید. 508 00:23:37,870 --> 00:23:38,370 باشه. 509 00:23:38,370 --> 00:23:39,030 آره؟ 510 00:23:39,030 --> 00:23:39,530 بجنب. 511 00:23:39,530 --> 00:23:41,410 بیا پایین. 512 00:23:41,410 --> 00:23:42,183 نام شما چیست؟ 513 00:23:42,183 --> 00:23:42,870 >> SAM: سام. 514 00:23:42,870 --> 00:23:44,290 >> DAVID J. مالان: سام، در آمد. 515 00:23:44,290 --> 00:23:45,320 این همان است. 516 00:23:45,320 --> 00:23:46,280 از آشنایی با شما خرسندم. 517 00:23:46,280 --> 00:23:46,780 هی 518 00:23:46,780 --> 00:23:47,580 بیا اینجا. 519 00:23:47,580 --> 00:23:51,290 بنابراین همه من نیاز شما را به انجام، اگر شما می توانید، سام، در اینجا گوگل است. 520 00:23:51,290 --> 00:23:53,240 می تواند شما را برای بازگشت اصطلاح را جستجو کنم؟ 521 00:23:53,240 --> 00:23:55,770 522 00:23:55,770 --> 00:23:56,270 هنوز فاسد نشده است. 523 00:23:56,270 --> 00:23:59,940 524 00:23:59,940 --> 00:24:00,970 >> و در حال حاضر let's-- آره. 525 00:24:00,970 --> 00:24:03,380 روی OK کلیک کنید که. 526 00:24:03,380 --> 00:24:04,315 بهتر است که با کلیک بر روی. 527 00:24:04,315 --> 00:24:07,020 528 00:24:07,020 --> 00:24:08,020 آه، آن را دریافت. 529 00:24:08,020 --> 00:24:08,520 هیچ؟ 530 00:24:08,520 --> 00:24:09,050 باشه. 531 00:24:09,050 --> 00:24:10,430 بنابراین اجازه انجام یک زن و شوهر است. 532 00:24:10,430 --> 00:24:12,830 نه آنقدر مرتبط علمی در اینجا، اما شما باید 533 00:24:12,830 --> 00:24:14,520 تا به حال گوگل برای مقلوب جستجو؟ 534 00:24:14,520 --> 00:24:15,280 >> SAM: شماره 535 00:24:15,280 --> 00:24:15,520 >> DAVID J. مالان: OK. 536 00:24:15,520 --> 00:24:17,186 جستجو برای مقلوب به جای بازگشت. 537 00:24:17,186 --> 00:24:22,540 538 00:24:22,540 --> 00:24:23,790 چگونه در مورد کج. 539 00:24:23,790 --> 00:24:25,515 شما تا به حال برای گوشهء چشم جستجو؟ 540 00:24:25,515 --> 00:24:29,260 541 00:24:29,260 --> 00:24:32,692 در حال حاضر، این یکی را کمی سخت به دیدن اما امیدوارم everything's-- OK. 542 00:24:32,692 --> 00:24:34,150 این فقط من و شما این بهره گیری از. 543 00:24:34,150 --> 00:24:34,690 باشه. 544 00:24:34,690 --> 00:24:38,950 >> بنابراین در نهایت، این one's-- آن گوشهء چشم کوچک است. 545 00:24:38,950 --> 00:24:40,810 در حال حاضر انجام رول بشکه. 546 00:24:40,810 --> 00:24:44,460 547 00:24:44,460 --> 00:24:45,310 فوق العاده است. 548 00:24:45,310 --> 00:24:45,910 خیلی خوب. 549 00:24:45,910 --> 00:24:47,110 تشکر به سام. 550 00:24:47,110 --> 00:24:49,416 در اینجا شما بروید. 551 00:24:49,416 --> 00:24:50,400 با تشکر. 552 00:24:50,400 --> 00:24:52,807 >> بنابراین آنچه که در در تمام از این نمونه ها احمقانه است؟ 553 00:24:52,807 --> 00:24:55,640 پس در واقع، در زیر هود از میلیون گوگل از خط کد 554 00:24:55,640 --> 00:24:58,860 ظاهرا چند احمقانه اگر شرایطی که در اصل 555 00:24:58,860 --> 00:25:01,160 چک کردن در صورتی که کاربر تایپ در این عبارت، 556 00:25:01,160 --> 00:25:03,760 انجام چیزی است که احتمالا در زمان مقدار قابل توجهی از زمان 557 00:25:03,760 --> 00:25:06,080 برای پیاده سازی فقط به سرگرم کننده در این راه باشد. 558 00:25:06,080 --> 00:25:08,430 اما این همه آن را جوش به زیر هود. 559 00:25:08,430 --> 00:25:11,570 اما، البته، بازگشت بیشتر از geekier است 560 00:25:11,570 --> 00:25:13,880 به عنوان مثال در میان کسانی که از ترفندهای خاص. 561 00:25:13,880 --> 00:25:16,880 و مطمئنا دیگران وجود دارد خارج وجود دارد و همچنین که ما شاید حتی نمی 562 00:25:16,880 --> 00:25:18,230 کشف درست نشده است. 563 00:25:18,230 --> 00:25:22,830 >> بنابراین یک نگاه، و یا در نظر در حال حاضر برنامه زیر، 564 00:25:22,830 --> 00:25:24,830 و قطعا هر شتاب از این در راه خود را. 565 00:25:24,830 --> 00:25:28,820 من قصد دارم به جلو بروید و باز کردن یک برنامه ای است که 566 00:25:28,820 --> 00:25:30,920 رفتن سعی کنید به مبادله دو ارزش ها. 567 00:25:30,920 --> 00:25:33,210 اما قبل از ما وجود دارد، اجازه دهید این کار. 568 00:25:33,210 --> 00:25:38,500 آیا ما می توانیم یک گرفتن داوطلب، من فکر می کنم؟ 569 00:25:38,500 --> 00:25:40,480 دوست دارید داوطلب؟ 570 00:25:40,480 --> 00:25:40,980 هیچ؟ 571 00:25:40,980 --> 00:25:41,890 بیا بالا. 572 00:25:41,890 --> 00:25:42,390 بیا بالا. 573 00:25:42,390 --> 00:25:42,890 خیلی خوب. 574 00:25:42,890 --> 00:25:44,136 بنابراین نام شما چیست؟ 575 00:25:44,136 --> 00:25:44,810 >> لورن: لورن. 576 00:25:44,810 --> 00:25:45,768 >> DAVID J. مالان: لورن. 577 00:25:45,768 --> 00:25:46,890 بیا بالا، لورن. 578 00:25:46,890 --> 00:25:50,140 بنابراین لورن است که به چالش کشیده اینجا شرح زیر است. 579 00:25:50,140 --> 00:25:52,310 از آشنایی با شما خرسندم. 580 00:25:52,310 --> 00:25:55,730 بنابراین لورن در اینجا در مقابل است از او دو فنجان خالی می باشد. 581 00:25:55,730 --> 00:25:57,570 و ما برخی از نارنجی آب و شیر 582 00:25:57,570 --> 00:26:00,301 و ما در حال رفتن به جلو و زیر را انجام دهید. 583 00:26:00,301 --> 00:26:01,550 ما فقط رفتن برای پر کردن این. 584 00:26:01,550 --> 00:26:07,840 چند اونس شیر بیش از اینجا و اجازه دهید در اینجا پر کردن یک آب پرتقال است. 585 00:26:07,840 --> 00:26:11,475 >> و در مقابل همه این مخاطبان، 586 00:26:11,475 --> 00:26:13,550 مبادله دو مقدار از این فنجان. 587 00:26:13,550 --> 00:26:16,970 قرار دادن آب پرتقال در جام شیر و شیر در فنجان آب پرتقال. 588 00:26:16,970 --> 00:26:22,380 589 00:26:22,380 --> 00:26:26,150 چگونه شما این کار اگر شما در شد خانه و دسترسی به دیگر تجهیزات به حال؟ 590 00:26:26,150 --> 00:26:27,400 لورن: آن را در یک فنجان دیگر. 591 00:26:27,400 --> 00:26:28,191 DAVID J. مالان: OK. 592 00:26:28,191 --> 00:26:31,940 بنابراین اجازه دهید به طور موقت متغیر، اگر ما خواهد شد. 593 00:26:31,940 --> 00:26:35,871 و به جلو در حال حاضر و پیاده سازی این روش مبادله است. 594 00:26:35,871 --> 00:26:36,370 خیلی خوب. 595 00:26:36,370 --> 00:26:41,490 ما OJ به موقت قرار داده ام متغیر، شیر را به متغیر OJ، 596 00:26:41,490 --> 00:26:44,481 و در حال حاضر متغیر موقت در متغیر شیر. 597 00:26:44,481 --> 00:26:44,980 باشه. 598 00:26:44,980 --> 00:26:48,740 بنابراین به خوبی انجام می تا کنون است. 599 00:26:48,740 --> 00:26:50,990 پس از آن معلوم out-- نگه دارید که برای فقط یک لحظه فکر می کردم. 600 00:26:50,990 --> 00:26:54,479 در اینجا، فقط آن را گیک تا کمی، این می شود کد مربوط C 601 00:26:54,479 --> 00:26:55,520 که ما فقط اجرا شده است. 602 00:26:55,520 --> 00:26:58,650 ما دو ورودی A و B هر دو حال که ما فقط برای سادگی می گویند 603 00:26:58,650 --> 00:26:59,260 INT است. 604 00:26:59,260 --> 00:27:02,780 و متوجه اینجا، اگر من می خواهم به مبادله مقادیر دو متغیر، A و B، 605 00:27:02,780 --> 00:27:06,890 ما در واقع نیاز به یک واسطه، یک متغیر موقت، یک فنجان موقت، 606 00:27:06,890 --> 00:27:10,830 را که در آن بریزید یکی از مقادیر به طوری که ما یک حفره یا سوراخ برای آن است. 607 00:27:10,830 --> 00:27:13,480 اما پس از آن کد است که دقیقا به عنوان لورن در اینجا اجرا شده است. 608 00:27:13,480 --> 00:27:15,500 >> در حال حاضر، فقط برای گرفتن یک دیوانه کمی، معلوم است 609 00:27:15,500 --> 00:27:20,930 که شما می توانید این کار را بدون انجام یک متغیر موقت است. 610 00:27:20,930 --> 00:27:24,870 برای انجام این کار به درستی، هر چند، ما قصد داریم به به تقلب با برخی از مواد شیمیایی. 611 00:27:24,870 --> 00:27:26,380 ما باید برخی از فنجان اضافی در اینجا. 612 00:27:26,380 --> 00:27:29,600 بنابراین نزدیک ترین چیزی که به نظر می رسد مانند شیر و آب perhaps-- 613 00:27:29,600 --> 00:27:34,090 و یا شیر و OJ-- است ما باید برخی از آب، بنابراین ما این را پر کنید 614 00:27:34,090 --> 00:27:36,486 با چند اونس آب روشن است. 615 00:27:36,486 --> 00:27:38,332 که احتمالا بیش از حد. 616 00:27:38,332 --> 00:27:38,832 آره. 617 00:27:38,832 --> 00:27:39,934 که قطعا بیش از حد. 618 00:27:39,934 --> 00:27:40,600 در یک ثانیه نگه دارید. 619 00:27:40,600 --> 00:27:43,520 620 00:27:43,520 --> 00:27:48,420 >> و در حال حاضر ما نفت، که، به من یاد از وسط کلاس شیمی مدرسه، 621 00:27:48,420 --> 00:27:49,990 امیدوارم آن را با آب ترکیب نمی شود. 622 00:27:49,990 --> 00:27:53,650 اما این نوع از نوع به نظر می رسد مانند شیر و OJ. 623 00:27:53,650 --> 00:27:55,760 بنابراین در حال حاضر، بدون استفاده از یک متغیر موقت، 624 00:27:55,760 --> 00:27:59,260 می توانید آن دو مقدار شما مبادله؟ 625 00:27:59,260 --> 00:28:03,884 بنابراین روغن می رود به جام آب، آب می رود به جام نفت. 626 00:28:03,884 --> 00:28:04,800 لورن: بدون فنجان دیگر؟ 627 00:28:04,800 --> 00:28:05,940 DAVID J. مالان: بدون فنجان دیگر. 628 00:28:05,940 --> 00:28:07,860 و من در واقع نه قبل از این در سال جاری آزمایش 629 00:28:07,860 --> 00:28:10,110 بنابراین من اگر این را نمی دانند در واقع کار شیمیایی. 630 00:28:10,110 --> 00:28:16,130 631 00:28:16,130 --> 00:28:18,650 قرار نبود اتفاق می افتد. 632 00:28:18,650 --> 00:28:19,761 آیا این کار می کند؟ 633 00:28:19,761 --> 00:28:20,260 خیلی خوب. 634 00:28:20,260 --> 00:28:20,990 بنابراین جدا؟ 635 00:28:20,990 --> 00:28:21,490 خوب است. 636 00:28:21,490 --> 00:28:24,714 در حال حاضر ما برای دریافت آب به داخل فنجان دیگر. 637 00:28:24,714 --> 00:28:27,630 متمرکز شیمی دقیق می تواند احتمالا این بهتر از من انجام دهد. 638 00:28:27,630 --> 00:28:28,510 >> لورن: آب در پایین است. 639 00:28:28,510 --> 00:28:31,910 >> DAVID J. مالان: در آب-- که چه زمان ما این است کلید. 640 00:28:31,910 --> 00:28:33,950 شما باید برای این کار را در جهت درست است. 641 00:28:33,950 --> 00:28:34,450 آره. 642 00:28:34,450 --> 00:28:35,270 OK That's--. 643 00:28:35,270 --> 00:28:37,290 بنابراین در حال حاضر ما دو فنجان روغن. 644 00:28:37,290 --> 00:28:37,790 باشه. 645 00:28:37,790 --> 00:28:38,510 این خوب است. 646 00:28:38,510 --> 00:28:40,110 اما اگر این مواد شیمیایی از I-- کار 647 00:28:40,110 --> 00:28:41,200 >> لورن: این آب است. 648 00:28:41,200 --> 00:28:41,930 >> DAVID J. مالان: که عمدتا آب است. 649 00:28:41,930 --> 00:28:42,430 خیلی خوب. 650 00:28:42,430 --> 00:28:44,210 اما هنوز جام مانند قبل است. 651 00:28:44,210 --> 00:28:47,570 بنابراین پور it-- آن را امتحان کنید بیش از وجود دارد. 652 00:28:47,570 --> 00:28:49,300 باشه. 653 00:28:49,300 --> 00:28:51,010 این یک استفاده خوب از زمان کلاس امروز است. 654 00:28:51,010 --> 00:28:51,510 باشه. 655 00:28:51,510 --> 00:28:53,890 بنابراین در حال حاضر خوب we--. 656 00:28:53,890 --> 00:28:55,460 مرتب کردن بر اساس. 657 00:28:55,460 --> 00:28:55,960 خیلی خوب. 658 00:28:55,960 --> 00:28:56,690 خیلی خوب است. 659 00:28:56,690 --> 00:29:00,006 با تشکر از شما برای لورن. 660 00:29:00,006 --> 00:29:01,950 خیلی خوب انجام شده. 661 00:29:01,950 --> 00:29:04,570 >> بنابراین فقط برای منفجر ذهن خود را، و این است که شاید چیزی 662 00:29:04,570 --> 00:29:08,660 به بازی با اگر شما در CS50 ID را دوست دارم، شما می توانید، در واقع، مبادله دو متغیر 663 00:29:08,660 --> 00:29:11,470 بدون استفاده از یک عدد صحیح موقت. 664 00:29:11,470 --> 00:29:13,060 و این کد مربوط گراد است. 665 00:29:13,060 --> 00:29:16,110 و اگر شما از گذشته به خاطر بیاورید چهارشنبه، ما معرفی شده است، اگر به طور خلاصه، 666 00:29:16,110 --> 00:29:19,720 برخی از اپراتورهای جدید در C. و می کند هر کسی به یاد آنچه هویج کمی 667 00:29:19,720 --> 00:29:23,660 نماد است، که کوچک مثلثی نماد از صفحه کلید نشان دهنده؟ 668 00:29:23,660 --> 00:29:26,003 چه بیتی اپراتور؟ 669 00:29:26,003 --> 00:29:26,770 >> مخاطبان: EXOR. 670 00:29:26,770 --> 00:29:27,645 >> DAVID J. مالان: EXOR. 671 00:29:27,645 --> 00:29:28,560 منحصر به فرد یا. 672 00:29:28,560 --> 00:29:32,920 بنابراین اگر شما می خواهید، فقط برای تفریح ​​در صفحه اصلی، به a و b دو خودسرانه 673 00:29:32,920 --> 00:29:36,072 ارزش مانند هر eight-- و من به یک ارزش هشت بیت را انتخاب نمایید. 674 00:29:36,072 --> 00:29:38,530 اگر شما این کار را با 32 بیت، شما به سرعت خسته نمی شود. 675 00:29:38,530 --> 00:29:42,150 اما فقط به یک هشت بیتی ارزش است که هر آنچه را، یک یا دو، 676 00:29:42,150 --> 00:29:43,790 و ب یک مقدار مشابه. 677 00:29:43,790 --> 00:29:46,810 و سپس با استفاده از تعریف از XOR از چهارشنبه گذشته، 678 00:29:46,810 --> 00:29:52,560 اعمال می شود که ذره ذره، هر یک از آن هشت بیت در هر یک از A و B، 679 00:29:52,560 --> 00:29:54,980 و سپس آن را دقیقا در این کد. 680 00:29:54,980 --> 00:29:58,170 و آن را نادرست که چه شما در اینجا بر روی صفحه نمایش را ببینید. 681 00:29:58,170 --> 00:30:02,100 این در واقع جوش پایین به سه عملیات XOR 682 00:30:02,100 --> 00:30:05,910 و به نحوی جادویی A و ب مواضع تبادل 683 00:30:05,910 --> 00:30:08,010 بدون از دست دادن هر گونه اطلاعات. 684 00:30:08,010 --> 00:30:11,580 >> بنابراین روغن و آب فوت و فن است نزدیک ترین تجسم دنیای واقعی 685 00:30:11,580 --> 00:30:12,980 من می توانم از فکر می کنم که به تقلید. 686 00:30:12,980 --> 00:30:15,950 اما آن را قطعا آسان تر به استفاده از یک متغیر موقت، 687 00:30:15,950 --> 00:30:16,920 در این مورد در اینجا. 688 00:30:16,920 --> 00:30:21,190 و این نیز یک فرصت می گویند، بیش از حد، این نوع از بهینه سازی میکرو، 689 00:30:21,190 --> 00:30:23,590 به عنوان یک دانشمند کامپیوتر می گویند، در حالی که نوع سرگرم کننده 690 00:30:23,590 --> 00:30:27,060 به مورد چگونه شما این کار را بدون انجام لاف زدن مانند مبادله با یک متغیر اضافی، 691 00:30:27,060 --> 00:30:28,640 این همه که قانع کننده نیست. 692 00:30:28,640 --> 00:30:31,619 از آنجا که برای صرفه جویی در 32 بیت، به عنوان در مورد یک int واقعی، 693 00:30:31,619 --> 00:30:33,410 است که همه قانع کننده بر روی یک سیستم که در آن 694 00:30:33,410 --> 00:30:36,722 شما ممکن است با استفاده از دهها مگابایت و یا مانند حافظه و حتی بیشتر این روز است. 695 00:30:36,722 --> 00:30:38,680 و در واقع، هنگامی که ما به مجموعه ای مشکل بعد 696 00:30:38,680 --> 00:30:41,010 و شما طلسم اجرا جستجوگر و شما 697 00:30:41,010 --> 00:30:43,550 به چالش کشیده به انجام این کار با این RAM به عنوان کمی به عنوان کمی و 698 00:30:43,550 --> 00:30:46,820 زمان که ممکن است در computer-- شما هنوز هم 699 00:30:46,820 --> 00:30:50,160 یک هفته به پیاده سازی it-- شما have-- شما می شود 700 00:30:50,160 --> 00:30:51,799 به چالش کشیده برای به حداقل رساندن آن منابع است. 701 00:30:51,799 --> 00:30:53,840 و این واقعا تنها مناسبت این ترم 702 00:30:53,840 --> 00:30:57,940 که در آن شما را تشویق به اصلاح شود خاموش حتی بهترین عملکرد 703 00:30:57,940 --> 00:30:59,340 در غیر این صورت هزینه. 704 00:30:59,340 --> 00:31:02,200 >> بنابراین ما چگونه می توانیم what-- این در کد واقعی؟ 705 00:31:02,200 --> 00:31:04,530 اجازه بدهید به جلو در حال حاضر و باز کردن یک مثال 706 00:31:04,530 --> 00:31:07,700 که به عمد است که به نام هیچ مبادله دلیل آن را نمی کند 707 00:31:07,700 --> 00:31:10,670 در واقع مبادله متغیرهای که شما در واقع ممکن است انتظار. 708 00:31:10,670 --> 00:31:12,260 بنابراین اجازه دهید نگاهی به. 709 00:31:12,260 --> 00:31:17,050 در اینجا یک برنامه است که هیچ CS50 را کتابخانه در رفتن، فقط استاندارد I / O. 710 00:31:17,050 --> 00:31:19,560 در حال حاضر ما یک نمونه اولیه برای مبادله تا بالا که فقط 711 00:31:19,560 --> 00:31:21,540 معنی آن را به بعد به تعریف شود. 712 00:31:21,540 --> 00:31:22,550 و در اینجا اصلی. 713 00:31:22,550 --> 00:31:26,000 >> من خودسرانه اختصاص داده x و y، به ترتیب، یکی از ارزش ها و دو 714 00:31:26,000 --> 00:31:28,590 آنها فقط به دلیل کوچک و آسان به فکر کردن در مورد. 715 00:31:28,590 --> 00:31:32,280 و بعد من فقط یک دسته از printfs که در آن من یک بررسی سلامت عقل. * 1 است 716 00:31:32,280 --> 00:31:35,110 و y است 2 است که احتمالا چه کسانی printfs می گویند. 717 00:31:35,110 --> 00:31:36,530 بنابراین هیچ سحر و جادو تا کنون. 718 00:31:36,530 --> 00:31:40,100 >> سپس من قصد دارم به ادعا با چاپ دف، مبادله نقطه نقطه نقطه. 719 00:31:40,100 --> 00:31:43,730 من قصد دارم به پاسخ مبادله عملکرد، عبور در x و y. 720 00:31:43,730 --> 00:31:47,350 و اجازه دهید برای که فرض مبادله دقیقا اجرا 721 00:31:47,350 --> 00:31:49,930 آن را به عنوان یک لحظه پیش بود با یک متغیر موقت است. 722 00:31:49,930 --> 00:31:52,670 و به این ترتیب من ادعا شجاعانه، عوض میکنه. 723 00:31:52,670 --> 00:31:55,429 X در حال حاضر این و y است که. 724 00:31:55,429 --> 00:31:57,220 اما فایل، البته، نامیده می شود هیچ مبادله. 725 00:31:57,220 --> 00:31:58,678 بنابراین اجازه دهید در واقع چه اتفاقی می افتد. 726 00:31:58,678 --> 00:32:04,450 اگر من هیچ مبادله و سپس کامپایل انجام ./noswap، X 1، Y 2 است. 727 00:32:04,450 --> 00:32:05,770 مبادله عوض میکنه. 728 00:32:05,770 --> 00:32:07,200 X 1، Y 2 است. 729 00:32:07,200 --> 00:32:11,980 بنابراین آن را در واقع به نظر می رسد حتی ناقص هر چند swap-- اجازه دهید در پایین حرکت now-- 730 00:32:11,980 --> 00:32:16,542 دقیقا در اجرا کد من پیشنهاد یک لحظه پیش. 731 00:32:16,542 --> 00:32:19,000 بنابراین ما قصد داریم به دریافت فانتزی با مسائل XOR در حال حاضر. 732 00:32:19,000 --> 00:32:21,890 این نیز باید فقط کار می کنند مانند با شیر و OJ، 733 00:32:21,890 --> 00:32:25,820 اما به نظر نمی رسد به کار شود. 734 00:32:25,820 --> 00:32:27,180 >> بنابراین اجازه دهید این کار را دوباره انجام. 735 00:32:27,180 --> 00:32:29,310 شاید من فقط در حال اجرا بود آن را درست نیست. 736 00:32:29,310 --> 00:32:32,010 بنابراین اجازه دهید هیچ مبادله دوباره اجرا کنید. 737 00:32:32,010 --> 00:32:32,900 شاید I-- هیچ. 738 00:32:32,900 --> 00:32:34,400 پس از آن فقط کار نمی کند. 739 00:32:34,400 --> 00:32:36,060 بنابراین اجازه انجام بررسی سلامت عقل است. 740 00:32:36,060 --> 00:32:39,690 اجازه دهید من جلو بروید اینجا در تعویض و فقط اضافه کردن، یک دقیقه صبر کنید، 741 00:32:39,690 --> 00:32:43,856 یک درصد من است / n و اجازه دهید پلاگین در ارزش یک. 742 00:32:43,856 --> 00:32:45,730 از آنجا که من واقعا می خواهید تا ببینید که چه خبر است. 743 00:32:45,730 --> 00:32:47,570 و در واقع، این است یک تکنیک اشکال زدایی 744 00:32:47,570 --> 00:32:50,028 که شما ممکن است با استفاده از در ساعات اداری و یا در خانه در حال حاضر، 745 00:32:50,028 --> 00:32:53,560 شبیه به نیمه اول دن فیلم Armendariz به در PSET3 746 00:32:53,560 --> 00:32:56,870 در جایی که ما معرفی چاپ دف عنوان یک تکنیک توصیه می شود، حداقل 747 00:32:56,870 --> 00:32:58,080 برای موارد ساده است. 748 00:32:58,080 --> 00:33:01,720 اجازه بدهید به جلو و اجرا را هیچ مبادله دوباره، ./noswap. 749 00:33:01,720 --> 00:33:04,370 750 00:33:04,370 --> 00:33:05,840 >> جالب هست. 751 00:33:05,840 --> 00:33:11,670 بنابراین متوجه آنچه به نظر می رسد واقعی است. ایکس 1، Y 2 است، اما است که 2 ب 1 است. 752 00:33:11,670 --> 00:33:16,790 پس آن دو، به نحوی جابجا کردم اما x و y در حال گرفتن عوض میکنه نیست. 753 00:33:16,790 --> 00:33:21,090 بنابراین به روشن، چه اتفاقی می افتد است، تا اینجا من x و y دارای 754 00:33:21,090 --> 00:33:25,380 و کسانی که متغیرهای محلی در می دامنه اصلی، من در x و y عبور 755 00:33:25,380 --> 00:33:26,170 به مبادله. 756 00:33:26,170 --> 00:33:29,080 در حال حاضر، مبادله، به عنوان یک تابع جداگانه، پاسخ رایگان به استدلال آن است 757 00:33:29,080 --> 00:33:30,590 و یا هر چیز پارامترهای آن را می خواهد. 758 00:33:30,590 --> 00:33:33,280 foo یا نوار و یا X یا Y یا یک و یا ب. 759 00:33:33,280 --> 00:33:36,870 فقط به روشن است که آنها به x و y یکسان نیست در هر سه، 760 00:33:36,870 --> 00:33:38,020 من گفته ام A و B. 761 00:33:38,020 --> 00:33:40,040 اما ما می تواند آنها را هر چیزی که ما خواهید تماس بگیرید. 762 00:33:40,040 --> 00:33:43,960 >> و به این ترتیب به نظر می رسد مبادله است که گذشت 763 00:33:43,960 --> 00:33:48,980 x-- AKA a-- و آن را از گذشت y-- AKA ب. 764 00:33:48,980 --> 00:33:51,900 به نحوی این سه خط هستند مبادله آن ارزش دقیقا 765 00:33:51,900 --> 00:33:53,510 به عنوان لورن با شیر و OJ است. 766 00:33:53,510 --> 00:33:56,010 اما زمانی که ما نسخه قابل چاپ کردن ارزش ها، A و B 767 00:33:56,010 --> 00:34:01,340 در واقع مبادله اما x و Y هیچ تغییر به آنها. 768 00:34:01,340 --> 00:34:03,150 به یاد بیاورید که x و y تا اینجا. 769 00:34:03,150 --> 00:34:05,320 >> بنابراین ما می توانیم از طریق ببینید روش دیگری هم دارد. 770 00:34:05,320 --> 00:34:08,110 و این هم یک روش است جاسازی شده در مجموعه ای مشکل سه. 771 00:34:08,110 --> 00:34:10,780 اجازه دهید به جلو و انجام این کار در CS50 ID اگر شما در حال حاضر نیست. 772 00:34:10,780 --> 00:34:13,730 در سمت راست ما این برگه دیباگر. 773 00:34:13,730 --> 00:34:16,159 و اگر شما این را باز کردن، برخی از اطلاعات محرمانه وجود دارد 774 00:34:16,159 --> 00:34:17,530 که در آغاز شما را پرتاب می شود. 775 00:34:17,530 --> 00:34:19,310 اما اجازه دهید این کسی را دست انداختن از هم جدا واقعی سریع می باشد. 776 00:34:19,310 --> 00:34:21,620 >> بنابراین یک، شما متغیرهای محلی را ببینید. 777 00:34:21,620 --> 00:34:26,230 معلوم است که به CS50 IDE ساخت، و بسیاری از محیط های برنامه نویسی بیشتر 778 00:34:26,230 --> 00:34:28,060 به طور کلی، یک دیباگر است. 779 00:34:28,060 --> 00:34:31,340 ابزاری است که اجازه می دهد تا شما را به دید را ببینید آنچه که در داخل برنامه خود را 780 00:34:31,340 --> 00:34:34,380 بدون نیاز به توسل به اضافه کردن printfs و تدوین و اجرای 781 00:34:34,380 --> 00:34:37,588 و اضافه کردن تابع () printf و تدوین و در حال اجرا، که در حال حاضر، در ساعات اداری 782 00:34:37,588 --> 00:34:40,070 و یا خانه، احتمالا گرفتن بسیار خسته کننده. 783 00:34:40,070 --> 00:34:43,090 >> بنابراین در اینجا، در یک لحظه، ما رفتن به در زمان واقعی را ببینید 784 00:34:43,090 --> 00:34:44,760 مقادیر متغیرهای محلی ما است. 785 00:34:44,760 --> 00:34:47,880 ما همچنین در حال رفتن به قادر به تنظیم چه نقاط شکست به نام که 786 00:34:47,880 --> 00:34:52,570 فرصت ها در برنامه های من به مکث اعدام در یک خط خاص از کد 787 00:34:52,570 --> 00:34:53,710 که من کنجکاو در مورد هستم. 788 00:34:53,710 --> 00:34:54,210 درست؟ 789 00:34:54,210 --> 00:34:55,969 این برنامه ها در قسمتی از ثانیه اجرا کنید. 790 00:34:55,969 --> 00:35:00,450 این نوع خوب برای ما انسان ها آهسته تر قادر به مکث، یک لحظه، نگاه کنید به 791 00:35:00,450 --> 00:35:02,380 آنچه در اطراف در جریان است یک خط مشخصی از کد 792 00:35:02,380 --> 00:35:05,050 بدون شخم برنامه از طریق آن و در پایان به طور کامل. 793 00:35:05,050 --> 00:35:08,510 بنابراین یک نقاط شکست به ما اجازه می دهد به شکستن و مکث در یک نقطه خاص. 794 00:35:08,510 --> 00:35:12,990 >> پشته پاسخ راه فانتزی است گفت: آنچه که در حال حاضر توابع 795 00:35:12,990 --> 00:35:14,140 که در حال حاضر گفته می شود. 796 00:35:14,140 --> 00:35:15,370 اصلی است که همیشه اول نامیده می شود. 797 00:35:15,370 --> 00:35:17,230 اما اگر صفحه اصلی را یک تابع به نام تعویض، 798 00:35:17,230 --> 00:35:20,470 ما در واقع رفتن به این برج از توابع است که شده است 799 00:35:20,470 --> 00:35:22,400 به نام به ترتیب زمانی معکوس. 800 00:35:22,400 --> 00:35:23,310 بنابراین اجازه دهید را ببینید. 801 00:35:23,310 --> 00:35:24,327 >> من قصد دارم به زوم کردن. 802 00:35:24,327 --> 00:35:25,660 من قصد دارم برای رفتن به کد من. 803 00:35:25,660 --> 00:35:27,540 و فقط به خاطر من می خواهم به موشکاف در اینجا، 804 00:35:27,540 --> 00:35:31,100 من قصد دارم به جلو بروید و کلیک کنید فقط به سمت چپ از خط پنج. 805 00:35:31,100 --> 00:35:32,830 و این یک نقطه قرمز رنگ ایجاد می کند. 806 00:35:32,830 --> 00:35:36,200 و متوجه بر روی سمت راست که می داند دیباگر، هی، 807 00:35:36,200 --> 00:35:41,020 من فقط گفت یک نقطه انفصال در خط noswap.c پنج، به طور خاص 808 00:35:41,020 --> 00:35:42,480 در این خط از کد. 809 00:35:42,480 --> 00:35:45,090 بنابراین دیباگر می داند که من درخواست کرده اند که در کنار هم 810 00:35:45,090 --> 00:35:48,530 من مکث برنامه آن را اجرا کنید اعدام وجود دارد و نه فقط 811 00:35:48,530 --> 00:35:50,390 در حال اجرا همه چیز فوق العاده سریع. 812 00:35:50,390 --> 00:35:53,889 >> بنابراین در حال حاضر من قصد دارم به کلیک بر روی اشکال زدایی دکمه در بالای خیلی از IDE 813 00:35:53,889 --> 00:35:55,430 و را به انجام موارد زیر است. 814 00:35:55,430 --> 00:36:00,680 آن را به باز کردن یک در ابتدا تا حدودی ترسناک به دنبال ترمینال دوم window-- 815 00:36:00,680 --> 00:36:02,679 اشکال زدایی از راه دور از میزبانی چنین و such-- 816 00:36:02,679 --> 00:36:04,970 و ما به هر چه تمام این بدان معناست که قبل از اینکه طولانی. 817 00:36:04,970 --> 00:36:09,020 اما آنچه که مهم است برای این است که نقطه قرمز رنگ زده شد، 818 00:36:09,020 --> 00:36:11,735 دیباگر است به عمد متوقف execution-- 819 00:36:11,735 --> 00:36:15,560 نمی بر روی آن خط در هر سه اما در اولین خط از کد واقعی در آن تابع. 820 00:36:15,560 --> 00:36:18,040 و به همین دلیل خط هفت است در حال حاضر در زرد رنگ مشخص شده. 821 00:36:18,040 --> 00:36:20,550 >> و اکنون اجازه دهید یک نگاهی از در سمت راست. 822 00:36:20,550 --> 00:36:27,300 به نظر می رسد، به طور پیش فرض، به سادگی به اندازه کافی، x دارای چه مقدار؟ 823 00:36:27,300 --> 00:36:27,860 0. 824 00:36:27,860 --> 00:36:29,750 و Y است چه مقدار؟ 825 00:36:29,750 --> 00:36:30,410 صفر است. 826 00:36:30,410 --> 00:36:35,540 و این که می در مفهوم انتظار می رود که x و y-- که line-- زرد است 827 00:36:35,540 --> 00:36:36,770 هنوز اجرا نشده. 828 00:36:36,770 --> 00:36:38,510 بنابراین X باید مقدار 1 ندارد. 829 00:36:38,510 --> 00:36:41,470 این ممکن است هر مقدار دیگر، یک به اصطلاح مقدار زباله. 830 00:36:41,470 --> 00:36:44,320 و ما خوش شانس که آن را به در این نقطه صفر، در اصل. 831 00:36:44,320 --> 00:36:46,400 >> بنابراین در حال حاضر تنها چند وجود دارد دکمه های ما نیاز به مراقبت 832 00:36:46,400 --> 00:36:48,100 درباره هنگام اشکال زدایی در این راه. 833 00:36:48,100 --> 00:36:49,970 توجه داشته باشید در اینجا، ما یک دکمه بازی. 834 00:36:49,970 --> 00:36:51,877 و اگر ما بازی و یا ضربه از سر، که فقط 835 00:36:51,877 --> 00:36:53,710 رفتن را از طریق اجرا بقیه برنامه 836 00:36:53,710 --> 00:36:55,300 و یا تا زمانی که بازدید انفصال است. 837 00:36:55,300 --> 00:36:56,910 اما من در راه هر دیگر نیست نقاط شکست پس از آن فقط 838 00:36:56,910 --> 00:36:58,118 رفتن را از طریق پایان اجرا کنید. 839 00:36:58,118 --> 00:37:00,280 این نوع از شکست هدف از مجبور باشید. 840 00:37:00,280 --> 00:37:03,290 >> بنابراین به جای آن، من در مورد مراقبت این آیکون به سمت راست. 841 00:37:03,290 --> 00:37:05,360 و اگر من شناور بیش از آنها، که شما باید بیش از حد، 842 00:37:05,360 --> 00:37:07,450 شما کمی راهنمایی ابزار tips-- را ببینید. 843 00:37:07,450 --> 00:37:09,020 این یکی مرحله بیش از. 844 00:37:09,020 --> 00:37:11,290 در حال حاضر که جست و خیز نیست خط کد زیر را. 845 00:37:11,290 --> 00:37:14,840 فقط بدان معناست که آن را اجرا و حرکت به بعدی، حرکت به بعدی، 846 00:37:14,840 --> 00:37:15,580 حرکت به بعدی. 847 00:37:15,580 --> 00:37:17,610 به عبارت دیگر، از طریق آن دکمه، می توانید من راه رفتن 848 00:37:17,610 --> 00:37:20,390 از طریق من کد یک گام در یک زمان. 849 00:37:20,390 --> 00:37:21,914 خط به خط، به معنای واقعی کلمه. 850 00:37:21,914 --> 00:37:23,830 در حال حاضر، در سمت راست که یکی دیگر وجود دارد 851 00:37:23,830 --> 00:37:25,163 که ما در یک لحظه را ببینید. 852 00:37:25,163 --> 00:37:27,820 این به اصطلاح گام به آیکون که 853 00:37:27,820 --> 00:37:30,300 به من اجازه می دهد شیرجه به یک تابع دیگر. 854 00:37:30,300 --> 00:37:31,800 اما اجازه دهید این را در فقط یک لحظه. 855 00:37:31,800 --> 00:37:33,280 بنابراین من قصد دارم به کلیک مرحله بیش از. 856 00:37:33,280 --> 00:37:35,820 و در حال حاضر متوجه، به عنوان من کلیک کنید این دکمه در سمت راست بالا، 857 00:37:35,820 --> 00:37:41,260 حفظ چشم خود را تقریبا تحت محلی متغیرها و ببینید چه اتفاقی می افتد به x. 858 00:37:41,260 --> 00:37:44,115 X در حال حاضر 1 به این دلیل که خط زرد در حال حاضر اجرا 859 00:37:44,115 --> 00:37:45,840 و ما در به خط 8 نقل مکان کرد. 860 00:37:45,840 --> 00:37:49,840 و فقط در لحظه Y باید امیدوارم تبدیل 2. 861 00:37:49,840 --> 00:37:52,330 >> در حال حاضر، چیزی که جالب اتفاق می افتد برای یک بیت. 862 00:37:52,330 --> 00:37:53,390 همه این است که printf است. 863 00:37:53,390 --> 00:37:58,010 و متوجه، در ترمینال ثانویه من پنجره، من خروجی دف چاپ مراجعه کنید. 864 00:37:58,010 --> 00:38:01,080 و اکنون من را به یک تصمیم گیری به عنوان برنامه نویس. 865 00:38:01,080 --> 00:38:04,360 من می توانم بیش از این خط از گام کد، اجرای آن اما نه 866 00:38:04,360 --> 00:38:06,220 گرفتن کنجکاو در مورد آنچه در داخل. 867 00:38:06,220 --> 00:38:11,130 و یا من در واقع می توانید به آن گام و به داخل تعویض است. 868 00:38:11,130 --> 00:38:12,340 بنابراین اجازه دهید که دومی را انجام دهد. 869 00:38:12,340 --> 00:38:15,550 >> اجازه بدهید به جلو و کلیک مرحله بیش از نه اما گام به. 870 00:38:15,550 --> 00:38:17,300 توجه داشته باشید، همه ناگهانی تغییرات پنجره 871 00:38:17,300 --> 00:38:19,330 به برجسته برای اولین بار خط کد در تعویض. 872 00:38:19,330 --> 00:38:20,710 این خط 21 است. 873 00:38:20,710 --> 00:38:25,220 و در حال حاضر، چه نوع از بد بو است که، اگر شما نگاه کنید در اینجا، به عنوان انتظار می رود، 874 00:38:25,220 --> 00:38:29,720 یک کاما B 1 و 2 به ترتیب است. 875 00:38:29,720 --> 00:38:33,840 چرا دمای 32767 است؟ 876 00:38:33,840 --> 00:38:36,560 یادآوری این نکته که دما، بسیار شبیه به فنجان خالی یک لحظه پیش، 877 00:38:36,560 --> 00:38:38,980 است در اینجا در خط 21 را اعلام کرد. 878 00:38:38,980 --> 00:38:43,390 چرا 32،000- منظور من، به همین دلیل است آن را فقط به برخی از ارزش های عجیب و غریب؟ 879 00:38:43,390 --> 00:38:43,890 آره؟ 880 00:38:43,890 --> 00:38:45,190 >> رسید آن را مقداردهی اولیه نشده. 881 00:38:45,190 --> 00:38:46,940 >> DAVID J. مالان: این مقداردهی اولیه نشده است. 882 00:38:46,940 --> 00:38:49,370 بنابراین ما همیشه کامپیوتر دارای حافظه فیزیکی است. 883 00:38:49,370 --> 00:38:50,544 همیشه RAM فیزیکی است. 884 00:38:50,544 --> 00:38:52,710 و همیشه وجود دارد صفر و یکی در آن وجود دارد، درست است؟ 885 00:38:52,710 --> 00:38:54,626 از آنجا که ما با استفاده از ما کامپیوتر در تمام طول روز، 886 00:38:54,626 --> 00:38:57,210 شما با استفاده از CS50 IDE یا سرورها در تمام طول روز. 887 00:38:57,210 --> 00:39:01,159 به طوری که RAM هم تا به برخی از صفر و یا برخی از برخی صفر و آنهایی که یا. 888 00:39:01,159 --> 00:39:02,950 مهم نیست که آیا یا نه شما آنها را با استفاده. 889 00:39:02,950 --> 00:39:05,270 شما نمی توانید فقط خالی فضای که در آن شما می خواهید بیت است. 890 00:39:05,270 --> 00:39:06,850 آنها یا صفر و آنهایی که هستیم. 891 00:39:06,850 --> 00:39:09,610 >> پس از آن می رسد که دما، به دلیل ما آن را مقدار دهی اولیه به نشده است، 892 00:39:09,610 --> 00:39:14,580 ما باید کسانی که 32 بیت اما آنها نمی شده است به هر مقدار دهی اولیه شناخته شده. 893 00:39:14,580 --> 00:39:18,110 بنابراین هر آنچه که آنها بیشتر اخیرا for-- آن 32 bits-- استفاده 894 00:39:18,110 --> 00:39:23,000 ما فقط دیدن آثار مکشوفه از برخی استفاده قبلی از آن خاص 32 895 00:39:23,000 --> 00:39:23,500 بیت است. 896 00:39:23,500 --> 00:39:27,780 به محض این که من کلیک کنید قدم در طول هر چند، آه، از دما است رفتن به دریافت مقدار 1. 897 00:39:27,780 --> 00:39:31,600 و اگر من آن را دوباره، یک است رفتن مقدار 2 را به داده می شود 898 00:39:31,600 --> 00:39:33,830 و پس از آن ب است که به ارزش 1 داده می شود. 899 00:39:33,830 --> 00:39:36,390 >> و به این ترتیب چه خوب در حال حاضر در این نقطه در داستان 900 00:39:36,390 --> 00:39:39,750 این است که دیباگر است نشان دادن من، فوق العاده آرامی 901 00:39:39,750 --> 00:39:42,640 با سرعت خود من، چه وضعیت تعویض است. 902 00:39:42,640 --> 00:39:47,490 اما توجه کنید در بالای اینجا، توجه که پشته در واقع پاسخ 903 00:39:47,490 --> 00:39:49,180 دو لایه به آن است. 904 00:39:49,180 --> 00:39:53,240 در حال حاضر یکی که به عنوان برجسته تعویض، اگر من در اصلی به جای کلیک کنید، 905 00:39:53,240 --> 00:39:57,100 توجه کنید که چگونه تغییر متغیرهای محلی به دلیل توسعه میتوانید هاپ 906 00:39:57,100 --> 00:39:59,740 در اطراف و به هر دامنه های مختلف بروید. 907 00:39:59,740 --> 00:40:04,070 بنابراین حتی اگر ما در حال انجام همه این کار و به درستی مبادله A و B، 908 00:40:04,070 --> 00:40:09,080 اگر من به عقب و جلو بین تعویض که در آن یک 2 و b 1 و اصلی است، 909 00:40:09,080 --> 00:40:11,851 تا اصلی بوده است و در همه تحت تاثیر قرار؟ 910 00:40:11,851 --> 00:40:12,350 شماره 911 00:40:12,350 --> 00:40:13,930 پس چه غذای آماده در اینجا؟ 912 00:40:13,930 --> 00:40:18,200 خب، معلوم است که هر زمان شما یک تابع پاسخ مانند مبادله، 913 00:40:18,200 --> 00:40:21,600 و شما آرگومان آن، آنچه شما در حال عبور به تابع swap 914 00:40:21,600 --> 00:40:24,730 در این مورد یک کپی است آن بحثها. 915 00:40:24,730 --> 00:40:28,620 بنابراین اگر x و y هر ترتیب 32 بیت، آنچه تعویض است 916 00:40:28,620 --> 00:40:30,760 است محلی دو جدید متغیرها، و یا استدلال، 917 00:40:30,760 --> 00:40:34,380 نام و b-- ولی برای کسانی که خودسرانه names-- اما الگوی صفر 918 00:40:34,380 --> 00:40:39,520 و آنهایی که در داخل یک و b اندود شده تا می شود یکسان به x و y 919 00:40:39,520 --> 00:40:42,610 اما آنها نمی همان x و y. 920 00:40:42,610 --> 00:40:46,880 >> آن را به عنوان هر چند اصلی دارای در قطعه خود را از مقاله شماره 1 و 2 برای x و y، 921 00:40:46,880 --> 00:40:49,260 و پس از آن هنگامی که آن را دست که تکه کاغذ به مبادله، 922 00:40:49,260 --> 00:40:51,970 تعویض به سرعت می شود قلم خود، می نویسد پایین 923 00:40:51,970 --> 00:40:56,240 1 و 2 در برگه خود را از مقاله، دست عقب XY اصلی صفحه اصلی 924 00:40:56,240 --> 00:40:58,790 و سپس به خود چیزی که با A و B. 925 00:40:58,790 --> 00:41:01,940 و این است که اکنون به دلیل فوق العاده مهم این امر پیامدهای کوچک اما با اهمیت 926 00:41:01,940 --> 00:41:06,260 برای نوشتن کد صحیح در واقع به دلیل آن که به نظر می رسد ما نمی توانیم مبادله 927 00:41:06,260 --> 00:41:07,500 دو متغیر. 928 00:41:07,500 --> 00:41:09,150 >> من یک تابع swap درست نوشته شده است. 929 00:41:09,150 --> 00:41:12,770 ما آن را با لورن به عنوان اجرا کرده ام یک تابع مبادله درست در واقع، 930 00:41:12,770 --> 00:41:16,700 اما ظاهرا هیچ یک از این مسائل اگر شما می توانید در واقع نه 931 00:41:16,700 --> 00:41:19,530 مبادله دو مقدار به طور دائم. 932 00:41:19,530 --> 00:41:21,970 بنابراین ما نیاز به راه دیگری به واقع در این، 933 00:41:21,970 --> 00:41:24,472 و ما باید قادر به در واقع این مشکل را حل کند. 934 00:41:24,472 --> 00:41:27,180 و آن را تبدیل out-- و ما آمده به این تصویر خاص 935 00:41:27,180 --> 00:41:30,500 قبل از long-- این یکی از راه این است که شما ممکن است حافظه کامپیوتر شما را جلب کند. 936 00:41:30,500 --> 00:41:31,460 این فقط یک مستطیل است. 937 00:41:31,460 --> 00:41:32,960 شما می توانید آن هر قرعه کشی تعدادی از راه اما آن را 938 00:41:32,960 --> 00:41:35,740 راحت به آن جلب عنوان مستطیل به این دلیل. 939 00:41:35,740 --> 00:41:40,040 >> ما قصد داریم امروز برای شروع و فراتر از آن صحبت کردن در مورد پشته به اصطلاح. 940 00:41:40,040 --> 00:41:43,870 و پشته فقط یک تکه است از RAM-- یک تکه از حافظه 941 00:41:43,870 --> 00:41:47,100 که توابع دسترسی داشته باشند به زمانی که آنها نامیده می شود. 942 00:41:47,100 --> 00:41:49,800 و پس از آن می رسد که در پایین خیلی از این پشته 943 00:41:49,800 --> 00:41:53,590 است که در آن تمام متغیرهای محلی کننده ی اصلی و سازمان C و V ORG و تمام چیزهای که 944 00:41:53,590 --> 00:41:56,950 در حال رفتن به طور پیش فرض است. و اگر اصلی خواستار برخی از عملکرد های دیگر مانند تعویض، 945 00:41:56,950 --> 00:42:00,330 خب، تعویض است که به یکی دیگر از لایه ای از حافظه تا بالای آن است. 946 00:42:00,330 --> 00:42:04,490 >> و به این ترتیب فقط به شما یک گذرا سریع را عکس از این، اگر من بیش از here-- 947 00:42:04,490 --> 00:42:09,450 و اجازه دهید من این آینه بر روی سربار به عنوان well-- آنچه که واقعا من، 948 00:42:09,450 --> 00:42:12,100 اگر ما فقط در مورد مراقبت پایین این تصویر در حال حاضر، 949 00:42:12,100 --> 00:42:15,070 این است که وقتی یک برنامه اجرا شود و اصلی می شود نامیده می شود، 950 00:42:15,070 --> 00:42:18,330 اصلی داده شده است یک تکه از RAM در کامپیوتر من این است که 951 00:42:18,330 --> 00:42:20,060 در پایین این به اصطلاح پشته. 952 00:42:20,060 --> 00:42:22,143 و من قصد دارم به آن جلب عمدا به عنوان یک مربع است. 953 00:42:22,143 --> 00:42:24,540 بنابراین آن را مانند 32 بیت یا چهار بایت است. 954 00:42:24,540 --> 00:42:28,790 و اگر این تابع اصلی است متغیر به نام x را با مقدار 1 955 00:42:28,790 --> 00:42:32,626 و آن را تا یک متغیر به نام y با ارزش 2، که 956 00:42:32,626 --> 00:42:35,750 مانند گرفتن این بریدن از حافظه است که اصلی است که توسط عامل داده 957 00:42:35,750 --> 00:42:38,850 سیستم و تقسیم آن به طوری که اولین متغیر محلی در اینجا می رود، 958 00:42:38,850 --> 00:42:40,930 دوم در اینجا می رود، و این آن است. 959 00:42:40,930 --> 00:42:45,590 >> هنگامی که خواستار اصلی تعویض، تعویض می شود بریدن خود از حافظه 960 00:42:45,590 --> 00:42:48,280 که ما مثل این رسم از سیستم عامل، 961 00:42:48,280 --> 00:42:50,820 و آن را برای رفتن به آن متغیرهای خود محلی بر اساس 962 00:42:50,820 --> 00:42:53,825 در اجرای ما زودتر با متغیرهای محلی 963 00:42:53,825 --> 00:42:58,010 و B است که در ابتدا به دست آوردن ارزش 1 و 2. 964 00:42:58,010 --> 00:43:00,450 اما پس از آن، به محض کد تعویض اجرا، 965 00:43:00,450 --> 00:43:03,760 و لورن در واقع معاوضه OJ و شیر، چه اتفاقی می افتد؟ 966 00:43:03,760 --> 00:43:09,030 خوب، این 2 تبدیل شدن به یک 1، این 1 تبدیل شدن به یک 2، و، راه، 967 00:43:09,030 --> 00:43:13,360 یک متغیر موقت که در حال وجود دارد استفاده می شود که هم که در نهایت 968 00:43:13,360 --> 00:43:14,470 از بین می رود. 969 00:43:14,470 --> 00:43:16,720 اما مهم نیست چقدر کار شما انجام 970 00:43:16,720 --> 00:43:22,160 در این خط of-- در این فضای حافظه، x و y به طور کامل دست نخورده هستند. 971 00:43:22,160 --> 00:43:26,320 >> بنابراین ما نیاز به راه دادن تعویض و توابع مانند آن 972 00:43:26,320 --> 00:43:32,640 دسترسی مخفی، اگر شما خواهد شد، توابع like-- به حافظه مانند x و y. 973 00:43:32,640 --> 00:43:35,110 بنابراین اجازه دهید نگاهی به به عنوان مثال که کمک می کند تا 974 00:43:35,110 --> 00:43:38,220 ما را ببینید که دقیقا چه خبر است که این بار کل. 975 00:43:38,220 --> 00:43:40,284 من قصد دارم به جلو بروید و باز کردن صفر مقایسه. 976 00:43:40,284 --> 00:43:42,200 و من قصد دارم برای بستن دیباگر ما، من قصد دارم 977 00:43:42,200 --> 00:43:44,360 برای بستن این پیام به دنبال ترسناک فقط می گوید، یک دقیقه صبر کنید، 978 00:43:44,360 --> 00:43:45,800 شما در اشکال زدایی میانه است. 979 00:43:45,800 --> 00:43:48,383 من قصد دارم برای مخفی کردن این برگه در اینجا فقط برای رفتن به سادگی. 980 00:43:48,383 --> 00:43:50,160 پس نگران نباشید اگر GDB است کشته شده اند. 981 00:43:50,160 --> 00:43:53,910 این تنها بدان معنی است که این برنامه دارای ترک شده است، به عمد در این مورد، 982 00:43:53,910 --> 00:43:54,820 توسط من. 983 00:43:54,820 --> 00:43:57,700 >> و در حال حاضر مقایسه صفر این. 984 00:43:57,700 --> 00:44:00,110 من با استفاده از CS50 کتابخانه در استاندارد I / O. 985 00:44:00,110 --> 00:44:04,319 من یک تابع اصلی رو که برای اولین بار از می گوید، چیزی می گویند، و می شود یک رشته است. 986 00:44:04,319 --> 00:44:06,110 سپس آن را می گوید و دوباره می شود رشته دیگر. 987 00:44:06,110 --> 00:44:09,910 و توجه کنید که این دو رشته به نام s و t بود. 988 00:44:09,910 --> 00:44:12,910 و در حال حاضر این برنامه، مقایسه صفر، هدف خود را در زندگی، 989 00:44:12,910 --> 00:44:15,470 را که قرار است به من بگویید، من همان چیزی را تایپ کنید؟ 990 00:44:15,470 --> 00:44:16,910 و بنابراین من قصد برگشت به هفته است. 991 00:44:16,910 --> 00:44:19,950 من با استفاده از عملگر معادل من که اپراتور کیفیت است. 992 00:44:19,950 --> 00:44:22,220 نمی عملگر انتساب، عملگر است. 993 00:44:22,220 --> 00:44:23,890 من فقط مقایسه s و t. 994 00:44:23,890 --> 00:44:27,470 >> بنابراین اجازه دهید در واقع به جلو بروید و این کار را. 995 00:44:27,470 --> 00:44:32,680 و من قصد دارم به جلو بروید و مقایسه صفر. 996 00:44:32,680 --> 00:44:35,110 من قصد دارم به انجام ./comparezero. 997 00:44:35,110 --> 00:44:37,150 و من قصد دارم به پیش رو و می گویند چیزی 998 00:44:37,150 --> 00:44:43,450 مانند، اجازه دهید انجام مادر در کوچک و چگونه در مورد مادر در بزرگ. 999 00:44:43,450 --> 00:44:45,034 و البته من چیزهای مختلف را تایپ کنید. 1000 00:44:45,034 --> 00:44:45,533 خیلی خوب. 1001 00:44:45,533 --> 00:44:46,570 که انتظار می رود. 1002 00:44:46,570 --> 00:44:47,640 >> بیایید دوباره آن را اجرا کنید. 1003 00:44:47,640 --> 00:44:49,740 در هر دو بار انجام حروف کوچک، حروف کوچک. 1004 00:44:49,740 --> 00:44:51,490 به نظر می رسد که فوق العاده به من یکسان است. 1005 00:44:51,490 --> 00:44:52,930 داخل شدن. 1006 00:44:52,930 --> 00:44:53,430 باشه. 1007 00:44:53,430 --> 00:44:55,804 شاید به این دلیل عجیب و غریب فقط آن دستور زبان من دوست نمی شود. 1008 00:44:55,804 --> 00:44:59,930 بنابراین اجازه دهید یک MOM سرمایه، سرمایه MOM، یکسان است. 1009 00:44:59,930 --> 00:45:01,490 چیزهای مختلف. 1010 00:45:01,490 --> 00:45:03,907 >> بنابراین است که چرا؟ 1011 00:45:03,907 --> 00:45:06,240 خب، چه در واقع رفتن در زیر هود در اینجا؟ 1012 00:45:06,240 --> 00:45:08,180 بنابراین اجازه دهید تماس بیش از در اینجا برای فقط یک لحظه 1013 00:45:08,180 --> 00:45:10,910 و در نظر گرفتن آنچه از GetString است که در واقع انجام می دهند. 1014 00:45:10,910 --> 00:45:13,385 وقتی که شما از GetString پاسخ، که ما تابع 1015 00:45:13,385 --> 00:45:16,510 خودمان را نوشت و آن را به نحوی می شود دنباله ای از کاراکتر از کاربر. 1016 00:45:16,510 --> 00:45:20,280 و اجازه دهید فرض کنیم که اولین هم از GetString پاسخ، که به من می دهد 1017 00:45:20,280 --> 00:45:21,930 یک تکه از حافظه که شبیه به این. 1018 00:45:21,930 --> 00:45:26,990 و اگر من در تمام حروف کوچک تایپ M-O-m-- و چه بعد از آن می رود؟ 1019 00:45:26,990 --> 00:45:28,840 فقط یک بررسی سلامت عقل سریع است. 1020 00:45:28,840 --> 00:45:29,780 >> صفر بک اسلش. 1021 00:45:29,780 --> 00:45:30,510 ما آن را میدانیم. 1022 00:45:30,510 --> 00:45:32,784 به یاد بیاورید که ما بازی در اطراف با نام Zamila است 1023 00:45:32,784 --> 00:45:34,950 و یک دسته از نام های دیگر وقتی راب اینجا دنبال شد 1024 00:45:34,950 --> 00:45:36,280 در چه خبر است در داخل از حافظه است. 1025 00:45:36,280 --> 00:45:37,780 به طوری که داستان دقیقا همان است. 1026 00:45:37,780 --> 00:45:40,160 این چیزی است که از GetString به من باز می گردد. 1027 00:45:40,160 --> 00:45:44,780 در حال حاضر، کد من یک لحظه پیش ذخیره شده مقدار بازگشتی از getstring 1028 00:45:44,780 --> 00:45:47,510 در یک متغیر به نام های. 1029 00:45:47,510 --> 00:45:51,390 و پس از آن بار دوم من آن را به نام، آن را در یک متغیر به نام T ذخیره می شود. 1030 00:45:51,390 --> 00:45:55,070 >> بنابراین اگر من در اینجا، من نیاز به رسم این variable-- محلی 1031 00:45:55,070 --> 00:45:59,610 و من به طور کلی رفتن به قرعه کشی یک رشته را به عنوان just-- خواهیم 1032 00:45:59,610 --> 00:46:02,360 آن را به عنوان s-- یک مربع کوچک در اینجا. 1033 00:46:02,360 --> 00:46:09,760 و در حال حاضر، somehow-- چگونه مادر در داخل این متغیر رفت؟ 1034 00:46:09,760 --> 00:46:12,010 خب، ما نیاز به بازگشت اصول اولین بار در اینجا. 1035 00:46:12,010 --> 00:46:15,660 آنچه که از GetString در واقع بازگشت؟ 1036 00:46:15,660 --> 00:46:19,030 >> پس از آن معلوم است که M-O-M بک اسلش صفر، و هر تعداد 1037 00:46:19,030 --> 00:46:22,364 از رشته های دیگر در حافظه مانند Zamila و راب و یا اندی یا هر نوع دیگر، 1038 00:46:22,364 --> 00:46:24,280 البته در ما رم کامپیوتر یا حافظه است. 1039 00:46:24,280 --> 00:46:27,760 و RAM خود را تا like-- شما یک گیگابایت رم، دو گیگابایت رم، 1040 00:46:27,760 --> 00:46:30,860 و یا یک میلیارد یا دو میلیارد بایت یا شاید حتی بیشتر این روز است. 1041 00:46:30,860 --> 00:46:34,070 بنابراین اجازه دهید فرض، برای مقاصد امروز، که مهم نیست که چگونه تعداد ما 1042 00:46:34,070 --> 00:46:36,640 آنها، اما ما می توانیم هر تعداد از آن دو میلیارد میلیارد یا 1043 00:46:36,640 --> 00:46:37,880 یا چهار میلیارد بایت. 1044 00:46:37,880 --> 00:46:42,240 >> و اجازه دهید فقط می گویند که خودسرانه این گزش اول، نیش دوم است، 1045 00:46:42,240 --> 00:46:43,380 سوم، چهارم. 1046 00:46:43,380 --> 00:46:46,570 من به عمد با استفاده از صفر برای امروز اما ما به آن می آمده است. 1047 00:46:46,570 --> 00:46:49,570 به عبارت دیگر، اگر این است که اولین بار من با استفاده از این برنامه، 1048 00:46:49,570 --> 00:46:52,715 من فقط گرفتن خوش شانس و اولین نیش است در یک محل و سپس دو 1049 00:46:52,715 --> 00:46:53,590 پس از آن سه از چهار. 1050 00:46:53,590 --> 00:46:57,430 و اگر من نگه داشته نقاشی، تعداد جعبه دو میلیارد می شود راه را در اینجا. 1051 00:46:57,430 --> 00:47:02,200 >> بنابراین چه چیزی شما فکر می کنم، پس از آن، از GetString در واقع می گرداند؟ 1052 00:47:02,200 --> 00:47:06,010 این بازگشت M-O-M بک اسلش نیست صفر در هر سه دلیل که به وضوح 1053 00:47:06,010 --> 00:47:08,180 نمی خواهد جا را در کادر که من کشیده ام. 1054 00:47:08,180 --> 00:47:11,210 پس چه چیز دیگری ممکن است در واقع از GetString شد بازگشت همه این هفته؟ 1055 00:47:11,210 --> 00:47:14,410 1056 00:47:14,410 --> 00:47:16,820 پاسخ در است هیئت مدیره در اینجا جایی. 1057 00:47:16,820 --> 00:47:20,390 شما می توانید متناسب نیست M-O-M بک اسلش صفر، پس چه ممکن است احساس به جای آن؟ 1058 00:47:20,390 --> 00:47:23,424 اگر شما تا به حال به فوق العاده باهوش، قرار دادن در به اصطلاح کلاه مهندسی، 1059 00:47:23,424 --> 00:47:24,340 چه چیزی می تواند به شما بازگشت؟ 1060 00:47:24,340 --> 00:47:27,340 کمترین میزان اطلاعات چیست شما هنوز هم می تواند بازگشت که می 1061 00:47:27,340 --> 00:47:30,610 شما اجازه پیدا کردن M-O-M در حافظه؟ 1062 00:47:30,610 --> 00:47:31,270 آره؟ 1063 00:47:31,270 --> 00:47:31,950 >> مخاطبان: یک. 1064 00:47:31,950 --> 00:47:32,200 >> DAVID J. مالان: یک. 1065 00:47:32,200 --> 00:47:33,021 و به همین دلیل یکی؟ 1066 00:47:33,021 --> 00:47:35,520 رسید آنجا که این امر به شما که در آن به [نامفهوم]. 1067 00:47:35,520 --> 00:47:38,391 1068 00:47:38,391 --> 00:47:39,390 DAVID J. مالان: دقیقا. 1069 00:47:39,390 --> 00:47:44,300 من فقط رفتن برای بازگشت به آدرس رشته که من کرده اند. 1070 00:47:44,300 --> 00:47:46,570 آدرس در این مورد محل است. 1071 00:47:46,570 --> 00:47:51,280 بنابراین آنچه که واقعا است که در s-- ذخیره شده و هر متغیر رشته در نتیجه far-- 1072 00:47:51,280 --> 00:47:53,430 به تازگی شده آدرس که رشته است. 1073 00:47:53,430 --> 00:47:57,840 >> در همین حال، اگر پاسخ من GetString یک بار دوم و من 1074 00:47:57,840 --> 00:48:03,300 تایپ به معنای واقعی کلمه قضیه اینه همان M-O-M با lowercase-- M-O-M 1075 00:48:03,300 --> 00:48:06,200 و یکی دیگر از بک اسلش صفر، و در حال حاضر شاید برنامه من 1076 00:48:06,200 --> 00:48:09,820 در حال اجرا برای برخی از زمان تا شاید این 10، این مکان 11 است، این 12، 1077 00:48:09,820 --> 00:48:10,700 این 13 است. 1078 00:48:10,700 --> 00:48:13,590 کامپیوتر با استفاده از برخی دیگر حافظه به هر دلیلی. 1079 00:48:13,590 --> 00:48:18,172 چه در حال حاضر در دوم من می رود متغیر در برنامه تی من؟ 1080 00:48:18,172 --> 00:48:19,390 10. 1081 00:48:19,390 --> 00:48:20,050 دقیقا. 1082 00:48:20,050 --> 00:48:23,910 >> و تا زمانی که ما در نگاه کد منبع از این برنامه 1083 00:48:23,910 --> 00:48:26,550 که در آن من به سادگی در تلاش برای مقایسه دو مقدار، 1084 00:48:26,550 --> 00:48:32,180 است معادل دو برابر به T، چه پاسخ واضح انسان است؟ 1085 00:48:32,180 --> 00:48:34,890 فقط هیچ دلیل 1 برابر 10 است. 1086 00:48:34,890 --> 00:48:36,861 و به این ترتیب در اینجا نهفته است فرصتی برای ما واقعا 1087 00:48:36,861 --> 00:48:39,610 فقط به، دوباره، برای اولین بار اصول و فکر می کنم در مورد، خوب، 1088 00:48:39,610 --> 00:48:41,110 آنچه که در زیر هود؟ 1089 00:48:41,110 --> 00:48:43,240 ما شده ایم صحبت کردن در مورد بیت و بایت و حافظه، 1090 00:48:43,240 --> 00:48:46,820 اما در واقع مفید برای درک زیرا هنگامی که شما از GetString پاسخ، 1091 00:48:46,820 --> 00:48:50,280 حتی اگر ما از فکر می کنم آن است بازگشت M-O-M یا مادر رشته 1092 00:48:50,280 --> 00:48:53,120 و یا اندی و یا Zamila یا مانند آن، از لحاظ فنی 1093 00:48:53,120 --> 00:48:55,510 آن را فقط از بازگشت آدرس که تکه از حافظه است. 1094 00:48:55,510 --> 00:48:56,910 >> اما این خوب است. 1095 00:48:56,910 --> 00:49:00,570 از آنجا که چگونه من می دانم که در آن رشته به پایان می رسد؟ 1096 00:49:00,570 --> 00:49:03,840 اگر من تنها با توجه به آغاز؟ 1097 00:49:03,840 --> 00:49:05,380 خوب، بک اسلش صفر، درست است؟ 1098 00:49:05,380 --> 00:49:08,800 فقط در زمان خطی من می توانم چاپ با دف ​​چاپ M-O-M. 1099 00:49:08,800 --> 00:49:11,820 و به زودی به عنوان بک اسلش ببینید صفر، برای من مهم نیست که در آن شروع کردم، 1100 00:49:11,820 --> 00:49:14,950 من در حال حاضر به طور ضمنی مطمئن شوید که در آن من باید برای پایان دادن. 1101 00:49:14,950 --> 00:49:18,700 >> و به این ترتیب امروز نشانه beginning-- و اجازه دهید من این کار را انجام طور چشمگیری چون ما 1102 00:49:18,700 --> 00:49:21,800 از طریق بسیاری از مشکلات رفت دریافت این آموزش در اینجا wheels-- 1103 00:49:21,800 --> 00:49:29,840 بنابراین، امروز چرخ شروع به آموزش به می آیند و ما در آشکار least-- 1104 00:49:29,840 --> 00:49:31,373 >> [تشویق حضار] 1105 00:49:31,373 --> 00:49:33,220 1106 00:49:33,220 --> 00:49:36,160 >> که به خوبی ارزش سفر به هدف این، بله؟ 1107 00:49:36,160 --> 00:49:39,600 بنابراین now-- وجود دارد، آن را تبدیل به ، هیچ چیزی به عنوان رشته. 1108 00:49:39,600 --> 00:49:41,140 رشته وجود ندارد. 1109 00:49:41,140 --> 00:49:43,760 آن را مترادف که ما تا به حال است داخل کتابخانه CS50. 1110 00:49:43,760 --> 00:49:48,660 پس، ما در حال رفتن به شروع به تلفن s و t نیست اما رشته ستاره کاراکتر. 1111 00:49:48,660 --> 00:49:51,180 و ستاره کاراکتر خواهیم کسی را دست انداختن از هم جدا قبل از اینکه طولانی. 1112 00:49:51,180 --> 00:49:53,510 اما این است که می گویند، که حتی اگر ما همچنان 1113 00:49:53,510 --> 00:49:56,180 با استفاده از از GetString در حال حاضر، از لحاظ فنی من باید 1114 00:49:56,180 --> 00:49:59,010 می شود گفت ستاره کاراکتر و ستاره کاراکتر. 1115 00:49:59,010 --> 00:50:01,720 >> و معلوم است که آنچه که ستاره است که به معنی چیزی است 1116 00:50:01,720 --> 00:50:04,340 به نام یک اشاره گر و یا یک آدرس. 1117 00:50:04,340 --> 00:50:06,110 و در واقع، یک تیزر برای آنچه در پیش روست 1118 00:50:06,110 --> 00:50:09,760 این کلیپ 20 ثانیه ای از ما است دوست نیک Parlante در دانشگاه استنفورد 1119 00:50:09,760 --> 00:50:12,927 که، کاملا چند وقت پیش، صرف یک مقدار مسخره از زمان، 1120 00:50:12,927 --> 00:50:15,010 به عنوان بهترین من می تواند در به خود آشپزخانه و یا زیرزمین خانه او، 1121 00:50:15,010 --> 00:50:17,140 ساخت تولید انیمیشن خمیری معرفی به جهان 1122 00:50:17,140 --> 00:50:20,010 یک شخصیت به نام Binky که ما با آنها خواهد شد 1123 00:50:20,010 --> 00:50:22,010 به اشاره گر معرفی زمان آینده. 1124 00:50:22,010 --> 00:50:24,588 بنابراین در اینجا یک پیش نمایش از چه چیزی آمده است. 1125 00:50:24,588 --> 00:50:26,370 >> [پخش ویدئو] 1126 00:50:26,370 --> 00:50:27,510 >> -Hey، Binky. 1127 00:50:27,510 --> 00:50:28,260 بیدار شو. 1128 00:50:28,260 --> 00:50:30,672 این زمان برای اشاره گر سرگرم کننده است. 1129 00:50:30,672 --> 00:50:31,616 >> -آن چیست؟ 1130 00:50:31,616 --> 00:50:33,032 اطلاعات در مورد اشاره گر؟ 1131 00:50:33,032 --> 00:50:34,450 اوه، مغز گردو و غیره. 1132 00:50:34,450 --> 00:50:35,431 >> [END پخش] 1133 00:50:35,431 --> 00:50:38,055 DAVID J. مالان: و در آن توجه داشته باشید، ما شما را در روز چهارشنبه را ببینید. 1134 00:50:38,055 --> 00:50:47,590 1135 00:50:47,590 --> 00:50:48,090 خیلی خوب. 1136 00:50:48,090 --> 00:50:48,740 که رقص؟ 1137 00:50:48,740 --> 00:50:49,240 بجنب. 1138 00:50:49,240 --> 00:50:50,330 که رقص؟ 1139 00:50:50,330 --> 00:50:51,820 شما می خواهید من به آن آغاز شده است؟ 1140 00:50:51,820 --> 00:50:53,770 من آن آغاز شده است. 1141 00:50:53,770 --> 00:50:54,270 Woooo! 1142 00:50:54,270 --> 00:51:04,070 1143 00:51:04,070 --> 00:51:07,580 >> لورن: فانتزی شیرین موسی.