Header Ads

C Programming Operator সি প্রোগ্রামিং অপারেটর

সি প্রোগ্রামিং অপারেটর


এরিথমেটিক(arithmetic), কন্ডিশনাল(conditional) এবং বিটওয়াজ(bitwise) অপারেশন সম্পন্ন করার জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর(oparetor) রয়েছে। এই অধ্যায়ে আপনি বিভিন্ন ধরণের সি অপারেটর এবং এদের ব্যবহার সম্মন্ধে জানবেন।

অপারেটর এক ধরণের প্রতীক(symbol) যা ভ্যালু(value) অথবা ভ্যারিয়েবলকে অপারেট করতে পারে। উদাহরণস্বরূপঃ +(যোগ চিহ্ন) একটি অপারেটর যা যোগের কাজে ব্যবহৃত হয়।
বিভিন্ন ধরণের অপারেশন সম্পাদনের জন্য সি প্রোগ্রামিং এ অনেক ধরণের অপারেটর রয়েছে। ভালভাবে বুঝার জন্য অপারেটরসমূহকে নিম্নোক্ত উপায়ে বিভক্ত করা যায়ঃ

সি প্রোগ্রামিং অপারেটর

  1. এরিথমেটিক অপারেটর - Arithmetic Operator
  2. ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর- Increment and Decrement Operator
  3. এসাইনমেন্ট অপারেটর - Assignment Operator
  4. রিলেশনাল অপারেটর - Relational Operator
  5. লজিকাল অপারেটর - Logical Operator
  6. কন্ডিশনাল অপারেটর - Conditional Operator
  7. বিটওয়াইজ অপারেটর - Bitwise Operator
  8. স্পেশিয়াল অপারেটর - Special Operator

সি এরিথমেটিক অপারেটর

এরিথমেটিক অপারেটর গাণিতিক হিসাব নিকাশ যেমন- যোগ, বিয়োগ, গুন এবং ভাগ ইত্যাদি কার্য সম্পন্ন করে।
অপারেটরঅপারেটেরের অর্থউদাহরণ(int a=11, b=5)ফলাফল
+যোগ বা ইউনারী(unary) যোগa + b16
-বিয়োগ বা ইউনারী বিয়োগa - b6
*গুনa * b55
/ভাগa / b2
%ভাগের পরে ফলাফল ভাগশেষ(মডিউলো অপারেটর)a % b1

উদাহরণঃ এরিথমেটিক অপারেটর

// সি প্রোগ্রামে এরিথমেটিক অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 11,b = 5, c;
    
    c = a+b;
    printf("a+b = %d \n",c);

    c = a-b;
    printf("a-b = %d \n",c);
    
    c = a*b;
    printf("a*b = %d \n",c);
    
    c=a/b;
    printf("a/b = %d \n",c);
    
    c=a%b;
    printf("Remainder when a divided by b = %d \n",c);
    
    return 0;
}


আউটপুট
a+b = 16
a-b = 6
a*b = 55
a/b = 2
Remainder when a divided by b=1
+, - এবং * অপারেটর সঠিকভাবে যথাক্রমে যোগ, বিয়োগ এবং গুন করে।
সাধারনভাবে আপনি যদি 11 কে 5 (11/5)দিয় ভাগ করেন তাহলে ভাগফল পাবেন 2.2। কিন্তু আমাদের প্রোগ্রামের আউটপুট 2 পাওয়া গেছে।
কারণ উভয় ভ্যারিয়েবলের টাইপ ইন্টেজার। তাই আউটপুটও ইন্টেজার হয়েছে। কম্পাইলার দশমিক সংখ্যার দশমিকের পরের অংশকে কেটে ফেলেছে ফলে ফলাফল 2.2 এর পরিবর্তে 2 হয়েছে।
মডিউলো অপারেটর % এর মাধ্যমে ভাগশেষ পাওয়া যায়। উপরের উদাহরণে a = 11 কে b = 5 দিয়ে ভাগ করায় ভাগশেষ 1 পাওয়া গেছে। শুধুমাত্র ইন্টেজারের ক্ষেত্রেই % অপারেটর ব্যবহৃত হয়।
ধরুন a = 10.0, b = 4.0, c = 10 এবং d = 4 তাহলে সি প্রোগ্রামিং

a/b = 2.5  //কারণ উভয় অপারেন্ড ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। 
a/d = 2.5  //কারণ একটি অপারেন্ড  ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। 
c/b = 2.5  //কারণ একটি অপারেন্ড  ফ্লোটিং পয়েন্ট ভ্যারিয়েবল। 
c/d = 2    // কারণ উভয় অপারেন্ড  ইন্টেজার ভ্যারিয়েবল।

ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর

কনস্ট্যান্ট অথবা ভ্যারিয়েবলের অপারেন্ডেকে ১ করে বৃদ্ধি বা হ্রাসের জন্য সি প্রোগ্রামিং এ যথাক্রমে দুটি অপারেটর আছে একটি হলো ইনক্রিমেন্ট(increment) ++ এবং অপরটি হলো ডিক্রিমেন্ট(decrement) --।
ইনক্রিমেন্ট অপারেটর ভ্যারিয়েবলের ভ্যালু এক করে বৃদ্ধি করে পক্ষান্তরে ডিক্রিমেন্ট অপারেটর ভ্যালু এক করে হ্রাস করে। এই দুটি অপারেটরকে ইউনারী(unary) অপারেটর বলা হয় কারণ এরা সিঙ্গেল অপারেন্ডকে অপারেট করতে পারে।

উদাহরণঃ ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর

// সি প্রোগ্রামে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 15, b = 150;
    float c = 50.5, d = 80.5;

    printf("++a = %d \n", ++a);

    printf("--b = %d \n", --b);

    printf("++c = %f \n", ++c);

    printf("--d = %f \n", --d);

    return 0;
}

আউটপুট
++a = 16
--b = 149
++c = 51.500000
--d = 79.500000
এখানে অপারেটর ++ এবং -- প্রিফিক্স(prefix) হিসাবে ব্যবহৃত হয়েছে। এই অপারেটর দুটি পোস্টফিক্স(postfix) হিসাবেও ব্যবহৃত হতে পারে। যেমন- a++ এবং a--। ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর সম্বন্ধে আরোও জানতে সি প্রোগ্রামে ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর অধ্যায় ভিজিট করুন।

সি এসাইনমেন্ট অপারেটর

ভ্যারিয়েবলে ভ্যালু এসাইন করা বা জমা রাখার জন্য এসাইনমেন্ট(assignment) অপারেটর ব্যবহৃত হয়। সবচেয়ে বেশী ব্যবহৃত এসাইনমেন্ট অপারেটর হলো =
অপারেটরউদাহরন(int a=11, b=5)একই রকমফলাফল
=a = ba = b5
+=a += ba = a+b16
-=a -= ba = a-b6
*=a *= ba = a*b55
/=a /= ba = a/b2
%=a %= ba = a%b1

উদাহরণঃ এসাইনমেন্ট অপারেটর

// সি প্রোগ্রামে এসাইনমেন্ট অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 10, c;

    c = a;
    printf("c = %d \n", c);

    c += a; // c = c+a
    printf("c = %d \n", c);

    c -= a; // c = c-a
    printf("c = %d \n", c);

    c *= a; // c = c*a
    printf("c = %d \n", c);

    c /= a; // c = c/a
    printf("c = %d \n", c);

    c %= a; // c = c%a
    printf("c = %d \n", c);

    return 0;
}


আউটপুট
c = 10
c = 20 
c = 10 
c = 100 
c = 10
c = 0

সি রিলেশনাল অপারেটর

সি প্রোগ্রামিং এ রিলেশনাল অপারেটর(relational operator) দুটি অপারেন্ডের মধ্যে সম্পর্ক যাচাই করে। রিলেশন সত্যি(true) হলে 1 রিটার্ন করে; রিলেশন মিথ্যা(false) হলে 0 রিটার্ন করে।
সিদ্ধান্ত গ্রহণ(decision making) এবং লুপ(loop) এ রিলেশনাল অপারেটর ব্যবহৃত হয়।
অপারেটরঅপারেটরের অর্থউদাহরণ(int a=11, b=5)ফলাফল
==Equal toa == bFalse
>Greater thana > bTrue
<Less thana < bFalse
!=Not equal toa != bTrue
>=Greater than or equal toa >= bTrue
<=Less than or equal toa <= bFalse

উদাহরণ: রিলেশনাল অপারেটর

// সি প্রোগ্রামে রিলেশনাল  অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো। 
#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10;

    printf("%d == %d = %d \n", a, b, a == b); // true
    printf("%d == %d = %d \n", a, c, a == c); // false

    printf("%d > %d = %d \n", a, b, a > b); //false
    printf("%d > %d = %d \n", a, c, a > c); //false


    printf("%d < %d = %d \n", a, b, a < b); //false
    printf("%d < %d = %d \n", a, c, a < c); //true


    printf("%d != %d = %d \n", a, b, a != b); //false
    printf("%d != %d = %d \n", a, c, a != c); //true


    printf("%d >= %d = %d \n", a, b, a >= b); //true
    printf("%d >= %d = %d \n", a, c, a >= c); //false


    printf("%d <= %d = %d \n", a, b, a <= b); //true
    printf("%d <= %d = %d \n", a, c, a <= c); //true

    return 0;

}


আউটপুট
5 == 5 = 1
5 == 10 = 0
5 > 5 = 0
5 > 10 = 0
5 < 5 = 0
5 < 10 = 1
5 != 5 = 0
5 != 10 = 1
5 >= 5 = 1
5 >= 10 = 0
5 <= 5 = 1
5 <= 10 = 1 

সি লজিক্যাল অপারেটর

সি প্রোগ্রামিং এ &&, || এবং ! অপারেটরসমূহকে লজিক্যাল(Logial) অপারেটর বলা হয়। সি প্রোগ্রামিং এসিদ্ধান্ত গ্রহণে(in decision making ) সচারচর লজিক্যাল অপারেটর ব্যবহৃত হয়।
অপারেটরঅপারেটরের অর্থউদাহরণ(int a=11, b=5, c =15)ফলাফল
&&Logial AND - উভয় অপারেন্ড true হলে True (a==b) && (b>c)True
||Logical OR - যেকোনো একটি অপারেন্ড true হলে True(b==c) || (a>c)False
!Logical NOT - অপারেন্ড false হলে True!(b==c)True

উদাহরণঃ লজিক্যাল অপারেটর

//  সি প্রোগ্রামে লজিক্যাল  অপারেটর কিভাবে কাজ করে এই উদাহরণের সাহায্যে তা দেখানো হলো।

#include <stdio.h>
int main()
{
    int a = 5, b = 5, c = 10, result;

    result = (a = b) && (c > b);
    printf("(a = b) && (c > b) equals to %d \n", result);

    result = (a = b) && (c < b);
    printf("(a = b) && (c < b) equals to %d \n", result);

    result = (a = b) || (c < b);
    printf("(a = b) || (c < b) equals to %d \n", result);

    result = (a != b) || (c < b);
    printf("(a != b) || (c < b) equals to %d \n", result);

    result = !(a != b);
    printf("!(a == b) equals to %d \n", result);

    result = !(a == b);
    printf("!(a == b) equals to %d \n", result);

    return 0;
}

আউটপুট
(a = b) && (c > b) equals to 1 
(a = b) && (c < b) equals to 0 
(a = b) || (c < b) equals to 1 
(a != b) || (c < b) equals to 0 
!(a != b) equals to 1 
!(a == b) equals to 0 

উপরের উদাহরণের ব্যাখ্যা
  • (a = b) এবং (c > b) উভয় অপারেন্ড true হওয়ায় (a = b) && (c > 5) এর ফলাফল 1 হয়েছে।
  •  অপারেন্ড (c < b) এর ভ্যালু false হওয়ায় (a = b) && (c < b) এর ফলাফল 0 হয়েছে।
  •  অপারেন্ড (a = b) এর ভ্যালু true হওয়ায় (a = b) || (c < b) এর ফলাফল 1 হয়েছে।
  •  (a != b) এবং (c < b) উভয় অপারেন্ড false হওয়ায় (a != b) || (c < b) এর ফলাফল 0 হয়েছে।
  • অপারেন্ড (a != b) এর ভ্যালু false হওয়ায় !(a != b) এর ফলাফল 1 হয়েছে। কারণ !(a != b) এর ভ্যালু true।
  •  অপারেন্ড (a == b) এর ভ্যালু true হওয়ায় !(a == b) এর ফলাফল 0 হয়েছে। কারণ !(a == b) এর ভ্যালু false।

বিটওয়াইজ অপারেটর

হিসাব নিকাশের সময় গাণিতিক অপারেশন যেমন- যোগ, বিয়োগ, গুণ এবং ভাগ বিট-লেভেলে রূপান্তরিত হলে দ্রুত প্রোসেসিং হয় এবং শক্তি(power) সংরক্ষিত হয়।
সি প্রোগ্রামিং এ বিট-লেভেল অপারেশন সম্পন্ন করার জন্য বিটওয়াইজ(Bitwise) অপারেটর ব্যবহৃত হয়।
মনেকরি, নিচের টেবিলে x = 10 (বাইনারিতে 0000 1010) এবং y = 4 (বাইনারিতে 0000 0100)
অপারেটরঅপারেটরের অর্থউদাহরণ(x=10 এবং y=4)ফলাফল
&Bitwise ANDx& y = 0 (0000 0000)0
|Bitwise ORx | y = 14 (0000 1110)14
^Bitwise exclusive ORx ^ y = 14 (0000 1110)14
~Bitwise complement~x = -11 (1111 0101)-11
<<Shift leftx<< 2 = 42 (0010 1000)42
>>Shift rightx>> 2 = 2 (0000 0010)2
বিটওয়াইজ অপারেটর সম্মন্ধে আরোও জানতে আমাদের সি বিটওয়াইজ অপারেটর অধ্যায় ভিজিট করুন

অন্যান্য অপারেটর


কমা অপারেটর

সম্পর্কযুক্ত এক্সপ্রেশনসমূহকে একইসঙ্গে ডিক্লেয়ার(declare) করার জন্য কমা(comma) অপারেটর ব্যবহৃত হয়। উদাহরনস্বরুপঃ
int a, b = 10,  c = 5, d;

sizeof অপারেটর

sizeof অপারেটর হলো ইউনারী অপারেটর যা ডেটা যেমন- কনস্ট্যান্ট, ভ্যারিয়েবল, অ্যারে, স্ট্রাকচার ইত্যাদির সাইজ রিটার্ন করে

সিনট্যাক্স

sizeof(variable)

উদাহরণঃ sizeof অপারেটর

#include <stdio.h>
#include<conio.h>

void main()
{
int a;
float b;
double c;
char d;
printf("Size of Integer: %d bytes\n",sizeof(a));
printf("Size of float: %d bytes\n",sizeof(b));
printf("Size of double: %d bytes\n",sizeof(c));
printf("Size of character: %d byte\n",sizeof(d));
getch();
}

আউটপুট
Size of Integer: 2 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of character: 1 byte

 সি টারনারী অপারেটর (?:)

যখন কোনো অপারেটর তিনটি অপারেন্ড(oparend) নিয়ে কাজ করে তাকে টারনারী(ternary) অপারেটর বলে। টারনারী অপারেটর দেখতে ?: এমন। টারনারী অপারেটরকে কন্ডিশনাল অপারেটরও বলা হয়।

কন্ডিশনাল অপারেটর সিনট্যাক্স

 

কন্ডিশনাল অপারেটরের কাজের ধাপ নিম্নে বর্ণনা করা হলোঃ
উপরের সিনট্যাক্সে বুলিয়ান এক্সপ্রেশন হলো কন্ডিশন এবং true part ও false part হয় ভ্যালু অথবা ভ্যারিয়েবল অথবা স্টেটমেন্ট অথবা যেকোনো গাণিতিক এক্সপ্রেশন হতে পারে। কন্ডিশন True হলে True part সম্পাদিত হয় অন্যথায় false part সম্পাদিত হয়।

উদাহরনঃ সি টারনারী(কন্ডিশনাল) অপারেটর

#include <stdio.h>
#include<conio.h>

void main()
{
int a, b, c, large;
clrscr();
printf("Enter any three number: ");
scanf("%d%d%d",&a,&b,&c);
large=a>b ? (a>c?a:c) : (b>c?b:c);
printf("Largest Number is: %d",large);
getch();
}

আউটপুট
Enter any three number: 10 15 7
Largest number is 15

No comments

Powered by Blogger.