Lesson ৭ মিনিট পড়া

লুপ (Loops)

আপনার কোডকে বারবার একই কাজ করতে বলুন — বারবার একই লাইন না লিখেই

লুপ কেন প্রয়োজন? (Why Loops?)

কল্পনা করুন আপনি একজন শিক্ষক এবং আপনার কাজ হলো ৩০ জন ছাত্রের খাতায় "খুব ভালো!" লিখে দেওয়া। আপনি নিশ্চয়ই নিজ হাতে এই কথাটি ৩০ বার লিখবেন না — বরং আপনি চাইলে একটি রাবার স্ট্যাম্প বা সিলমোহর বানিয়ে ব্যবহার করতে পারেন। লুপ হলো আপনার কোডের ক্ষেত্রে সেই একই স্ট্যাম্প। এগুলো প্রয়োজনের ওপর ভিত্তি করে নির্দিষ্ট কোডকে বারবার রিপিট (repeat) করে বা চালিয়ে দেয়।

জাভাস্ক্রিপ্টে বেশ কয়েক ধরনের লুপ আছে, যার প্রতিটির নির্দিষ্ট কাজে নিজস্ব সুবিধা রয়েছে:

  • for — যখন আপনি ঠিকঠাক জানেন যে এটি কতবার ঘোরাতে বা লুপ করতে হবে
  • while — কোনো শর্ত মিথ্যা (false) না হওয়া পর্যন্ত লুপ করতে থাকলে
  • do...while — অনেকটা while এর মতোই, তবে এটি অন্তত একবার রান করার নিশ্চয়তা দেয়
  • for...of — কোনো অ্যারে (বা ইটারেবল) থেকে এর ভ্যালু বা মানগুলোর ভেতর দিয়ে লুপ করতে
  • for...in — কোনো অবজেক্টের কী (key) বা প্রপার্টির ভেতর দিয়ে লুপ করতে

ক্লাসিক বা গতানুগতিক For লুপ (The Classic For Loop)

// for (start; condition; step)
for (let i = 1; i <= 5; i++) {
console.log(`Lap ${i} of 5`);
}
// Counting backwards
for (let countdown = 3; countdown >= 1; countdown--) {
console.log(countdown);
}
console.log("Go! 🚀");
// Looping through an array by index
let colors = ["red", "green", "blue"];
for (let i = 0; i < colors.length; i++) {
console.log(`Color ${i}: ${colors[i]}`);
}
Output
Lap 1 of 5
Lap 2 of 5
Lap 3 of 5
Lap 4 of 5
Lap 5 of 5
3
2
1
Go! 🚀
Color 0: red
Color 1: green
Color 2: blue

While এবং Do...While (While & Do...While)

একটি while লুপ শর্ত বা কন্ডিশন সত্য (true) থাকা পর্যন্ত চলতেই থাকে। এটি অনেকটা "স্যুপ ফোটা শুরু না হওয়া পর্যন্ত নাড়াচাড়া করতে থাকুন" বলার মতো। শুধু একটু সাবধানে থাকবেন — যদি শর্তটি কখনোই মিথ্যা বা false না হয়, তবে এটি একটি ইনফিনিট লুপ (infinite loop) তৈরি করবে আর আপনার প্রোগ্রামটি হ্যাঙ বা ফ্রিজ (freeze) হয়ে যাবে!

একটি do...while লুপ প্রায় একই রকমের, তবে পার্থক্য হলো এটি কোডগুলো একবার রান করানোর পর শর্ত যাচাই করে। ফলে এর ভেতরের কোডগুলো অন্তত একবার হলেও রান হবে — অনেকটা একটি রেস্টুরেন্টের মতো, যারা আপনাকে খাবারটি আরও নিতে চান কি না তার সিদ্ধান্ত নেওয়ার আগেই একবার পরখ করে দেখতে দেয়।

While এবং Do...While

// while — check first, then run
let fuel = 3;
while (fuel > 0) {
console.log(`Fuel: ${fuel} — Vroom!`);
fuel--;
}
console.log("Out of fuel!");
// do...while — run first, then check
let password = "secret";
let attempt;
let tries = 0;
do {
attempt = ["wrong", "nope", "secret"][tries]; // simulating input
tries++;
console.log(`Attempt ${tries}: "${attempt}"`);
} while (attempt !== "secret");
console.log("Access granted!");
Output
Fuel: 3 — Vroom!
Fuel: 2 — Vroom!
Fuel: 1 — Vroom!
Out of fuel!
Attempt 1: "wrong"
Attempt 2: "nope"
Attempt 3: "secret"
Access granted!

For...Of এবং For...In (For...Of and For...In)

কোনো অ্যারের (বা স্ট্রিং, Map, Set ইত্যাদি) ভেতর থেকে for...of এর লুপ চালানোর পদ্ধতিটি একেবারেই আধুনিক এবং বেশ পরিচ্ছন্ন। এটি আপনাকে সরাসরি ভ্যালুগুলো (values) এনে দেয় — এখানে ইনডেক্স নিয়ে কোনো ঝামেলায় পড়তে হয় না।

for...in কোনো অবজেক্টের কীগুলোর (keys) (প্রপার্টির নাম) ভেতর দিয়ে লুপ চালায়। তবে একটু সাবধানে থাকবেন: অ্যারের ওপর for...in চালালে তা নম্বরের বদলে ইনডেক্স স্ট্রিং রিটার্ন করে, যা ছোটখাটো বাগ (bug) বা সমস্যা তৈরি করতে পারে। তাই অ্যারের ক্ষেত্রে for...of ব্যবহার করাই ভালো।

For...Of এবং For...In + Break এবং Continue

// for...of — loop through VALUES
let heroes = ["Batman", "Spider-Man", "Wonder Woman"];
for (let hero of heroes) {
console.log(`Hero: ${hero}`);
}
// for...in — loop through KEYS of an object
let scores = { math: 95, english: 88, science: 92 };
for (let subject in scores) {
console.log(`${subject}: ${scores[subject]}`);
}
// break — exit the loop early
let numbers = [1, 2, 3, -1, 4, 5];
for (let num of numbers) {
if (num < 0) {
console.log("Found negative! Stopping.");
break;
}
console.log(num);
}
// continue — skip this iteration and move on
for (let i = 1; i <= 6; i++) {
if (i % 2 === 0) continue; // skip even numbers
console.log(`Odd: ${i}`);
}
Output
Hero: Batman
Hero: Spider-Man
Hero: Wonder Woman
math: 95
english: 88
science: 92
1
2
3
Found negative! Stopping.
Odd: 1
Odd: 3
Odd: 5
Note: সবচেয়ে গুরুত্বপূর্ণ নিয়ম বা গোল্ডেন রুল (golden rule): অ্যারের জন্য for...of এবং অবজেক্টের জন্য for...in ব্যবহার করুন। এই দুটোকে একে অপরের জায়গায় বা মিশিয়ে ব্যবহার করা অনেকটা স্যুপ খাওয়ার জন্য কাঁটাচামচ ব্যবহার করার মতো ব্যাপার — চাইলেই পারবেন, কিন্তু তা দিয়ে সবকিছু এলোমেলো হয়ে যাবে। আর সবসময় দু'বার চেক করে বা খুঁটিয়ে দেখার চেষ্টা করবেন যে আপনার while লুপের শেষ হওয়ার কোনো উপায় আছে কি না, নয়তো এটি আপনার ব্রাউজার ফ্রিজ করে বা থামিয়ে দিতে পারে!
চ্যালেঞ্জ

ছোট কুইজ

এই লুপটি কতবার চলবে: for (let i = 0; i < 3; i++) {}
ConditionalsArrays