1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: این یک من، Zamyla است. 3 00:00:02,500 --> 00:00:06,910 امروز در ماریو، ما در حال رفتن به رسم هرم نیمه برای ماریو 4 00:00:06,910 --> 00:00:08,290 به صعود تا. 5 00:00:08,290 --> 00:00:11,570 >> بنابراین اجازه دهید بحث در مورد ما به کارهای را برای این مشکل است. 6 00:00:11,570 --> 00:00:13,610 ما در حال رفتن به می خواهم بی درنگ و اعتبار 7 00:00:13,610 --> 00:00:18,290 کاربر برای یک ورودی معتبر چگونه بالا آنها می خواهند هرم ماریو است. 8 00:00:18,290 --> 00:00:20,090 و پس از آن، ما در حال رفتن به آن را رسم. 9 00:00:20,090 --> 00:00:24,870 بنابراین اجازه دهید با باعث آغاز شده و اعتبار کاربر برای ورودی خود را. 10 00:00:24,870 --> 00:00:27,640 >> ما می توانیم با استفاده از را تابع CS50 کتابخانه 11 00:00:27,640 --> 00:00:31,160 از نوع int است که اطمینان حاصل شود که کاربر ورودی یک عدد صحیح است. 12 00:00:31,160 --> 00:00:35,730 هر عدد صحیح مثبت، منفی اعداد صحیح، عدد 0 تمام بازی منصفانه است. 13 00:00:35,730 --> 00:00:41,670 در غیر این صورت، کاربر خواهد شد به خواسته دوباره سعی کنید تا زمانی که ورودی یک عدد صحیح معتبر. 14 00:00:41,670 --> 00:00:44,210 در حال حاضر هر چند اعضای هیات مطلع می کند بسیاری از کار را برای ما 15 00:00:44,210 --> 00:00:46,730 در تضمین این که کاربران ما می دهد یک عدد صحیح، 16 00:00:46,730 --> 00:00:50,760 ما هنوز نیاز به درخواست برخی از محدودیت های اضافی بر روی آن. 17 00:00:50,760 --> 00:00:56,420 پس از همه، ما نمی توانیم ماریو نوردی، یک هرم نیمی از ارتفاع منفی 12. 18 00:00:56,420 --> 00:00:59,040 >> علاوه بر آن، مشخصات مسئله 19 00:00:59,040 --> 00:01:02,490 می گوید که ما فقط می توانیم اجازه ماریو به صعود 20 00:01:02,490 --> 00:01:06,940 یک هرم از ارتفاع بین 0 و 23. 21 00:01:06,940 --> 00:01:11,120 OK، به طوری که بدان معنی است که ما نیاز به طور مداوم سریع کاربر 22 00:01:11,120 --> 00:01:14,320 به ما یک معتبر را تعداد و تنها ادامه 23 00:01:14,320 --> 00:01:17,120 یک بار آنها به ما یک ارتفاع معتبر داده ام. 24 00:01:17,120 --> 00:01:18,720 چگونه ما آن را انجام دهیم؟ 25 00:01:18,720 --> 00:01:23,760 >> خب، فرآیندهای پیوسته ما را ایده loops-- چیزی انجام 26 00:01:23,760 --> 00:01:24,720 مکرر. 27 00:01:24,720 --> 00:01:28,220 یک حلقه در C به عنوان یک در حالی که حلقه که به طور مداوم 28 00:01:28,220 --> 00:01:33,480 اجرای بدنه حلقه تا زمانی که وضعیت داده ارزیابی واقعی. 29 00:01:33,480 --> 00:01:36,200 به محض این که شرایط به false ارزیابی، 30 00:01:36,200 --> 00:01:39,770 این برنامه به ادامه خواهد هر آنچه پس از آن می آید. 31 00:01:39,770 --> 00:01:43,180 بنابراین در حالی که حلقه ها یکی از راه های تضمین این که ما به طور مستمر 32 00:01:43,180 --> 00:01:45,320 سریع کاربر برای ورودی معتبر است. 33 00:01:45,320 --> 00:01:50,070 و زمانی که آنها به ما یک ورودی معتبر را، ما به هر آنچه بعدی می آید ادامه دهید. 34 00:01:50,070 --> 00:01:54,380 ما می دانیم که ما در حال رفتن به درخواست کاربر برای ورودی حداقل یک بار. 35 00:01:54,380 --> 00:01:59,200 بنابراین در حال حاضر ما به یک خواهر آمده در حالی که حلقه است، که در حالی که حلقه. 36 00:01:59,200 --> 00:02:02,650 >> آیا در حالی که حلقه را به اجرا بدنه حلقه حداقل یک بار. 37 00:02:02,650 --> 00:02:06,150 بنابراین بدون چک کردن وضعیت، آن را به بدنه حلقه اجرا کند. 38 00:02:06,150 --> 00:02:09,750 و پس از آن شرایط چک کنید و ببینید آیا به آن نیاز دارد تکرار می شود. 39 00:02:09,750 --> 00:02:13,080 این می آید در دستی هنگامی که ما در حال اعتبار ورودی کاربر. 40 00:02:13,080 --> 00:02:15,830 ما می دانیم که ما در حال رفتن به آنها را بپرسید حداقل یک بار. 41 00:02:15,830 --> 00:02:18,780 بنابراین یک در حالی که حلقه ممکن است چیزی شبیه این. 42 00:02:18,780 --> 00:02:20,090 ما یک عدد صحیح n. 43 00:02:20,090 --> 00:02:22,760 و داخل انجام در حالی که حلقه، ما بلافاصله 44 00:02:22,760 --> 00:02:24,750 سریع کاربر برای یک عدد صحیح. 45 00:02:24,750 --> 00:02:29,740 اگر n نامعتبر است، پس از آن خواهیم آنها را بی درنگ دوباره و دوباره و دوباره تا آنها 46 00:02:29,740 --> 00:02:31,820 ما که عدد صحیح معتبر است. 47 00:02:31,820 --> 00:02:37,440 در نهایت، یک بار n یک ورودی معتبر است، ما اقدام به بقیه برنامه های ما. 48 00:02:37,440 --> 00:02:41,830 >> بنابراین اجازه دهید رفتن به تنظیمات و چک چه شرایطی برای یک ورودی معتبر 49 00:02:41,830 --> 00:02:43,670 در حال رفتن به. 50 00:02:43,670 --> 00:02:48,090 ارتفاعات معتبر در حال رفتن به بین 0 و 23، فراگیر باشد. 51 00:02:48,090 --> 00:02:53,350 ارتفاع بنابراین نامعتبر در حال رفتن به کمتر از 0 یا بیش از 23. 52 00:02:53,350 --> 00:02:56,420 بنابراین به یاد داشته باشید به طراحی شرایط خود را با دقت، 53 00:02:56,420 --> 00:02:58,660 دانستن اینکه شرایط برای در حالی که حلقه 54 00:02:58,660 --> 00:03:01,470 باید در حالی که N نامعتبر است. 55 00:03:01,470 --> 00:03:05,080 در حال حاضر این است که نمی شود عبارت بولی ساده است. 56 00:03:05,080 --> 00:03:07,630 ما قصد داریم به باید به ترکیب دو عبارت مختلف 57 00:03:07,630 --> 00:03:09,900 به طیف وضعیت ما. 58 00:03:09,900 --> 00:03:13,290 >> بنابراین اجازه دهید فقط در یک جدول درستی من نگاه در حال حاضر شما با توجه به اشاره است که ما 59 00:03:13,290 --> 00:03:15,200 رفتن به خرید و فروش با دو Booleans شود. 60 00:03:15,200 --> 00:03:19,620 بنابراین در اینجا یک جدول درستی جایی که من دو Booleans-- بولی 1 و 2. 61 00:03:19,620 --> 00:03:27,050 بنابراین ما باید این گزینه به منظور بررسی bool1 و bool2 یا bool1 یا bool2. 62 00:03:27,050 --> 00:03:31,980 و تنها زمانی درست است که هر دو خواهد شد Booleans می ارزیابی درست باشد، در حالی که همه 63 00:03:31,980 --> 00:03:37,280 و یا تا زمانی درست خواهد بود به عنوان یکی از دو Booleans می ارزیابی واقعی. 64 00:03:37,280 --> 00:03:41,450 خوب، پس یک لحظه، مکث این ویدئو و هضم این جدول حقیقت است. 65 00:03:41,450 --> 00:03:42,930 من همینجا منتظرت. 66 00:03:42,930 --> 00:03:45,760 هنگامی که شما به پشت، و اگر شما می توانید قطعه با هم 67 00:03:45,760 --> 00:03:51,910 یک عبارت بولی برای شما شرایط N بودن یک ورودی نامعتبر است. 68 00:03:51,910 --> 00:03:54,420 >> بنابراین در حال حاضر که ما ورودی کاربر معتبر، اجازه دهید 69 00:03:54,420 --> 00:03:58,710 جلو بروید و صحبت در مورد چگونه ما ممکن است نیمه هرم قرعه کشی. 70 00:03:58,710 --> 00:04:03,410 در اینجا در این ویرایشگر متن ساده، من یک هرم سمت چپ تراز وسط قرار دارد کشیده ام. 71 00:04:03,410 --> 00:04:07,050 اما ما می دانیم که ما نیاز ما هرم به سمت راست تراز وسط قرار دارد. 72 00:04:07,050 --> 00:04:08,650 پس چگونه ممکن است من این کار را؟ 73 00:04:08,650 --> 00:04:11,440 خوب، من ممکن است سعی کنید به فشار همه چیز را به سمت 74 00:04:11,440 --> 00:04:14,880 تنها با قرار دادن یک شخصیت در میان است. 75 00:04:14,880 --> 00:04:16,779 و پس از آن، برای بعدی خط، من قصد دارم به قرار دادن 76 00:04:16,779 --> 00:04:20,970 برخی از شخصیت های بیشتر به آن فشار همراه، و further-- غیره و غیره forth-- 77 00:04:20,970 --> 00:04:23,360 تا زمانی که من راست تراز وسط قرار هرم. 78 00:04:23,360 --> 00:04:27,780 بنابراین ما یک هرم راست چین، اما آن چه به نظر نه چندان بزرگ با نقطه. 79 00:04:27,780 --> 00:04:30,680 اما ما هنوز هم می خواهید به معتقدند که فاصله خوب است. 80 00:04:30,680 --> 00:04:35,260 بنابراین من قصد دارم به معنای واقعی کلمه قرار دادن برخی از فضاهای. 81 00:04:35,260 --> 00:04:39,420 >> به جای سه نقطه، من قرار دادن یک، دو، سه فاصله است. 82 00:04:39,420 --> 00:04:40,370 در خط دوم. 83 00:04:40,370 --> 00:04:42,640 من یکی، دو فضا را قرار داده است. 84 00:04:42,640 --> 00:04:45,370 و در یکی مانده به آخر خط، فقط یک فضا. 85 00:04:45,370 --> 00:04:48,290 و در اینجا من یک هرم راست تراز وسط قرار. 86 00:04:48,290 --> 00:04:52,170 از انجام به عنوان مثال در متن ویرایشگر، ما یک ایده برای الگوی 87 00:04:52,170 --> 00:04:54,590 که ما را به منظور جلب نیمه هرم. 88 00:04:54,590 --> 00:04:58,080 برای هر سطر، کاری که ما کردیم این است که ما برخی از فضاهای تایپ می کنید، 89 00:04:58,080 --> 00:05:00,170 و پس از آن تایپ برخی رشته هش را، و سپس تایپ 90 00:05:00,170 --> 00:05:03,020 کلید را وارد کنید، که در حال ایجاد یک خط جدید. 91 00:05:03,020 --> 00:05:07,770 بنابراین در حال حاضر که ما که، اجازه دهید به یک الگوی یک قدم بیشتر و پیدا کردن. 92 00:05:07,770 --> 00:05:10,170 >> بنابراین من قصد دارم برای گفتن، برای منافع این مثال، 93 00:05:10,170 --> 00:05:12,480 ما در حال برخورد با ارتفاع 8. 94 00:05:12,480 --> 00:05:17,100 سطر اول است که به دو رشته هش را که به شرح زیر هفت فاصله است. 95 00:05:17,100 --> 00:05:20,020 second-- سه رشته هش، شش فاصله است. 96 00:05:20,020 --> 00:05:24,260 سوم row-- چهار رشته هش، پنج spaces-- غیره و غیره 97 00:05:24,260 --> 00:05:26,350 تا زمانی که ما به ردیف n ام است. 98 00:05:26,350 --> 00:05:31,540 پس، از شما می خواهم برای ردیف n ام، چگونه بسیاری از رشته هش را می خواهیم به 99 00:05:31,540 --> 00:05:33,120 و چگونه بسیاری از فضاهای؟ 100 00:05:33,120 --> 00:05:37,000 پس از آن تا به شما برای کشف کردن فرمول برای نشان که چگونه بسیاری از رشته هش 101 00:05:37,000 --> 00:05:42,020 و چگونه بسیاری از فضاهای مورد نیاز برای ردیف NTH زمانی که شما چند ارتفاع. 102 00:05:42,020 --> 00:05:46,060 >> در حال حاضر زمانی که شما بدانند این، مراقب باشید که چگونه شما در حال نمایه سازی. 103 00:05:46,060 --> 00:05:49,170 چه منظورم این است که این است که در زندگی روزمره همه ما 104 00:05:49,170 --> 00:05:51,540 شروع به شمارش، معمولا با 1. 105 00:05:51,540 --> 00:05:55,950 اما در CS50 و در علم کامپیوتر به طور کلی، ما 0 نمایه شده است. 106 00:05:55,950 --> 00:06:00,620 بنابراین در ردیف اول می شود عددی از 0 به 1 مخالف است. 107 00:06:00,620 --> 00:06:04,550 مراقب باشید از این زمانی که شما تلاش برای کشف کردن الگوی خود را. 108 00:06:04,550 --> 00:06:07,570 بنابراین در حال حاضر اجازه بازگشت به چگونه ما قصد داریم به منظور جلب هرم است. 109 00:06:07,570 --> 00:06:12,300 برای هر سطر، ما در حال رفتن به خواهید برای چاپ فضاهای، چاپ رشته هش را، 110 00:06:12,300 --> 00:06:14,050 و سپس چاپ یک خط جدید. 111 00:06:14,050 --> 00:06:19,160 اشاره در اینجا است که کلمه "برای" هر سطر. 112 00:06:19,160 --> 00:06:21,470 در C، ما باید یک ساختار نام یک حلقه for، 113 00:06:21,470 --> 00:06:25,250 است که از تشکیل دهی اولیه، وضعیت، به روز رسانی، 114 00:06:25,250 --> 00:06:26,790 و بدن از حلقه است. 115 00:06:26,790 --> 00:06:31,360 >> می گویند من می خواهم بگویم، سلام جهان، 50 بار، من برای حلقه 116 00:06:31,360 --> 00:06:32,880 چیزی شبیه به این. 117 00:06:32,880 --> 00:06:35,480 من عدد صحیح به 0 مقداردهی اولیه. 118 00:06:35,480 --> 00:06:38,230 این وضعیت این است که من کمتر از 50 است. 119 00:06:38,230 --> 00:06:42,350 و پس از آن به روز رسانی من فقط افزایش من توسط یکی در هر زمان. 120 00:06:42,350 --> 00:06:45,140 ما همچنین می توانیم برای حلقه استفاده به تکرار بیش از همه چیز. 121 00:06:45,140 --> 00:06:47,820 توجه داشته باشید در اینجا چگونه ما ندارد سخت کدگذاری یک عدد، 122 00:06:47,820 --> 00:06:51,820 بلکه متغیر قرار داده ارتفاع به جای به این بیماری است. 123 00:06:51,820 --> 00:06:56,420 پس چه من در اینجا انجام است من تکرار بیش از هر ردیف از هرم. 124 00:06:56,420 --> 00:07:00,160 من می توانم چیزی برای هر انجام ردیف در داخل بدنه حلقه است. 125 00:07:00,160 --> 00:07:02,350 >> آنچه که ما انجام در داخل بدن از حلقه؟ 126 00:07:02,350 --> 00:07:07,120 خوب، همانطور که ما قبلا هم گفتم، ما در حال چاپ فضاها و ما در حال چاپ رشته هش 127 00:07:07,120 --> 00:07:09,480 و ما در حال چاپ یک خط جدید. 128 00:07:09,480 --> 00:07:11,950 بنابراین بیرونی من برای حلقه خواهد شد مثل این. 129 00:07:11,950 --> 00:07:15,070 من تکرار بیش از هر سطر هرم، با استفاده از، 130 00:07:15,070 --> 00:07:18,890 در این مورد، ارتفاع به عنوان متغیر که ارتفاع هرم ذخیره می کند. 131 00:07:18,890 --> 00:07:22,870 در داخل بدن از آن حلقه، من رفتن به چاپ فضاهای بارها و بارها، چاپ 132 00:07:22,870 --> 00:07:26,730 رشته هش بارها و بارها، و سپس چاپ یک خط جدید. 133 00:07:26,730 --> 00:07:31,010 >> بنابراین در حال حاضر، با استفاده از تمام مفاهیمی است که من در مورد در این پیاده روی را از طریق صحبت کردیم، 134 00:07:31,010 --> 00:07:35,210 شما باید قادر به سریع می شود کاربران برای ورودی، اعتبار است که ورودی، 135 00:07:35,210 --> 00:07:37,370 و سپس قرعه کشی نیمه هرم. 136 00:07:37,370 --> 00:07:41,510 >> نام من ... است Zamyla است، و این CS50 است. 137 00:07:41,510 --> 00:07:43,167