هنگام مطالعه حلقه for گفتیم که اگر تعداد تکرارهای هر عمل مشخص باشد، می توانید با استفاده از عملگر حلقه for برنامه را کوتاه کنید. و اگر تعداد تکرارها مشخص نباشد چه می شود. و این اغلب اتفاق می افتد.
به عنوان مثال:
با به خاطر سپردن ترجمه یک عدد از یک سیستم اعداد اعشاری به هر سیستم دیگر، باید عدد (و سپس نتیجه تقسیم) را بر پایه سیستم اعداد تقسیم کنیم تا در پاسخ به صفر برسیم. چند بار به اشتراک خواهیم گذاشت معلوم نیست. و برنامه های بسیار زیادی وجود دارند که چنین الگوریتمی را پیاده سازی می کنند.
این چگونه پیاده سازی می شود؟
برای چنین مواردی در برنامه نویسی، یک عملگر حلقه با یک شرط وجود دارد.
در زبان برنامه نویسی C یک دستور حلقه شرطی با کلمه while شروع می شود و ساختار زیر را دارد.
<پیش>
در حالی که (<شرایط>){
بدنه حلقه
}
همانطور که قبلاً می دانیم:
- شرط عبارتی است که نتیجه آن می تواند درست یا نادرست باشد (مانند یک عبارت شرطی)
- بدنه حلقه دستوراتی است که باید تکرار شوند
- اگر بدنه حلقه فقط از یک اپراتور
تشکیل شده باشد، می توان مهاربندهای فرفری را حذف کرد
نحوه عملکرد اپراتور:
1. ابتدا برنامه وضعیت را در پرانتز بعد از کلمه while ارزیابی می کند. اگر شرط برقرار باشد (true)، برنامه عبارت(های) موجود در بدنه حلقه را اجرا می کند.
2. همانطور که در حلقه for، اگر بدنه حلقه فقط یک عبارت داشته باشد، می توان مهاربندی های فرفری که بدنه حلقه را برجسته می کنند حذف کرد.
3. پس از اتمام اجرای بدنه حلقه، برنامه برای بررسی شرایط باز می گردد و دوباره آن را بررسی می کند.
4. این اقدامات (بررسی شرط - اجرای بدنه حلقه) تکرار می شود تا شرط نادرست شود.
5. اگر در اولین اجرای این عملگر، شرط بلافاصله برآورده نشد (false)، برنامه هرگز بدنه حلقه را اجرا نخواهد کرد.
با تجزیه و تحلیل کار این عملگر، باید مشخص شود که بدنه حلقه باید دارای عملگری باشد که بر شرایط تأثیر می گذارد.
به عنوان مثال، یک حلقه می تواند مقدار یک متغیر مورد استفاده در یک شرط را افزایش دهد.
نمونهای از برنامهای که آن را «شمارش بیصدا»
مینامیم
بیایید برنامه را به جای ما، مثلاً تا 10، شمارش کنیم.
برنامه باید عبارت "شروع" را خروجی کند. و "Finish" و بین این اقدامات اعدادی را که در حال محاسبه هستند نمایش دهید.
مانند این،
شروع
1 2 3 4 5 6 7 8 9 10
پایان
برنامه ای که از حلقه while استفاده می کند به این شکل است.
<پیش>
#include<iostream>
با استفاده از namespace std.
main()
{
int i;
cout << "شروع\n"؛
i=1;
در حالی که (i<=10)
{
cout << من<<" ";
i++; //عملگری که بر تغییر متغیر در شرایط تأثیر می گذارد
}
cout << "\nپایان";
}
در این برنامه به متغیر i=1 مقداری اختصاص می دهیم - مبدا
علاوه بر این، تا زمانی که مقدار متغیر i بزرگتر از (یعنی کمتر یا مساوی) مقدار مورد نیاز ما نباشد،
1 - نمایش مقدار متغیر i
2 - مقدار متغیر i را 1 افزایش دهید - این عملگر بر مقدار شرط در براکت ها تأثیر می گذارد. متغیر i افزایش می یابد، یعنی در نقطه ای شرط i<=10 نادرست می شود. این اتفاق زمانی می افتد که i برابر با 11 شود. در این حالت، بدنه حلقه دیگر اجرا نمی شود و برنامه عبارت بعدی را بعد از حلقه اجرا می کند، i.e. cout << "\nپایان";