عبارت حلقه با شرط - while


یک حلقه با یک شرط. عبارت while
با مطالعه حلقه for گفتیم که اگر تعداد تکرارهای هر عمل مشخص باشد، می توانید با استفاده از عملگر حلقه for برنامه را کوتاه کنید. اما اگر تعداد تکرارها ناشناخته باشد چه؟ و این اغلب اتفاق می افتد.
 
مثال
با یادآوری ترجمه یک عدد از یک سیستم اعداد اعشاری به هر سیستم دیگر، باید عدد (و سپس نتیجه تقسیم) را بر پایه سیستم اعداد تقسیم کنیم تا در پاسخ به صفر برسیم. چند بار به اشتراک خواهیم گذاشت مشخص نیست. و برنامه های بسیار زیادی وجود دارند که چنین الگوریتمی را پیاده سازی می کنند. 

اگر تعداد دقیق تکرارها را نمی دانیم چگونه می توانیم الگوریتم را پیاده سازی کنیم؟

برای چنین مواردی در برنامه نویسی، یک عبارت حلقه با یک شرط وجود دارد. 
در زبان برنامه نویسی پایتون، یک دستور حلقه شرطی با کلمه while شروع می شود و ساختار زیر را دارد.
در حالی که (<condition>) 
{
  بدنه حلقه
}

همانطور که قبلاً می دانیم:
- شرط عبارتی است که می تواند به درست یا نادرست (مانند یک عبارت شرطی) ارزیابی شود؛
- loop body دستوراتی هستند که باید تکرار شوند، آنها تورفتگی دارند.

اپراتور چگونه کار می کند؟
1. ابتدا، برنامه شرایط را در پرانتز بعد از کلمه while ارزیابی می کند. اگر شرط برقرار باشد (true)، برنامه عبارت(های) موجود در بدنه حلقه را اجرا می کند.
2. پس از اتمام اجرای بدنه حلقه، برنامه برای بررسی شرایط باز می گردد و دوباره آن را بررسی می کند.
3. این اقدامات (بررسی شرط - اجرای بدنه حلقه) تا زمانی که شرط نادرست شود، تکرار می شود.
4. اگر شرط بلافاصله (false) در اولین اجرای این دستور برآورده نشود، برنامه هرگز بدنه حلقه را اجرا نخواهد کرد.

با تجزیه و تحلیل کار این عملگر، باید مشخص شود که بدنه حلقه باید دارای عملگری باشد که بر شرایط تأثیر می گذارد.
به عنوان مثال، در یک حلقه، مقدار متغیر مورد استفاده در یک شرط ممکن است افزایش یابد.

نمونه ای از برنامه ای که آن را "شمارش بی صدا" می نامیم.
بیایید برنامه را به جای ما، مثلاً تا 10، شمارش کنیم.
برنامه باید عبارات "Start" و "Finish"، و بین این اقدامات اعدادی را که در حال محاسبه هستند نمایش دهید.

به عنوان مثال، مانند این:
شروع
1 2 3 4 5 6 7 8 9 10
پایان

برنامه ای که از یک حلقه while استفاده می کند، به شکل زیر است: با استفاده از سیستم؛ برنامه کلاس {     استاتیک void Main() {         Console.WriteLine("شروع");         int i = 1;         در حالی که (i <= 10) {             Console.WriteLine(i);             i++;         }         Console.WriteLine("Finish");     } } در این برنامه، مقداری را به متغیر i = 1 اختصاص می دهیم - نقطه شروع.
علاوه بر این، تا زمانی که مقدار متغیر i بزرگتر (یعنی کمتر یا مساوی) مقدار مورد نیاز ما نباشد، ما:
 1) نمایش مقدار متغیر i;
 2) مقدار متغیر i  را 1 افزایش دهید - این عملگر بر مقدار شرط در براکت ها تأثیر می گذارد. متغیر i  افزایش می‌یابد، به این معنی که در برخی مواقع شرط i <= 10 نادرست می‌شود. این زمانی اتفاق می افتد که i برابر 11 باشد. در این صورت بدنه حلقه دیگر اجرا نمی شود و برنامه عبارت بعدی را بعد از حلقه اجرا می کند، یعنی  Console.WriteLine("Finish").

بیایید سعی کنیم برنامه ای برای حل مشکل زیر بنویسیم: شما باید یک عدد وارد کنید و تعداد ارقام موجود در آن را تعیین کنید.

ایده راه حل.
فقط باید آخرین رقم را به ترتیب از عدد جدا کنیم (این کار را می توان با کاهش عدد 10 برابر، با استفاده از تقسیم عدد صحیح بر 10 انجام داد)، و هر بار باید شمارنده را افزایش دهیم. 
در نتیجه، پس از اینکه همه اعداد را قطع کردیم، شمارنده تعداد ارقام موجود در عدد را ذخیره می کند.
به روشی دیگر، الگوریتم را می توان به صورت زیر فرموله کرد: در حالی که عدد برابر با صفر نیست، آن را 10 برابر کاهش دهید و شمارنده را 1 افزایش دهید.
<سر> <بدن>
شماره (n) کانتر
123 0
12 1
1 2
0 3
برنامه به این صورت خواهد بود: <پیش> ... استاتیک void Main() { int n = Convert.ToInt32(Console.ReadLine()); تعداد int = 0; در حالی که (n != 0) { count++; n = n / 10; } } شما باید این برنامه را به خوبی بشناسید و درک کنید، زیرا بسیاری از کارهای دیگر مربوط به محاسبه با ارقام هستند. یک عدد.

وظیفه

ورودی برنامه جریان داده — دنباله ای از اعداد صحیح که به صفر ختم می شود (صفر در دنباله گنجانده نشده است). شما باید مجموع عناصر این دنباله را پیدا کنید.
 
الگوریتم حل
<پیش> مجموع = 0 ورودی x // اولین عدد را وارد کنید در حالی که x != 0 // علامت پایان ورودی در شرایط تنظیم شده است،  nc // یعنی تا زمانی که صفر را وارد کنید    جمع = مجموع + x // می توانید کاری را با شماره اصلی انجام دهید. // می توانید یک بررسی عددی برای برخی شرایط و غیره اضافه کنید.     ورودی x // عدد بعدی را وارد کنید kts جمع چاپ //خروجی نتیجه