Lesson ৭ মিনিট পড়া

অপারেটরস এবং এক্সপ্রেশনস (Operators & Expressions)

আপনার কোডের ক্রিয়াপদ — এদের মাধ্যমেই সবকিছু সম্পন্ন হয়

অপারেটর কী? (What Are Operators?)

ভ্যারিয়েবলগুলোকে (variables) যদি আপনার কোডের বিশেষ্য (nouns) ভাবা হয়, তবে অপারেটরগুলো হলো ক্রিয়াপদ বা ভার্ব (verbs)। তারা মূলত কোনো কাজ (stuff) করে থাকে — যেমন সংখ্যা যোগ করা, দুটি মানের মধ্যে তুলনা করা, বা একাধিক শর্ত জোড়া লাগানো। এগুলোকে এমন কিছু অ্যাকশন ওয়ার্ড (action words) হিসেবে ভাবতে পারেন, যেগুলো আপনার প্রোগ্রামকে শুধু ডেটা ধরে না রেখে বরং সত্যিই কিছু একটা করার নির্দেশ দেয়।

সি শার্পে (C#) বেশ কয়েকটি পরিবারের অপারেটর রয়েছে, আর এগুলোর বেশিরভাগই আপনি প্রতিদিনের কাজে ব্যবহার করবেন।

অ্যারিথমেটিক বা গাণিতিক অপারেটর — ম্যাথ ক্লাস (Arithmetic Operators — Math Class)

int a = 17, b = 5;
Console.WriteLine($"Add: {a + b}"); // 22
Console.WriteLine($"Subtract: {a - b}"); // 12
Console.WriteLine($"Multiply: {a * b}"); // 85
Console.WriteLine($"Divide: {a / b}"); // 3 (integer division!)
Console.WriteLine($"Remainder: {a % b}"); // 2 (modulus)
// Watch out: int / int = int (no decimals!)
double exact = (double)a / b;
Console.WriteLine($"Exact div: {exact}"); // 3.4
// Increment & decrement
int score = 0;
score++; // score is now 1
score += 10; // score is now 11
score--; // score is now 10
Console.WriteLine($"Score: {score}");
Output
Add:       22
Subtract:  12
Multiply:  85
Divide:    3
Remainder: 2
Exact div: 3.4
Score: 10

কম্পারিজন এবং লজিক্যাল অপারেটর (Comparison & Logical Operators)

এই অপারেটরগুলো হ্যাঁ-অথবা-না ভিত্তিক প্রশ্ন (yes-or-no questions) করে এবং এর উত্তরে true (সত্য) অথবা false (মিথ্যা) ফেরত দেয়।

  • == সমান কি না (ডাবল ইকুয়াল বা double equals — সিগেল = এর অর্থ হলো মান অ্যাসাইন করা!)
  • != সমান নয় কি না
  • <, >, <=, >= — তুলনা করার কাজ করে
  • && — AND বা এবং (দুটি শর্তই অবশ্যই সত্য হতে হবে)
  • || — OR বা অথবা (যেকোনো একটি শর্ত সত্য হলেই হবে)
  • ! — NOT বা না (true ↔ false উল্টে দেয়)

&&-কে একজন কঠোর অভিভাবক হিসেবে ভাবতে পারেন ("তোমাকে একই সাথে রুম পরিষ্কার করতে হবে এবং হোমওয়ার্ক শেষ করতে হবে"), আর ||-কে একজন শান্ত স্বভাবের অভিভাবক হিসেবে ভাবতে পারেন ("যেকোনো একটা করলেই চলবে")।

কম্পারিজন এবং লজিক (Comparisons & Logic)

int age = 15;
bool hasTicket = true;
// Comparison operators
Console.WriteLine($"Is teenager: {age >= 13 && age <= 19}");
Console.WriteLine($"Can vote: {age >= 18}");
Console.WriteLine($"Not a baby: {age != 1}");
// Logical operators
bool canRide = age >= 12 && hasTicket;
Console.WriteLine($"Can ride: {canRide}");
bool freeEntry = age < 5 || age > 65;
Console.WriteLine($"Free entry: {freeEntry}");
bool notAllowed = !hasTicket;
Console.WriteLine($"Blocked: {notAllowed}");
Output
Is teenager: True
Can vote:    False
Not a baby:  True
Can ride:    True
Free entry:  False
Blocked:     False

টার্নারি অপারেটর এবং নাল ট্রিকস (The Ternary Operator & Null Tricks)

টার্নারি অপারেটর (ternary operator) ? : হলো একটি ছোট্ট if/else, যেটিকে এক লাইনের ভেতর গুছিয়ে লেখা যায়। এটি ছোটখাটো সিদ্ধান্ত নেওয়ার ক্ষেত্রে দারুণ কাজ করে:

condition ? valueIfTrue : valueIfFalse

সি শার্পে (C#) নাল-নিরাপত্তা বা null-safety এর জন্য দুটি চমৎকার অপারেটরও রয়েছে:

  • ??নাল-কয়েলেসিং (null-coalescing): "এই মানটি ব্যবহার করো, অথবা (OR) যদি এটি নাল বা ফাঁকা হয়, তবে ব্যাকআপ হিসেবে রাখা ওই মানটি ব্যবহার করো।"
  • ?.নাল-কন্ডিশনাল (null-conditional): "যদি এই অবজেক্টটি (object) নাল না হয়, তবেই শুধু ওই প্রোপার্টিটি অ্যাক্সেস বা ব্যবহার করো। আর না হলে, আমাকে শুধু একটি নাল (null) দিয়ে দাও।"
  • isপ্যাটার্ন ম্যাচিং (pattern matching): এটি টাইপ ঠিক আছে কিনা তা চেক করে এবং একই সাথে এক ধাপেই এর ভেতরের মানটি বের করে আনতে পারে।

টার্নারি, নাল অপারেটরস এবং প্যাটার্ন ম্যাচিং (Ternary, Null Operators & Pattern Matching)

// Ternary operator
int temp = 35;
string weather = temp > 30 ? "Hot! Stay inside" : "Nice day!";
Console.WriteLine(weather);
// Null-coalescing ??
string? username = null;
string displayName = username ?? "Anonymous";
Console.WriteLine($"Welcome, {displayName}");
// Null-conditional ?.
string? message = null;
int? length = message?.Length; // null, not a crash
Console.WriteLine($"Length: {length ?? 0}");
// Pattern matching with 'is'
object mystery = 42;
if (mystery is int number)
{
Console.WriteLine($"It's a number: {number * 2}");
}
object greeting = "Hello";
if (greeting is string text && text.Length > 3)
{
Console.WriteLine($"Long greeting: {text}");
}
Output
Hot! Stay inside
Welcome, Anonymous
Length: 0
It's a number: 84
Long greeting: Hello
Note: 💡 ?? অপারেটরটি নাল (null) থেকে সুরক্ষিত থাকার জন্য আপনার বডিগার্ড হিসেবে কাজ করে। নাল চেক করার জন্য অনেক বড় একটি if/else লেখার বদলে, আপনি শুধু এটি লিখতে পারেন: var name = input ?? "default"; — এক লাইনের কোড, আর কোনো ক্র্যাশ (crash) নেই।
চ্যালেঞ্জ

ছোট কুইজ

এর ফলাফল কী হবে: সি শার্পে 17 / 5 (যেখানে দুটোই int)?
Variables & Data TypesStrings & Interpolation