Lesson ৬ মিনিট পড়া

লুপস (Loops)

যেকোনো কাজ একবার করুন, আর সেটি স্বয়ংক্রিয়ভাবে হাজারবার চলতে দিন

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

ধরুন, আপনাকে ১০০ বার "Hello" কথাটি প্রিন্ট করতে হবে। আপনি চাইলে ১০০ বার Console.WriteLine লিখতে পারেন... অথবা একটি লুপ (loop) লিখে কম্পিউটারের ঘাড়েই এই বিরক্তিকর কাজটি চাপিয়ে দিতে পারেন। লুপগুলো হলো আপনার কোডের অনেকটা রিপিট বাটনের (repeat button) মতো।

সি শার্পে (C#) মোট চার ধরনের লুপ রয়েছে, আর এদের সবগুলোরই নিজস্ব ভালো দিক বা সঠিক ব্যবহারের জায়গা রয়েছে:

  • for — যখন আপনি ঠিকভাবে জানেন যে আপনাকে কোনো কাজ নির্দিষ্ট কতবার করতে হবে
  • while — যখন আপনি কোনো কিছু পরিবর্তিত না হওয়া পর্যন্ত লুপটি চালাতে চান
  • do-while — এটি while লুপের মতোই, তবে এটি অন্ততপক্ষে একবার চলার গ্যারান্টি বা নিশ্চয়তা দেয়
  • foreach — যখন আপনি কোনো কালেকশনের (collection) প্রতিটি আইটেমকে বা উপাদানকে এক এক করে দেখতে বা ব্যবহার করতে চান

for এবং while লুপ (for and while Loops)

// for loop — "do this N times"
// (start; keep going while; after each loop)
Console.WriteLine("Countdown:");
for (int i = 5; i >= 1; i--)
{
Console.Write($"{i}... ");
}
Console.WriteLine("Liftoff!");
// while loop — "keep going until this is false"
int fuel = 100;
Console.WriteLine("\nBurning fuel:");
while (fuel > 0)
{
fuel -= 30;
Console.WriteLine($" Fuel remaining: {Math.Max(fuel, 0)}%");
}
// do-while — runs AT LEAST once
int attempts = 0;
do
{
attempts++;
Console.WriteLine($"Attempt #{attempts}");
} while (attempts < 3);
Output
Countdown:
5... 4... 3... 2... 1... Liftoff!

Burning fuel:
  Fuel remaining: 70%
  Fuel remaining: 40%
  Fuel remaining: 10%
  Fuel remaining: 0%
Attempt #1
Attempt #2
Attempt #3

foreach — কালেকশনের জাদুকর (foreach — The Collection Whisperer)

লুপগুলোর মধ্যে foreach হলো সবচেয়ে বন্ধুবৎসল (friendliest)। এটি বলে, "আমাকে এই কালেকশনের (collection) একেকটি আইটেম একের পর এক দাও।" আপনাকে কোনো ইনডেক্স (index) বা নম্বর নিয়ে ভাবতে হবে না এবং ভুলে শেষ সীমানা পার হয়ে যাওয়ার (out of bounds) চিন্তাও করতে হবে না। এটি জাদুর মতোই কাজ করে।

যখন আপনি কোনো অ্যারে (arrays), লিস্ট (lists), স্ট্রিং (strings - হ্যাঁ, স্ট্রিং আসলে ক্যারেক্টারের বা অক্ষরের কালেকশন!) অথবা অন্য যেকোনো কালেকশনের ওপর দিয়ে ইট্যারেট বা এক এক করে লুপ চালাতে চান, তখন foreach ব্যবহার করুন।

foreach, break এবং continue

// foreach with an array
string[] heroes = { "Spider-Man", "Batman", "Wonder Woman", "Iron Man" };
foreach (string hero in heroes)
{
Console.WriteLine($" Hero: {hero}");
}
// foreach with a string (each char!)
string word = "C#";
foreach (char c in word)
{
Console.Write($"[{c}]");
}
Console.WriteLine();
// break — emergency exit
Console.WriteLine("\nSearching for Batman:");
foreach (string hero in heroes)
{
if (hero == "Batman")
{
Console.WriteLine(" Found him!");
break; // stop the loop right now
}
Console.WriteLine($" Not {hero}...");
}
// continue — skip this one, keep going
Console.WriteLine("\nOdd numbers only:");
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
continue; // skip even numbers
Console.Write($"{i} ");
}
Console.WriteLine();
Output
  Hero: Spider-Man
  Hero: Batman
  Hero: Wonder Woman
  Hero: Iron Man
[C][#]

Searching for Batman:
  Not Spider-Man...
  Found him!

Odd numbers only:
1 3 5 7 9 

নেস্টেড লুপস — লুপের ভেতরে লুপ (Nested Loops — Loops Inside Loops)

// Print a multiplication table
Console.WriteLine("Multiplication Table (1-4):");
for (int row = 1; row <= 4; row++)
{
for (int col = 1; col <= 4; col++)
{
Console.Write($"{row * col,4}"); // ,4 pads to 4 chars
}
Console.WriteLine();
}
// Build a triangle
Console.WriteLine("\nTriangle:");
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(new string('*', i));
}
Output
Multiplication Table (1-4):
   1   2   3   4
   2   4   6   8
   3   6   9  12
   4   8  12  16

Triangle:
*
**
***
****
*****
Note: ⚠️ ইনফিনিট বা অসীম লুপ বিষয়ে সতর্কতা! যদি আপনার while বা for লুপের শর্তটি (condition) কখনোই মিথ্যা বা false না হয়, তবে আপনার প্রোগ্রামটি আজীবন চলতেই থাকবে (অথবা আপনি জোর করে বন্ধ না করা পর্যন্ত চলবে)। সব সময় নিশ্চিত করুন যে, লুপের ভেতরে এমন কোনো লজিক (logic) বা মাধ্যম রয়েছে যা আপনাকে লুপ থেকে বের হওয়ার শর্তের (exit condition) দিকে এগিয়ে নিয়ে যাচ্ছে। সবচেয়ে সাধারণ একটি ভুল (trap): কাউন্টার (counter) বাড়াতে বা ইনক্রিমেন্ট (increment) করতে ভুলে যাওয়া।
চ্যালেঞ্জ

ছোট কুইজ

একটি do-while লুপ সব মিলিয়ে অন্ততপক্ষে কতবার রান করে বা চলে?
ConditionalsArrays & Lists