প্রোগ্রামিংয়ের মৌলিক ধারণা/অপারেশনের ক্রম
সংক্ষিপ্ত বিবরণ
[সম্পাদনা]গাণিতিক কোনো অভিব্যক্তি মূল্যায়নের ক্ষেত্রে কোন প্রক্রিয়া আগে সম্পাদন করতে হবে তা নির্ধারণের জন্য একটি নিয়মাবলিকে অপারেটরের অগ্রাধিকার (Order of Operations) বলা হয়।[১]
আলোচনা
[সম্পাদনা]একক মানগুলো নিজেরা গুরুত্বপূর্ণ হলেও, আমাদের মানসমূহকে প্রক্রিয়াকরণের (data processing) একটি পদ্ধতির প্রয়োজন। বিজ্ঞানীরা মান প্রক্রিয়াকরণের জন্য একটি নির্ভুল যন্ত্র চেয়েছিলেন—সংখ্যা প্রক্রিয়াকরণ বা উত্তর গণনা করার (computing) জন্য। ১৯৫০ সালের আগে পর্যন্ত অভিধানে কম্পিউটার বলতে বোঝানো হতো "যে মানুষ গণনা করে।" ফলে তথ্য প্রক্রিয়াকরণ বোঝাতে ব্যবহৃত অধিকাংশ শব্দই গাণিতিক ভিত্তিক। তদুপরি, দুইটি মৌলিক ডেটা টাইপ পরিবার (পূর্ণসংখ্যা এবং ভাসমান বিন্দু পরিবার) সম্পূর্ণরূপে সংখ্যামূলক মান নিয়ে গঠিত।
একটি অভিব্যক্তির উদাহরণ এবং মূল্যায়ন
[সম্পাদনা]একটি উদাহরণ দেখা যাক: 2 + 3 * 4 + 5 – এই অভিব্যক্তিটির মান কত?
- এখানে + চিহ্ন যোগফল বোঝায় এবং * চিহ্ন গুণ বোঝায় — এগুলো হলো অপারেটর
- 2, 3, 4 এবং 5 হলো অপারেন্ড
- অগ্রাধিকার নিয়ম অনুযায়ী গুণফল যোগফলের চেয়ে আগে হয়
- তাই আমরা প্রথমে ৩ * ৪ গণনা করে পাই ১২
- এখন অভিব্যক্তি দাঁড়ায়: ২ + ১২ + ৫
- অ্যাসোসিয়েটিভিটির নিয়ম অনুযায়ী যোগফল বামে থেকে ডানে হয়, তাই ২ + ১২ = ১৪
- এখন পাই: ১৪ + ৫
- শেষ পর্যন্ত পাই: ১৯ — এটাই পুরো অভিব্যক্তির মান
আচ্ছা, যদি আমরা বন্ধনী ব্যবহার করি? তাহলে ফলাফল বদলে যাবে:
- (2 + 3) * (4 + 5) = ৫ * ৯ = ৪৫
- (2 + 3) * 4 + 5 = ৫ * ৪ + ৫ = ২০ + ৫ = ২৫
অপারেটরের অগ্রাধিকার তালিকা
[সম্পাদনা]প্রতিটি প্রোগ্রামিং ভাষার নিজস্ব কিছু নিয়ম থাকে, যা অগ্রাধিকার এবং অ্যাসোসিয়েটিভিটি নির্ধারণ করে। এগুলো অনেকাংশে আমাদের আগে শেখা গাণিতিক নিয়মগুলোর মতোই। যেমন, প্রাথমিক বিদ্যালয়ে শিখেছিলাম—গুণ ও ভাগ আগে, পরে যোগ ও বিয়োগ। এই নিয়ম এখনো প্রযোজ্য।
অপারেশনের ক্রম[২]
- বন্ধনী (Parentheses)
- ঘাত (Exponents)
- গুণ / ভাগ (Multiplication / Division)
- যোগ / বিয়োগ (Addition / Subtraction)
এই নিয়ম মনে রাখার জন্য একটি পরিচিত মেমোনিক্স হলো: PEMDAS — Please Excuse My Dear Aunt Sally।
ভিন্ন ভাষায় অগ্রাধিকার কিছুটা ভিন্ন হতে পারে। আপনি যে ভাষা ব্যবহার করছেন তার জন্য নির্ধারিত অগ্রাধিকার চার্ট দেখে নেওয়া উচিত। একে Operator Precedence বা Order of Operations Chart বলা হয়।
একটি বৈধ অভিব্যক্তিতে অপারেন্ড ও অপারেটর সঠিকভাবে সাজানো থাকে। কেন (s) ব্যবহার করা হয়েছে? কারণ কিছু অপারেটর:
- ইউনারি — শুধুমাত্র এক অপারেন্ড ব্যবহার করে
- বাইনারি — দুইটি অপারেন্ড লাগে, অপারেটরের দুই পাশে
- ট্রাইনারি — দুইটি অপারেটর দ্বারা তিনটি অপারেন্ড আলাদা করা হয়
বেশিরভাগ অপারেটর বাইনারি ধরনের হয়। কিছু অগ্রাধিকার তালিকায় ইউনারি ও ট্রাইনারি অপারেটর আলাদাভাবে উল্লেখ করা থাকে, বাকিগুলো বাইনারি ধরা হয়।
মূল শব্দসমূহ
[সম্পাদনা]- অ্যাসোসিয়েটিভিটি
- একই অগ্রাধিকারযুক্ত অপারেটর কোন দিক থেকে গণনা শুরু করবে তা নির্ধারণ করে।
- মূল্যায়ন (Evaluation)
- অপারেটর দ্বারা অপারেন্ডের উপর কাজ করে একটি একক মান পাওয়ার প্রক্রিয়া।
- অভিব্যক্তি (Expression)
- একটি বৈধ অপারেটর এবং অপারেন্ডের ক্রম যা একটি একক মানে রূপান্তরিত হয়।
- অপারেন্ড
- যে মানের উপর অপারেটর কাজ করে।
- অপারেটর
- একটি প্রতীক বা শব্দ যা অপারেন্ডের উপর নির্দিষ্ট কাজ সম্পাদন করে।
- বন্ধনী (Parentheses)
- অভিব্যক্তির মূল্যায়নের ক্রম পরিবর্তন করে। বন্ধনীর ভেতরের কাজ আগে করা হয়।
- অগ্রাধিকার (Precedence)
- কোন অপারেটর আগে কার্যকর হবে তা নির্ধারণ করে।