অপারেটরঃ
Operator
হচ্ছে
একটি
symbol,
যা
কম্পাইলারকে একটি নির্দিষ্ট
কাজ সম্পন্ন করার নির্দেশ
দেয়। যেমনঃ “+”
হচ্ছে
একটি অপারেটর যা যোগ এর কাজ
সম্পন্ন করে।
সি
ল্যাঙ্গুয়েজে অনেক ধরণের
অপারেটর আছে,
যেমনঃ
-
Arithmetic operators
-
Assignment operators
-
Increment/Decrements operators
-
Relational operators
-
Logical operators
-
Conditional operators
-
Bitwise operators
নিচে
এগুলো সম্পর্কে বিস্তারিত
আলোচনা করা হলঃ
Arithmetic
operators:
এই
অপারেটরগুলো ম্যাথম্যাটিক্যাল
ক্যালকুলেশনের জন্য ইউজ হয়।
যেমনঃ যোগ,
বিয়োগ,
ভাগ
ইত্যাদি। এই অপারেটরগুলো হলঃ
- Addition
- Subtractions
- Multiplication
- Division
- Remainder
Arithmetic
operators’ এর
উদাহরণঃ
#include
<stdio.h>
int
main()
{
int
a=8;
int
b=5;
int
result;
result=a+b;
printf("a+b=
%d\n", result);
result=a-b;
printf("a-b=
%d\n ", result);
result=a*b;
printf("a*b=
%d\n ", result);
result=a/b;
printf("a/b=
%d\n ", result);
result=a%b;
printf("a%b=
%d\n ", result);
return
0;
}
অউটপুটঃ
a+b=13
a-b=3
a*b=40
a/b=1
a%b=3
এই
প্রোগ্রামে,
+, - এবং
*
অপারেটর
যথাক্রমে যোগ,
বিয়োগ
এবং গুন এর কাজ করে আমাদেরকে
আউটপুট 13,
3 এবং
40
প্রিন্ট
করছে। কিন্তু ভাগের ক্ষেত্রে,
8/5 সমান
1.6
প্রিন্ট
করার কথা,
তা
না করে কম্পাইলার আমাদেরকে
আউটপুট 1
প্রিন্ট
করছে কারণ a
এবং
b
উভয়ই
ইন্টিজার। তাই কম্পাইলার
আমাদেরকে ইন্টিজারে আউটপুট
প্রিন্ট করছে এবং ডেসিমল
পয়েন্টের পরের ডিজিটগুলো আর
প্রিন্ট করে নাই। অবশেষে a%b
এর
মান 3
প্রিন্ট
করছে কারণ a=8
কে
b=5
দ্বারা
ভাগ করলে ভাগশেষ 3
থাকে।
Assignment
operators:
এই
অপারেটরগুলো সি প্রোগ্রামে,
ভেরিয়েবলের
মান অ্যাসাইন করার জন্য ব্যবহার
হয়।
এই
অপারেটরগুলো হলঃ
সাধারণতঃ
‘=’
সাইন
দিয়ে ভ্যালু অ্যাসাইন করা
হয়। এই সাইনের ডান পাশের মান
বাম পাশের ভেরিয়েবলে অ্যাসাইন
করে। যেমনঃ num=5
Increment/Decrement
operators: সি
প্রোগ্রামে ভেরিয়েবলের মান
বাড়াতে বা কমাতে এই অপারেটরগুলো
ব্যবহার হয়। এই অপারেটরগুলো
হলঃ
Increment
এবং
decrement
অপারেটগুলো
দুই প্রকারঃ
১।
Postfix
Increment অথবা
Postfix
Decrement অপারেটর
২।
Prefix
Increment অথবা
Prefix
Decrement অপারেটর
Postfix
Increment অথবা
Postfix
Decrement অপারেটরঃ
যদি অপারেটর ভেরিয়েবলের নামের
পরে লেখা হয় তাহলে তাকে Postfix
Increment অথবা
Postfix
Decrement অপারেটর
বলে। Postfix
Increment অপারেটর,
যেমনঃ
a++
প্রথমে
ভেরিয়েবলের মান ইউজ হবে তারপর
ভেরিয়েবলের মান 1
বৃদ্ধি
করবে। Postfix
Decrement অপারেটর,
যেমনঃ
a--
প্রথমে
ভেরিয়েবলের মান ইউজ হবে তারপর
ভেরিয়েবলের মান 1
কমবে।
Prefix
Increment অথবা
Prefix
Decrement অপারেটরঃ
যদি অপারেটর ভেরিয়েবলের নামের
আগে লেখা হয় তাহলে তাকে Prefix
Increment অথবা
Prefix
Decrement অপারেটর
বলে। Prefix
Increment অপারেটর,
যেমনঃ
++a
প্রথমে
ভেরিয়েবলের মান ভেরিয়েবলের
মান 1
বৃদ্ধি
করবে তারপর ইউজ হবে । Prefix
Decrement অপারেটর,
যেমনঃ
--a
প্রথমে
ভেরিয়েবলের মান 1
কমবে
তারপর ইউজ হবে ।
Prefix
এবং
Postfix
এর
পার্থক্য বুঝার জন্য আমরা
এখন একটা প্রোগ্রাম দেখবঃ
#include
int
main()
{
int
a,b,c;
a=4;
b=++a;
c=a++;
printf("a=%d\n",a);
printf("b=
%d\n",b);
printf("c=
%d",c);
return
0;
}
Output:
6
5
5
এই
প্রোগ্রামে,
মেইন
ফাংশানের প্রথম স্টেটমেন্টে
a,b,c
নামে
তিনটি ইন্টিজার টাইপের ভেরিয়েবল
ডিক্লেয়ার করা হয়েছে। তার
পরের স্টেটমেন্টে a
ভেরিয়েবলের
মান 4
অ্যাসাইন
করা হয়েছে। এখন,
b=++a এর
মানে হচ্ছে প্রথমে a
ভেরিয়েবলের
মান 1
বৃদ্ধি
পাবে এবং ভেরিয়েবল b
তে
অ্যাসাইন হবে অর্থাৎ ভেরিয়েবল
b
তে
5
অ্যাসাইন
হবে ।
তারপর,
c=a++ এর
মানে হচ্ছে প্রথমে ভেরিয়েবল
a
এর
মান ভেরিয়েবল c
তে
অ্যাসাইন হবে তারপর ভেরিয়েবল
a
এর
মান 1
বৃদ্ধি
পাবে তাই ভেরিয়েবল c
তে
ও 5
অ্যাসাইন
হবে এবং a
ভেরিয়েবলের
মান হবে 6।
Relational
operators: দুইটি
ভেরিয়েবলের মধ্যে সম্পর্ক
চেক করে দেখার জন্য এই অপারেটরগুলোর
ব্যবহার হয়। সম্পর্ক যদি সত্য
হয়ে তাহলে এটি 1
রিটার্ন
করে,
আর
যদি সম্পর্ক মিথ্য হয় তাহলে
এটি 0
রিটার্ন
করে। কম্পিউটার 1
দ্বারা
সত্য এবং 0
দ্ধারা
মিথ্যা বুঝে নেয়। অপারেটরগুলো
হলঃ
যেমনঃ
“>”
একটি
Relational
অপারেটর।
যদি a
ভেরিয়েবলর
মান b
ভেরিয়েবলের
মান থেকে বেশি হয় অর্থাৎ a>b
হয়
তাহলে 1
রিটার্ন
করবে অন্যাথায় 0
রিটার্ন
করবে।
Logical
operators: দুইটি
ভেরিয়েবলের মধ্যে লজিকেল কাজ
করার জন্য এই অপারেটরগুলো
ব্যবহার হয়। অপারেটরগুলো হলঃ
Conditional
operators: এই
অপারেটরগুলো কন্ডিশন সত্য
হলে একধরণের মান রিটার্ন করার
জন্য আর কন্ডিশন মিথ্যা হলে
অন্যধরণের মান রিটার্ন করার
জন্য ব্যবহার হয়। Conditional
অপারেটর
হচ্ছে দুইটি symbol
(?,:), এর
মধ্যে তিনটি আর্গুমেন্ট নিবে।
নিচের সিনট্যাক্স দেখঃ
Expression1?expression2:expression3;
এখানে
তিনটি expression
আছে,
expression1 এ
একটি কন্ডিশন থাকে যদি কন্ডিশন
সত্য হয় তাহলে expression2
স্টেটমেন্ট
এক্সিকিউট হবে,
আর
মিথ্যা হলে expression3
স্টেটমেন্ট
এক্সিকিউট হবে। অর্থাৎ
নিচের
প্রোগ্রামটি দেখঃ
#include
int
main()
{
int
a,b,c;
a=5;
b=6;
c=a>b?4:7;
printf("c=%d",c);
return
0;
}
Output:
c=7
এই
প্রোগ্রামে,
মেইন
ফাংশানের ভিতরে আমরা ইন্টিজার
টাইপের তিনটি ভেরিয়েবল যথাক্রমে
a,
b এবং
c
ডিক্লেয়ার
করলাম। তারপর ভেরিয়েবল a
এর
মান অ্যাসাইন করলাম 5
এবং
b
এর
মান অ্যাসাইন করলাম 6।
তারপর
c=a>b?a:b;
মানে
হচ্ছে যদি কন্ডিশন (a>b)
সত্য
হয় তাহলে c
ভেরিয়েবলে
4
অ্যাসাইন
হবে,
আর
যদি কন্ডিশন (a>b)
মিথ্যা
হয় তাহলে c
ভেরিয়েবলে
7
অ্যাসাইন
হবে। এখানে কন্ডিশন মিথ্যা
হওয়ার কারণে c
ভেরিয়েবলে
7
অ্যাসাইন
হবে তাই আউটপুট 7
পেয়েছি।
Bitwise
operators: এই
অপারেটরগুলো দুইটি ভেরিয়েবলের
মধ্যে bitwise
অপারেশনের
জন্য ব্যবহৃত হয়। অপারেটরগুলো
হলঃ