অপারেটর এবং এক্সপ্রেশন
অপারেটর এবং এক্সপ্রেশন প্রোগ্রামিং ভাষার দুটি মৌলিক উপাদান যা ডেটার উপরে বিভিন্ন কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়। সি প্রোগ্রামিং ভাষায়, অপারেটরগুলি মানগুলির সাথে কাজ করে এবং এক্সপ্রেশনগুলি অপারেটর এবং তাদের সাথে যুক্ত ভেরিয়েবল বা মানের সমন্বয়ে গঠিত।
অপারেটর (Operators)
অপারেটর হল বিশেষ চিহ্ন বা শব্দ যা এক বা একাধিক মানের (অথবা ভেরিয়েবলের) উপর কাজ করে এবং একটি ফলাফল তৈরি করে। সি প্রোগ্রামিং ভাষায় প্রধান অপারেটরগুলির মধ্যে রয়েছে:
১. আরিথমেটিক অপারেটর (Arithmetic Operators)
এই অপারেটরগুলি সংখ্যা এবং সংখ্যার মধ্যে গাণিতিক গণনা সম্পাদন করে।
| অপারেটর | বর্ণনা | উদাহরণ |
|---|---|---|
+ | যোগ | a + b |
- | বিয়োগ | a - b |
* | গুণ | a * b |
/ | ভাগ | a / b |
% | মডুলো (শেষাংশ) | a % b |
২. রিলেশনাল অপারেটর (Relational Operators)
এই অপারেটরগুলি দুইটি মানের মধ্যে সম্পর্ক নির্ধারণ করে।
| অপারেটর | বর্ণনা | উদাহরণ |
|---|---|---|
== | সমান | a == b |
!= | সমান নয় | a != b |
> | বড় | a > b |
< | ছোট | a < b |
>= | বড় বা সমান | a >= b |
<= | ছোট বা সমান | a <= b |
৩. লজিক্যাল অপারেটর (Logical Operators)
এই অপারেটরগুলি লজিক্যাল অভিব্যক্তি তৈরি করতে ব্যবহৃত হয়।
| অপারেটর | বর্ণনা | উদাহরণ |
|---|---|---|
&& | লজিক্যাল AND | a && b |
| ` | ` | |
! | লজিক্যাল NOT | !a |
৪. বিটওয়াইজ অপারেটর (Bitwise Operators)
এই অপারেটরগুলি বিটের উপর কাজ করে।
| অপারেটর | বর্ণনা | উদাহরণ |
|---|---|---|
& | বিটওয়াইজ AND | a & b |
| ` | ` | বিটওয়াইজ OR |
^ | বিটওয়াইজ XOR | a ^ b |
~ | বিটওয়াইজ NOT | ~a |
<< | বাম শিফট | a << 1 |
>> | ডান শিফট | a >> 1 |
এক্সপ্রেশন (Expressions)
এক্সপ্রেশন হল এক বা একাধিক অপারেটর এবং ভেরিয়েবলের সমন্বয়ে গঠিত একটি অংশ যা একটি মান প্রদান করে। উদাহরণস্বরূপ:
সাধারণ এক্সপ্রেশন:
int sum = a + b; // এখানে `a + b` একটি এক্সপ্রেশন
শর্ত ভিত্তিক এক্সপ্রেশন:
int max = (a > b) ? a : b; // ত্রৈমাসিক অপারেটর ব্যবহার করে
উদাহরণ (C প্রোগ্রাম)
নিচে একটি সাধারণ C প্রোগ্রাম দেওয়া হলো যা অপারেটর এবং এক্সপ্রেশন ব্যবহার করে।
#include <stdio.h>
int main() {
int a = 10, b = 20;
// আরিথমেটিক অপারেটর
int sum = a + b;
printf("Sum: %d\n", sum); // 30
// রিলেশনাল অপারেটর
if (a < b) {
printf("a is less than b\n"); // This will be printed
}
// লজিক্যাল অপারেটর
if (a < b && b > 15) {
printf("Both conditions are true\n"); // This will be printed
}
// বিটওয়াইজ অপারেটর
int bitwiseAnd = a & b;
printf("Bitwise AND: %d\n", bitwiseAnd); // Output depends on values of a and b
return 0;
}
উপসংহার
- অপারেটর হল প্রোগ্রামে গাণিতিক এবং লজিক্যাল কাজ করার জন্য ব্যবহৃত চিহ্ন।
- এক্সপ্রেশন হল অপারেটর এবং ভেরিয়েবলের সমন্বয়ে গঠিত একটি অংশ যা একটি ফলাফল তৈরি করে।
- সি প্রোগ্রামিং ভাষায় বিভিন্ন ধরনের অপারেটর এবং এক্সপ্রেশন রয়েছে, যা ডেটার সাথে কাজ করার সময় গুরুত্বপূর্ণ ভূমিকা পালন করে।
আরিথমেটিক অপারেটর: +, -, *, /, %
আরিথমেটিক অপারেটরগুলি সংখ্যার মধ্যে গাণিতিক কার্যক্রম সম্পাদন করতে ব্যবহৃত হয়। C প্রোগ্রামিং ভাষায় প্রধান আরিথমেটিক অপারেটরগুলির মধ্যে রয়েছে:
- যোগ (
+) - বিয়োগ (
-) - গুণ (
*) - ভাগ (
/) - মডুলো (
%) (শেষাংশ প্রদান করে)
C তে আরিথমেটিক অপারেটরগুলির উদাহরণ
নিচে C প্রোগ্রামিং ভাষায় এই অপারেটরগুলির ব্যবহার সহ একটি উদাহরণ দেওয়া হয়েছে:
#include <stdio.h>
int main() {
int a = 10, b = 3;
// যোগ
int sum = a + b;
printf("Sum: %d\n", sum); // Output: Sum: 13
// বিয়োগ
int difference = a - b;
printf("Difference: %d\n", difference); // Output: Difference: 7
// গুণ
int product = a * b;
printf("Product: %d\n", product); // Output: Product: 30
// ভাগ
float quotient = (float)a / b; // দশমিক ফলাফল পেতে
printf("Quotient: %.2f\n", quotient); // Output: Quotient: 3.33
// মডুলো (শেষাংশ)
int remainder = a % b;
printf("Remainder: %d\n", remainder); // Output: Remainder: 1
return 0;
}
কোড বিশ্লেষণ
যোগ (+):
int sum = a + b;- এখানে
aএবংbএর যোগফলsumভেরিয়েবলে সংরক্ষণ করা হয়।
বিয়োগ (-):
int difference = a - b;- এখানে
aথেকেbবিয়োগ করা হয় এবং ফলাফলdifferenceভেরিয়েবলে সংরক্ষণ করা হয়।
গুণ (*):
int product = a * b;- এখানে
aএবংbএর গুণফলproductভেরিয়েবলে সংরক্ষণ করা হয়।
ভাগ (/):
float quotient = (float)a / b;- এখানে
aকেbদিয়ে ভাগ করা হয় এবং ফলাফলকেfloatটাইপে কাস্ট করে দশমিক সংখ্যা হিসেবে সংরক্ষণ করা হয়। এতে নিশ্চিত করা হয় যে ভাগফল একটি দশমিক মান হবে।
মডুলো (%):
int remainder = a % b;- এখানে
aএবংbএর মধ্যে মডুলো অপারেশন করা হয়, যাaথেকেbএর বিভাজকের অবশিষ্টাংশ প্রদান করে।
আউটপুট
প্রোগ্রামটি চালানোর পর নিচের আউটপুট দেখা যাবে:
Sum: 13
Difference: 7
Product: 30
Quotient: 3.33
Remainder: 1
উপসংহার
সি প্রোগ্রামিং ভাষায় আরিথমেটিক অপারেটরগুলি গাণিতিক কার্যকলাপের জন্য গুরুত্বপূর্ণ। এগুলি ব্যবহার করে বিভিন্ন ধরনের গণনা সম্পাদন করা যায়, যা প্রোগ্রামিংয়ের মৌলিক অংশ। এই অপারেটরগুলির সাহায্যে আমরা সহজেই সংখ্যা নিয়ে কাজ করতে পারি এবং বিভিন্ন গাণিতিক সমস্যা সমাধান করতে পারি।
সি প্রোগ্রামিং ভাষায়, রিলেশনাল অপারেটরগুলি দুটি ভ্যালুর মধ্যে সম্পর্ক যাচাই করতে ব্যবহার করা হয়। এই অপারেটরগুলো বুলিয়ান ফলাফল (True বা False) প্রদান করে। সি ভাষায় ব্যবহৃত রিলেশনাল অপারেটরগুলো হল:
== (সমান কিনা): দুই ভ্যালু সমান হলে True রিটার্ন করে, অন্যথায় False।
if (a == b) {
// Code to execute if a is equal to b
}
!= (সমান নয় কিনা): দুই ভ্যালু অসমান হলে True রিটার্ন করে, অন্যথায় False।
if (a != b) {
// Code to execute if a is not equal to b
}
> (বড় কিনা): বামপাশের ভ্যালু ডানপাশের ভ্যালুর চেয়ে বড় হলে True রিটার্ন করে, অন্যথায় False।
if (a > b) {
// Code to execute if a is greater than b
}
< (ছোট কিনা): বামপাশের ভ্যালু ডানপাশের ভ্যালুর চেয়ে ছোট হলে True রিটার্ন করে, অন্যথায় False।
if (a < b) {
// Code to execute if a is less than b
}
>= (বড় বা সমান কিনা): বামপাশের ভ্যালু ডানপাশের ভ্যালুর চেয়ে বড় বা সমান হলে True রিটার্ন করে, অন্যথায় False।
if (a >= b) {
// Code to execute if a is greater than or equal to b
}
<= (ছোট বা সমান কিনা): বামপাশের ভ্যালু ডানপাশের ভ্যালুর চেয়ে ছোট বা সমান হলে True রিটার্ন করে, অন্যথায় False।
if (a <= b) {
// Code to execute if a is less than or equal to b
}
উদাহরণ:
নিচে একটি উদাহরণ দেওয়া হলো, যেখানে এই অপারেটরগুলো ব্যবহৃত হয়েছে:
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
if (a == b) {
printf("a is equal to b\n");
}
if (a != b) {
printf("a is not equal to b\n");
}
if (a > b) {
printf("a is greater than b\n");
}
if (a < b) {
printf("a is less than b\n");
}
if (a >= b) {
printf("a is greater than or equal to b\n");
}
if (a <= b) {
printf("a is less than or equal to b\n");
}
return 0;
}
আউটপুট:
এখানে a = 10 এবং b = 20, তাই আউটপুট হবে:
a is not equal to b
a is less than b
a is less than or equal to b
এই রিলেশনাল অপারেটরগুলি সাধারণত if, while, for লুপের শর্তে ব্যবহার করা হয়।
C প্রোগ্রামিং ভাষায় লজিক্যাল অপারেটরগুলোকে বুলিয়ান লজিক সম্পাদনের জন্য ব্যবহার করা হয়। এখানে &&, ||, এবং ! অপারেটরের সংক্ষিপ্ত ব্যাখ্যা দেওয়া হলো:
&& (Logical AND):
- এই অপারেটরটি তখনই
trueহয় যখন এর দুই পাশের দুইটি শর্তইtrueহয়। - উদাহরণ:
- উপরের কোডে, যদি
aএবংbউভয়ই0এর চেয়ে বড় হয়, তাহলে মেসেজটি প্রদর্শিত হবে।
int a = 5;
int b = 10;
if (a > 0 && b > 0) {
printf("Both a and b are positive.\n");
}
|| (Logical OR):
- এই অপারেটরটি তখনই
trueহয় যখন এর কোনো একটি শর্তtrueহয়। - উদাহরণ:
- এখানে, যদি
aঅথবাbএর যেকোনো একটি0এর চেয়ে বড় হয়, তাহলে মেসেজটি প্রদর্শিত হবে।
int a = -5;
int b = 10;
if (a > 0 || b > 0) {
printf("At least one of a or b is positive.\n");
}
! (Logical NOT):
- এই অপারেটরটি একটি শর্তকে বিপরীত করে। অর্থাৎ, শর্ত
trueহলে এটিকেfalseকরে এবং শর্তfalseহলে এটিকেtrueকরে। - উদাহরণ:
- উপরের কোডে
a > 10শর্তটিfalse, কিন্তু!অপারেটরের কারণে এটিtrueহয়ে যাবে এবং মেসেজটি প্রদর্শিত হবে।
int a = 5;
if (!(a > 10)) {
printf("a is not greater than 10.\n");
}
এই অপারেটরগুলো কন্ডিশনাল স্টেটমেন্টে লজিক্যাল চেক করার জন্য অত্যন্ত গুরুত্বপূর্ণ এবং কার্যকর।
সি প্রোগ্রামিং ভাষায় অ্যাসাইনমেন্ট অপারেটর এবং ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেটর প্রোগ্রামিং লজিককে সহজ ও কার্যকরী করতে ব্যবহৃত হয়।
১. অ্যাসাইনমেন্ট অপারেটর
অ্যাসাইনমেন্ট অপারেটর মূলত একটি ভ্যারিয়েবলে ভ্যালু অ্যাসাইন বা নির্ধারণ করতে ব্যবহৃত হয়। সি ভাষায় বেশ কয়েকটি অ্যাসাইনমেন্ট অপারেটর আছে।
সাধারণ অ্যাসাইনমেন্ট অপারেটর:
=: বামপাশের ভ্যারিয়েবলে ডানপাশের ভ্যালু অ্যাসাইন করে।
int a = 5; // a-কে ৫ ভ্যালু অ্যাসাইন করা হচ্ছে
যৌগিক অ্যাসাইনমেন্ট অপারেটর:
+= : বামপাশের ভ্যারিয়েবলে ডানপাশের ভ্যালু যোগ করে ও ফলাফল অ্যাসাইন করে।
a += 3; // a = a + 3; অর্থাৎ a এর মান ৩ যোগ করে আপডেট করা হবে।
-= : বামপাশের ভ্যারিয়েবলে ডানপাশের ভ্যালু বিয়োগ করে ও ফলাফল অ্যাসাইন করে।
a -= 2; // a = a - 2;
*= : বামপাশের ভ্যারিয়েবলে ডানপাশের ভ্যালু দ্বারা গুণ করে ও ফলাফল অ্যাসাইন করে।
a *= 4; // a = a * 4;
/= : বামপাশের ভ্যারিয়েবলে ডানপাশের ভ্যালু দ্বারা ভাগ করে ও ফলাফল অ্যাসাইন করে।
a /= 2; // a = a / 2;
%= : বামপাশের ভ্যারিয়েবলে ডানপাশের ভ্যালু দ্বারা ভাগের শেসাংশ অ্যাসাইন করে।
a %= 3; // a = a % 3;
উদাহরণ:
#include <stdio.h>
int main() {
int a = 10;
a += 5; // a = 15
a -= 3; // a = 12
a *= 2; // a = 24
a /= 4; // a = 6
a %= 5; // a = 1
printf("Final value of a: %d\n", a);
return 0;
}
২. ইনক্রিমেন্ট/ডিক্রিমেন্ট অপারেটর
এই অপারেটরগুলো একটি ভ্যারিয়েবলের মান ১ করে বৃদ্ধি বা হ্রাস করতে ব্যবহৃত হয়।
ইনক্রিমেন্ট অপারেটর:
++: ভ্যারিয়েবলের মান ১ বৃদ্ধি করে। এটি দুটি রূপে ব্যবহৃত হয়:- প্রিফিক্স ইনক্রিমেন্ট (
++a) : ভ্যারিয়েবলের মান ১ বাড়ানো হয় এবং তারপর ব্যবহার করা হয়। - পোস্টফিক্স ইনক্রিমেন্ট (
a++) : ভ্যারিয়েবলের বর্তমান মান ব্যবহার করা হয় এবং তারপর ১ বাড়ানো হয়।
- প্রিফিক্স ইনক্রিমেন্ট (
ডিক্রিমেন্ট অপারেটর:
--: ভ্যারিয়েবলের মান ১ হ্রাস করে। এটিও দুটি রূপে ব্যবহৃত হয়:- প্রিফিক্স ডিক্রিমেন্ট (
--a) : ভ্যারিয়েবলের মান ১ হ্রাস করা হয় এবং তারপর ব্যবহার করা হয়। - পোস্টফিক্স ডিক্রিমেন্ট (
a--) : ভ্যারিয়েবলের বর্তমান মান ব্যবহার করা হয় এবং তারপর ১ হ্রাস করা হয়।
- প্রিফিক্স ডিক্রিমেন্ট (
উদাহরণ:
#include <stdio.h>
int main() {
int a = 5, b = 5;
// প্রিফিক্স ইনক্রিমেন্ট
printf("Prefix increment of a: %d\n", ++a); // a = 6
// পোস্টফিক্স ইনক্রিমেন্ট
printf("Postfix increment of b: %d\n", b++); // b = 5, but after this line b becomes 6
// প্রিফিক্স ডিক্রিমেন্ট
printf("Prefix decrement of a: %d\n", --a); // a = 5
// পোস্টফিক্স ডিক্রিমেন্ট
printf("Postfix decrement of b: %d\n", b--); // b = 6, but after this line b becomes 5
return 0;
}
আউটপুট:
Prefix increment of a: 6
Postfix increment of b: 5
Prefix decrement of a: 5
Postfix decrement of b: 6
সংক্ষেপে:
- অ্যাসাইনমেন্ট অপারেটর ভ্যারিয়েবলে মান অ্যাসাইন করে।
- ইনক্রিমেন্ট ও ডিক্রিমেন্ট অপারেটর ভ্যারিয়েবলের মান ১ বৃদ্ধি বা হ্রাস করে।