از «حلقه» برای اجرای مکرر یک منطق استفاده میشود.
رایجترین دو نوع آن while loop (حلقهی نامعین) و for loop (حلقهی معین یا شمارشی) هستند.
حلقهی for each هم وجود دارد که در مفهوم دیگری به آن میرسیم.
حلقهی for loop از یک سرآیند و یک «بلوک کد» تشکیل میشود که بدنهی حلقه را در آکولاد جا میدهد.
سرآیند از ۳ مؤلفه تشکیل میشود که با نقطهویرگول ; از هم جدا میشوند: مقداردهی اولیه، شرط و یک عبارت دیگر.
هر یک از اینها میتواند خالی باشد.
for (init-statement; condition; expression) {
some_statement;
}
while loop بدنهی خود را تا زمانی اجرا میکند که بررسی شرطش «درست» باشد.
قطعهکد زیر نشان میدهد چگونه یک حلقهی for را به یک حلقهی while تبدیل کنیم.
init-statement;
while(condition) {
some_statement;
expression;
}
هنگام کار با حلقهها اغلب لازم است ۱ واحد به یک متغیر شمارنده اضافه یا از آن کم کنیم.
این کار آنقدر رایج است که برای آن عملگرهای ویژهای در نظر گرفته شده است: ++ و --.
این عملگرها دو شکل پیشوندی و پسوندی دارند. شکل پیشوندی متغیر را پیش از استفاده در دستور تغییر میدهد و شکل پسوندی این کار را پس از آن انجام میدهد. احتمالاً بیشتر اوقات شکل پیشوندی همان چیزی است که میخواهید.
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
مؤلفهی مقداردهی اولیه معمولاً یک متغیر شمارنده را آماده میکند، شرط بررسی میکند که حلقه باید ادامه یابد یا متوقف شود و مؤلفهی پایانی معمولاً شمارنده را در پایان هر تکرار یک واحد افزایش میدهد.
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
این حلقه اعداد 1 تا 9 را با هم جمع میکند (شامل 9).
در داخل بدنهی حلقه میتوانید از «کلیدواژهی break» استفاده کنید تا اجرای حلقه را کاملاً متوقف کنید:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
در مقابل، کلیدواژهی continue فقط اجرای تکرار جاری را متوقف میکند و با تکرار بعدی ادامه میدهد:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
نکته: معمولاً درک منطق حلقه زمانی آسانتر است که استفاده از
breakوcontinueبه کمترین حد رسیده یا کاملاً کنار گذاشته شده باشد.