অপারেটর এবং এক্সপ্রেশন প্রোগ্রামিংয়ের দুটি গুরুত্বপূর্ণ ধারণা, যা ডেটা প্রসেসিং, গাণিতিক হিসাব, এবং লজিক্যাল সিদ্ধান্ত গ্রহণে সহায়ক।
অপারেটর (Operator)
অপারেটর হলো একটি প্রতীক বা চিহ্ন, যা ভেরিয়েবল বা মানগুলোর উপর নির্দিষ্ট ধরনের কাজ সম্পাদন করে। অপারেটর বিভিন্ন ধরনের হতে পারে, যেমন গাণিতিক অপারেটর, লজিক্যাল অপারেটর, তুলনামূলক অপারেটর ইত্যাদি।
অপারেটরের ধরন
Arithmetic Operators (গাণিতিক অপারেটর): এই অপারেটরগুলো গাণিতিক কাজ সম্পাদন করে, যেমন যোগ, বিয়োগ, গুণ, ভাগ ইত্যাদি।
- উদাহরণ:
+,-,*,/,%
Relational Operators (তুলনামূলক অপারেটর): এই অপারেটরগুলো দুইটি মানের মধ্যে তুলনা করে এবং সত্য (True) অথবা মিথ্যা (False) রিটার্ন করে।
- উদাহরণ:
==,!=,>,<,>=,<=
Logical Operators (লজিক্যাল অপারেটর): এই অপারেটরগুলো লজিক্যাল কাজ সম্পাদন করে এবং সাধারণত শর্ত যাচাইয়ে ব্যবহৃত হয়।
- উদাহরণ:
&&(AND),||(OR),!(NOT)
Assignment Operators (এসাইনমেন্ট অপারেটর): এই অপারেটরগুলো ভেরিয়েবলে মান নির্ধারণ বা মান পরিবর্তনের জন্য ব্যবহৃত হয়।
- উদাহরণ:
=,+=,-=,*=,/=
Unary Operators (ইউনারি অপারেটর): একটিমাত্র ভেরিয়েবলে কাজ করে, যেমন ইনক্রিমেন্ট এবং ডিক্রিমেন্ট অপারেটর।
- উদাহরণ:
++(ইনক্রিমেন্ট),--(ডিক্রিমেন্ট)
এক্সপ্রেশন (Expression)
এক্সপ্রেশন হলো এক বা একাধিক অপারেটর ও অপারেন্ডের সমন্বয়ে গঠিত একটি স্টেটমেন্ট, যা একটি নির্দিষ্ট মান প্রদান করে। এক্সপ্রেশন একটি গাণিতিক বা লজিক্যাল কাজ সম্পাদন করতে পারে এবং এর ফলাফল সাধারণত একটি মান হিসেবে রিটার্ন করে।
এক্সপ্রেশনের উদাহরণ
গাণিতিক এক্সপ্রেশন:
এখানে a + b * 2 হলো একটি গাণিতিক এক্সপ্রেশন, যা গাণিতিক কাজ সম্পাদন করে।
int a = 10;
int b = 5;
int result = a + b * 2; // ফলাফল হবে 20
লজিক্যাল এক্সপ্রেশন:
এখানে (age >= 18) একটি লজিক্যাল এক্সপ্রেশন, যা true বা false রিটার্ন করে।
int age = 20;
boolean isAdult = (age >= 18); // true রিটার্ন করবে
কম্পাউন্ড এক্সপ্রেশন: একাধিক অপারেটর একত্রে ব্যবহার করে কম্পাউন্ড এক্সপ্রেশন তৈরি করা যায়।
int a = 10;
int b = 5;
boolean result = (a > b) && (a != b); // true রিটার্ন করবে
অপারেটর এবং এক্সপ্রেশনের মধ্যে সম্পর্ক
অপারেটর হলো এক্সপ্রেশনের একটি অংশ, যা ভেরিয়েবল বা মানের উপর নির্দিষ্ট কাজ সম্পাদন করে। এক্সপ্রেশন অপারেটর ও অপারেন্ডের সমন্বয়ে গঠিত হয় এবং একটি নির্দিষ্ট মান প্রদান করে।
উদাহরণ:
int a = 10;
int b = 5;
int sum = a + b; // এখানে `a + b` একটি এক্সপ্রেশন যেখানে `+` হলো অপারেটর
সারসংক্ষেপ
| বিষয় | বর্ণনা |
|---|---|
| অপারেটর | নির্দিষ্ট কাজ সম্পাদনের জন্য ব্যবহৃত প্রতীক |
| এক্সপ্রেশন | অপারেটর ও অপারেন্ডের সমন্বয়ে তৈরি মান প্রদানকারী স্টেটমেন্ট |
অপারেটর এবং এক্সপ্রেশন প্রোগ্রামিংয়ে গাণিতিক, লজিক্যাল এবং শর্তমূলক কাজ সম্পাদনে গুরুত্বপূর্ণ ভূমিকা পালন করে।
আরিথমেটিক অপারেটর হলো প্রোগ্রামিংয়ে ব্যবহৃত এমন অপারেটর, যা গাণিতিক কাজ বা হিসাব সম্পাদন করতে সহায়ক। এই অপারেটরগুলো সাধারণত যোগ, বিয়োগ, গুণ, ভাগ এবং ভাগশেষ নির্ণয়ের কাজ করে।
আরিথমেটিক অপারেটরের তালিকা এবং তাদের ব্যবহার
+ (যোগ অপারেটর):
- এই অপারেটরটি দুইটি মানের যোগফল প্রদান করে।
- এটি সংখ্যা এবং স্ট্রিং উভয়ের জন্য ব্যবহৃত হতে পারে। স্ট্রিংয়ের ক্ষেত্রে এটি যুক্ত বা কনক্যাটিনেশন করতে সহায়ক।
- (বিয়োগ অপারেটর):
- এই অপারেটরটি প্রথম মান থেকে দ্বিতীয় মানটি বিয়োগ করে।
* (গুণ অপারেটর):
- এই অপারেটরটি দুইটি মানের গুণফল প্রদান করে।
/ (ভাগ অপারেটর):
- এই অপারেটরটি প্রথম মানটিকে দ্বিতীয় মান দিয়ে ভাগ করে এবং ভাগফল প্রদান করে।
- এটি পুরো সংখ্যার ভাগফল প্রদান করে। তবে কিছু ভাষায় দশমিকের জন্য ভিন্ন ডেটাটাইপ ব্যবহার করা হয় (যেমন:
floatবাdouble)।
% (মডুলাস অপারেটর):
- এই অপারেটরটি প্রথম মানটিকে দ্বিতীয় মান দিয়ে ভাগ করলে ভাগশেষ কত থাকে তা প্রদান করে।
- এটি সাধারণত এমন জায়গায় ব্যবহৃত হয় যেখানে ভাগশেষ বা রিমেইন্ডার প্রয়োজন হয়, যেমন সংখ্যা জোড় না বিজোড় চেক করতে।
আরিথমেটিক অপারেটরের সারসংক্ষেপ
| অপারেটর | নাম | কাজ | উদাহরণ | ফলাফল |
|---|---|---|---|---|
+ | যোগ | দুটি মান যোগ করে | 10 + 5 | 15 |
- | বিয়োগ | প্রথম মান থেকে দ্বিতীয় মান বিয়োগ | 10 - 5 | 5 |
* | গুণ | দুটি মান গুণ করে | 10 * 5 | 50 |
/ | ভাগ | প্রথম মানকে দ্বিতীয় মান দিয়ে ভাগ করে | 10 / 5 | 2 |
% | মডুলাস/ভাগশেষ | প্রথম মানকে দ্বিতীয় মান দিয়ে ভাগ করে ভাগশেষ বের করে | 10 % 3 | 1 |
আরিথমেটিক অপারেটরের ব্যবহারিক উদাহরণ
আরিথমেটিক অপারেটর ব্যবহার করে দৈনন্দিন গাণিতিক কাজ সম্পাদন করা যায়, যেমন হিসাব-নিকাশ, গড় বের করা, মডুলাস চেক করা ইত্যাদি। এগুলো প্রোগ্রামিংয়ে মৌলিক গাণিতিক ক্রিয়াকলাপ সহজ করে তোলে এবং বিভিন্ন কাজ সম্পাদনে সহায়ক।
রিলেশনাল অপারেটর হলো এমন ধরনের অপারেটর যা দুইটি মানের মধ্যে তুলনা বা সম্পর্ক স্থাপন করে এবং ফলস্বরূপ True অথবা False মান প্রদান করে। প্রোগ্রামিংয়ে শর্ত পূরণের জন্য বা সিদ্ধান্ত গ্রহণে এই অপারেটরগুলো ব্যাপকভাবে ব্যবহৃত হয়।
রিলেশনাল অপারেটরগুলোর তালিকা এবং তাদের ব্যবহার
== (সমান):
- এই অপারেটরটি চেক করে যে দুইটি মান সমান কিনা। যদি সমান হয় তবে এটি True প্রদান করে, অন্যথায় False।
!= (সমান নয়):
- এই অপারেটরটি চেক করে যে দুইটি মান সমান নয় কিনা। যদি সমান না হয় তবে এটি True প্রদান করে, অন্যথায় False।
> (বড়):
- এই অপারেটরটি চেক করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে বড় কিনা। যদি বড় হয় তবে এটি True প্রদান করে।
< (ছোট):
- এই অপারেটরটি চেক করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে ছোট কিনা। যদি ছোট হয় তবে এটি True প্রদান করে।
>= (বড় বা সমান):
- এই অপারেটরটি চেক করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে বড় বা সমান কিনা। যদি বড় বা সমান হয় তবে এটি True প্রদান করে।
<= (ছোট বা সমান):
- এই অপারেটরটি চেক করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে ছোট বা সমান কিনা। যদি ছোট বা সমান হয় তবে এটি True প্রদান করে।
রিলেশনাল অপারেটরের সারসংক্ষেপ
| অপারেটর | নাম | কাজ | উদাহরণ | ফলাফল |
|---|---|---|---|---|
== | সমান | চেক করে দুইটি মান সমান কিনা | 5 == 5 | True |
!= | সমান নয় | চেক করে দুইটি মান সমান নয় কিনা | 5 != 3 | True |
> | বড় | চেক করে প্রথম মান দ্বিতীয় মানের চেয়ে বড় কিনা | 10 > 5 | True |
< | ছোট | চেক করে প্রথম মান দ্বিতীয় মানের চেয়ে ছোট কিনা | 5 < 10 | True |
>= | বড় বা সমান | চেক করে প্রথম মান দ্বিতীয় মানের চেয়ে বড় বা সমান কিনা | 10 >= 10 | True |
<= | ছোট বা সমান | চেক করে প্রথম মান দ্বিতীয় মানের চেয়ে ছোট বা সমান কিনা | 5 <= 10 | True |
রিলেশনাল অপারেটরের ব্যবহার
রিলেশনাল অপারেটর সাধারণত শর্ত নির্ধারণের ক্ষেত্রে ব্যবহার করা হয়, যেমন if-else স্টেটমেন্ট বা লুপ (যেমন for, while) শর্ত চেক করতে। উদাহরণস্বরূপ:
int age = 18;
if (age >= 18) {
System.out.println("You are eligible to vote.");
} else {
System.out.println("You are not eligible to vote.");
}
এখানে >= রিলেশনাল অপারেটরটি ব্যবহার করে চেক করা হয়েছে যে বয়স ১৮ বা এর বেশি কিনা।
লজিক্যাল অপারেটর প্রোগ্রামিংয়ে ব্যবহৃত অপারেটরের একটি ধরন, যা শর্ত যাচাই এবং সিদ্ধান্ত গ্রহণে সহায়ক। লজিক্যাল অপারেটর সাধারণত Boolean মান (যেমন: True এবং False) নিয়ে কাজ করে এবং বিভিন্ন শর্তের মধ্যে সম্পর্ক স্থাপন করে।
লজিক্যাল অপারেটরগুলোর তালিকা এবং তাদের ব্যবহার
&& (AND অপারেটর):
- এই অপারেটরটি তখনই True প্রদান করে, যখন দুটি শর্তই True হয়। যদি কোনো একটি শর্ত False হয়, তবে এটি False প্রদান করে।
- এটি একই সাথে একাধিক শর্ত পূরণ চেক করার জন্য ব্যবহৃত হয়।
int age = 25;
boolean hasLicense = true;
if (age >= 18 && hasLicense) {
System.out.println("You are eligible to drive.");
} else {
System.out.println("You are not eligible to drive.");
}
এখানে, যদি age ১৮ বা এর বেশি হয় এবং hasLicense True হয়, তাহলে এটি "You are eligible to drive." প্রিন্ট করবে।
|| (OR অপারেটর):
- এই অপারেটরটি তখনই True প্রদান করে, যখন অন্তত একটি শর্ত True হয়। অর্থাৎ, যদি দুটি শর্তের যেকোনো একটি True হয়, তবে এটি True প্রদান করে।
- এটি সাধারণত এমন ক্ষেত্রে ব্যবহৃত হয়, যেখানে একাধিক শর্তের যেকোনো একটি পূরণ হলেই চলে।
boolean isStudent = true;
boolean isSeniorCitizen = false;
if (isStudent || isSeniorCitizen) {
System.out.println("You are eligible for a discount.");
} else {
System.out.println("You are not eligible for a discount.");
}
এখানে, যদি isStudent বা isSeniorCitizen এর যেকোনো একটি True হয়, তবে এটি "You are eligible for a discount." প্রিন্ট করবে।
! (NOT অপারেটর):
- এই অপারেটরটি কোনো শর্তের বিপরীত মান প্রদান করে। অর্থাৎ, True কে False এবং False কে True এ রূপান্তরিত করে।
- এটি সাধারণত শর্তের মান উল্টে দেখার জন্য ব্যবহৃত হয়।
boolean isLoggedIn = false;
if (!isLoggedIn) {
System.out.println("Please log in to continue.");
}
এখানে, isLoggedIn যদি False হয়, তবে !isLoggedIn True হবে এবং এটি "Please log in to continue." প্রিন্ট করবে।
লজিক্যাল অপারেটরের সারসংক্ষেপ
| অপারেটর | নাম | কাজ | উদাহরণ | ফলাফল |
|---|---|---|---|---|
&& | AND | দুটি শর্তই True হলে True প্রদান করে | true && false | False |
| ` | ` | OR | অন্তত একটি শর্ত True হলে True প্রদান করে | |
! | NOT | শর্তের মান উল্টে দেয় | !true | False |
লজিক্যাল অপারেটরের ব্যবহার
লজিক্যাল অপারেটরগুলো সাধারণত শর্তবাক্য (যেমন: if-else) বা লজিক্যাল এক্সপ্রেশনে ব্যবহৃত হয়, যেখানে একাধিক শর্ত একত্রে চেক করতে হয়। উদাহরণস্বরূপ:
int age = 20;
boolean isMember = true;
if (age >= 18 && isMember) {
System.out.println("You have access to the member area.");
} else {
System.out.println("You do not have access to the member area.");
}
এখানে, age >= 18 এবং isMember এর মান যদি উভয়ই True হয়, তবে "You have access to the member area." প্রিন্ট করবে।
বিটওয়াইজ অপারেটর এবং অ্যাসাইনমেন্ট অপারেটর প্রোগ্রামিংয়ের দুটি ভিন্ন ধরনের অপারেটর, যা বিভিন্ন ধরনের কাজ সম্পাদন করতে ব্যবহৃত হয়। বিটওয়াইজ অপারেটর মূলত বাইনারি স্তরে কাজ করে, যেখানে অ্যাসাইনমেন্ট অপারেটর মান নির্ধারণ বা মান পরিবর্তনের জন্য ব্যবহৃত হয়।
বিটওয়াইজ অপারেটর (Bitwise Operators)
বিটওয়াইজ অপারেটর মূলত বাইনারি স্তরে কাজ করে, অর্থাৎ এটি প্রতিটি সংখ্যাকে বিট আকারে ভেঙে দেয় এবং প্রতিটি বিটের উপর কাজ করে। বিটওয়াইজ অপারেটর সাধারণত সংখ্যা সংশোধন, ইমেজ প্রসেসিং, ক্রিপ্টোগ্রাফি ইত্যাদিতে ব্যবহৃত হয়।
বিটওয়াইজ অপারেটরের প্রকারভেদ
& (AND):
- দুই বিটের মধ্যে উভয়ই
1হলে ফলাফল1হয়, অন্যথায়0হয়। - উদাহরণ:
5 & 3(৫ এর বাইনারি0101এবং ৩ এর0011) হলে ফলাফল হবে0001, অর্থাৎ1।
| (OR):
- দুই বিটের মধ্যে অন্তত একটি
1হলে ফলাফল1হয়, অন্যথায়0হয়। - উদাহরণ:
5 | 3হলে ফলাফল হবে0111, অর্থাৎ7।
^ (XOR):
- দুই বিটের একটি
1এবং অন্যটি0হলে ফলাফল1হয়, অন্যথায়0। - উদাহরণ:
5 ^ 3হলে ফলাফল হবে0110, অর্থাৎ6।
~ (NOT):
- প্রতিটি বিট উল্টে দেয়, অর্থাৎ
1কে0এবং0কে1করে। - উদাহরণ:
~5হলে ফলাফল হবে-6(সাইনড দুই-এর কমপ্লিমেন্টে)।
<< (Left Shift):
- প্রতিটি বিটকে নির্দিষ্ট সংখ্যক স্থানে বাঁ দিকে সরায়। প্রতিটি স্থান সরানোর ফলে সংখ্যাটি
2দ্বারা গুণ হয়। - উদাহরণ:
5 << 1(বাঁ দিকে ১ বার সরানো) হলে ফলাফল হবে10।
>> (Right Shift):
- প্রতিটি বিটকে নির্দিষ্ট সংখ্যক স্থানে ডানে সরায়। প্রতিটি স্থান সরানোর ফলে সংখ্যাটি
2দ্বারা ভাগ হয়। - উদাহরণ:
5 >> 1(ডানে ১ বার সরানো) হলে ফলাফল হবে2।
অ্যাসাইনমেন্ট অপারেটর (Assignment Operators)
অ্যাসাইনমেন্ট অপারেটর সাধারণত একটি ভেরিয়েবলে মান নির্ধারণ করতে ব্যবহৃত হয়। অ্যাসাইনমেন্ট অপারেটরগুলো মাধ্যমে ভেরিয়েবলের মান নির্ধারণ করা বা বিদ্যমান মানে নির্দিষ্ট পরিবর্তন করা সম্ভব।
অ্যাসাইনমেন্ট অপারেটরের প্রকারভেদ
= (Simple Assignment):
- একটি ভেরিয়েবলে সরাসরি মান প্রদান করে।
- উদাহরণ:
int a = 5;
+= (Add and Assignment):
- ভেরিয়েবলের বিদ্যমান মানের সাথে নতুন মান যোগ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a += 3;(যদিaএর মান5থাকে, তবে এখনaহবে8)
-= (Subtract and Assignment):
- ভেরিয়েবলের বিদ্যমান মান থেকে নির্দিষ্ট মান বিয়োগ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a -= 2;(যদিaএর মান8থাকে, তবে এখনaহবে6)
*= (Multiply and Assignment):
- ভেরিয়েবলের বিদ্যমান মানের সাথে নির্দিষ্ট মান গুণ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a *= 2;(যদিaএর মান6থাকে, তবে এখনaহবে12)
/= (Divide and Assignment):
- ভেরিয়েবলের বিদ্যমান মান নির্দিষ্ট মান দিয়ে ভাগ করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a /= 3;(যদিaএর মান12থাকে, তবে এখনaহবে4)
%= (Modulus and Assignment):
- ভেরিয়েবলের বিদ্যমান মানের ভাগশেষ বের করে এবং সেটি ভেরিয়েবলে সংরক্ষণ করে।
- উদাহরণ:
a %= 3;(যদিaএর মান4থাকে, তবে এখনaহবে1)
বিটওয়াইজ এবং অ্যাসাইনমেন্ট অপারেটরের সারসংক্ষেপ
| অপারেটর | নাম | কাজ |
|---|---|---|
& | বিটওয়াইজ AND | প্রতিটি বিটের মধ্যে AND করে। |
| ` | ` | বিটওয়াইজ OR |
^ | বিটওয়াইজ XOR | প্রতিটি বিটের মধ্যে XOR করে। |
~ | বিটওয়াইজ NOT | প্রতিটি বিট উল্টে দেয়। |
<< | লেফট শিফট | বাঁ দিকে বিট সরিয়ে সংখ্যাটিকে গুণ করে। |
>> | রাইট শিফট | ডানে বিট সরিয়ে সংখ্যাটিকে ভাগ করে। |
= | এসাইনমেন্ট | মান সেট করে। |
+= | যোগ এবং এসাইনমেন্ট | বিদ্যমান মানের সাথে যোগ করে সেটি সংরক্ষণ করে। |
-= | বিয়োগ এবং এসাইনমেন্ট | বিদ্যমান মান থেকে বিয়োগ করে সেটি সংরক্ষণ করে। |
*= | গুণ এবং এসাইনমেন্ট | বিদ্যমান মানের সাথে গুণ করে সেটি সংরক্ষণ করে। |
/= | ভাগ এবং এসাইনমেন্ট | বিদ্যমান মান ভাগ করে সেটি সংরক্ষণ করে। |
%= | মডুলাস এবং এসাইনমেন্ট | ভাগশেষ বের করে সেটি সংরক্ষণ করে। |
উপসংহার
বিটওয়াইজ অপারেটর বিট স্তরে কাজ করার জন্য কার্যকর, যা সংখ্যা সংশোধন, ক্রিপ্টোগ্রাফি ইত্যাদিতে ব্যবহৃত হয়। অ্যাসাইনমেন্ট অপারেটর ভেরিয়েবলের মান নির্ধারণ ও পরিবর্তনের জন্য ব্যবহৃত হয়, যা প্রোগ্রামিংয়ে অনেকটাই সহজ ও সময় সাশ্রয়ী করে।
Read more