حالا که دیدید چطور می‌توان از حلقه وایل به‌عنوان شمارنده استفاده کرد، بیایید از این حلقه وایل جایی استفاده کنیم که واقعاً می‌درخشد
isgood و آن جایی است که یا یک عبارت بولی دارید، مثلاً یک متغیر بولی به .
false برای مثال، بیایید مقدار آن را برابر قرار بدهیم و بعد از در اینجا استفاده کنیم.
پس یا مستقیم از یک بولین در اینجا استفاده می‌کنید یا یک شرطی را می‌گذارید که ابتدا درست است،
اما داخل حلقه نادرست می‌شود whiles
بیایید اینجا یک مثال بزنیم.
فرض کنید من در اینجا مقدار isGood را روی false قرار می‌دهم.
و به طور پیش‌فرض مقدار آن روی true است.
پس کاری که این کد می‌کند این است که بررسی می‌کند آیا isGood برابر true است.
isGood و اگر بود، اجرا می‌شودtrue برابر
بعد این کد مقدار isGood را روی false می‌گذارد.
و بعد اجرای کد متوقف می‌شود، خب.
پس اجرای این عبارت متوقف می‌شود و چیزی برای نمایش باقی نمی‌ماند.
یعنی زندگی خوب است و ناگهان در خط هشت به دلیلی بد می‌شود.
خب.
پس کد ما قرار است بگوید "زندگی خوب است" و بعد از حلقه خارج شود.
خب، چطور می‌توانیم این را منطقی‌تر استفاده کنیم؟
چون این یک مثال خیلی بی‌خوده، درسته؟
اما فقط می‌خواستم یک مثال خیلی خیلی ساده بهتون نشون بدم.
خب، به جای این می‌توانیم یک رشته داشته باشیم.
بیایید اسمش را بگذاریم userChoice
و در ویدیوی بعدی یک مثال خیلی جالب بهتون نشون می‌دهم.
userChoiceاما اینجا فرض کنید باشد. console.readline برابر با
userChoice و حالا داریم از استفاده می‌کنیم.
userChoice می‌گوییم تا زمانی که باشد، هر چیزی که ."go" برابر
داخل آکولادهاست اجرا می‌شود
ولی باید مطمئن شویم که انتخاب کاربر تغییر کند.
برای همین می‌توانیم دوباره از دستور console.readLine استفاده کنیم تا ورودی کاربر را تغییر دهیم.
پس کاری که می‌خواهم انجام دهم این است که با یک Console.WriteLine شروع کنم و به کاربر
انتخاب «برو» یا «بمان» را بدهم.
یعنی «go» یا «stay» را وارد کنید، باشه؟
go اگر کاربر اجرا خواهد شد. while بگوید، این حلقه
و ما می‌گوییم «برو یک مایل»، باشه؟
و بعد می‌گوییم که البته می‌توانستیم چیزی مثل «walk» هم بگذاریم.
شاید آن بهتر می‌بود.
Console.WriteLine. اما اینجا من می‌نویسم
می‌پرسم: «می‌خوای ادامه بدی؟»
برای ادامه «go» را وارد کن، باشه؟
حالا اگر دوباره اجرا کنیم می‌بینیم می‌گوید «go» یا «stay» را وارد کنید.
پس اگر من «stay» وارد کنم، برنامه عملاً هیچ کاری انجام نمی‌دهد.
و بسته می‌شود.
پس می‌توانیم چیزی مثل «بالاخره تو ماندی» نمایش دهیم.
بیایید دوباره اجراش کنیم.
وارد کن: go یا stay.
من می‌نویسم: go.
برو یک مایل.
می‌خوای ادامه بدی؟
بله، برو.
می‌خواهم ادامه بدهم.
بله.
می‌خوای ادامه بدی؟
نه.
در نهایت تو ماندی.
پس می‌توانستیم وارد کنیم.
Stay.
ما می‌توانستیم هر چیزی که می‌خواستیم وارد کنیم.
«stay» لازم نبود دقیقاً یا چیز خاصی وارد کنم، چون این چیزی نیست که بررسی می‌کنیم.
ما برای «stay» بررسی نمی‌کنیم.
ما فقط «go» را بررسی می‌کنیم.
و تا وقتی که «go» درست باشد، این حلقه while اجرا می‌شود. به محض اینکه «go» درست نباشد،
این عبارت درست نخواهد بود.
پس از حلقه خارج می‌شود چون شرط برقرار نیست.
وقتی شرط برقرار نباشد، این بخش اجرا نمی‌شود و مستقیم می‌رود به خط 13.
breakpoint و ما می‌توانیم خیلی سریع با یک قشنگ این را تست کنیم.
فقط برای اینکه ببینید کد چطور اجرا می‌شود.
پس کد را اجرا می‌کنیم.
می‌گوید go یا stay را وارد کن.
من می‌گویم go.
و حالا به نقطه‌ای می‌رسیم که برنامه متوقف شده است.
پس می‌رویم خط بعد.
می‌بینید user choice برابر go است که همان این شرط است.
پس کد اینجا اجرا می‌شود.
بعد همه‌ی این خطوط اجرا می‌شود.
و دوباره از کاربر ورودی می‌پرسد.
می‌گوید: می‌خوای ادامه بدی؟
go را وارد کن.
من می‌گویم stay.
ولی باید از این خط عبور کنم تا این ورودی اعمال شود.
و حالا می‌بینید stay است.
پس من stay را می‌زنم.
و حالا دوباره بررسی می‌کند: آیا user choice که مقدارش stay است
هست یا نه؟go برابر با
پس خط بعدی که اجرا خواهد شد بعد از این انتخاب، خط 13 خواهد بود.
چون این شرط دیگر درست نیست، کدی که داخل براکت‌ها بود اجرا نمی‌شود، و این دقیقاً همان چیزی است
که حلقه while می‌تواند برایش استفاده شود.
البته شما می‌توانید یک bool هم تعریف کنید و بررسی کنید آیا انتخاب کاربر فلان است یا نه.
آن bool را true کنید و بعد همین‌جا آن را بررسی کنید.
اما ما می‌توانیم مستقیم یک عبارت بولی هم اینجا بگذاریم.
یا به‌طور کلی یک شرط مقایسه‌ای.
اینجا مثلاً می‌توانیم رشته‌ها را با هم مقایسه کنیم، یا اعداد را با هم مقایسه کنیم،
یا هر چیز دیگر.
پس منطق یکی است.
while اما اساساً این همان ساختاری است که برای حلقه نیاز دارید.
یعنی باید چیزی داشته باشید که بررسی شود.
یک شرط، بعد هرچه می‌خواهید را داخل حلقه اجرا کنید.
و در نهایت مطمئن شوید که یک راه خروج وجود دارد. یعنی باید راهی باشد
false که شرط به‌مرور شود، وگرنه شما یک حلقه.
بی‌نهایت خواهید داشت
خب، این هم از این ویدیو.
در ویدیوی بعدی یک پروژه خیلی جذاب دارم براتون.
پس اونجا می‌بینمتون.