Lesson ৭ মিনিট পড়া

লুপ (Loops)

একই কাজ বারবার করুন (এবং আরও বারবার)

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

কল্পনা করুন আপনাকে বোর্ডে ১০০ বার লিখতে হবে "আমি ক্লাসে কাগজের বিমান ওড়াবো না"। আপনি চাইলে ১০০ বার System.out.println() লিখতে পারেন... অথবা একটি লুপ (loop) ব্যবহার করে মাত্র একবার লিখলেই কাজ হয়ে যাবে।

লুপ আপনার কোডের নির্দিষ্ট অংশকে বারবার রিপিট (repeat) করতে বা পুনরাবৃত্তি করতে সাহায্য করে। জাভাতে এর জন্য তিনটি উপায় রয়েছে:

  • for — যখন আপনি জানেন যে কতবার রিপিট করতে হবে, তখন এটি সবচেয়ে ভালো কাজ করে।
  • while — যখন আপনি কোনো শর্ত পরিবর্তন না হওয়া পর্যন্ত রিপিট করতে চান, তখন এটি সবচেয়ে ভালো কাজ করে।
  • do-while — অনেকটা while এর মতোই, কিন্তু এটি অন্তত একবার রান করার নিশ্চয়তা দেয়।

চিরচেনা for লুপ (The Classic for Loop)

public class Main {
public static void main(String[] args) {
// Count from 1 to 5
for (int i = 1; i <= 5; i++) {
System.out.println("Count: " + i);
}
System.out.println("---");
// Countdown!
for (int i = 3; i >= 1; i--) {
System.out.println(i + "...");
}
System.out.println("Go!");
System.out.println("---");
// Skip by 2s (even numbers)
for (int i = 2; i <= 10; i += 2) {
System.out.print(i + " ");
}
System.out.println();
}
}
Output
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
---
3...
2...
1...
Go!
---
2 4 6 8 10

হোয়াইল, ডু-হোয়াইল এবং ফর-ইচ (While, Do-While & For-Each)

একটি while লুপ হলো দরজায় দাঁড়িয়ে থাকা প্রহরীর মতো, যে সারাক্ষণ চেক করে: "শর্তটি কি এখনও সত্য? ঠিক আছে, আবার যাও।" এটি প্রতিবার রান করার আগেই চেক করে, তাই শর্তটি যদি শুরু থেকেই মিথ্যা হয়, তবে এর ভেতরের কোড কখনোই এক্সিকিউট হয় না বা রান করে না।

do-while লুপ পুরোই উল্টো — এটি আগেই ভেতরের কোড রান করে, এবং তারপর শর্ত চেক করে। অনেকটা এমন রেস্টুরেন্টের মতো, যারা আপনাকে আরও খাবার লাগবে কি না তা জিজ্ঞেস করার আগেই একটি ফ্রি স্যাম্পল (free sample) খেতে দেয়।

এনহ্যান্সড ফর-ইচ (enhanced for-each) লুপ হলো কোনো অ্যারে (array) বা কালেকশনের (collection) ভেতর থাকা প্রতিটি উপাদানকে ধরে ধরে চেক করার সবচেয়ে সহজ উপায়। এক্ষেত্রে আলাদাভাবে ইনডেক্স গোনার কোনো দরকার নেই — জাভা আপনাকে নিজ থেকেই একটা একটা করে আইটেম হাতে এনে দেবে।

While, Do-While & For-Each

public class Main {
public static void main(String[] args) {
// While loop — keep halving until we're under 1
double value = 100.0;
int steps = 0;
while (value >= 1) {
value /= 2;
steps++;
}
System.out.println("Took " + steps + " halvings to get below 1");
System.out.println("Final value: " + value);
System.out.println("---");
// Do-while — always runs at least once
int number = 0;
do {
System.out.println("This runs even though number is " + number);
number++;
} while (number < 0); // condition is false, but body ran once!
System.out.println("---");
// Enhanced for-each — the cleanest loop
String[] pets = {"Dog", "Cat", "Fish", "Hamster"};
for (String pet : pets) {
System.out.println("I have a " + pet);
}
}
}
Output
Took 7 halvings to get below 1
Final value: 0.78125
---
This runs even though number is 0
---
I have a Dog
I have a Cat
I have a Fish
I have a Hamster

ব্রেক, কন্টিনিউ এবং লেবেলড ব্রেক (Break, Continue & Labeled Break)

public class Main {
public static void main(String[] args) {
// break — emergency exit from the loop
System.out.print("Searching: ");
int[] numbers = {3, 7, 2, 9, 4, 1};
for (int n : numbers) {
System.out.print(n + " ");
if (n == 9) {
System.out.println("\nFound 9! Stopping.");
break;
}
}
// continue — skip this round, go to the next one
System.out.print("Odd numbers: ");
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // skip even numbers
}
System.out.print(i + " ");
}
System.out.println();
// Labeled break — escape from nested loops
System.out.println("Finding pair that sums to 7:");
outer:
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
if (i + j == 7) {
System.out.println(i + " + " + j + " = 7");
break outer; // breaks BOTH loops
}
}
}
}
}
Output
Searching: 3 7 2 9 
Found 9! Stopping.
Odd numbers: 1 3 5 7 9 
Finding pair that sums to 7:
2 + 5 = 7
Note: লুপ নিয়ে সবচেয়ে বড় ভুল কোনটি? ইনফিনিট লুপ বা অসীম লুপ (Infinite loops)। আপনার শর্তটি যদি কখনোই মিথ্যা না হয়, তবে আপনার প্রোগ্রামটি অনন্তকাল ধরে (অথবা কম্পিউটার নিজেই হাল ছেড়ে না দেওয়া পর্যন্ত) চলতেই থাকবে। তাই সবসময় খেয়াল রাখবেন লুপের ভেতরে এমন কিছু যেন থাকে যা আপনাকে লুপ থেকে বের হওয়ার শর্তের দিকে এগিয়ে নিয়ে যায়। একটি while(true) লুপ তখনই নিরাপদ যখন আপনি এর ভেতরে একটি break ব্যবহার করেন।
চ্যালেঞ্জ

ছোট কুইজ

যদি কোনো do-while লুপের শর্ত শুরু থেকেই মিথ্যা (false) হয়, তবে এটি কতবার রান করবে?
ConditionalsArrays