1 00:00:00,000 --> 00:00:02,670 [Powered by Google Translate] مشکل در بخش مجموعه 2: نرم افزار هکر 2 00:00:02,670 --> 00:00:04,910 راب Bowden، دانشگاه هاروارد 3 00:00:04,910 --> 00:00:07,410 این CS50 است. CS50.TV 4 00:00:07,410 --> 00:00:15,770 بنابراین، من راب. من ارشد در Kirkland. این سومین سال من TFing CS50 است. 5 00:00:15,770 --> 00:00:22,220 این اولین بار است که از بخش سخنرانی به سبک سنتی ما در حال تغییر است، 6 00:00:22,220 --> 00:00:25,610 که در آن ما فقط به بررسی نوع آنچه اتفاق افتاده است در سخنرانی و پس از آن شما بچه ها سوال بپرسید، 7 00:00:25,610 --> 00:00:32,250 در حال حاضر به بودن خیلی بیشتر بر اساس حل مسأله، که در آن ما با استفاده از فضاهای، و - 8 00:00:32,250 --> 00:00:37,410 آه، پس این ایده است که برای رفتن به این لینک من به شما فرستاده شده و سپس شما در فضا خواهد بود. 9 00:00:37,410 --> 00:00:42,410 آیا کسی لپ تاپ داشته باشند؟ باشه. 10 00:00:42,410 --> 00:00:47,050 بنابراین ما قصد داریم با استفاده از این، و ما در حال رفتن به انجام این کار مشکلات در بخش زندگی می کنند 11 00:00:47,050 --> 00:00:50,740 و بحث در مورد آنها و بدانند چه چیزی اشتباه است 12 00:00:50,740 --> 00:00:56,390 و من ممکن است بکشید تا برخی از کد خود را، و من ممکن است ایده های خود را به بحث در مورد. 13 00:00:56,390 --> 00:01:02,140 بنابراین هر کسی به سختی؟ 14 00:01:02,140 --> 00:01:07,000 شما می توانید در سمت چت، من نمی دانم اگر ما به دلیل آن است. 15 00:01:07,000 --> 00:01:12,270 در حال حاضر، مانند supersection قبلی، اگر شما در آن کلاس، شما می دانید آنچه را که در مورد. 16 00:01:12,270 --> 00:01:19,200 در همه مجموعه P رفتن به این بخش وجود دارد. 17 00:01:19,200 --> 00:01:22,550 پس P-مجموعه 2، مشخصات، من حدس می زنم که شما آن را بر روی P-مجموعه 1 دیدم. 18 00:01:22,550 --> 00:01:27,400 اما ما می توانیم در P-مجموعه 2 برای آنچه که ما در حال رفتن به رفتن بیش از امروز نگاه کنید. 19 00:01:27,400 --> 00:01:29,460 و شما به یک بخش از سوالات را ببینید. 20 00:01:29,460 --> 00:01:37,530 بنابراین این کار در همه P-مجموعه خواهید بود یک بخش از سوالات وجود دارد. 21 00:01:37,530 --> 00:01:41,340 تا کنون کرده ایم، گفت: "این یک فرصت برای تمرین." 22 00:01:41,340 --> 00:01:44,940 شما خواسته نخواهد شد به ارائه این برنامه است. 23 00:01:44,940 --> 00:01:48,480 ایده این است که این به نوعی به شما کمک کند با مجموعه مشکل آغاز شده قرار است. 24 00:01:48,480 --> 00:01:53,220 من در نسخه هکر حدس می زنم، که بسیاری از آنها قرار است فقط به چیزهای جالب و جدید، برای یادگیری است. 25 00:01:53,220 --> 00:01:58,590 آنها ممکن است به طور مستقیم به مجموعه ای مشکل است. 26 00:01:58,590 --> 00:02:01,810 و در حال حاضر ما با داشتن آنها را ارائه کنید، اما در تئوری، 27 00:02:01,810 --> 00:02:07,480 برای مجموعه مشکل بعد از آن، شما ممکن است آنها، ارائه و به این ترتیب شما هم می توانید به بخش 28 00:02:07,480 --> 00:02:10,380 و یا تماشای بخش برای دریافت پاسخ، یا شما فقط می توانید آنها را در را آن گونه که مایلید تغییر دهید 29 00:02:10,380 --> 00:02:16,350 اگر شما با بهره گیری از حضور من احساس نمی کنند. 30 00:02:16,350 --> 00:02:21,010 بنابراین - من فکر می کنم این است که یکی از اولین. 31 00:02:21,010 --> 00:02:29,280 آه. همچنین، در این بخش از سوالات ما نیز سوالی در مورد شورت از شما بپرسم. 32 00:02:29,280 --> 00:02:33,440 بنابراین من حدس می زنم، در تئوری، شما قرار است به تماشای این قبل از آمدن به بخش، 33 00:02:33,440 --> 00:02:38,550 اما خوب اگر اینکار را نکنید، ما را بیش از آنها را به هر حال. 34 00:02:38,550 --> 00:02:42,590 بنابراین ما می توانیم با این شروع: "چگونه یک حلقه در حالی که از یک حلقه DO-در حالی که تفاوت؟ 35 00:02:42,590 --> 00:02:46,210 هنگامی که دومی به خصوص مفید است؟ " 36 00:02:46,210 --> 00:02:49,390 بنابراین هر کسی هر گونه -؟ 37 00:02:49,390 --> 00:02:52,730 [دانشجو] آیا در حالی که حلقه همیشه حداقل یک بار اجرا خواهد شد. 38 00:02:52,730 --> 00:03:02,950 بله. به طوری که تفاوت. در حالی که حلقه - I'll آن را فقط در اینجا - در حالی که حلقه، در حال حاضر شرایط 39 00:03:02,950 --> 00:03:19,760 در اینجا، در حالی که یک DO-در حالی که، شما شرط نیست تا زمانی که ما را در اینجا. 40 00:03:19,760 --> 00:03:24,130 و به این ترتیب، هنگامی که برنامه های خود را اجرا و آن را به حلقه در حالی که می شود، 41 00:03:24,130 --> 00:03:26,380 آن را بلافاصله را چک می کند اگر این شرط درست است. 42 00:03:26,380 --> 00:03:30,710 در صورتی که شرط درست است، آن را فقط خواهد شد بیش از جست و خیز حلقه به طور کامل. 43 00:03:30,710 --> 00:03:34,390 آیا در حالی که حلقه ها، به عنوان برنامه های در حال اجرا، آن را می شود به "انجام". 44 00:03:34,390 --> 00:03:37,920 چیزی اتفاق می افتد در این مرحله، فقط به اجرا ادامه می دهد. 45 00:03:37,920 --> 00:03:42,690 سپس زمانی که آن را بازدید "در حالی که" اگر شرط درست باشد، آن را حلقه و پشت دوباره این کار را انجام 46 00:03:42,690 --> 00:03:46,730 و دوباره و دوباره تا زمانی که شرط درست است و فقط پس از آن می افتد از طریق نیست. 47 00:03:46,730 --> 00:03:50,600 بنابراین، تفاوت بودن، که این حق را می توانید جست و خیز از آغاز. 48 00:03:50,600 --> 00:03:56,770 این لزوما یک بار اجرا و پس از آن ممکن است بار بیشتری را در صورتی که وضعیت هنوز هم درست اجرا. 49 00:03:56,770 --> 00:04:03,720 بنابراین حلقه در حالی که تنها یک بار آن را انجام دهید، و یا - حلقه while - ما ممکن است نیاز به آن را در همه کار، 50 00:04:03,720 --> 00:04:07,900 از به محض این که ما به آن را دریافت کند، در صورتی که شرط نادرست است، ما فقط حق را بیش از آن صرف نظر کنید. 51 00:04:07,900 --> 00:04:11,770 در حالی که انجام این کار در حالی که حلقه، آن را یک بار اجرا، لزوما. 52 00:04:11,770 --> 00:04:14,560 سپس، هنگامی که ما به این وضعیت، ما بررسی اگر آن را درست یا نادرست است. 53 00:04:14,560 --> 00:04:19,790 اگر این درست است، ما آن را دوباره انجام دهد، اگر آن را نادرست، ما فقط می خواهید ادامه رفتن. 54 00:04:19,790 --> 00:04:24,680 بنابراین، هنگامی که دومی به خصوص مفید است؟ 55 00:04:24,680 --> 00:04:31,190 بنابراین من می توانم که در کل از 4 سال، 3 سال، هر آنچه که می گویند، 56 00:04:31,190 --> 00:04:38,780 که من برنامه ریزی شده است، من با استفاده از این، مثل، کمتر از 10 بار است. 57 00:04:38,780 --> 00:04:43,140 و احتمالا 5 از آنها در CS50 زمانی که ما انجام دهند در حالی که حلقه. 58 00:04:43,140 --> 00:04:47,510 بنابراین، هنگامی که شما استفاده می شود را انجام دهند در حالی که حلقه؟ 59 00:04:47,510 --> 00:04:49,510 وقتی که - آره؟ 60 00:04:49,510 --> 00:04:53,180 [دانشجو] هنگامی که شما در حال تلاش برای گرفتن ورودی کاربر، و یا چیزی است که شما می خواهید برای بررسی - 61 00:04:53,180 --> 00:04:59,700 آره. بنابراین انجام دهند در حالی که حلقه ها، ورودی کاربر است که یکی از بزرگ. 62 00:04:59,700 --> 00:05:03,160 به همین دلیل است که زن و شوهر مشکل اول این مجموعه، هنگامی که شما می خواهید به درخواست کاربر، مانند، 63 00:05:03,160 --> 00:05:08,520 "یک رشته به من بدهید،" شما نمی تواند ادامه دهد تا زمانی که شما به این رشته است. 64 00:05:08,520 --> 00:05:12,980 و بنابراین شما لزوما نیاز برای رشته حداقل یک بار بپرسید. 65 00:05:12,980 --> 00:05:16,950 اما اگر پاسخ آنها چیزی بد، و سپس شما نیاز به حلقه به عقب و دوباره می پرسم. 66 00:05:16,950 --> 00:05:20,810 اما به غیر از ورودی کاربر، آن را بسیار نادر است که در مورد من روبرو می شوند 67 00:05:20,810 --> 00:05:27,170 جایی که من می خواهم به حلقه حداقل یک بار "اما احتمالا بیشتر است. 68 00:05:27,170 --> 00:05:33,370 سوال یا -؟ تا به هر کسی DO-در حالی که حلقه هر جای دیگر استفاده می شود؟ 69 00:05:33,370 --> 00:05:36,780 باشه. بنابراین یک بعدی است، "چه چیزی اعلام نشده شناسه 70 00:05:36,780 --> 00:05:43,310 معمولا نشان می دهد در صورتی که خروجی صدای جرنگ جرنگ؟ " 71 00:05:43,310 --> 00:05:47,380 پس چه نوع کد نوشتن به شناسه اعلام نشده؟ 72 00:05:47,380 --> 00:05:49,550 [دانشجو] که x = 2؟ 73 00:05:49,550 --> 00:05:52,650 بنابراین ما فقط می توانید آن را امتحان کنید در اینجا، x ​​= 2 است. 74 00:05:52,650 --> 00:06:04,830 ما این اجرا - آه، من آن را کلیک کنید. بنابراین در اینجا ما - همه حق است. 75 00:06:04,830 --> 00:06:07,100 "استفاده از X شناسه اعلام نشده است." 76 00:06:07,100 --> 00:06:11,610 به طوری که شناسه اعلام نشده، یک متغیر است. 77 00:06:11,610 --> 00:06:13,910 اغلب یک متغیر شناسه تماس بگیرید. 78 00:06:13,910 --> 00:06:17,300 پس از آن نه ممکن می دانم که این در واقع یک متغیر، آن را نمی داند آنچه در آن است. 79 00:06:17,300 --> 00:06:19,380 پس از آن شناسه است. 80 00:06:19,380 --> 00:06:26,060 پس چرا آن را اعلام نشده؟ آره. 81 00:06:26,060 --> 00:06:32,190 بنابراین برای روشن در اصطلاحات، تعریف یک متغیر 82 00:06:32,190 --> 00:06:37,360 زمانی که به شما می گویند "X هوشمند،" و یا "Y رشته،" هر چیزی. 83 00:06:37,360 --> 00:06:41,910 مقدار دهی اولیه متغیر یا انتساب متغیر، 84 00:06:41,910 --> 00:06:44,510 هر زمان که به شما می گویند "x = 2 است." 85 00:06:44,510 --> 00:06:52,950 بنابراین ما می توانیم این کار را در مراحل جداگانه انجام دهد، از نوع int x، x = 2، و تا - ما می توانیم یک دسته از مسائل در اینجا - 86 00:06:52,950 --> 00:07:00,350 اما تا زمانی که این خط رخ می دهد، x است که هنوز آماده سازی نشده، اما اعلام شده است. 87 00:07:00,350 --> 00:07:06,760 و بنابراین ما به وضوح می توانید آن را در 1 خط، و در حال حاضر ما در حال اعلام کرد و مقدار دهی اولیه. 88 00:07:06,760 --> 00:07:10,730 پرسش و پاسخ؟ 89 00:07:10,730 --> 00:07:18,390 و در نهایت، "چرا صفر سزار خیلی امن نیست؟" 90 00:07:18,390 --> 00:07:23,830 پس اول، آیا هر کسی می خواهم بگویم آنچه صفر سزار؟ 91 00:07:23,830 --> 00:07:28,100 [دانشجو] سزار صفر فقط این است که شما نقشه، شما تغییر هر نامه، 92 00:07:28,100 --> 00:07:34,420 تعداد خاصی از نامه ها، و حرکت به عقب در طول، و آن را بسیار امن نیست چرا که 93 00:07:34,420 --> 00:07:42,260 تنها 26 گزینه های ممکن وجود دارد و شما فقط باید سعی کنید هر 1، از کسانی که تا زمانی که شما آن را دریافت کنید. 94 00:07:42,260 --> 00:07:45,470 آه. بنابراین، من باید تکرار؟ 95 00:07:45,470 --> 00:07:51,600 رمز سزار، it's - منظورم این است، شما چگونه بر مشکلاتی که شما با آن - 96 00:07:51,600 --> 00:07:56,110 من حدس می زنم نسخه استاندارد مجموعه مشکل که در نسخه هکر نیست. 97 00:07:56,110 --> 00:08:01,550 بنابراین در نسخه استاندارد به مجموعه مشکل، شما می توانید یک پیام مثل، "سلام جهان" 98 00:08:01,550 --> 00:08:08,410 و همچنین شما می توانید یک شماره مانند 6، و شما را که این پیام، و هر یک از شخصیت فردی، 99 00:08:08,410 --> 00:08:11,310 شما 6 موقعیت خود را در الفبای آن را بچرخانید. 100 00:08:11,310 --> 00:08:16,560 بنابراین 'H' در خوش آمدید می تواند تبدیل به H-I-J-K-L-M-N. 101 00:08:16,560 --> 00:08:19,600 بنابراین حرف اول خواهد بود N. ما همین کار را با E است. 102 00:08:19,600 --> 00:08:23,530 اگر ما، مانند، Z و یا چیزی، و سپس ما بپیچید بازگشت به اطراف به "یک. 103 00:08:23,530 --> 00:08:29,280 اما هر یک از شخصیت می شود چرخهی 6 حرف بعد از آن در الفبا، و آن را بسیار امن نیست 104 00:08:29,280 --> 00:08:35,440 از آنجا که تنها 26 احتمالات را برای چگونه بسیاری از راه های شما می تواند یک نامه ساده بسته بندی وجود دارد. 105 00:08:35,440 --> 00:08:42,919 بنابراین شما می توانید تمام 26 از آنها را کنید و سعی کنید، احتمالا، برای یک پیام به اندازه کافی بلند است، 106 00:08:42,919 --> 00:08:46,860 تنها 1، از کسانی که 26 همه چیز امکان پذیر است برای رفتن به خوانا، 107 00:08:46,860 --> 00:08:50,300 و خوانا است برای رفتن به پیام اصلی است. 108 00:08:50,300 --> 00:08:56,240 پس از آن یک راه بسیار خوبی برای رمزنگاری هر چیزی در همه نیست. 109 00:08:56,240 --> 00:08:59,070 ربطی به کسانی که شلوار کوتاه، "یک تابع چیست؟" 110 00:08:59,070 --> 00:09:03,370 پس چه شده است یک تابع است؟ بله. 111 00:09:03,370 --> 00:09:11,640 [دانشجو] آن را مانند یک قطعه جداگانه ای از کد که شما می توانید تماس را از طریق رفتن و سپس مقدار بازگشتی از هر. 112 00:09:11,640 --> 00:09:18,160 آره. تکرار است و یا به هم فقط پاسخ به یک بعدی - پس من آن را با پاسخ دادن به آینده پاسخ دهد. 113 00:09:18,160 --> 00:09:22,410 شما می توانید توابع به جای استفاده از فقط کپی و چسباندن کد بیش و بیش از دوباره. 114 00:09:22,410 --> 00:09:27,200 درست است که کد را آن را به fuction، و سپس شما فقط می تواند فراخوانی تابع 115 00:09:27,200 --> 00:09:29,870 هر کجا که شما کپی و چسباندن. 116 00:09:29,870 --> 00:09:33,350 بنابراین توابع مفید است. 117 00:09:33,350 --> 00:09:35,860 بنابراین در حال حاضر ما مشکلات واقعی انجام دهد. 118 00:09:35,860 --> 00:09:46,490 یکی از اولین. بنابراین این ایده یکی از اولین است، شما آن را یک رشته منتقل می کند، و بدون در نظر گرفتن از - 119 00:09:46,490 --> 00:09:52,060 یا اینکه می گویند تمام حروف کوچک؟ این کار تمام حروف کوچک می گویند نیست. 120 00:09:52,060 --> 00:09:57,730 پس این پیام می تواند هر چیزی باشد، و - اوه نه. این هم اینکار را در مورد شما نمی کنند. 121 00:09:57,730 --> 00:10:01,610 برای سادگی، می توانید فرض کنید که کاربر تنها ورودی حروف کوچک و فضاهای. " 122 00:10:01,610 --> 00:10:08,180 بنابراین ما آن را یک پیام فقط با حروف کوچک منتقل می کند و پس از آن ما به طور متناوب 123 00:10:08,180 --> 00:10:15,450 بین سرمایه و کوچک - تغییر رشته به سرمایه و کوچک، متناوب است. 124 00:10:15,450 --> 00:10:22,920 بنابراین قبل از اینکه ما به شما دوم حتی به مشکل شیرجه رفتن را، 125 00:10:22,920 --> 00:10:32,420 اولین چیزی که ما باید انجام دهیم؟ 126 00:10:32,420 --> 00:10:36,900 اوه، چه من فقط با کلیک بر روی؟ آه، من فقط بر روی یک ایمیل اینجا کلیک. 127 00:10:36,900 --> 00:10:42,870 بنابراین اولین چیزی که ما باید انجام دهیم - من به دنبال یک اشتباه؟ 128 00:10:42,870 --> 00:10:49,320 آیا این بخشی از این یکی است؟ 129 00:10:49,320 --> 00:10:51,320 نه، کسانی که هنوز هم در آن وجود دارد، هر چند. 130 00:10:51,320 --> 00:10:55,160 خوب، هنوز هم در اینجا. 131 00:10:55,160 --> 00:11:03,160 در حال حاضر ما نمی توانیم فرض کنیم -؟ بله. در اینجا ما نمی توانیم فرض کنیم که آن را تنها حروف کوچک و فضاهای. 132 00:11:03,160 --> 00:11:07,770 بنابراین در حال حاضر ما باید برای مقابله با این واقعیت است که این نامه ها می تواند هر چه ما می خواهیم آنها را به. 133 00:11:07,770 --> 00:11:11,910 و به این ترتیب اولین چیزی که ما می خواهیم انجام دهیم این است که فقط این پیام را دریافت کنید. 134 00:11:11,910 --> 00:11:19,790 ما فقط نیاز به دریافت یک رشته، رشته S = GetString، درست است. 135 00:11:19,790 --> 00:11:24,890 در حال حاضر این مشکل، یک زن و شوهر از راه های انجام آن وجود دارد. 136 00:11:24,890 --> 00:11:29,840 اما ما قصد داریم که مایل به استفاده از اپراتورهای بیتی در اینجا. 137 00:11:29,840 --> 00:11:35,280 آیا افرادی که یا در supersection، 138 00:11:35,280 --> 00:11:37,480 و یا چیزی، و نمی دانم چه اپراتورهای بیتی هستند؟ 139 00:11:37,480 --> 00:11:41,710 یا چگونه آنها را به ASCII به هیچ وجه مربوط؟ 140 00:11:41,710 --> 00:11:45,650 [دانشجو] من در supersection بود، اما من می دانم که چه اپراتورهای بیتی هستند. 141 00:11:45,650 --> 00:11:49,560 باشه. تا بعد من مجبور به بیش از اصول آنها است، اما من توضیح خواهیم داد 142 00:11:49,560 --> 00:11:51,830 آنچه که ما در حال رفتن به می خواهید استفاده کنید. 143 00:11:51,830 --> 00:11:59,680 پس 'A': نمایش دودویی سرمایه، شماره 65 است. 144 00:11:59,680 --> 00:12:07,560 من فقط رفتن به در نگاه کنید 41 - در حال رفتن به 01،000،001. 145 00:12:07,560 --> 00:12:14,170 به طوری که باید 65 در دهدهی، پس این است که نمایش دودویی از شخصیت سرمایه A. 146 00:12:14,170 --> 00:12:19,440 در حال حاضر، نمایش دودویی از شخصیت های کوچک 'A' 147 00:12:19,440 --> 00:12:33,350 رفتن به همان چیزی که، تقریبا. این است که - 6، آره. این درست است. 148 00:12:33,350 --> 00:12:37,670 بنابراین باینری سرمایه کوچک، دوتایی. 149 00:12:37,670 --> 00:12:43,940 بنابراین توجه داشته باشید که تفاوت بین A و 'A' است این بیت است. 150 00:12:43,940 --> 00:12:49,440 و این اتفاق می افتد به 32 بیتی، بیت به نمایندگی از شماره 32. 151 00:12:49,440 --> 00:12:53,910 و آن را حس می کند از سال 65؛ 'A' 97. 152 00:12:53,910 --> 00:12:56,610 تفاوت بین آنها 32 است. 153 00:12:56,610 --> 00:13:03,770 بنابراین در حال حاضر ما می دانیم که ما می توانیم از 'A' را با در نظر گرفتن تبدیل 154 00:13:03,770 --> 00:13:09,710 و بیتی از آن ORing، با - که به نظر می رسد مثل یک 1. 155 00:13:09,710 --> 00:13:20,900 این یک بیتی یا با 00100000 است، و این که به ما '.' 156 00:13:20,900 --> 00:13:26,850 و ما می توانیم از 'A' را به بیتی ANDing 157 00:13:26,850 --> 00:13:33,700 با 11، 0 و در آن محل، 11،111. 158 00:13:33,700 --> 00:13:43,840 بنابراین این خواهد شد و سپس با ما دقیقا همان چیزی بود، اما صرفنظر کردن از این فرد، 159 00:13:43,840 --> 00:13:50,070 بنابراین خواهیم 01000001، من نمی دانم اگر من شمارش حق. 160 00:13:50,070 --> 00:13:56,750 اما این روش از بیتی ORing به سرمایه کوچک 161 00:13:56,750 --> 00:14:02,080 و بیتی ANDing از حروف کوچک به سرمایه منحصر به فرد A. نیست 162 00:14:02,080 --> 00:14:06,510 همه حروف، K، K، انتظار: کاهش از، Z Z، انتظار: کاهش از، 163 00:14:06,510 --> 00:14:10,080 همه از آنها تنها به این بیت متفاوت است. 164 00:14:10,080 --> 00:14:16,290 و بنابراین شما می توانید این را به از هر حروف کوچک تغییر دهید به هر حرف و بالعکس استفاده کنید. 165 00:14:16,290 --> 00:14:26,670 باشه. بنابراین یک راه آسان گرفتن از این - تا به جای داشتن به 166 00:14:26,670 --> 00:14:32,170 نوشتن به هر 1011111 است - راه آسان به نمایندگی از این تعداد، و این یکی نه 167 00:14:32,170 --> 00:14:39,710 که من بیش از در supersection رفت، اما ریشه یابی لغات (~) است یکی دیگر از عملگر بیتی. 168 00:14:39,710 --> 00:14:42,520 ~ می کند این است که آن را در نمایندگی بیت به نظر می رسد. 169 00:14:42,520 --> 00:14:45,630 اجازه دهید به هر تعداد. 170 00:14:45,630 --> 00:14:53,130 این است که فقط برخی از شماره های باینری، و ~ می کند آن است که تنها flips یک بیت است. 171 00:14:53,130 --> 00:15:00,630 پس این 1 بود، در حال حاضر یک 0، 0، در حال حاضر 1، 010،100. 172 00:15:00,630 --> 00:15:08,320 به طوری که همه ~ هم اینکار را در مورد شما نمی کنند. بنابراین 32 است رفتن به شماره - خلاص شدن از آن - 173 00:15:08,320 --> 00:15:23,320 به طوری که 32 است به تعداد 00،100،000، و غیره از این ~ رفتن به 174 00:15:23,320 --> 00:15:29,980 این تعداد تا اینجا که من ANDed 'A' با. 175 00:15:29,980 --> 00:15:35,600 آیا همه می بینیم که؟ این بسیار رایج است، مثل زمانی که شما می خواهید برای کشف کردن 176 00:15:35,600 --> 00:15:40,740 همه چیز بعد از آن ما ممکن است از دیدن، زمانی که ما می خواهیم برای دیدن اگر - 177 00:15:40,740 --> 00:15:44,710 یا ما می خواهیم همه چیز را، هر مجموعه ای بیت به جز 1 178 00:15:44,710 --> 00:15:47,910 شما تمایل به بیت است که ما نمی خواهیم مجموعه ای ~. 179 00:15:47,910 --> 00:15:53,090 بنابراین ما مجموعه ای 32 بیتی می خواهم نیست، بنابراین ما از 32 ~. 180 00:15:53,090 --> 00:15:57,790 باشه. بنابراین ما می توانیم از آن در اینجا استفاده کنید. 181 00:15:57,790 --> 00:16:03,000 تمامی حقوق، پس از آن خوب است اگر شما در حال انجام نداده است، ما به آرامی باید پیاده روی بیش از با هم، 182 00:16:03,000 --> 00:16:11,870 و یا راه رفتن بیش از این، به طوری که - از طریق این. راه رفتن را از طریق این. 183 00:16:11,870 --> 00:16:20,790 بنابراین ما باید رشته ما، و ما می خواهیم به حلقه بیش از هر شخصیت در این رشته و انجام کاری به آن است. 184 00:16:20,790 --> 00:16:26,710 پس چگونه می توانیم حلقه بیش از یک رشته؟ چه چیزهایی را باید استفاده می کنیم؟ 185 00:16:26,710 --> 00:16:30,980 من قصد دارم به انجام آن نیست در اینجا. آره. 186 00:16:30,980 --> 00:16:42,940 بنابراین من تکرارکننده من، و او آن را گفت، اما چگونه من می دانم که چگونه بسیاری از شخصیت های در رشته؟ 187 00:16:42,940 --> 00:16:47,030 Strlen (ها)، پس از آن من + +. 188 00:16:47,030 --> 00:16:49,860 پس آنچه که من انجام داده ام در اینجا بهترین راه برای انجام کارها نیست. 189 00:16:49,860 --> 00:16:51,860 آیا هر کسی می دانم چرا؟ 190 00:16:51,860 --> 00:16:55,290 از آنجا که شما در حال چک کردن زبان از هر رشته است. 191 00:16:55,290 --> 00:17:06,859 بنابراین ما در حال رفتن به می خواهید به حرکت strlen، من می توانم بگویم در اینجا، نوع int طول = strlen ()، 192 00:17:06,859 --> 00:17:11,900 و پس از آن من <طول، و در صورتی که شما آن را دیده نمی شود قبل از آن، 193 00:17:11,900 --> 00:17:20,410 من هم می تواند اعضای هیات من = 0، طول = strlen (). انجام 194 00:17:20,410 --> 00:17:25,010 و بنابراین این تا حدودی ترجیح داده شده است، از من محدود دامنه 195 00:17:25,010 --> 00:17:29,150 طول متغیر به این 'برای' حلقه، به جای آن اعلام کرد قبل از 196 00:17:29,150 --> 00:17:34,990 و آن را همیشه وجود دارد، و در صورتی که شما نمی رسد چرا که بد، 197 00:17:34,990 --> 00:17:39,410 یا چرا اصلی بد بود، it's - شروع در حلقه for. 198 00:17:39,410 --> 00:17:43,380 من به بررسی این بیماری است. آیا من <طول S؟ 199 00:17:43,380 --> 00:17:46,790 بنابراین طول S، اجازه کار با "سلام"، تمام مدت. 200 00:17:46,790 --> 00:17:49,670 بنابراین طول S، H-E-l-l-O. طول و 5 می باشد. 201 00:17:49,670 --> 00:17:57,580 بنابراین من = 0، طول 5، پس از من است <5 تا حلقه ادامه می دهد. 202 00:17:57,580 --> 00:18:02,750 سپس ما دوباره. این وضعیت را بررسی کنید. آیا من <طول خوش آمدید؟ 203 00:18:02,750 --> 00:18:08,390 بررسی طول مدت خوش آمدید. H-e-l-l-O. که 5؛ من <5، بنابراین ما همچنان دوباره. 204 00:18:08,390 --> 00:18:13,330 بنابراین ما در حال محاسبه، ما در حال شمارش خوش آمدید، برای هر تکرار از حلقه، 205 00:18:13,330 --> 00:18:17,380 حتی فکر آن را هرگز به تغییر، آن را همیشه به 5 است. 206 00:18:17,380 --> 00:18:22,530 بنابراین ما فقط 5 تا جلو به یاد داشته باشید، و در حال حاضر همه چیز بهتر است. 207 00:18:22,530 --> 00:18:24,990 بنابراین تکرار در طول کل رشته. 208 00:18:24,990 --> 00:18:31,470 ما چه می خواهیم برای هر کاراکتر از رشته؟ 209 00:18:31,470 --> 00:18:38,510 [زبان دانشجو، ناخوانا] 210 00:18:38,510 --> 00:18:47,000 آره. بنابراین، اگر شخصیت غیر الفبایی است، پس از آن ما فقط می خواهم به بیش از آن جست و خیز. 211 00:18:47,000 --> 00:18:52,300 از آنجا که ما تنها در مورد حروف الفبایی مراقبت ما می توانیم تعدادی سرمایه گذاری نیست. 212 00:18:52,300 --> 00:19:10,850 پس چگونه می تواند این کار می کنیم؟ بنابراین شرایط ما، به طوری که اگر ما می خواهیم چیزی - بررسی اگر آن را به ترتیب حروف الفبا. 213 00:19:10,850 --> 00:19:14,060 پس چگونه این کار را بررسی کنیم؟ 214 00:19:14,060 --> 00:19:18,720 [دانشجو] شما فقط می توانید با استفاده از تابع آلفا است. 215 00:19:18,720 --> 00:19:23,160 این است که در هر کدام از این، و یا هر مانند، char.h و یا چیزی؟ 216 00:19:23,160 --> 00:19:32,710 بنابراین ما باید ها های [i]، - بیایید تابع آلفا، و استفاده از صریح استفاده نمی 217 00:19:32,710 --> 00:19:40,460 است که شخصیت هشتم S، به یاد داشته باشید که یک رشته آرایه ای از کاراکتر ها، 218 00:19:40,460 --> 00:19:43,180 بنابراین شخصیت هشتم S است. 219 00:19:43,180 --> 00:19:49,280 در حال حاضر، آن است که یک حرف بزرگ، ما می دانیم آن است که در یک محدوده خاص باشد. 220 00:19:49,280 --> 00:19:54,370 و آنچه از آن محدوده؟ 221 00:19:54,370 --> 00:20:07,860 آره. پس اگر [من] ≥ 65، و S های [i] ≤ 90، به جای آن چه کاری باید انجام دهم؟ 222 00:20:07,860 --> 00:20:18,470 آره. بنابراین شما باید به طور مطلق حتی هرگز نیاز به دانستن مقادیر ASCII از هر چیزی که تا کنون می باشد. 223 00:20:18,470 --> 00:20:25,640 از 65 شماره، 90، 97 و 102، یا هر چیز دیگری از آن است که فکر می کنم هرگز. 224 00:20:25,640 --> 00:20:32,470 شما لازم نیست - 112 - شما لازم نیست که می دانم کسانی که در همه. که اشتباه است بیش از حد. 225 00:20:32,470 --> 00:20:41,940 فقط این کاراکتر یک نقل قول، ثابت نقل قول تنها استفاده کنید. پس 'A' و کمتر از 90 'زهرا' است 226 00:20:41,940 --> 00:20:47,930 و این به طور قابل توجهی بهتر - من نمی دانم بالای سر من است که Z است 90. 227 00:20:47,930 --> 00:20:52,690 من نمی دانم خاموش بالا از سر من که 'Z' پایتخت Z. 228 00:20:52,690 --> 00:21:02,100 بنابراین تا زمانی که این است که در طیف وسیعی از سرمایه به سرمایه Z، و یا ما می تواند حروف کوچک را چک کنید، 229 00:21:02,100 --> 00:21:17,010 یا اگر آن را در محدوده ≥ 'A' و ≤ Z. 230 00:21:17,010 --> 00:21:19,010 به طوری که وضعیت ما. 231 00:21:19,010 --> 00:21:22,520 این سبک که در آن برای قرار دادن این چیزها متفاوت است. 232 00:21:22,520 --> 00:21:29,520 من آن را شبیه به این انجام دهد. 233 00:21:29,520 --> 00:21:31,520 در حال حاضر، چه چیزی ما می خواهیم کاری انجام دهید؟ 234 00:21:31,520 --> 00:21:39,530 ما می دانیم که این نامه یک شخصیت، یک شخصیت به ترتیب حروف الفبا. 235 00:21:39,530 --> 00:21:46,270 بنابراین ما نیاز به بین آیا این در حال حاضر باید یک حرف بزرگ یا حروف کوچک متناوب است. 236 00:21:46,270 --> 00:21:48,820 چگونه می توانم مسیر که یکی از ما می خواهیم آن را به ما را؟ 237 00:21:48,820 --> 00:21:55,520 [صدای دانشجو، ناخوانا] 238 00:21:55,520 --> 00:21:59,150 پس بله، اما به من اجازه. 239 00:21:59,150 --> 00:22:04,910 ماژول 0-2 گفته شد، پیشنهاد پرتاب کردن بود و من با آن موافقم. 240 00:22:04,910 --> 00:22:11,780 به جز توجه کنید که، مانند - این مورد؟ آره. 241 00:22:11,780 --> 00:22:18,270 هر یک دیگر، اما ما می توانیم ماژول 2 از من نیست، یا من مد 2، از سال 242 00:22:18,270 --> 00:22:22,950 توجه کنید که E است سرمایه و 'A' حروف کوچک است؟ اما در یک فضای جدا کردن آنها وجود دارد؟ 243 00:22:22,950 --> 00:22:27,150 به طوری که آنها در حال رفتن به وزارت دفاع همان 2 است، اما موارد مختلف آنها. 244 00:22:27,150 --> 00:22:29,150 [سوال دانشجو، ناخوانا] 245 00:22:29,150 --> 00:22:34,690 آره. بنابراین ما در حال رفتن به نگه داشتن تعداد. 246 00:22:34,690 --> 00:22:38,730 ما همچنین می تواند در اینجا اگر ما می خواستیم، که ممکن است کمی گنده 247 00:22:38,730 --> 00:22:41,300 در اظهارات حلقه برای من آن را در اینجا قرار دهید. 248 00:22:41,300 --> 00:22:48,840 پس تعداد نوع int = از 0 شروع می شود. 249 00:22:48,840 --> 00:22:54,070 و بنابراین در حال حاضر، من قصد دارم به دفعات مشاهده شده که چگونه بسیاری از حروف الفبا را داشتیم. 250 00:22:54,070 --> 00:22:59,550 بنابراین ما ناگزیر به دفعات مشاهده شده + + از آنجا که ما در بر داشت یکی دیگر از شخصیت بر اساس حروف الفبا مرتب. 251 00:22:59,550 --> 00:23:09,130 اما، به طوری که در حال حاضر شما در حال گفت: اگر وزارت دفاع تعداد 2. 252 00:23:09,130 --> 00:23:12,590 پس چه می شود اگر تعداد مد 2؟ آه. من == 0 در حال حاضر انجام دهید. 253 00:23:12,590 --> 00:23:21,740 ما همچنین می خواهیم بیش از که. بنابراین اگر وزارت دفاع تعداد 2 == 0، آنگاه چه؟ 254 00:23:21,740 --> 00:23:27,830 [دانشجویان پاسخ، ناخوانا] 255 00:23:27,830 --> 00:23:32,750 بنابراین ما می خواهیم آن را برای پایان دادن به بزرگ است. 256 00:23:32,750 --> 00:23:37,520 2 مورد وجود دارد، بزرگ و کوچک هستند که در 2 مورد. 257 00:23:37,520 --> 00:23:40,990 بنابراین، اگر ما در حروف کوچک ما نیاز داریم که آن را به بزرگ. 258 00:23:40,990 --> 00:23:43,710 اگر آن را بزرگ ما نیازی به انجام هر کاری است. 259 00:23:43,710 --> 00:23:50,760 اما، یک راه وجود دارد - shouldn't اند بدبختانه - 260 00:23:50,760 --> 00:23:54,800 که ما حتی نمی نیاز به بررسی کنید که آیا آن را به حروف بزرگ یا کوچک؟ 261 00:23:54,800 --> 00:24:02,240 چه می توانید انجام دهید که همیشه مطمئن شوید که ما همیشه در بزرگ؟ 262 00:24:02,240 --> 00:24:07,830 پس چه ما برای حروف کوچک 'A' متوجه چه می شود اگر ما این چیزی یکسان به بزرگ؟ 263 00:24:07,830 --> 00:24:11,900 یک تغییر بزرگ می کند، و یا تغییر می کند ارزش؟ 264 00:24:11,900 --> 00:24:23,100 آره. بنابراین هر سرمایه بیتی نامه ANDed با ~ 32 رفتن به همان شخصیت بزرگ 265 00:24:23,100 --> 00:24:29,220 چرا که برای هر شخصیت بزرگ 32 بیت تنظیم نشده است. 266 00:24:29,220 --> 00:24:40,920 بنابراین اگر ما می خواهیم را به شخصیت های [i]، ما می خواهیم آن را به تبدیل شدن به حروف کوچک یا بزرگ. 267 00:24:40,920 --> 00:24:46,890 بنابراین اگر این کوچک، آن را در حال حاضر بزرگ، اگر آن بزرگ، آن را هنوز هم بزرگ، و این از آن است. 268 00:24:46,890 --> 00:24:54,290 من این کار را در supersection گفت: شما می توانید 32 اگر شما می خواهید استفاده کنید، اما من تمایل به ترجیح می دهم انجام 'A' -، 269 00:24:54,290 --> 00:25:01,150 به جای 32 ساده، چرا که می توان آن را هر بیت دیگر است. 270 00:25:01,150 --> 00:25:03,610 پس از 32 بیتی، می تواند آن را هر کدام از این، یا ما را به اندازه کافی ندارد 271 00:25:03,610 --> 00:25:05,840 اعداد به نمایندگی از همه از شخصیت. 272 00:25:05,840 --> 00:25:09,110 بنابراین اگر شما می توانید از 32 بیتی، می تواند آن را به 64 بیتی، می تواند آن را بیت 128. 273 00:25:09,110 --> 00:25:13,990 هر یک از کسانی که بیت می تواند کمی که بین حروف بزرگ و کوچک است. 274 00:25:13,990 --> 00:25:18,350 من لازم نیست که می دانم که آن را در 32 بیتی. 275 00:25:18,350 --> 00:25:27,130 من می توانم این 'A' استفاده کنید - یک بیت است که تفاوت میان این دو برای به دست آوردن 276 00:25:27,130 --> 00:25:33,000 بدون نیاز به شماره سحر و جادو است که 32 است تکیه می کنند. 277 00:25:33,000 --> 00:25:38,770 و بنابراین در حال حاضر، دیگری عجیب و غریب تعداد دفعات مشاهده، و بنابراین آنچه که من می خواهم به انجام این کار؟ 278 00:25:38,770 --> 00:25:43,920 [پاسخ دانشجویی، ناخوانا] 279 00:25:43,920 --> 00:25:45,920 [دانشجو] چه خبر؟ 280 00:25:45,920 --> 00:25:49,850 من آن را در 1 ثانیه انجام دهد. 281 00:25:49,850 --> 00:25:55,690 بنابراین در حال حاضر اگر من می خواهم - من می خواهم تا مطمئن شوید که کاراکتر در حال حاضر حروف کوچک، 282 00:25:55,690 --> 00:26:04,140 و بنابراین من می تواند و یا 32، و 32 به معنی 'A' - A. 283 00:26:04,140 --> 00:26:06,510 اما توجه کنید، با همان استدلال قبلی، که اگر 284 00:26:06,510 --> 00:26:11,670 این نامه در حال حاضر کوچک، سپس ORing فقط در 32 نگه می دارد که آن کوچک است. 285 00:26:11,670 --> 00:26:16,220 این شخصیت اصلی تغییر نکرده است. 286 00:26:16,220 --> 00:26:19,910 اما در حال حاضر من لازم نیست که برای جلوگیری از و گفت: "اگر آن را کوچک، فقط در مورد آن را فراموش کرده ام 287 00:26:19,910 --> 00:26:23,650 اگر آن را بزرگ، و سپس آن را تغییر دهد. " 288 00:26:23,650 --> 00:26:26,900 این خیلی راحت تر برای انجام این کار است. 289 00:26:26,900 --> 00:26:33,190 [دانشجو] که استراتژی کم کردن بزرگ از کار حروف کوچک اگر آن را گرفتند 32؟ 290 00:26:33,190 --> 00:26:35,330 اگر آن بود، مانند، 34 و یا چیزی؟ 291 00:26:35,330 --> 00:26:41,840 بنابراین، شما باید بدانید که تفاوت بین 2 - >> 1 بیت. 292 00:26:41,840 --> 00:26:49,840 این می تواند بیشتر از 1 بیت، تا زمانی که همه از بیت زیر این موقعیت یکسان هستند. 293 00:26:49,840 --> 00:26:58,500 بنابراین ما نیاز به حداقل 26 حرف - و یا 26 حرف وجود دارد. 294 00:26:58,500 --> 00:27:04,590 بنابراین ما نیاز به حداقل 26 عدد برای نشان دادن تفاوت - 295 00:27:04,590 --> 00:27:07,650 تفاوت بین A و 'A' را به حداقل 26 296 00:27:07,650 --> 00:27:10,760 و یا دیگری ما را نمی نماینده تمام اعداد پایتخت. 297 00:27:10,760 --> 00:27:18,630 این بدان معنی است که A، اگر ما در 1 شروع، آن را برای استفاده از همه این بیت، 298 00:27:18,630 --> 00:27:23,900 همه از این 5 بیت اول، به نمایندگی از همه چیز را از طریق Z. 299 00:27:23,900 --> 00:27:32,170 به همین دلیل کمی بعد، و یا این بیت، بیت بعدی که برای تمایز بین یک و انتخاب است. 300 00:27:32,170 --> 00:27:40,930 به همین دلیل، در جدول ASCII، 5 نمادها جدا حروف بزرگ از حروف کوچک وجود دارد. 301 00:27:40,930 --> 00:27:49,050 پس از آن نمادهای، 5 اضافی است که به ارمغان می آورد تا از 32 این است که تفاوت بین آنها را. 302 00:27:49,050 --> 00:27:51,840 [دانشجو] بنابراین، ما می تواند از آن را، به دلیل ASCII طراحی شده است که راه. 303 00:27:51,840 --> 00:27:57,280 بله. اما ASCII - تفاوت همچنین می تواند هر دو این بیت باشد. 304 00:27:57,280 --> 00:28:12,040 مانند، اگر 10000001 بود، و 'A' 11100001 - فراموش کنم، هر چه. 305 00:28:12,040 --> 00:28:18,100 اما اگر آن این بود، پس از آن ما هنوز هم می تواند با استفاده از 'A' - A. 306 00:28:18,100 --> 00:28:22,650 فقط در حال حاضر تفاوت بین A و 'A' است که هنوز هم این 2 بیت است. 307 00:28:22,650 --> 00:28:32,240 من فکر می کنم این نوشته 48. آیا 32 + 64؟ من فکر می کنم آن است؟ 308 00:28:32,240 --> 00:28:40,160 هر شخصیت، دوست، Z و Z، K و K، هنوز هم 2 بیت باشد 309 00:28:40,160 --> 00:28:45,160 آنها هنوز هم بیت یکسان به جز برای کسانی که 2 بیت داشته باشد. 310 00:28:45,160 --> 00:28:48,870 بنابراین تا زمانی که که همیشه درست است، بدون در نظر گرفتن اگر ما در حال استفاده از ASCII و یا بعضی از سیستم های دیگر، 311 00:28:48,870 --> 00:28:53,050 و زمانی که تنها یک شماره مجموعه ای از بیت ها هستند که برای هر یک از شخصیت های مختلف وجود دارد، 312 00:28:53,050 --> 00:28:55,050 پس از آن که خوب کار می کند. 313 00:28:55,050 --> 00:29:06,110 این که فقط 32 راه اندازی شد، زیرا یکی از ما احتمالا می تواند از آن استفاده شده است. >> دانلود. 314 00:29:06,110 --> 00:29:14,520 من تمایل به ترجیح می دهند، در صورتی که شما را دیده اند، نیست، اگر بلوک تنها یک خط، 315 00:29:14,520 --> 00:29:24,280 شما می توانید از شر آکولاد، بنابراین تمایل به انجام این کار ترجیح می دهند. 316 00:29:24,280 --> 00:29:34,010 همچنین، شما می دانید که چگونه ما می توانیم چیزهایی مثل [من] + = 1؟ 317 00:29:34,010 --> 00:29:41,090 شما همچنین می توانید [I] بیتی و 32 = انجام 318 00:29:41,090 --> 00:29:46,400 و بیتی OR = 32. 319 00:29:46,400 --> 00:29:51,490 همچنین، تعداد مد 2 == 0. 320 00:29:51,490 --> 00:30:00,900 من آن را به نوشتن نیست - - به طوری که به یاد داشته باشید هر مقدار غیر صفر درست است، و 0 نادرست است. 321 00:30:00,900 --> 00:30:07,880 پس "اگر وزارت دفاع تعداد 2 == 0" عنوان کرد و گفت: "اگر مد 2 به حساب نمی آید." 322 00:30:07,880 --> 00:30:11,580 من احتمالا فقط معکوس خطوط و گفت: "اگر تعداد مد 2 323 00:30:11,580 --> 00:30:15,350 آیا OR 1، چیز دیگری و 1، و نه "به طوری که من لازم نیست". " 324 00:30:15,350 --> 00:30:18,650 اما این فقط به عنوان به خوبی کار می کند. 325 00:30:18,650 --> 00:30:25,660 و چه چیز دیگری می توانم انجام دهم که اینجا هستید؟ 326 00:30:25,660 --> 00:30:29,060 شما می توانید آنها را با سه تایی ترکیب اگر شما می خواهید، اما پس از آن است که فقط می خواهم همه چیز را مسیه 327 00:30:29,060 --> 00:30:33,770 و احتمالا مشکل تر است به خواندن، به طوری که ما به انجام این کار نیست. 328 00:30:33,770 --> 00:30:37,330 هر کسی هر گونه پیشنهادات؟ 329 00:30:37,330 --> 00:30:41,580 این است که همه مشکل پرسید؟ اوه آره. 330 00:30:41,580 --> 00:30:51,070 تا خلاص شدن از شر این خطوط خالی، در حال حاضر خواهیم F،٪ s را چاپ یکی از رشته ها، 331 00:30:51,070 --> 00:30:56,620 ما اف، نسخه قابل چاپ. 332 00:30:56,620 --> 00:30:59,330 حالا آن را اجرا کنیم. آیا من هیچ چیز اشتباه است؟ 333 00:30:59,330 --> 00:31:03,200 \ "من می خواهم یک نفر. 334 00:31:03,200 --> 00:31:07,840 باشه. در حال حاضر ما آن را اجرا کنید. شاید به من داد. 335 00:31:07,840 --> 00:31:11,250 Strlen در string.h است. 336 00:31:11,250 --> 00:31:14,290 بنابراین این نکته خوب در مورد صدای جرنگ جرنگ آن را به شما می گوید چیزی است که آن را در 337 00:31:14,290 --> 00:31:19,140 به جای شورای همکاری خلیج فارس که می گوید: "هی، شما چیزی را فراموش کرده، من نمی دانم آنچه در آن بود." 338 00:31:19,140 --> 00:31:29,220 اما این به من بگو، "شما به معنای شامل string.h." 339 00:31:29,220 --> 00:31:32,130 بنابراین من برای هر چیزی سریع نیست، پس از آن چیزی نمی گویم. 340 00:31:32,130 --> 00:31:42,540 اما خواهیم کرد به عنوان مثال خود را انجام دهد، "تشکر 4 اضافه کردن" است. 341 00:31:42,540 --> 00:31:47,880 که به نظر می رسد. آفرین. 342 00:31:47,880 --> 00:31:52,370 پس از بازگشت به بخش اصلی خود را، من تقریبا هرگز آن را انجام دهد. 343 00:31:52,370 --> 00:31:57,110 این برنامه اختیاری است. اصلی و تابع تنها برای آن اختیاری است. 344 00:31:57,110 --> 00:32:07,140 اگر شما هیچ چیز را از اصلی بازگشت نیست، فرض می شود که شما به معنای بازگشت 0. 345 00:32:07,140 --> 00:32:13,070 پرسش و پاسخ؟ 346 00:32:13,070 --> 00:32:20,980 باشه. بنابراین در حال حاضر مشکل دوم. 347 00:32:20,980 --> 00:32:24,810 "با عبور از سخنرانی ثانیه 2 هفته است که به مبادله مقادیر 2 متغیر را به یاد بیاورید 348 00:32:24,810 --> 00:32:30,780 که 2 متغیر به تابع (حتی اگر به نام SWAP) دقیقا کار نمی کند، حداقل نه بدون اشاره گر است. " 349 00:32:30,780 --> 00:32:37,020 و چشم پوشی از اشاره گر تا زمانی که ما به آنها را دریافت کنید. 350 00:32:37,020 --> 00:32:40,070 ما می خواهیم به مبادله 2 متغیر، ما یک تابع با استفاده از به انجام آن نیست. 351 00:32:40,070 --> 00:32:43,410 ما هنوز در حال رفتن به آن را به در اصلی انجام دهد مانند آن را می گوید. 352 00:32:43,410 --> 00:32:48,360 اما برای استفاده از آن 2 متغیر، نمی خواهم به استفاده از یک متغیر موقت نیست. 353 00:32:48,360 --> 00:32:50,770 2 راه برای انجام این کار وجود دارد. 354 00:32:50,770 --> 00:32:56,310 شما می توانید آن را با استفاده از عملگرهای باینری سنتی خود را انجام دهید. 355 00:32:56,310 --> 00:33:00,180 بنابراین آیا هر کسی می دانم یک راه سریع و کثیف را از انجام این کار؟ 356 00:33:00,180 --> 00:33:07,650 در واقع ممکن است یک دقیقه تفکر کنند. اگر من - 357 00:33:07,650 --> 00:33:12,130 من مشکل راه اندازی مانند آنها می پرسند. بنابراین اگر من 2 متغیر، A، است که فقط یک عدد صحیح 358 00:33:12,130 --> 00:33:17,800 است که من آنها را و مجموع B متغیر، که یکی دیگر از عدد صحیح است که به من داده شده است. 359 00:33:17,800 --> 00:33:22,700 بنابراین اگر من این 2 متغیر است، در حال حاضر من می خواهم به آنها را مبادله. 360 00:33:22,700 --> 00:33:31,550 سنتی، با استفاده از عملگرهای باینری خود را به طور منظم، منظور من، مانند +، -، ÷. 361 00:33:31,550 --> 00:33:36,630 اپراتور بیتی که در باینری عمل می کنند. 362 00:33:36,630 --> 00:33:39,600 بنابراین با استفاده از -، +، ÷، و همه کسانی. 363 00:33:39,600 --> 00:33:52,980 ما می توانیم با انجام این کار چیزی شبیه به مبادله = A + B، و B = A - B، A = A - B. 364 00:33:52,980 --> 00:34:04,260 بنابراین، سلامت عقل را چک کنید، و پس از آن خواهیم کرد چرا که با این نسخهها کار را ببینید. 365 00:34:04,260 --> 00:34:13,320 بیایید می گویند = 7، B = 3، و سپس + B است به 10. 366 00:34:13,320 --> 00:34:18,820 بنابراین ما در حال حاضر ایجاد 10 =، و پس از آن ما در حال انجام B = A - B. 367 00:34:18,820 --> 00:34:30,250 بنابراین ما در حال انجام B = A - B، که در حال رفتن به بود 7، و B = A - B دوباره، 368 00:34:30,250 --> 00:34:38,650 یا A = A - B. که به 10 - 7 که 3 است. 369 00:34:38,650 --> 00:34:44,850 بنابراین در حال حاضر، به درستی، 'A' 7 ساله بود، ب 3 بود، و در حال حاضر ب 7 و 'A' است 3. 370 00:34:44,850 --> 00:34:48,679 به طوری که نوع حس می کند. 'A' است که ترکیبی از 2 عدد. 371 00:34:48,679 --> 00:34:53,000 در این نقطه، 'A' ترکیب است، و پس از آن ما در حال کم کردن از ب اصلی 372 00:34:53,000 --> 00:34:56,860 و پس از آن ما در حال کم کردن چه اصلی بود. 373 00:34:56,860 --> 00:35:01,150 اما این کار برای همه اعداد نیست. 374 00:35:01,150 --> 00:35:08,880 برای دیدن این، اجازه دهید به یک سیستم، بنابراین ما معمولا از اعداد صحیح به عنوان 32 بیت فکر می کنم. 375 00:35:08,880 --> 00:35:13,050 اجازه دهید کار بر روی چیزی است که فقط مثل 4 بیتی. 376 00:35:13,050 --> 00:35:15,450 امیدوارم من آمد تا با یک مثال خوب در حال حاضر. 377 00:35:15,450 --> 00:35:18,680 بنابراین، من می دانم، این آسان نخواهد بود. 378 00:35:18,680 --> 00:35:26,720 بیایید می گویند ما 2 اعداد 1111 و 1111، به طوری که ما باینری هستیم در حال حاضر. 379 00:35:26,720 --> 00:35:34,630 در اعشار واقعی، اگر شما می خواهید به آن فکر می کنم که راه، = 15 و B = 15 380 00:35:34,630 --> 00:35:37,630 و بنابراین ما انتظار داریم، پس ما آنها را SWAP - آنها را حتی نمی باید به همان تعداد، 381 00:35:37,630 --> 00:35:41,140 اما من آن را در این راه است. 382 00:35:41,140 --> 00:35:47,100 بیایید آنها را به همان تعداد است. بیایید 1111 و 0001. 383 00:35:47,100 --> 00:35:51,860 پس A = 15 و B = 1. 384 00:35:51,860 --> 00:35:57,670 پس از ما آنها را مبادله، ما انتظار داریم 'A' را به 1 و B به 15. 385 00:35:57,670 --> 00:36:01,780 بنابراین اولین قدم ما این است که A = A + B. 386 00:36:01,780 --> 00:36:08,770 تعداد ما تنها 4 بیت گسترده، پس، که 1111، +، B، است که 0001، 387 00:36:08,770 --> 00:36:16,780 برای پایان دادن به شود تا 10،000، اما ما فقط باید 4 بیت. 388 00:36:16,780 --> 00:36:22,540 بنابراین در حال حاضر = 0. 389 00:36:22,540 --> 00:36:34,080 و در حال حاضر ما می خواهید به مجموعه B = A - B - در واقع، این هم از آثار کاملا. 390 00:36:34,080 --> 00:36:39,630 = - بیایید ببینیم که اگر این کار کاملا - ب. 391 00:36:39,630 --> 00:36:53,720 بنابراین پس از B = 0 - 1، که هنوز هم خواهد بود 15، و پس از آن A = A - B، که خواهد بود 1. 392 00:36:53,720 --> 00:36:56,210 شاید این کار می کند. 393 00:36:56,210 --> 00:36:59,020 من احساس می کنم مثل یک دلیل آن کار نمی کند با استفاده از به طور منظم وجود دارد. 394 00:36:59,020 --> 00:37:06,400 خوب، پس کار بر روی این فرض که آن را با عملیات باینری به طور منظم کار نیست، 395 00:37:06,400 --> 00:37:15,040 و من به دنبال - من گوگل برای دیدن در صورتی که درست است. 396 00:37:15,040 --> 00:37:23,490 بنابراین ما می خواهیم به آن را انجام دهد با استفاده از عملگرهای بیتی، و سرنخ در اینجا این است XOR است. 397 00:37:23,490 --> 00:37:28,780 بنابراین، معرفی XOR (^) اگر شما از آن دیده نشده است. 398 00:37:28,780 --> 00:37:34,610 آن، دوباره، عملگر بیتی به طوری عمل می کند کمی با بیت، و it's - 399 00:37:34,610 --> 00:37:39,910 اگر شما از بیت های 0 و 1، پس از آن این خواهد بود: 1. 400 00:37:39,910 --> 00:37:45,230 اگر شما از 1 بیت و 0، آن را به 1، 0 بیت و 0 آن را به 0 باشد، 401 00:37:45,230 --> 00:37:47,640 و اگر شما 1 بیت و 1 خواهید بود آن را 0. 402 00:37:47,640 --> 00:37:56,180 بنابراین آن را مانند یا. اگر هر یک از بیت درست باشد، آن 1 است، اما بر خلاف OR، نمی تواند هر دو بیت که درست است. 403 00:37:56,180 --> 00:37:59,320 یا می توانست این باشد 1، XOR این 0 باشد. 404 00:37:59,320 --> 00:38:02,250 بنابراین ما در حال رفتن به می خواهم به استفاده از XOR در اینجا. 405 00:38:02,250 --> 00:38:09,960 فکر می کنم در مورد آن را برای یک دقیقه، من قصد دارم به گوگل. 406 00:38:09,960 --> 00:38:16,230 خب، شما می توانید که نمی خواند، من در حال حاضر در صفحه مبادله الگوریتم XOR است. 407 00:38:16,230 --> 00:38:21,340 امیدوارم این توضیح دهد که چرا نمی توانند من - 408 00:38:21,340 --> 00:38:34,190 این دقیقا همان الگوریتم است که ما فقط به. 409 00:38:34,190 --> 00:38:37,330 من هنوز هم نمی بینم که چرا - من باید فقط یک مثال بد برداشت، 410 00:38:37,330 --> 00:38:44,940 اما در این مورد که در آن 'A' اتفاق افتاده است برای تبدیل شدن به 0، پس از رسیدن به 5 بیت، بنابراین در حال حاضر 0 "است، 411 00:38:44,940 --> 00:38:48,730 این چیزی است که به نام «سرریز عدد صحیح است." 412 00:38:48,730 --> 00:38:54,370 با توجه به ویکیپدیا، "بر خلاف مبادله XOR، این تغییرات مستلزم آن است که آن را با استفاده از برخی از روش های 413 00:38:54,370 --> 00:38:59,780 برای تضمین که X + Y به سرریز عدد صحیح ایجاد نمی کند. " 414 00:38:59,780 --> 00:39:08,350 بنابراین این مشکل دارند این سرریز عدد صحیح بود، اما من چیزی اشتباه است. 415 00:39:08,350 --> 00:39:10,520 مطمئن نیستم. من سعی خواهم کرد به آمد تا با یکی دیگر. 416 00:39:10,520 --> 00:39:13,640 [دانشجو] خوب، سرریز عدد صحیح است که هنگامی که شما در حال تلاش برای قرار دادن یک عدد در آن وجود دارد 417 00:39:13,640 --> 00:39:16,640 بزرگتر از مقدار بیت اختصاص داده اند؟ 418 00:39:16,640 --> 00:39:23,730 آره. ما 4 بیت. That's - ما تا به حال 4 بیت، ما پس از آن سعی می کنید برای اضافه کردن 1 به آن، بنابراین ما تا پایان با 5 بیت است. 419 00:39:23,730 --> 00:39:26,690 اما بیت پنجم می شود قطع، آره. 420 00:39:26,690 --> 00:39:28,970 در واقع ممکن است - 421 00:39:28,970 --> 00:39:33,010 [دانشجو] می کند که شما یک خطا پرتاب، یا که - خواهد بود که پرتاب خطا؟ 422 00:39:33,010 --> 00:39:40,720 شماره بنابراین هیچ خطا وجود دارد. هنگامی که شما به سطح مونتاژ کنید، کمی ویژه 423 00:39:40,720 --> 00:39:47,020 در جایی قرار است که گفت: سرریز وجود دارد، اما در C شما از نوع فقط با آن مقابله نمی شده است. 424 00:39:47,020 --> 00:39:55,160 شما در واقع می تواند به مقابله با آن، مگر اینکه شما با استفاده از دستورالعمل مجمع خاص در C. 425 00:39:55,160 --> 00:39:58,110 بیایید فکر می کنم در مورد مبادله XOR. 426 00:39:58,110 --> 00:40:02,220 و من فکر می کنم این مقاله ویکیپدیا را نیز گفت که - 427 00:40:02,220 --> 00:40:07,310 پس از آن نیز به ارمغان آورد تا حسابی مدولار، بنابراین من حدس می زنم من بود، در تئوری، انجام حساب های مدولار 428 00:40:07,310 --> 00:40:11,160 وقتی که من گفتم که 0 - 1 است 15 دوباره. 429 00:40:11,160 --> 00:40:15,410 به طوری که در واقع ممکن است - در یک پردازنده به طور منظم می کند 0 - 1 = 15. 430 00:40:15,410 --> 00:40:20,430 از آنجا که ما تا پایان در 0، 1 تفریق، پس آن را فقط به پایان می رسد در اطراف به 1111. 431 00:40:20,430 --> 00:40:28,930 بنابراین این الگوریتم در واقع ممکن است، کار + B، A - B، B - که ممکن است خوب. 432 00:40:28,930 --> 00:40:34,030 اما برخی از پردازنده ها وجود دارد که این کار را انجام نمی، و پس از آن خوب نخواهد بود در آن آنهایی که خاص. 433 00:40:34,030 --> 00:40:39,880 مبادله XOR بر روی هر پردازنده کار می کنند. باشه. 434 00:40:39,880 --> 00:40:42,280 این ایده آن است که تصور می شود، هر چند. 435 00:40:42,280 --> 00:40:50,120 جایی که ما با استفاده از XOR به به نحوی دریافت اطلاعات از هر دو به 1 از متغیرها، 436 00:40:50,120 --> 00:40:54,120 و سپس بیرون کشیدن اطلاعات از متغیرهای فردی دوباره. 437 00:40:54,120 --> 00:41:04,330 بنابراین آیا کسی ایده / پاسخ؟ 438 00:41:04,330 --> 00:41:14,540 [پاسخ دانشجویی، ناخوانا] 439 00:41:14,540 --> 00:41:22,220 بنابراین این باید کار کند، و همچنین، XOR جابجایی است. 440 00:41:22,220 --> 00:41:27,620 صرف نظر از این که سفارش این 2 عدد رخ می دهد در اینجا، 441 00:41:27,620 --> 00:41:30,100 این نتیجه به همان. 442 00:41:30,100 --> 00:41:35,800 بنابراین ^ ب B ^. 443 00:41:35,800 --> 00:41:51,860 شما همچنین ممکن است دیدن این عنوان نوشته شده ^ = B، B ^ =، ^ = B دوباره. 444 00:41:51,860 --> 00:42:00,200 بنابراین، این راست است، و ببینید که چرا این آثار، از بیت فکر می کنم. 445 00:42:00,200 --> 00:42:10,400 با استفاده از شماره smallish، اجازه دهید بگویم 11،001 و 01،100. 446 00:42:10,400 --> 00:42:12,790 بنابراین این 'A' است و این ب. 447 00:42:12,790 --> 00:42:15,540 بنابراین ^ = B. 448 00:42:15,540 --> 00:42:22,380 ما قصد داریم به تنظیم = 'A' XOR این 2 چیز است. 449 00:42:22,380 --> 00:42:32,920 بنابراین 1 ^ 0 1 است 1 ^ 1 0 است 0 ^ 1، 1 و 0 ^ 0 0 است، 1 ^ 0 1 است. 450 00:42:32,920 --> 00:42:37,380 پس، اگر شما در عدد دهدهی نگاه کنید، آن را برای رفتن به - 451 00:42:37,380 --> 00:42:41,160 شما نمی خواهید برای دیدن بسیاری از ارتباط بین اصلی و جدید، 452 00:42:41,160 --> 00:42:45,600 اما با نگاه کردن به بیت، 'A' در حال حاضر مانند مش از اطلاعات 453 00:42:45,600 --> 00:42:49,970 هر دو اصلی 'A' و B اصلی. 454 00:42:49,970 --> 00:42:57,930 بنابراین اگر ما را B ^، ما می بینیم که ما را به پایان خواهم در اصلی. 455 00:42:57,930 --> 00:43:08,910 و اگر ما را اصلی 'A' ^ جدید '،' ما می بینیم ما تا پایان در ب اصلی. 456 00:43:08,910 --> 00:43:18,380 بنابراین (A ^ B) ^ B = '.' اصلی 457 00:43:18,380 --> 00:43:27,910 و (A ^ B) ^ A = B اصلی. 458 00:43:27,910 --> 00:43:37,010 وجود دارد - یکی دیگر از راه دیدن این XOR هر چیزی به خودی خود همیشه 0 است. 459 00:43:37,010 --> 00:43:45,020 بنابراین 1101 ^ 1101، تمام بیت ها به همان. 460 00:43:45,020 --> 00:43:47,920 بنابراین هرگز به یک مورد که در آن 1 0 و 1 است. 461 00:43:47,920 --> 00:43:51,080 پس این 0000. 462 00:43:51,080 --> 00:43:57,240 همین کار را با این. (A ^ B) ^ B است مانند ^ (B ^ B). 463 00:43:57,240 --> 00:44:03,680 (B ^ B) خواهد بود 0؛ ^ 0 فقط برای رفتن به '،' از آنجا که همه بیت ها 0. 464 00:44:03,680 --> 00:44:08,050 بنابراین تنها کسانی که می رویم می شود که در آن 'A' در اصل یک 1 - آنهایی که تا به حال. 465 00:44:08,050 --> 00:44:12,070 و همین ایده در اینجا. من کاملا مطمئنم که آن را نیز جابجایی. 466 00:44:12,070 --> 00:44:17,590 آره. من می گویند پیش از آن بود که جابجایی. 467 00:44:17,590 --> 00:44:24,680 ^ '،' و آن را انجمنی، بنابراین در حال حاضر (B ^) ^. 468 00:44:24,680 --> 00:44:28,970 و ما می توانیم انجام دهیم B ^ (^). 469 00:44:28,970 --> 00:44:31,540 و دوباره، ما ب اصلی است. 470 00:44:31,540 --> 00:44:37,120 پس 'A' است که در حال حاضر ترکیبی از 'A' و B با هم است. 471 00:44:37,120 --> 00:44:49,660 با استفاده از ما دسته کوچک موسیقی جاز «ما می گویند B = دسته کوچک موسیقی جاز '' ^ اصلی B، ما اصلی است." 472 00:44:49,660 --> 00:45:05,170 و در حال حاضر دسته کوچک موسیقی جاز = 'A' ^ B، که اصلی بود - و یا است که در حال حاضر چه 'a' یا B بود. 473 00:45:05,170 --> 00:45:13,620 که این مورد را در اینجا. = B، B، قدیمی است. 474 00:45:13,620 --> 00:45:16,550 بنابراین در حال حاضر همه چیز به عقب در جهت تعویض. 475 00:45:16,550 --> 00:45:22,960 اگر ما در واقع در بیت نگاه، B = A ^ B، در جریان است XOR این 2، 476 00:45:22,960 --> 00:45:33,920 و پاسخ به این، و بعد از آن A = A ^ B است XORing این 2 و پاسخ این است. 477 00:45:33,920 --> 00:45:41,090 پرسش و پاسخ؟ باشه. بنابراین یکی از آخرین است تا حدودی میزان قابل توجهی مشکل تر است. 478 00:45:41,090 --> 00:45:43,180 [دانشجو] من فکر می کنم او یک سوال در مورد آن است. >> اوه، ببخشید. 479 00:45:43,180 --> 00:45:49,380 [دانشجو] آنچه در واقع سریعتر است؟ اگر شما استفاده از این XOR، و یا اگر یک متغیر جدید به شما اعلام؟ 480 00:45:49,380 --> 00:45:55,190 بنابراین چه چیزی است که در واقع سریعتر، اعلام یک متغیر جدید و یا با استفاده از XOR به مبادله؟ 481 00:45:55,190 --> 00:45:59,600 پاسخ این است که، در تمام احتمال، یک متغیر موقت است. 482 00:45:59,600 --> 00:46:05,780 و این است چرا که یک بار آن را کامپایل شده - به طوری که در سطح مونتاژ، 483 00:46:05,780 --> 00:46:12,320 چنین چیزی به عنوان متغیرهای محلی و یا هر متغیر های موقت و یا هر یک از این مسائل وجود ندارد. 484 00:46:12,320 --> 00:46:16,060 آنها فقط دوست - حافظه وجود دارد، و ثبات وجود دارد. 485 00:46:16,060 --> 00:46:20,920 ثبات ها است که در آن همه چیز به طور جدی اتفاق می افتد. 486 00:46:20,920 --> 00:46:24,750 شما 2 چیز در حافظه اضافه کردن، اضافه کردن 2 چیز در ثبات. 487 00:46:24,750 --> 00:46:28,160 و شما را از حافظه به ثبات سپس آنها را اضافه کنید، 488 00:46:28,160 --> 00:46:33,180 و پس از آن شما ممکن است آنها را به عقب را در حافظه قرار داده است، اما همه عمل اتفاق می افتد در ثبات است. 489 00:46:33,180 --> 00:46:38,750 بنابراین، هنگامی که شما با استفاده از رویکرد متغیر موقت، معمولا چه اتفاقی می افتد 490 00:46:38,750 --> 00:46:42,810 در حال حاضر این 2 عدد در ثبات ها است. 491 00:46:42,810 --> 00:46:46,570 و سپس از آن نقطه به بعد، پس از شما آنها را جابجا، 492 00:46:46,570 --> 00:46:51,540 آن را فقط با استفاده از ثبت نام دیگر شروع می شود. 493 00:46:51,540 --> 00:46:56,510 هر جایی که باشید به حال شده است با استفاده از B، فقط ثبت نام که در حال حاضر ذخیره شد. 'استفاده کنید 494 00:46:56,510 --> 00:47:02,180 بنابراین لازم نیست برای انجام هر چیزی را به انجام مبادله. آره؟ 495 00:47:02,180 --> 00:47:05,690 [دانشجو] اما آن را نیز طول می کشد حافظه بیشتر، درست است؟ 496 00:47:05,690 --> 00:47:10,280 آن را تنها حافظه بیشتر را اگر به آن نیاز دارد برای ذخیره متغیر موقت است. 497 00:47:10,280 --> 00:47:14,830 دوست دارم اگر شما بعد از استفاده از آن متغیر موقت دوباره به جایی، 498 00:47:14,830 --> 00:47:18,920 پس از آن - و یا چیزی را به آن متغیر به طور موقت شما اختصاص دهید. 499 00:47:18,920 --> 00:47:24,630 بنابراین اگر در هر نقطه ای در زمان '،' B در دمای مقادیر مجزا یا چیزی، 500 00:47:24,630 --> 00:47:30,680 سپس آن را از رفتن به مکان های مجزا در حافظه است، اما این درست است که 501 00:47:30,680 --> 00:47:34,800 بسیاری از متغیرهای محلی هستند که فقط در ثبات وجود داشته باشد وجود دارد. 502 00:47:34,800 --> 00:47:44,370 که در این صورت، آن را به حافظه هرگز قرار داده است، و بنابراین شما در حال هدر رفتن حافظه هرگز. 503 00:47:44,370 --> 00:47:58,620 باشه. آخرین سوال کمی بیشتر است. 504 00:47:58,620 --> 00:48:04,850 بنابراین در اینجا، در این دستگاه CS50، یک فرهنگ لغت وجود دارد. 505 00:48:04,850 --> 00:48:12,390 و دلیل آن این است زیرا [B66] یک بررسی کننده غلط املایی که در آن شما می شود به نوشتن است 506 00:48:12,390 --> 00:48:15,780 با استفاده از جداول هش و یا تلاش می کند و یا برخی از ساختمان داده است. 507 00:48:15,780 --> 00:48:22,660 شما در حال رفتن به نوشتن یک بررسی کننده غلط املایی، و شما در حال رفتن به استفاده از این فرهنگ لغت برای انجام این کار است. 508 00:48:22,660 --> 00:48:28,280 اما برای این مشکل، ما فقط به نگاه کردن به دیدن اگر یک کلمه در فرهنگ لغت است. 509 00:48:28,280 --> 00:48:31,250 بنابراین به جای ذخیره سازی فرهنگ لغت کل در برخی از ساختمان داده 510 00:48:31,250 --> 00:48:35,180 و پس از آن بیش از یک سند را که به دنبال دیدن اگر هر چیزی را به اشتباه، 511 00:48:35,180 --> 00:48:38,490 ما فقط می خواهید برای پیدا کردن 1 کلمه است. بنابراین ما فقط می تواند بیش از اسکن کل فرهنگ لغت 512 00:48:38,490 --> 00:48:44,300 و ما کلمه در فرهنگ لغت کل اگر هرگز، و سپس آن را در آنجا نبود. 513 00:48:44,300 --> 00:48:52,150 اگر ما در طول کل فرهنگ لغت اسکن و کلمه، پس از آن ما خوب است، ما آن را در بر داشت. 514 00:48:52,150 --> 00:48:56,580 این گزارش می گوید که در اینجا ما می خواهیم برای شروع به دنبال در تابع کنترل فایل C، 515 00:48:56,580 --> 00:48:59,930 از آنجایی که ما می خواهیم به خواندن فرهنگ لغت، 516 00:48:59,930 --> 00:49:07,680 اما من به اشاره در اینجا به عنوان که توابع شما باید از فکر می کنم. 517 00:49:07,680 --> 00:49:11,510 من آنها را در فضاهای ارسال. 518 00:49:11,510 --> 00:49:20,490 بنابراین مهمترین شما می خواهید به F باز و پس از آن، به ناچار، F بسته نگاه کنید، 519 00:49:20,490 --> 00:49:26,540 خواهد شد که در پایان برنامه های خود را، و F F اسکن. 520 00:49:26,540 --> 00:49:31,060 شما همچنین می توانید F خواندن استفاده کنید، اما احتمالا شما نمی خواهید به 521 00:49:31,060 --> 00:49:34,200 چرا که - شما پایان کار نبود تا نیاز است که. 522 00:49:34,200 --> 00:49:41,880 F اسکن F چیزی است که شما در حال رفتن به استفاده از فرهنگ لغت برای اسکن. 523 00:49:41,880 --> 00:49:46,370 و بنابراین شما لازم نیست برای کد کردن راه حل، فقط سعی کنید و مثل شبه کد راه خود را 524 00:49:46,370 --> 00:50:05,200 به یک راه حل، و پس از آن خواهیم بحث در مورد آن است. 525 00:50:05,200 --> 00:50:14,110 و در واقع، از آنجایی که من در حال حاضر به شما این، اگر شما به هر ترمینال و یا پوسته لوازم خود را، 526 00:50:14,110 --> 00:50:18,250 من می خواهم - من معمولا - اگر شما را دیده اند، هنوز رتبهدهی نشده است، من نمی دانم اگر شما در کلاس، 527 00:50:18,250 --> 00:50:23,490 اما مرد، به طوری که صفحات مرد، برای نگاه کردن به تقریبا هر تابع بسیار مفید است. 528 00:50:23,490 --> 00:50:27,330 بنابراین من می تواند انجام دهد، مانند، F مرد، اسکن F. 529 00:50:27,330 --> 00:50:32,300 این است که در حال حاضر اطلاعات در مورد خانواده F اسکن از توابع است. 530 00:50:32,300 --> 00:50:37,070 من نیز می تواند F مرد، باز، انجام دهند و که به من جزئیات آن را. 531 00:50:37,070 --> 00:50:40,750 بنابراین اگر شما می دانید چه عملکرد شما با استفاده از، و شما در حال خواندن کد 532 00:50:40,750 --> 00:50:43,000 و شما می بینید برخی از عملکرد و شما، مانند "چه می کند این کار را انجام دهند؟" 533 00:50:43,000 --> 00:50:45,280 فقط انسان است که نام تابع. 534 00:50:45,280 --> 00:50:47,340 از نمونه های عجیب و غریب یک زن و شوهر وجود دارد که در آن شما ممکن است مجبور به گفتن نیست 535 00:50:47,340 --> 00:50:51,620 دوست دارم. مرد 2 که نام تابع، یا انسان 3 که نام تابع، 536 00:50:51,620 --> 00:50:58,230 اما شما فقط مجبور به انجام این کار اگر انسان نام تابع اتفاق نمی افتد اولین بار به کار است. 537 00:50:58,230 --> 00:51:03,010 [دانشجو] بنابراین من خواندن این صفحه را برای مرد باز است، اما من هنوز در مورد نحوه استفاده از آن و برنامه اشتباه گرفته شده است. 538 00:51:03,010 --> 00:51:06,170 باشه. بسیاری از صفحات مرد کمتر از مفید است. 539 00:51:06,170 --> 00:51:08,470 آنها بیشتر کمک کننده باشند اگر شما در حال حاضر می دانیم که آنچه انجام می دهند 540 00:51:08,470 --> 00:51:12,670 و سپس شما فقط باید به خاطر داشته باشید منظور از استدلال و یا چیزی است. 541 00:51:12,670 --> 00:51:17,640 یا آنها می توانند به شما یک دید کلی بدهد، اما برخی از آنها بسیار سخت و طاقت فرسا هستند. 542 00:51:17,640 --> 00:51:22,220 مانند F F اسکن، نیز می باشد. این به شما می دهد اطلاعات را برای تمام این توابع، 543 00:51:22,220 --> 00:51:28,120 و 1 خط پایین اینجا اتفاق می افتد گفت: "F F اسکن می خواند از نقطه نظر رشته یا جریان است." 544 00:51:28,120 --> 00:51:32,360 اما F باز کنید. بنابراین، چگونه می توانیم با استفاده از F باز است؟ 545 00:51:32,360 --> 00:51:38,470 این ایده از یک برنامه است که نیاز به انجام این کار فایل I / O است که 546 00:51:38,470 --> 00:51:45,070 برای بار اول شما باید برای باز کردن فایل شما می خواهید برای انجام کارهای با، و به ناچار، 547 00:51:45,070 --> 00:51:51,220 خواندن چیزهایی که از آن فایل و چیزهای با آنها است. 548 00:51:51,220 --> 00:51:55,350 F باز کردن آن چیزی است که ما از آن برای باز کردن فایل می باشد. 549 00:51:55,350 --> 00:52:04,190 چیزی که ما به عقب بر گردیم، پس چه فایل ما می خواهیم برای باز کردن، آن را به ما می دهد - 550 00:52:04,190 --> 00:52:11,970 در اینجا آن را می گوید "/ کاربر / سهم / DICT / کلمه است." 551 00:52:11,970 --> 00:52:16,740 این فایل که ما می خواهیم برای باز کردن است، و ما می خواهیم آن را باز کنید - 552 00:52:16,740 --> 00:52:21,440 ما باید به طور واضح مشخص کنید که آیا ما می خواهیم برای باز کردن آن را به خواندن و یا اگر ما می خواهیم برای باز کردن آن را به نوشتن. 553 00:52:21,440 --> 00:52:26,490 یک زن و شوهر از ترکیبات و مواد وجود دارد، اما ما می خواهیم برای باز کردن این برای خواندن. 554 00:52:26,490 --> 00:52:29,380 ما می خواهیم به خواندن از فایل. 555 00:52:29,380 --> 00:52:34,290 پس چه چیزی این بازگشت؟ این تابع فایل های ستاره (*)، 556 00:52:34,290 --> 00:52:37,260 و من فقط همه چیز را در F متغیر است، به طوری * را نشان می دهد، 557 00:52:37,260 --> 00:52:40,840 باز هم، آن یک اشاره گر است، اما ما نمی خواهیم برای مقابله با اشاره گر است. 558 00:52:40,840 --> 00:52:46,470 شما می توانید از F فکر می کنم به عنوان، F است که در حال حاضر متغیر شما قصد استفاده از فایل به نمایندگی. 559 00:52:46,470 --> 00:52:49,850 بنابراین اگر شما می خواهید از فایل به عنوان خوانده شده، شما را از F. 560 00:52:49,850 --> 00:52:54,820 اگر شما می خواهید برای بستن فایل، اف به شما نزدیک است. 561 00:52:54,820 --> 00:53:00,350 بنابراین در پایان این برنامه زمانی که ما به ناچار می خواهید برای بستن پرونده، چه باید انجام دهید؟ 562 00:53:00,350 --> 00:53:06,750 ما می خواهیم برای بستن F. 563 00:53:06,750 --> 00:53:12,600 بنابراین در حال حاضر فایل تابع گذشته است که ما قصد داریم که مایل به استفاده از اسکن F، F F اسکن است. 564 00:53:12,600 --> 00:53:20,930 و آنچه را که می کند این است که آن را بر روی فایل به دنبال یک الگوی برای مطابقت با اسکن. 565 00:53:20,930 --> 00:53:39,100 در حال جستجو در صفحه مرد در اینجا، ما می بینیم نوع int F F اسکن، چشم پوشی مقدار بازگشتی در حال حاضر است. 566 00:53:39,100 --> 00:53:45,230 بحث اول این است که جریان * فایل، پس آرگومان اول ما در حال رفتن به خواهید به تصویب F. 567 00:53:45,230 --> 00:53:47,900 ما در حال اسکن بیش از F. 568 00:53:47,900 --> 00:53:53,680 آرگومان دوم یک رشته فرمت است. 569 00:53:53,680 --> 00:53:58,310 من به شما یک رشته فرمت را در حال حاضر. 570 00:53:58,310 --> 00:54:05,180 من فکر می کنم ما اتفاق می افتد می گویند، 127s \ N، بسیاری از که غیر ضروری است. 571 00:54:05,180 --> 00:54:12,490 این ایده از آنچه که رشته فرمت، این است که شما می توانید از F اسکن به عنوان مقابل از F چاپ فکر می کنم. 572 00:54:12,490 --> 00:54:17,160 بنابراین f چاپ، اف چاپ ما نیز استفاده از این نوع پارامتر فرمت 573 00:54:17,160 --> 00:54:25,000 اما در F چاپ آنچه که ما در حال انجام است - اجازه دهید نگاهی به معادل. 574 00:54:25,000 --> 00:54:32,550 بنابراین f، چاپ و در واقع اف چاپ F، که در آن استدلال اول است برای رفتن به F نیز وجود دارد. 575 00:54:32,550 --> 00:54:40,980 هنگامی که شما نسخه قابل چاپ F، ما می توانیم چیزی مشابه این بگویید، "چاپ 127s \ N" و پس از آن اگر ما تصویب آن برخی از رشته، 576 00:54:40,980 --> 00:54:44,050 آن را برای چاپ رشته و سپس یک خط جدید است. 577 00:54:44,050 --> 00:54:49,690 127 به معنای، من کاملا مطمئن هستم، اما من خودم رو محدود به آن هرگز، 578 00:54:49,690 --> 00:54:52,470 شما حتی نمی نیاز به گفتن '127 'در F چاپ، 579 00:54:52,470 --> 00:54:57,090 اما آنچه در آن به معنی این است که از چاپ 127 کاراکتر اول است. 580 00:54:57,090 --> 00:54:59,350 بنابراین من کاملا مطمئن هستم که این مورد است. شما می توانید برای گوگل است. 581 00:54:59,350 --> 00:55:03,000 اما در یکی از بعد من تقریبا مثبت به این معنی که. 582 00:55:03,000 --> 00:55:08,880 پس این است که چاپ 127 حرف اول، به دنبال یک خط جدید است. 583 00:55:08,880 --> 00:55:14,680 F اسکن F در حال حاضر، به جای نگاه کردن به یک متغیر و چاپ آن، 584 00:55:14,680 --> 00:55:22,620 آن را که در برخی از رشته نگاه کنید، و ذخیره به الگوی متغیر است. 585 00:55:22,620 --> 00:55:26,360 اجازه دهید در واقع استفاده از F اسکن در مثال های مختلف. 586 00:55:26,360 --> 00:55:31,670 بنابراین اجازه دهید می گویند که ما تا به حال برخی از نوع int x = 4، 587 00:55:31,670 --> 00:55:41,110 و ما می خواستیم برای ایجاد یک رشته ساخته شده از - می خواستم برای ایجاد رشته 588 00:55:41,110 --> 00:55:44,250 که بود، این خواهد آمد تا خیلی بعد، 589 00:55:44,250 --> 00:55:49,020 چیزی که درست مثل 4.JPG. 590 00:55:49,020 --> 00:55:51,870 بنابراین این ممکن است یک برنامه ای که در آن شما خواهد شمارنده مجموع، 591 00:55:51,870 --> 00:55:56,420 خلاصه مقابله با من، و شما می خواهید برای ذخیره کردن یک دسته از تصاویر. 592 00:55:56,420 --> 00:56:02,430 بنابراین شما می خواهید به نجات i.jpg، جایی که من برخی از تکرار از حلقه خود را. 593 00:56:02,430 --> 00:56:05,500 پس چگونه این رشته که برای JPEG ما را؟ 594 00:56:05,500 --> 00:56:11,720 اگر شما می خواهید به چاپ 4.JPG، ما فقط می تواند اف چاپ، d.jpg٪ می گویند، 595 00:56:11,720 --> 00:56:14,410 و پس از آن خواهد بود که برای JPEG چاپ. 596 00:56:14,410 --> 00:56:20,050 اما اگر ما می خواهیم در به صرفه جویی 4.JPG رشته، ما استفاده از F اسکن. 597 00:56:20,050 --> 00:56:30,860 بنابراین رشته ها - در واقع ما نمی توانند - شخصیت، کاراکتر ها، اجازه دهید به 100. 598 00:56:30,860 --> 00:56:35,400 بنابراین من فقط به اعلام برخی از مجموعه ای از 100 کاراکتر، 599 00:56:35,400 --> 00:56:39,830 و این چیزی است که ما به ناچار برای رفتن به ذخیره سازی که JPEG شوید. 600 00:56:39,830 --> 00:56:47,920 بنابراین ما در حال رفتن به استفاده از F اسکن، و فرمت، چگونه ما را d.jpg٪ می گویند 601 00:56:47,920 --> 00:56:54,980 به منظور چاپ 4.JPG، فرمت این است که رفتن به d.jpg٪. 602 00:56:54,980 --> 00:57:04,020 فرمت d.jpg٪، آنچه ما می خواهیم برای جایگزینی D٪ با X است، 603 00:57:04,020 --> 00:57:06,590 و در حال حاضر ما نیاز به ذخیره آن رشته در جایی. 604 00:57:06,590 --> 00:57:12,500 و جایی که ما در حال رفتن به مغازه های این رشته در آرایه. 605 00:57:12,500 --> 00:57:21,640 بنابراین بعد از این خط از کد، ها، اگر ما نسخه قابل چاپ F، S٪ از ثانیه متغیر، 606 00:57:21,640 --> 00:57:26,280 آن را به چاپ 4.JPG. 607 00:57:26,280 --> 00:57:38,930 بنابراین F اسکن F همان اسکن F است، جز در حال حاضر آن را به دنبال بیش از این فایل 608 00:57:38,930 --> 00:57:43,600 برای آنچه که برای ذخیره در S است. 609 00:57:43,600 --> 00:57:46,160 این چیزی است که بحث گذشته است برای رفتن به. 610 00:57:46,160 --> 00:57:54,170 ما می خواهیم به فروشگاه اینترنتی - "خانواده F اسکن اسکن از توابع در هر دو با توجه به فرمت که در زیر سعی شده است. 611 00:57:54,170 --> 00:58:02,450 اگر هر یک از آنها در نقاط محل ذخیره می شود، شما ممکن است بازگشت - " 612 00:58:02,450 --> 00:58:12,910 نه، ما ممکن است خوب باشد. اجازه دهید من فکر می کنم برای یک ثانیه. 613 00:58:12,910 --> 00:58:26,350 بنابراین اسکن F نمی کند - چی عملکرد کند که؟ 614 00:58:26,350 --> 00:58:31,650 بنابراین اسکن F را به یک عدد صحیح و نقطه JPG. 615 00:58:31,650 --> 00:58:43,490 رفتن به [mumbles]. 616 00:58:43,490 --> 00:58:49,360 ذخیره متغیر int در رشته نوع int C. 617 00:58:49,360 --> 00:58:55,940 است این متغیر، یا آنچه که این تابع نامیده می شود؟ 618 00:58:55,940 --> 00:59:04,950 بله. That's - بله. پس آنچه که من تعریف را به شما قبل از اف چاپ 619 00:59:04,950 --> 00:59:09,820 که - است که حس می کند بسیار بیشتر است، به همین دلیل من گفت که خیلی بیشتر شبیه به F چاپ. 620 00:59:09,820 --> 00:59:14,700 اسکن F نوع مانند F چاپ، اما اف نسخه قابل چاپ در حال رفتن به آن را اسکن 621 00:59:14,700 --> 00:59:17,510 و جایگزین کردن متغیر و در حال حاضر آن را در یک رشته ذخیره. 622 00:59:17,510 --> 00:59:19,620 به جای چاپ آن، آن را به فروشگاه در یک رشته است. 623 00:59:19,620 --> 00:59:25,070 به طوری که به طور کامل نادیده گرفت. شما هنوز هم می تواند تعیین فرمت و فکر می کنم که می خواهم از F چاپ. 624 00:59:25,070 --> 00:59:34,510 بنابراین در حال حاضر، اگر ما می خواستیم به انجام کار 4.JPG، ما را اف چاپ، انجام X از این. 625 00:59:34,510 --> 00:59:38,520 پس چه اسکن F در حال انجام است - چه به سوال شما خواهد بود؟ 626 00:59:38,520 --> 00:59:40,820 [دانشجو] من فقط در مورد آنچه که ما در حال تلاش برای انجام درست اینجا اشتباه گرفته 627 00:59:40,820 --> 00:59:43,450 که با JPEG. که 1 زمان بیشتری را توضیح دهید؟ 628 00:59:43,450 --> 00:59:52,710 بنابراین این - این کمتر relevent F اسکن F در حال حاضر، امیدوارم، از آن خواهد شد کراوات دوباره در نوعی از راه است. 629 00:59:52,710 --> 01:00:02,240 اما آنچه من در ابتدا قصد داشت به نشان می دهد - این است که در واقع به طور مستقیم مربوط به این [؟ F5] 630 01:00:02,240 --> 01:00:08,520 شما در حال رفتن به با استفاده از اف چاپ، که در آن، می گویند ما دارای 100 عکس، 631 01:00:08,520 --> 01:00:13,630 و شما می خواهید به خواندن تصویر 1.JPG 2.JPG، 3.JPG. 632 01:00:13,630 --> 01:00:21,520 لذا به منظور انجام این کار، شما نیاز به F باز، و سپس شما باید در رشته ای که شما می خواهید برای باز کردن عبور. 633 01:00:21,520 --> 01:00:30,020 بنابراین ما می خواهیم برای باز کردن 1.JPG، به منظور ایجاد رشته است که 1.JPG، 634 01:00:30,020 --> 01:00:37,660 F چاپ ما انجام می دهیم٪ d.jpg ما برای اعضای هیات من = 0 انجام نیست. 635 01:00:37,660 --> 01:00:46,580 کمتر از 40، من + +. 636 01:00:46,580 --> 01:00:51,130 بنابراین s چاپ F٪ d.jpg از من است. 637 01:00:51,130 --> 01:00:56,320 بنابراین بعد از این خط، در حال حاضر متغیر یا آرایه رفتن به 1.JPG. 638 01:00:56,320 --> 01:01:10,610 یا، 0.jpg، 1.JPG 2.JPG. و بنابراین ما می توانید برای باز کردن، به نوبه خود، هر تصویر برای خواندن. 639 01:01:10,610 --> 01:01:19,550 به طوری که آنچه چاپ F کند. آیا به نظر شما چیست نسخه قابل چاپ F در حال حاضر انجام؟ 640 01:01:19,550 --> 01:01:25,720 [دانشجو] خوب، پس از آن مصرف - آن را ایجاد یک رشته، something.jpg، و سپس ذخیره آن است. 641 01:01:25,720 --> 01:01:30,360 بله. ایجاد - این یکی دیگر از رشته فرمت، درست مثل F F اسکن و چاپ، 642 01:01:30,360 --> 01:01:37,530 که در آن درج همه متغیرها را به آرگومان دوم، ممکن است به عنوان مخالف به من. 643 01:01:37,530 --> 01:01:42,280 شاید - منظورم این است، که در این مورد است. اما به هر منظور از استدلال است. 644 01:01:42,280 --> 01:01:45,440 این که برای وارد کردن تمام متغیرها را در رشته فرمت 645 01:01:45,440 --> 01:01:52,250 و سپس به بافر ما فروشگاه؛ ما تماس بگیرید که یک بافر، از آن جایی که ما در حال ذخیره سازی رشته ای است. 646 01:01:52,250 --> 01:02:00,750 بنابراین ما در حال ذخیره سازی در داخل از S رشته به درستی فرمت شده، D٪ با 4 جایگزین شده است. 647 01:02:00,750 --> 01:02:08,080 [دانشجو] بنابراین اگر ما این است، F متغیر فقط برای رفتن به reassigned؟ 648 01:02:08,080 --> 01:02:18,110 بله. بنابراین ما باید F اولیه قبل از انجام این کار نزدیک است. 649 01:02:18,110 --> 01:02:22,810 اما - و پس از آن نیز، اگر F باز کردن در اینجا وجود ندارد، پس از آن ما خواهد بود نیاز به گفتن نیست - 650 01:02:22,810 --> 01:02:29,280 آره. اما این یک صد فایل های مختلف را باز کنید. 651 01:02:29,280 --> 01:02:37,360 [دانشجو] اما ما نمی خواهد قادر به دسترسی و یا - خوب. 652 01:02:37,360 --> 01:02:44,230 باشه. بنابراین اسکن F، F، F اسکن نوع از همان ایده است، 653 01:02:44,230 --> 01:02:53,610 اما به جای، به جای ذخیره سازی آن را به یک رشته، آن را بیشتر شبیه به شما در حال حاضر 654 01:02:53,610 --> 01:03:02,420 رفتن بیش از یک نیش و تطبیق الگو در مقابل این رشته و ذخیره نتایج به متغیر. 655 01:03:02,420 --> 01:03:11,290 شما می توانید F به اسکن به بیش از چیزی شبیه به 4.JPG تجزیه، و ذخیره در 4 عدد صحیح را در مجموع بین المللی X استفاده کنید. 656 01:03:11,290 --> 01:03:13,430 این چیزی است که ما می توانیم اسکن F برای استفاده است. 657 01:03:13,430 --> 01:03:16,300 F اسکن F است برای انجام این کار در خط فرمان است. 658 01:03:16,300 --> 01:03:19,200 من در لیست نتایج نمایش داده میشود، در واقع کاملا مطمئنم که این همان چیزی است که کتابخانه CS50 می کند. 659 01:03:19,200 --> 01:03:29,050 بنابراین، هنگامی که به شما می گویند، "نوع int،" آن را اسکن F-نشستند بر - F اسکن شما می توانید ورودی کاربر است. 660 01:03:29,050 --> 01:03:34,670 F اسکن F است برای انجام کار مشابه، اما با استفاده از یک فایل را اسکن. 661 01:03:34,670 --> 01:03:41,090 بنابراین در اینجا، ما در حال اسکن بیش از این فایل. 662 01:03:41,090 --> 01:03:45,460 الگوی ما در حال تلاش برای مطابقت با برخی از رشته است که به طول 127 کاراکتر است 663 01:03:45,460 --> 01:03:48,100 به دنبال یک خط جدید 664 01:03:48,100 --> 01:03:54,770 بنابراین من کاملا مطمئنم که ما حتی می توانست بگوید "مسابقه ها،" از آنجا که در فرهنگ لغت 665 01:03:54,770 --> 01:03:57,770 ما اتفاق می افتد که ما تضمین هیچ کلمه ای است که طولانی است، 666 01:03:57,770 --> 01:04:03,310 و همچنین F F اسکن، من فکر می کنم، در خط جدید جلوگیری از بدون توجه به آنچه. 667 01:04:03,310 --> 01:04:06,970 اما ما می خواهیم خط جدید در مسابقه، و - 668 01:04:06,970 --> 01:04:13,960 [دانشجو] اگر ما از خط جدید را شامل نمی شود، آن را نه پیدا کردن بخش هایی از یک کلمه؟ 669 01:04:13,960 --> 01:04:22,900 - هر - به دنبال در فرهنگ لغت - 670 01:04:22,900 --> 01:04:26,200 بنابراین در فرهنگ لغت، این ها همه حرف ما است. 671 01:04:26,200 --> 01:04:30,500 هر کدام در یک خط جدید است. 672 01:04:30,500 --> 01:04:32,510 اف اسکن شده است را انتخاب کنید تا این کلمه است. 673 01:04:32,510 --> 01:04:38,750 اگر ما خط جدید را شامل نمی شود، سپس آن را ممکن است که F اسکن بعدی فقط به خواندن خط جدید است. 674 01:04:38,750 --> 01:04:44,180 اما از جمله خط جدید و سپس فقط به خط جدید را نادیده گرفت. 675 01:04:44,180 --> 01:04:49,440 اما ما به بخشی از یک کلمه را هرگز، از آنجا که ما همیشه خواندن تا یک خط جدید، بدون توجه به آنچه. 676 01:04:49,440 --> 01:04:54,530 [دانشجو] اما چه می شود اگر شما جستجو برای کلمه "cissa،" مثل cissa. 677 01:04:54,530 --> 01:04:57,380 خواهد شد که آن را پیدا کنید، و می گویند که این یک بازی است؟ 678 01:04:57,380 --> 01:05:05,110 بنابراین در اینجا ما - آن را می خواند در - این است که در واقع یک نقطه خوب است. 679 01:05:05,110 --> 01:05:10,660 ما در حال حاضر با استفاده از هرگز - کلمه ما به دنبال اولین آرگومان خط فرمان است. 680 01:05:10,660 --> 01:05:16,460 بنابراین رشته، کلمه = ی argv 1. 681 01:05:16,460 --> 01:05:20,020 بنابراین رشته ما به دنبال ی argv 1 است. 682 01:05:20,020 --> 01:05:23,290 ما به دنبال یک کلمه در تمام در F اسکن ما نیست. 683 01:05:23,290 --> 01:05:28,030 آنچه ما با اسکن F انجام شد هر کلمه در فرهنگ لغت، 684 01:05:28,030 --> 01:05:34,320 و پس از آن هنگامی که که کلمه ای که ما در حال رفتن به استفاده از strcmp آنها را مقایسه کنید. 685 01:05:34,320 --> 01:05:39,210 ما قصد داریم برای مقایسه از کلمه ما و آنچه که ما فقط خواندن شوید. 686 01:05:39,210 --> 01:05:45,110 پس به ناچار، ما قصد داریم برای پایان دادن به انجام یک دسته از اسکن FS 687 01:05:45,110 --> 01:05:52,130 تا زمانی که خیلی اتفاق می افتد که F اسکن باز خواهد گشت - 688 01:05:52,130 --> 01:05:54,800 از آن خواهد شد تا زمانی که آن را به یک کلمه جدید همسان، بازگشت، 689 01:05:54,800 --> 01:06:01,360 و آن را به چیز دیگری را در اسرع وقت آن شکست خورده است برای مطابقت با کلمه بازگشت. 690 01:06:01,360 --> 01:06:08,440 ما در حال خواندن بر روی کل فرهنگ لغت، ذخیره سازی خط به خط هر کلمه را در ثانیه متغیر است. 691 01:06:08,440 --> 01:06:17,240 سپس ما در مقایسه با کلمه با S، و اگر مقایسه == 0، 692 01:06:17,240 --> 01:06:21,650 strcmp اتفاق می افتد را به 0 اگر یک مسابقه ساخته شده بود. 693 01:06:21,650 --> 01:06:31,510 بنابراین اگر آن را 0 بود، پس از آن ما می توانیم F، چاپ همسان، 694 01:06:31,510 --> 01:06:35,370 یا کلمه در فرهنگ لغت است، و یا هر آنچه که شما می خواهید به چاپ F. 695 01:06:35,370 --> 01:06:41,450 و پس از آن - ما نمی خواهیم به F نزدیک بارها و بارها. 696 01:06:41,450 --> 01:06:50,410 این نوع از چیزی که ما می خواهیم انجام دهیم این است، و ما نه فقط به کلمه در فرهنگ لغت به دنبال. 697 01:06:50,410 --> 01:06:56,660 بنابراین ما می توانیم آن، اگر ما می خواستیم برای الگوی خود را، cissa نگاه، مثل شما گفت که قبل از، 698 01:06:56,660 --> 01:07:00,260 اگر ما می خواستیم که برای الگو نگاه کنید، سپس آن را در مورد شکست 699 01:07:00,260 --> 01:07:08,010 زیرا که در واقع نه یک کلمه است، اما یکی از کلمات موجود در فرهنگ لغت اتفاق می افتد که در آن. 700 01:07:08,010 --> 01:07:13,560 پس از آن که این کلمه، مطابقت اما این زیر مجموعه ای از کلمه، کلمه ای است که به خودی خود نیست. 701 01:07:13,560 --> 01:07:17,250 اما این که چگونه ما در حال استفاده از آن نیست، ما در حال خواندن در هر کلمه 702 01:07:17,250 --> 01:07:19,740 و پس از آن در مقایسه کلمه که ما با آن کلمه است. 703 01:07:19,740 --> 01:07:25,780 بنابراین ما همواره در مقایسه کلمات کامل. 704 01:07:25,780 --> 01:07:29,620 من می توانم ارسال راه حل نهایی بعد. 705 01:07:29,620 --> 01:07:32,050 این نوع از نزدیک به جواب درست، من فکر می کنم. 706 01:07:32,050 --> 01:07:34,720 [نظر دانشجو، ناخوانا] 707 01:07:34,720 --> 01:07:40,870 اوه، من آیا خلاص شدن از شر آن قبل از؟ کاراکتر، من حدس می زنم ما گفت 127 - من فراموش می کنم آنچه را که بزرگترین است. 708 01:07:40,870 --> 01:07:44,100 ما فقط 128 انجام دهد، بنابراین در حال حاضر به اندازه کافی بلند است. 709 01:07:44,100 --> 01:07:46,570 ما نیاز نداریم به چاپ هر چیزی است. 710 01:07:46,570 --> 01:07:56,440 ما همچنین می خواهید به فایل های ما به بستن، و است که باید در مورد جواب درست باشد. 711 01:07:56,440 --> 01:07:59,440 CS50.TV