Lesson ৬ মিনিট পড়া

কন্ডিশনালস (Conditionals)

আপনার কোডকে সিদ্ধান্ত নিতে শেখান

কোডের মাধ্যমে সিদ্ধান্ত নেওয়া (Making Choices in Code)

আমাদের দৈনন্দিন জীবন বিভিন্ন সিদ্ধান্তে ভরপুর। "যদি বৃষ্টি হয়, তবে ছাতা নাও। আর তা না হলে, রোদচশমা (sunglasses) পরো।" আপনার লেখা কোডকেও ঠিক এভাবেই সিদ্ধান্ত নিতে হয়, আর কন্ডিশনালস (conditionals) ঠিক এই কাজটিই করে থাকে।

সিদ্ধান্ত নেওয়ার ক্ষেত্রে if স্টেটমেন্টটি হলো সবচেয়ে সাধারণ এবং মৌলিক উপায়। এটি প্রথমে একটি শর্ত বা কন্ডিশন (condition) চেক করে (সেটি হয়তো true হতে পারে, অথবা false) এবং কেবল শর্তটি সত্যি বা true হলেই এটি নিজের ভেতরের ব্লকের কোডটুকু রান করে বা চালায়। আপনি চাইলে else if ব্যবহার করে পরপর অনেকগুলো সিদ্ধান্তকে একসাথে জুড়ে দিতে পারেন এবং সবশেষে বিকল্প বা ফলব্যাক (fallback) হিসেবে else ব্যবহার করতে পারেন।

if / else if / else

int temperature = 28;
if (temperature > 35)
{
Console.WriteLine("It's scorching! Stay indoors.");
}
else if (temperature > 25)
{
Console.WriteLine("Nice and warm. Perfect for the beach!");
}
else if (temperature > 10)
{
Console.WriteLine("A bit chilly. Grab a jacket.");
}
else
{
Console.WriteLine("Freezing! Bundle up.");
}
// Nested if
int age = 16;
bool hasLicense = false;
if (age >= 16)
{
if (hasLicense)
Console.WriteLine("You can drive!");
else
Console.WriteLine("Old enough, but get your license first!");
}
Output
Nice and warm. Perfect for the beach!
Old enough, but get your license first!

Switch — সিদ্ধান্ত নেওয়ার পরিষ্কার উপায় (Switch — The Cleaner Multi-Choice)

যখন আপনি কোনো একটি নির্দিষ্ট মানকে অনেকগুলো অপশন বা বিকল্প মানের সাথে তুলনা করেন বা মিলিয়ে দেখেন, তখন অনেকগুলো গুচ্ছ গুচ্ছ if/else if ব্লক লেখার চেয়ে switch ব্যবহার করাটা অনেক বেশি পরিষ্কার। একে একটি টিভি রিমোটের (TV Remote) মতো ভাবতে পারেন — আপনি একটি বাটন চাপেন (অর্থাৎ একটি মান দেন), আর এটি সেই মানটিকে একদম সঠিক চ্যানেলের সাথে মিলিয়ে কাজ করে।

আধুনিক সি শার্পে (C# 8 থেকে শুরু করে) সুইচ এক্সপ্রেশনস (switch expressions) যুক্ত হয়েছে, যা দেখতে আরও ছোট এবং ছিমছাম। আর এর সাথে প্যাটার্ন ম্যাচিং (pattern matching) যুক্ত হলে সুইচ (switch) অবিশ্বাস্য রকমের শক্তিশালী হয়ে ওঠে — আপনি চাইলে টাইপ, রেঞ্জ (range) বা সীমানা মেলাতে পারেন, এমনকি অনেকগুলো শর্ত একসাথেও জুড়তে পারেন।

Switch স্টেটমেন্ট এবং Switch এক্সপ্রেশন (Switch Statement & Switch Expression)

// Classic switch statement
string day = "Wednesday";
switch (day)
{
case "Monday":
case "Tuesday":
case "Wednesday":
case "Thursday":
case "Friday":
Console.WriteLine($"{day} is a weekday.");
break;
case "Saturday":
case "Sunday":
Console.WriteLine($"{day} is the weekend!");
break;
default:
Console.WriteLine("Not a real day!");
break;
}
// Modern switch expression (much cleaner!)
int score = 87;
string grade = score switch
{
>= 90 => "A",
>= 80 => "B",
>= 70 => "C",
>= 60 => "D",
_ => "F" // _ is the default/discard
};
Console.WriteLine($"Score {score} = Grade {grade}");
Output
Wednesday is a weekday.
Score 87 = Grade B

সুইচের সাহায্যে প্যাটার্ন ম্যাচিং (Pattern Matching in Switch)

// Pattern matching with types
object item = 3.14;
string description = item switch
{
int n when n > 0 => $"Positive integer: {n}",
int n => $"Integer: {n}",
double d => $"Decimal number: {d}",
string s => $"Text: {s}",
null => "Nothing here!",
_ => "Something else entirely"
};
Console.WriteLine(description);
// Ternary operator — mini if/else
int hour = 14;
string period = hour < 12 ? "AM" : "PM";
Console.WriteLine($"It's {hour} — that's {period}");
// Nested ternary (use sparingly!)
string timeOfDay = hour < 12 ? "morning" : hour < 17 ? "afternoon" : "evening";
Console.WriteLine($"Good {timeOfDay}!");
Output
Decimal number: 3.14
It's 14 — that's PM
Good afternoon!
Note: 🎯 আধুনিক সি শার্পে (C#) সুইচ এক্সপ্রেশন (switch expressions, => সহ) ব্যবহার করাটাই নিয়ম। এগুলো তুলনামূলক ছোট হয়, সরাসরি কোনো মান ফেরত বা রিটার্ন দেয় এবং আপনি যদি ভুল করে কোনো অপশন বা কেস (case) বাদ দিয়ে ফেলেন, তবে কম্পাইলার আপনাকে সতর্ক করে দেয়। তাই যখনই বিভিন্ন শর্তের ওপর ভিত্তি করে কোনো মান নির্ধারণ করতে হবে, সুইচ স্টেটমেন্টের বদলে এটি ব্যবহার করুন।
চ্যালেঞ্জ

ছোট কুইজ

একটি সুইচ এক্সপ্রেশনে (switch expression) আন্ডারস্কোর _ বা ডিসকার্ড প্যাটার্ন (discard pattern) বলতে কী বোঝায়?
Strings & InterpolationLoops