অপারেটরসমূহের ক্রমধারা (Operator Precedence) হলো প্রোগ্রামিংয়ের এমন একটি নিয়মব্যবস্থা, যার মাধ্যমে নির্ধারণ করা হয় একটি এক্সপ্রেশনে একাধিক অপারেটর থাকলে কোন অপারেটরটি আগে কার্যকর হবে। যেমন, গাণিতিক নিয়ম অনুযায়ী গুণ ও ভাগ আগে সম্পন্ন হয়, তারপর যোগ ও বিয়োগ। একই নিয়ম প্রোগ্রামিং ভাষাতেও প্রযোজ্য হয়।
অপারেটরসমূহের ক্রমধারা সঠিকভাবে না জানলে প্রোগ্রাম প্রত্যাশিত ফলাফল নাও দিতে পারে। তাই কোড লেখার সময় অপারেটরগুলোর অগ্রাধিকার সম্পর্কে স্পষ্ট ধারণা থাকা অত্যন্ত গুরুত্বপূর্ণ। সঠিক ফলাফল নিশ্চিত করতে অনেক সময় বন্ধনী (parenthesis) ব্যবহার করা হয়, কারণ বন্ধনীর ভেতরের এক্সপ্রেশন সবসময় সর্বোচ্চ অগ্রাধিকার পায়।
পোস্ট সূচিপত্র
অপারেটরসমূহের ক্রমধারা (Operator Precedence): একটি সম্পূর্ণ গাইড
অপারেটর কী?
অপারেটরসমূহের ক্রমধারা কী?
অপারেটর প্রিসিডেন্স কেন গুরুত্বপূর্ণ?
অপারেটরের প্রকারভেদ
অপারেটর প্রিসিডেন্স টেবিল (উচ্চ থেকে নিম্ন)
Associativity কী?
Unary Operator এবং Precedence
Parenthesis এর গুরুত্ব
Logical Operator Precedence
Conditional Operator (?)
Bitwise Operator Precedence
সাধারণ ভুলসমূহ
বিভিন্ন ভাষায় অপারেটর প্রিসিডেন্স
বেস্ট প্র্যাকটিস
উপসংহার
অপারেটরসমূহের ক্রমধারা (Operator Precedence): একটি সম্পূর্ণ গাইড
প্রোগ্রামিং শেখার শুরুতে যে বিষয়গুলো সবচেয়ে বেশি বিভ্রান্তি তৈরি করে, তার মধ্যে অপারেটরসমূহের ক্রমধারা (Operator Precedence) অন্যতম। অনেক সময় দেখা যায়, একটি এক্সপ্রেশন (expression) লিখে আমরা একটি আউটপুট আশা করি, কিন্তু প্রোগ্রাম সম্পূর্ণ ভিন্ন ফলাফল দেখায়। এর প্রধান কারণ হলো কম্পিউটার আমাদের লেখা এক্সপ্রেশনকে নিজস্ব নিয়মে মূল্যায়ন (evaluate) করে, আর সেই নিয়মগুলোকেই বলা হয় অপারেটরসমূহের ক্রমধারা। অপারেটরসমূহের ক্রমধারা বোঝা প্রোগ্রামকে নির্ভুল, পরিষ্কার ও ত্রুটিমুক্ত করতে সহায়তা করে।
অপারেটর কী?
অপারেটর (Operator) হলো এমন প্রতীক বা কীওয়ার্ড, যা এক বা একাধিক অপারেন্ডের (operand) উপর কোনো অপারেশন সম্পন্ন করে।
উদাহরনঃ
এখানে:
+ → অপারেটরa এবং b → অপারেন্ড
অপারেটরসমূহের ক্রমধারা কী?
অপারেটরসমূহের ক্রমধারা (Operator Precedence) হলো এমন নিয়মাবলি, যা নির্ধারণ করে একাধিক অপারেটরযুক্ত এক্সপ্রেশনে কোন অপারেটরটি আগে কার্যকর হবে।
বাস্তব জীবনের উদাহরণ
গণিতে আমরা জানিঃ
কারণ গুণ (×) আগে হয়, যোগ (+) পরে।
একইভাবে প্রোগ্রামিংয়েও অপারেটরগুলোর একটি নির্দিষ্ট অগ্রাধিকার থাকে।
অপারেটর প্রিসিডেন্স কেন গুরুত্বপূর্ণ?
ভুল বোঝার উদাহরণঃ
আউটপুট হবে:
না যে 30, কারণ * এর প্রিসিডেন্স + এর চেয়ে বেশি।
অপারেটরের প্রকারভেদ
১. Arithmetic Operator (গাণিতিক অপারেটর)
+ (যোগ)- (বিয়োগ)* (গুণ)/ (ভাগ)% (মডুলাস)
২. Relational Operator (তুলনামূলক)
<, >, <=, >===, !=
৩. Logical Operator (লজিক্যাল)
&& (AND)|| (OR)! (NOT)
৪. Assignment Operator
-
=,+=,-=,*=,/=
৫. Unary Operator
++, --+, -- !
৬. Bitwise Operator
-
&,|,^,~,<<,>>
৭. Conditional Operator
-
?:
অপারেটর প্রিসিডেন্স টেবিল (উচ্চ থেকে নিম্ন)
| ক্রম | অপারেটর |
|---|---|
| ১ | (), [], . |
| ২ | ++, --, !, ~ |
| ৩ | *, /, % |
| ৪ | +, - |
| ৫ | <<, >> |
| ৬ | <, <=, >, >= |
| ৭ | ==, != |
| ৮ | & |
| ৯ | ^ |
| ১০ | ` |
| ১১ | && |
| ১২ | ` |
| ১৩ | ?: |
| ১৪ | = , +=, -= |
Associativity কী?
যখন দুটি অপারেটরের প্রিসিডেন্স সমান হয়, তখন কোনটি আগে কাজ করবে তা নির্ধারণ করে Associativity।
দুই ধরনের Associativity:
-
Left to Right
-
Right to Left
উদাহরণঃ
মূল্যায়ন হবে:
কারণ - হলো Left to Right Associative।
Unary Operator এবং Precedence
এখানেঃ
++x আগে কার্যকর হবে- তারপর গুণ
ফলাফলঃ
Parenthesis এর গুরুত্ব
সবচেয়ে নিরাপদ উপায় হলো বন্ধনী ( ) ব্যবহার করা।
উদাহরণঃ
আউটপুটঃ
বন্ধনী সবসময় সর্বোচ্চ প্রিসিডেন্স পায়।
Logical Operator Precedence
মূল্যায়নের ক্রম:
-
> -
&& -
||
এটি বোঝা না গেলে ভুল লজিক তৈরি হবে।
Conditional Operator (?)
এটি if-else এর সংক্ষিপ্ত রূপ।
Bitwise Operator Precedence
Bitwise অপারেটরের প্রিসিডেন্স অনেক সময় বিভ্রান্তিকর।
মূল্যায়নঃ
সাধারণ ভুলসমূহ
বিভিন্ন ভাষায় অপারেটর প্রিসিডেন্স
C / C++
-
খুবই কঠোর এবং নির্দিষ্ট
Java
-
C এর মতোই
Python
- কিছুটা সহজ
and,or,not
JavaScript
- Loose comparison (
==) সমস্যা সৃষ্টি করতে পারে
বেস্ট প্র্যাকটিস
- সবসময় Parenthesis ব্যবহার করো
- জটিল এক্সপ্রেশন ভেঙে লেখো
- অপারেটর প্রিসিডেন্স টেবিল মুখস্থ না করে বুঝো
- সন্দেহ হলে কোড টেস্ট করো
উপসংহার
অপারেটরসমূহের ক্রমধারা প্রোগ্রামিংয়ের একটি মৌলিক কিন্তু অত্যন্ত গুরুত্বপূর্ণ বিষয়। এটি ভালোভাবে না বুঝলে বড় ধরনের লজিক্যাল ভুল হতে পারে। সঠিক প্রিসিডেন্স জানা থাকলে কোড হবে। যেমনঃ
- আরও নির্ভুল
- আরও পরিষ্কার
- আরও বাগ-মুক্ত
প্রোগ্রামিংয়ে দক্ষ হতে চাইলে Operator Precedence অবশ্যই ভালোভাবে আয়ত্ত করতে হবে।