beginner#operatorUpdated: 2026-05-13

অপারেটর (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: &, |, ^, ~, <<, >>
  • = = Assignment, == = Comparison — এটা গুলাবে না!
  • % শুধু int-এ কাজ করে
  • Precedence: *, /, %+, - → তুলনা → logical

💡 পরীক্ষার টিপস: Relational Operator-এর ফলাফল সবসময় 0 বা 1 — এটা মনে রাখলে অনেক প্রশ্ন সহজ হয়ে যাবে।