Operator
অপারেটর
অপারেটর (Operator)
১. ভূমিকা — ক্যালকুলেটরের বোতামগুলো চেনো?
তুমি যখন গণিত করো:
5 + 3 = 8
এখানে + হলো একটি Operator (অপারেটর)।
আর 5 এবং 3 হলো Operand (অপারেন্ড)।
প্রোগ্রামিং-এ Operator আরও অনেক বেশি শক্তিশালী — শুধু যোগ-বিয়োগ নয়, তুলনা করা, সত্য-মিথ্যা যাচাই করা, এমনকি বিট পর্যন্ত নিয়ন্ত্রণ করা সম্ভব।
২. সমস্যা — প্রোগ্রামে হিসাব ও সিদ্ধান্ত কীভাবে নেবে?
তুমি একটি প্রোগ্রামে চাও:
- দুটি সংখ্যা যোগ করতে → Arithmetic Operator
- বয়স ১৮-র বেশি কিনা যাচাই করতে → Relational Operator
- "পাস এবং উপস্থিত" উভয় শর্ত পূরণ হলে → Logical Operator
- একটি Variable-এ মান রাখতে → Assignment Operator
প্রতিটি কাজের জন্য আলাদা Operator দরকার।
৩. চিত্রের মাধ্যমে বোঝো
C Operators
│
├── Arithmetic → + - * / %
├── Relational → == != > < >= <=
├── Logical → && || !
├── Assignment → = += -= *= /=
├── Increment/Dec → ++ --
└── Bitwise → & | ^ ~ << >>
৪. বাস্তব জীবনের সাথে মিল
ট্রাফিক সিগন্যালের মতো ভাবো:
+,-,*,/→ হিসাব করার যন্ত্র (ক্যালকুলেটর)>,<,==→ তুলনা করার দাঁড়িপাল্লা&&,||→ দুটি শর্ত একসাথে যাচাই (gate)=,+=→ বাক্সে জিনিস রাখা
Module 1: সংজ্ঞা ও ধারণা
Operator (অপারেটর) হলো বিশেষ প্রতীক যা এক বা একাধিক Operand-এর উপর নির্দিষ্ট অপারেশন করে।
Operator-এর ধরন:
| ধরন | উদাহরণ | কাজ |
|---|---|---|
| Arithmetic | +, -, *, /, % | গাণিতিক হিসাব |
| Relational | ==, !=, >, <, >=, <= | তুলনা করা |
| Logical | &&, ` | |
| Assignment | =, +=, -=, *=, /= | মান রাখা |
| Increment/Decrement | ++, -- | ১ বাড়ানো/কমানো |
| Bitwise | &, ` | , ^, ~, <<, >>` |
Module 2: কীভাবে কাজ করে
Operator Precedence (অগ্রাধিকার):
উচ্চ থেকে নিম্ন:
১. () → বন্ধনী সবার আগে
২. ++, -- → Increment/Decrement
৩. *, /, % → গুণ, ভাগ
৪. +, - → যোগ, বিয়োগ
৫. <, >, <=, >= → তুলনা
৬. ==, != → সমতা পরীক্ষা
৭. && → Logical AND
৮. || → Logical OR
৯. =, +=, -= → Assignment
উদাহরণ:
2 + 3 * 4 = ?
→ 3 * 4 আগে = 12
→ 2 + 12 = 14 ✓ (14, 20 নয়)
Module 3: প্যাটার্ন ও উদাহরণ
প্যাটার্ন ১: Arithmetic Operators (গাণিতিক)
উদাহরণ ১.১: পাঁচটি অপারেশন
#include <stdio.h>
int main() {
int a = 17, b = 5;
printf("যোগ: %d + %d = %d\n", a, b, a + b); // 22
printf("বিয়োগ: %d - %d = %d\n", a, b, a - b); // 12
printf("গুণ: %d × %d = %d\n", a, b, a * b); // 85
printf("ভাগফল: %d / %d = %d\n", a, b, a / b); // 3
printf("ভাগশেষ: %d %% %d = %d\n", a, b, a % b); // 2
return 0;
}
আউটপুট:
যোগ: 17 + 5 = 22
বিয়োগ: 17 - 5 = 12
গুণ: 17 × 5 = 85
ভাগফল: 17 / 5 = 3
ভাগশেষ: 17 % 5 = 2
উদাহরণ ১.২: দোকানের হিসাব
#include <stdio.h>
int main() {
int quantity = 6;
float unitPrice = 35.50;
float total = quantity * unitPrice;
float discount = total * 0.10; // 10% ছাড়
float finalPrice = total - discount;
printf("মোট মূল্য: %.2f\n", total);
printf("ছাড় (10%%): %.2f\n", discount);
printf("চূড়ান্ত মূল্য: %.2f\n", finalPrice);
return 0;
}
আউটপুট:
মোট মূল্য: 213.00
ছাড় (10%): 21.30
চূড়ান্ত মূল্য: 191.70
উদাহরণ ১.৩: জোড়/বিজোড় পরীক্ষা (% ব্যবহার)
#include <stdio.h>
int main() {
int numbers[] = {4, 7, 12, 15, 20};
int i;
for (i = 0; i < 5; i++) {
if (numbers[i] % 2 == 0)
printf("%d → জোড়\n", numbers[i]);
else
printf("%d → বিজোড়\n", numbers[i]);
}
return 0;
}
আউটপুট:
4 → জোড়
7 → বিজোড়
12 → জোড়
15 → বিজোড়
20 → জোড়
প্যাটার্ন ২: Relational Operators (তুলনামূলক)
ফলাফল: সত্য হলে
1, মিথ্যা হলে0
উদাহরণ ২.১: তুলনার সারণি
#include <stdio.h>
int main() {
int a = 10, b = 20;
printf("a == b: %d\n", a == b); // 0 (মিথ্যা)
printf("a != b: %d\n", a != b); // 1 (সত্য)
printf("a > b: %d\n", a > b); // 0
printf("a < b: %d\n", a < b); // 1
printf("a >= b: %d\n", a >= b); // 0
printf("a <= b: %d\n", a <= b); // 1
return 0;
}
আউটপুট:
a == b: 0
a != b: 1
a > b: 0
a < b: 1
a >= b: 0
a <= b: 1
উদাহরণ ২.২: পাস/ফেল
#include <stdio.h>
int main() {
int marks;
printf("নম্বর দাও: ");
scanf("%d", &marks);
if (marks >= 33)
printf("পাস! নম্বর: %d\n", marks);
else
printf("ফেল! নম্বর: %d\n", marks);
return 0;
}
উদাহরণ ২.৩: বড় সংখ্যা
#include <stdio.h>
int main() {
int x, y;
scanf("%d %d", &x, &y);
if (x > y)
printf("%d বড়\n", x);
else if (x < y)
printf("%d বড়\n", y);
else
printf("সমান\n");
return 0;
}
প্যাটার্ন ৩: Logical Operators (যৌক্তিক)
উদাহরণ ৩.১: AND (&&) — উভয় শর্ত সত্য হলে
#include <stdio.h>
int main() {
int age = 20;
int hasID = 1; // 1 = আছে, 0 = নেই
if (age >= 18 && hasID == 1)
printf("প্রবেশের অনুমতি আছে।\n");
else
printf("প্রবেশের অনুমতি নেই।\n");
return 0;
}
আউটপুট:
প্রবেশের অনুমতি আছে।
উদাহরণ ৩.২: OR (||) — যেকোনো একটি সত্য হলে
#include <stdio.h>
int main() {
int isStudent = 1;
int isTeacher = 0;
if (isStudent == 1 || isTeacher == 1)
printf("শিক্ষা প্রতিষ্ঠানে প্রবেশ করতে পারবে।\n");
else
printf("বাইরে অপেক্ষা করুন।\n");
return 0;
}
উদাহরণ ৩.৩: NOT (!) — বিপরীত
#include <stdio.h>
int main() {
int isRaining = 0; // 0 = বৃষ্টি নেই
if (!isRaining)
printf("বাইরে যাওয়া যাবে!\n");
else
printf("ছাতা নাও।\n");
return 0;
}
আউটপুট:
বাইরে যাওয়া যাবে!
প্যাটার্ন ৪: Assignment Operators (নিয়োগ)
উদাহরণ ৪.১: সব Assignment Operator
#include <stdio.h>
int main() {
int x = 10;
printf("শুরু: x = %d\n", x);
x += 5; // x = x + 5
printf("x += 5: %d\n", x); // 15
x -= 3; // x = x - 3
printf("x -= 3: %d\n", x); // 12
x *= 2; // x = x * 2
printf("x *= 2: %d\n", x); // 24
x /= 4; // x = x / 4
printf("x /= 4: %d\n", x); // 6
x %= 4; // x = x % 4
printf("x %%= 4: %d\n", x); // 2
return 0;
}
আউটপুট:
শুরু: x = 10
x += 5: 15
x -= 3: 12
x *= 2: 24
x /= 4: 6
x %= 4: 2
প্যাটার্ন ৫: Increment/Decrement (বৃদ্ধি/হ্রাস)
উদাহরণ ৫.১: Pre ও Post Increment
#include <stdio.h>
int main() {
int a = 5, b = 5;
int x, y;
x = ++a; // আগে বাড়াও, তারপর ব্যবহার করো
y = b++; // আগে ব্যবহার করো, তারপর বাড়াও
printf("Pre-increment: a=%d, x=%d\n", a, x); // a=6, x=6
printf("Post-increment: b=%d, y=%d\n", b, y); // b=6, y=5
return 0;
}
আউটপুট:
Pre-increment: a=6, x=6
Post-increment: b=6, y=5
উদাহরণ ৫.২: Loop-এ ব্যবহার
#include <stdio.h>
int main() {
int count = 0;
while (count < 5) {
printf("গণনা: %d\n", count);
count++; // count = count + 1
}
return 0;
}
Module 4: বাস্তব প্রয়োগ
| প্রয়োগ | Operator |
|---|---|
| ATM-এ balance check | >= (balance >= amount?) |
| বয়স যাচাই (voter) | >= (age >= 18?) |
| বাজারে দাম হিসাব | *, +, - |
| লগইন যাচাই | == (password == stored?) |
| গেমে দুটি শর্ত | && (জীবন আছে && level পাস?) |
| ডিসকাউন্ট | %, - |
Module 5: সাধারণ ভুল ও সতর্কতা
ভুল ১: = এবং == গুলিয়ে ফেলা
❌ ভুল:
if (x = 5) // Assignment! x-এ 5 রাখছে, তুলনা নয়
✅ সঠিক:
if (x == 5) // Equality check
ভুল ২: % শুধু int-এ কাজ করে
❌ ভুল:
float a = 5.5;
printf("%f\n", a % 2); // Error! float-এ % চলে না
✅ সঠিক:
int a = 5;
printf("%d\n", a % 2);
ভুল ৩: Integer Division
❌ প্রত্যাশিত নয়:
int result = 7 / 2; // 3 আসবে, 3.5 নয়!
✅ সঠিক:
float result = 7.0 / 2; // 3.5
ভুল ৪: Logical NOT বোঝার ভুল
❌ ভুল:
int x = 5;
if (!x) // 5 != 0, তাই !x = 0 (false) — ভেতরে যাবে না!
✅ মনে রাখো:
// !0 = 1 (true), !5 = 0 (false), !(-3) = 0 (false)
Module 6: সুবিধা-অসুবিধা
| Operator | সুবিধা | সতর্কতা |
|---|---|---|
++ | কোড ছোট | Pre/Post পার্থক্য বোঝো |
+= | পাঠযোগ্য | x += y মানে x = x + y |
% | জোড়/বিজোড়, ঘড়ি গণনা | শুধু int |
&& | দুই শর্ত একসাথে | Short-circuit evaluation |
🔁 নিজে পরীক্ষা করো
MCQ:
১. 10 % 3-এর মান কত?
- ক) 3
- খ) 1 ✓
- গ) 0
- ঘ) 10
২. a == b কী ধরনের Operator?
- ক) Assignment
- খ) Relational ✓
- গ) Logical
- ঘ) Arithmetic
৩. && Operator কখন true (1) দেয়?
- ক) যেকোনো একটি সত্য হলে
- খ) উভয় সত্য হলে ✓
- গ) উভয় মিথ্যা হলে
- ঘ) প্রথমটি সত্য হলে
৪. x = 5; y = x++; — y-এর মান কত?
- ক) 6
- খ) 5 ✓
- গ) 0
- ঘ) 4
৫. x += 3 মানে কী?
- ক)
x = 3 - খ)
x = x + 3✓ - গ)
x = x + 3 + x - ঘ)
3 = x + 3
সংক্ষিপ্ত প্রশ্ন:
৬. Relational এবং Logical Operator-এর পার্থক্য উদাহরণসহ ব্যাখ্যা করো।
৭. Pre-increment এবং Post-increment-এর পার্থক্য কোড দিয়ে দেখাও।
📝 HSC পরীক্ষার প্রস্তুতি
১. = এবং ==-এর পার্থক্য না বুঝলে কী ধরনের bug তৈরি হতে পারে?
২. && এবং ||-এর মধ্যে Short-circuit Evaluation কী? এটা কীভাবে কাজ করে?
৩. % operator দিয়ে কী কী সমস্যা সমাধান করা যায়? তিনটি উদাহরণ দাও।
🎯 অনুশীলন প্রশ্ন
সহজ: দুটি সংখ্যা ইনপুট নাও এবং পাঁচটি Arithmetic Operator ব্যবহার করে ফলাফল দেখাও।
মাঝারি: তিনটি শর্ত পরীক্ষা করো: বয়স ১৮+ AND নাগরিক AND নাম নিবন্ধিত — তিনটি পূরণ হলে "ভোট দিতে পারবে" দেখাও।
কঠিন: একটি ক্যালকুলেটর প্রোগ্রাম লেখো যা দুটি সংখ্যা ও একটি অপারেটর (+,-,*,/) ইনপুট নেবে এবং ফলাফল দেখাবে।
✅ সারাংশ
🎯 মনে রেখো:
- Operator = অপারেশন করার প্রতীক
- ৬ ধরনের Operator:
- Arithmetic:
+,-,*,/,% - Relational:
==,!=,>,<,>=,<=→ ফলাফল 0 বা 1 - Logical:
&&(AND),||(OR),!(NOT) - Assignment:
=,+=,-=,*=,/= - Increment/Decrement:
++,-- - Bitwise:
&,|,^,~,<<,>>
- Arithmetic:
== Assignment,=== Comparison — এটা গুলাবে না!%শুধুint-এ কাজ করে- Precedence:
*,/,%→+,-→ তুলনা → logical
💡 পরীক্ষার টিপস: Relational Operator-এর ফলাফল সবসময় 0 বা 1 — এটা মনে রাখলে অনেক প্রশ্ন সহজ হয়ে যাবে।