লুপ ব্যবহার করা হয় কোনো লজিক বারবার রান করার জন্য।
সবচেয়ে কমন দুটি ধরন হলো while loop (অনির্দিষ্ট লুপিং) আর for loop (নির্দিষ্ট বা গণনাভিত্তিক লুপিং)।
এছাড়া for each লুপও আছে, যা পরের কোনো কনসেপ্টে আসবে।
for loop-এ থাকে একটি হেডার, আর একটি কোড ব্লক যার ভেতরে দ্বিতীয় বন্ধনী {} দিয়ে মোড়ানো লুপের বডি থাকে।
হেডারটি সেমিকোলন ; দিয়ে আলাদা করা ৩টি কম্পোনেন্ট নিয়ে গঠিত: init-statement, শর্ত আর আরেকটি এক্সপ্রেশন।
এর প্রত্যেকটিই খালি থাকতে পারে।
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
init কম্পোনেন্টটি সাধারণত একটি কাউন্টার ভ্যারিয়েবল তৈরি করে, শর্তটি দেখে লুপটি চালিয়ে যাওয়া হবে না থামানো হবে, আর post কম্পোনেন্টটি সাধারণত প্রতিটি ইটারেশনের শেষে কাউন্টারটি ইনক্রিমেন্ট করে।
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যত কম ব্যবহার করা হয় বা একেবারে এড়িয়ে যাওয়া হয়, লুপের লজিক তত সহজে বোঝা যায়।