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