প্রোগ্রামিং এ যখন একটা লুপ এর ভিতর আরেকটা লুপ ব্যাবহার করা হয় তাকে নেস্টেড লুপ বলে।
Nested for loop এর structure:
for(initialization; condition; increment_or_decrement){
//statements
for(initialization; condition; increment_or_decrement){
//statements
}
}
Nested while loop এর structure:
while(condition){
//statements
while(condition){
//statements
}
}
আমাদেরকে প্রোগ্রাম লিখার সময় অনেক সময়ই Nested loop লিখার প্রয়োজন হতে পারে। চলুন Nested for loop দিয়ে একটা প্রোগ্রাম লিখি এবং এটি কিভাবে কাজ করছে তা বুঝার চেষ্টা করি।
for(i = 0; i < 2; i++){
console.log('I am inside 1st loop')
for(j=0; j < 3; j++){
console.log('I am inside 2nd loop')
}
}
Code এর ব্যাখ্যাঃ
প্রথমে একটা for loop declare করেছি। যা i এর মান 2 হওয়ার আগে পর্যন্ত exicute হবে। এই লুপ এর ভিতরে console.log() ব্যাবহার করে "I am inside 1st loop" লিখাটি প্রিন্ট করেছি। তার পরের লাইনে আরেকটি for loop declare করেছি যা j er man 3 হওয়ার আগে পর্যন্ত exicute হবে। এবং এই লুপ এর ভিতরে console.log() ব্যাবহার করে "I am inside 2nd loop" লিখাটি প্রিন্ট করেছি।
এবার চলুন দেখি Code কিভাবে কাজ করছে।
- প্রথমে লুপ এর প্রথম লাইন এ যাবে। যেখানে গিয়ে ই এর মান 0 পাবে। তারপর for loop এর কন্ডিশন এ গিয়ে দেখবে i এর মান 2 এর চেয়ে ছোট কিনা। এখানে i এর মান 0 যা অবশই 2 এর চেয়ে ছোট। তারপর i এর মান 1 increment করবে এবং লুপ এর ভিতরে প্রবেশ করবে। লুপ এর ভিতরে প্রবেশ করে প্রথমেই দেখবে যে "I am inside 1st loop" প্রিন্ট করতে বলা হয়েছে। তাহলে এটি প্রিন্ট করবে। এই শেষ করার পর এর পরের লাইনে যাবে এবং ভিতরে লুপ এ প্রথমে j এর মান 0 পাবে। তারপর j চেক করবে যে জ এর মান 3 এর চেয়ে ছোট কিনা। এখানে j এর মান 3 এর চেয়ে ছোট তাই j এর মান 1 increment করে এই লুপ এর ভিতরে প্রবেশ করবে। এই লুপ এর ভিতরে প্রবেশ করে "I am inside 2nd loop" লিখাটি প্রিন্ট করবে। তাহলে ভিতরের লুপের কাজ একবার শেষ হলো।
- এখানেই আসে আসল বিষয়। যা আমাদের নতুন অবস্থায় বুঝতে কষ্ট হয়। এখানে কিন্তু আমাদের ভিতরে লুপ এর কাজ শেষ হয়ে যায় নি। "I am inside 2nd loop" লিখাটি প্রিন্ট করার পর আবার ভিতরের লুপের প্রথমে যাবে। সেখানে গিয়ে j এর মান পাবে 1। কারন আমরা ভিতরে লুপ এর প্রবেশ করার সময় j এর মান 1 increase করেছিলাম । এখন আবার চেক দিবে যে j এর মান 3 এর চেয়ে ছোট কিনা। এখানে j এর মান 3 এর চেয়ে ছোট তাই এটি j এর মান কে 1 increment করবে এবং লুপ এর ভিতর প্রবেশ করবে। লুপ এর ভিতরে প্রবেশ করে "I am inside 2nd loop" লিখাটি প্রিন্ট করবে। তার পরে আবার ভিতরের লুপ এর প্রথমে যাবে এবং এখানে গিয়ে j এর মান পাবে 2, যা 3 এর চেয়ে ছোট। ফলে এটি j এর মান 1 বাড়াবে এবং লুপ এর ভিতরে প্রবেশ করবে। লুপ এর ভিতরে প্রবেশ করে "I am inside 2nd loop" লিখাটি প্রিন্ট কবে। তারপর আবার ভিতরের লুপ এর প্রথমে যাবে এবং ওইখানে গিয়ে j এর মান 3 পাবে। ফলে ভিতরের লুপ এর কন্ডিশন false return করবে এবং ভিতরের লুপ থেকে অফিশিয়ালি বের হয় যাবে। তার পর আর কোনো কাজ না পেয়ে প্রথম লুপ এ চলে যাবে।
- আবার প্রথম লুপ এ গিয়ে i মান পাবে 1। কারন আমরা প্রথম লুপ এ প্রবেশ করার সময় i এর মান 1 increase করেছিলাম। তারপর এটি চেক দিবে যে i এর মান 2 এর চেয়ে ছোট কিনা। এখানে i এর মান 2 এর চেয়ে ছোট তাই এটি আবার প্রথম লুপ এর ভিতরে প্রবেশ করবে। এখানে গিয়ে প্রথমে "I am inside 1st loop" প্রিন্ট করবে। তারপর ভিতরের লুপ এ প্রবেশ করবে। সেখানে গিয়ে j এর মান আবার 0 পাবে। তারপর চেক দিবে j মান 3 এর চেয়ে ছোট কিনা। এখানে j এর মান 3 এর চেয়ে ছোট তাই ভিতরের লুপ এর প্রবেশ করবে। তারপর "I am inside 2nd loop" লিখাটি প্রিন্ট করবে। এইভাবে j এর মান 3 হওয়া পর্যন্ত অর্থাৎ ভিতরের লুপ এর কন্ডিশন false return করা পর্যন্ত "I am inside 2nd loop" প্রিন্ট করবে। ভিতরের লুপ এর কন্ডিশন false return করার পর এটি আবার প্রথম লুপ এ যাবে।
- প্রথম লুপ এ যাওয়ার পর i এর মান পাবে 2। যার জন্য প্রথম লুপ এর কন্ডিশন false return করবে এবং এটি প্রথম লুপ এর ভিতরে আর প্রবেশ করবে না। তারপর আর কোনো কাজ না থাকাই আমাদের প্রোগ্রাম এখানেই শেষ হবে।
প্রোগ্রাম এর আউটপুটঃ
I am inside 1st loop I am inside 2nd loop I am inside 2nd loop I am inside 2nd loop I am inside 1st loop I am inside 2nd loop I am inside 2nd loop I am inside 2nd loop
এইভাবেই Nested loop কাজ করে।