SL3 Framework

Opeators

SL3 Framework - What is Operator

অপারেটর এর বাংলা অর্থ হচ্ছে, যে ব্যক্তি কোনো মেশিন চালায়। প্রোগ্রামিং এ অপারেটর হচ্ছে কিছু সিম্বল যা ব্যবহার করে বিভিন্ন গাণিতিক, রিলেশনাল বা লজিক্যাল অপারেশন ঘটানো হয়। আমরা ছোট বেলা থেকেই যোগ বিয়োগ গুণ ভাগ করার কাজে বিভিন্ন সিম্বল ব্যবহার করে আসছি। মূলত এই সাংকেতিক চিহ্ন যা দ্বারা বিভিন্ন অপারেশন বোঝানো হয় তাকেই অপারেটর বলে।

Start Conversation -

প্রেক্ষাপটঃ তামিম তার রুমে SL3 এর ওয়েব সাইটটা ওপেন করে প্রোগ্রামিং ফান্ডামেন্টালস এর অপারেটর কনসেপ্টটা বোঝার চেষ্টা করছে। এর মধ্যেই রিয়ার ফোন -

রিয়াঃ এই তামিম তুই কই?

তামিমঃ আমি তো SL3 এর মধ্যে ঢুকে গেছি। ঢুকে গিয়ে Stack Learner এর অপারেশন গুলো বোঝার চেষ্টা করছি। অপারেশনও বুঝতে পারছি, অপারেন্ডও বুঝতে পারছি। কিন্তু কোনো ভাবেই Stack Learner এর অপারেটরকে বুঝতে পারছি না।

রিয়াঃ তুই অপারেশন, অপারেন্ড সব বুঝে গেছিস? আমি তো যোগ বিয়োগ গুণ ভাগ ছাড়া কিছুই বুঝতে পারছি না। সেই ক্লাস ওয়ান থেকে যোগ বিয়োগ করছি, এই বুড়ো কালে এসে আবার নতুন করে যোগ বিয়োগ শিখতে হবে নাকি?

তামিমঃ অপারেটর তো সহজ, কিছু সাংকেতিক চিহ্ন যা ব্যবহার করে ভিন্ন ভিন্ন অপারেশন ঘটানো হয়। কিন্তু এটাই বুঝতে পারছি না, কখন কোথায় কিভাবে আর কেন কোন অপারেটরটা ব্যবহার করবো?

রিয়াঃ অপারেশনের নাম শুনলে তো আমার মাথায় শুধু একটা সিনই ঘুরপাক খায়। বাংলা সিনেমার মত - রোগীকে তাড়াতাড়ি অপারেশন থিয়েটারে নিতে হবে। রোগী ঢুকে যাওয়ার পরে একটা লাইট জ্বলে উঠবে।

তামিমঃ হুম, আর ১ মিনিট পর লাইট নিভে যাবে, ডাক্তার সাহেব বের হয়ে বলবে অপারেশন সাকসেসফুল, মা ও সন্তান দুজনেই সুস্থ আছে।

রিয়াঃ যা শয়তান, সব সময় শয়তানী।

তামিমঃ দাঁড়া দাঁড়া, আমার মাথায় আর একটা অপারেশনের কথা এসেছে। ইংরেজি মুভিতে মিশন গুলোকেও তো অপারেশন বলে। বিভিন্ন অপারেশনে যায় তারা।

রিয়াঃ হ যায়, কিন্তু এর সাথে প্রোগ্রামিং এর কি সম্পর্ক?

তামিমঃ অপেক্ষা করো বাছা, SL3 থেকে কনসেপ্ট বুঝেই আমি তোমার সাথে মিট করছি গুগল মিটে। তোমার তো অনেক টাকা, তাই ফোন দিয়ে এতক্ষণ ধরে আজাইরা প্যাঁচাল পারছো।

রিয়াঃ কি? ফোন আমি দিয়েছিলাম। আমার ফোনের সব ব্যালেন্স শেষ। তুই ফোন রাখ তাড়াতাড়ি।

তামিমঃ রাখবো কেন? চলনা অপারেটর শিখি 😂

রিয়াঃ রাখ হা**

টুট টুট টুট

What is Operator?

আজকাল আমাদের দেশে বিউল্ডিং এর পরে বিউল্ডিং তৈরি হয়ে যাচ্ছে। যে নতুন বিউল্ডিং বানাচ্ছে সেই আকাশ ছোঁয়া সব বিউল্ডিং বানাচ্ছে। সেই বিউল্ডিং গুলোতে ব্যবহৃত হচ্ছে অত্যাধুনিক সব লিফট। কিন্তু আজ থেকে দশ বছর আগেও এমন ছিল না। ঢাকার অবস্থা একরকম থাকলেও ছোট শহর গুলোর রূপ সম্পূর্ন ভিন্ন ছিল। সেখানে ৫ তলা বিউল্ডিং মানেই অনেক বড় বিউল্ডিং। সেখানে যদি হুটহাট করে একটা আট দশ তলা বিউল্ডিং তৈরি হত তাহলে তো সেটা দেখার জন্য মানুষ দল বেঁধে এসে ভিড় জমাত।

একটা আট তলা বা দশ তলা বিউল্ডিং এ তো আর লিফট ছাড়া ওঠা সম্ভব না, তাই না? কিন্তু যেখানকার মানুষ ৫ তলার ওপরে কোনো বিউল্ডিং দেখিনি সেখানকার মানুষের জন্য লিফট এ ওঠাটাও একটা প্যারার ব্যাপার। এই জন্য বিউল্ডিং মালিকেরা লিফটের ভিতরে একজন অপারেটর বসিয়ে রাখতো। কোনো সাধারণ মানুষ লিফটের কোনো বাটনে প্রেস করতে পারবে না। অপারেটরকে বলতে হবে যে আপনি কোন ফ্লোরে যেতে চান, অপারেটর আপনাকে সেই ফ্লোরে নিয়ে যাবে।

অপারেটর হচ্ছে যে অপারেশন ঘটায়। এখন অপারেশন যে কোনো ধরনেরই হতে পারে। কিন্তু যেহেতু আমরা প্রোগ্রামিং নিয়ে কথা বলছি আর প্রোগ্রামিং হচ্ছে ম্যাথমেটিক্সের একটা অ্যাপলিকেশন তাই আমাদেরকে কথা বলতে হবে ম্যাথমেটিক্সের অপারেটর নিয়ে। অনেকেই এখন ভাবছেন এত বছর ধরে অংক করে গেলাম কই অংক বইতে তো কোনো অপারেটর দেখলাম না। ভাইয়া দেখেছেন, শুধু দেখেন নি ব্যবহারও করেছেন। এমনকি আমরা ভ্যারিয়েবল বোঝার সময়ও অপারেটর নিয়ে কাজ করেছি।

অপারেটর হচ্ছে কিছু সাংকেতিক চিহ্ন যা কিছু অপারেশনকে ইন্ডিকেট করে এবং যা দেখে আমরা বুঝতে পারি আসলে কি অপারেশন চালাতে হবে। সব থেকে সহজ কিছু অপারেটর হচ্ছে যোগ +, বিয়োগ -, গুণ *, ভাগ /। এই যোগ বিয়োগ গুণ ভাগকে বলা হয় অ্যারিথমেটিক অপারেটর। এরকম আরও অসংখ্য অপারেটর আছে ভিন্ন ভিন্ন অপারেশন ঘটানোর জন্য। যেমন দুইটা সংখ্যার ভিতরে কে বড় কে ছোট এই রিলেশনশিপ বোঝানোর জন্য আমরা ব্যবহার করি রিলেশনাল অপারেটর। অনেক গুলো রিলেশনাল অপারেটর আছে, যেমন - >, <, >=, <=, ==, !=

প্রোগ্রামিং করতে সব থেকে বেশি কাজে লাগে অ্যারিথমেটিক অপারেটর এবং রিলেশনাল অপারেটর। এছাড়াও কাজে লাগে অ্যাাসাইনমেন্ট অপারেটর। এর কাজ একটা ভ্যারিয়েবলের ভিতরে বিভিন্ন ভাবে ভ্যালু অ্যাসাইন করা। লজিক্যাল অপারেটর যা মূলত দুইটা বা তার অধিক ভিন্ন ভিন্ন রিলেশনকে যুক্ত করে একটা সম্মিলিত ফলাফলে রূপান্তর করে থাকে। বিগিনারদের জন্য সব থেকে কম কাজে লাগে বিটওয়াইস অপারেটরস। মূলত বাইনারি ডেটা নিয়ে কাজ করার জন্য এই অপারেটর ব্যবহার করা হয়। কিন্তু যখন আপনি বিগিনার তখন এই অপারেটর আপনার কোনো কাজেই লাগবে না, কারণ এই অপারেটর নিয়ে কাজ করতে চাইলে আপনাকে বাইনারি অপারেশন বুঝতে হবে।

ভ্যারিয়েবলের মতো অপারেটরও খুবই গুরুতপূর্ণ একটা বিষয়। কারণ আমরা যদি প্রোগ্রামে কোনো লজিক নিয়ে কাজ নাও করি তার পরেও আমাদের কিছু অপারেশন নিয়ে কাজ করতে হবে। আর অপারেশন নিয়ে কাজ করার জন্য আমাদের দরকার ভ্যারিয়েবল এবং অপারেটর। যেকোনো অপারেটর নিয়ে কাজ করার জন্য মূলত দুইটা অপারেন্ড বা ভ্যালু দরকার হয়।

SL3 Framework - Operator

ওপরের আলোচনা থেকে তিনটা নতুন টার্মস বের হয়ে এসেছে। যার মধ্যে একটি অপারেটর এবং এটা নিয়ে আমরা অনেক আলোচনাই করেছি, ভবিষ্যতেও করবো। আর অন্য দুইটি হচ্ছে অপারেন্ড এবং অপারেশন।

Operation:

অপারেশন বলতে যে কোনো অ্যাকশন বোঝায়। কিন্তু প্রোগ্রামিং এর ক্ষেত্রে এটা শুধু মাত্র ম্যাথমেটিক্স এর অপারেশনই বুঝিয়ে থাকে। যেমন যোগ বিয়োগ করা, দুইটা ডেটার মধ্যে কোনটা বড় বা ছোট তা নির্ণয় করা এমনকি ভ্যারিয়েবলের মধ্যে ভ্যালু অ্যাসাইন করাও এক ধরনের অপারেশন।

Operand:

অপারেন্ড হচ্ছে যার মধ্যে অপারেশন ঘটানো হয়। যদি আমরা যোগ অপারেশন ঘটায়, তাহলে যে দুইটা নাম্বারের মধ্যে অপারেশন ঘটানো হয় সেই দুইটা নাম্বারই হচ্ছে অপারেন্ড। কিছু কিছু অপারেশনের ক্ষেত্রে অপারেন্ড একটা হতে পারে, আবার তিনটাও হতে পারে। তবে বেশির ভাগ ক্ষেত্রেই অপারেন্ড থাকে দুইটা। যেই অপারেটরের জন্য একটা মাত্র অপারেন্ডের প্রয়োজন হয় তাকে আমরা বলি ইউনারি অপারেটর, যদি দুইটা অপারেন্ড থাকে তাহলে আমরা বলি বাইনারি অপারেটর আর যদি তিনটা অপারেন্ড থাকে তাহলে তাকে বলি টার্নারি অপারেটর।

Operator:

আমাদের ওপরের আলোচনার পুরোটাই ছিল অপারেটরকে নিয়ে, তাই অপারেটর বোঝানোর জন্য আর নতুন করে কিছু বলার দরকার আছে বলে মনে হয় না। প্রোগ্রামিং এ অনেক রকমের অপারেটর আছে। যেমন - অ্যারিথমেটিক অপারেটর, রিলেশনাল অপারেটর, অ্যাসাইনমেন্ট অপারেটর, লজিক্যাল অপারেটর এবং বিটওয়াইস অপারেটর। বিগিনার হিসেবে শুধুমাত্র বিটিওয়াইস অপারেটর বাদে সব গুলো অপারেটরেরই প্রয়োজন আছে।

SL3 Framework - Operator Operation and Operand

Continue Conversation (1) -

প্রেক্ষাপটঃ রিয়া ফুসকা খেতে যাবে, কিন্তু কার সাথে যাবে সে বুঝতে পারছে না। হঠাত করে তার মনে হল সে তামিমের সাথেই যেতে পারে। তামিমের নাম মাথায় আসতে না আসতেই সে তামিমকে ফোন করলো -

রিয়াঃ তামিম, ভাই আমার। কি করিস?

তামিমঃ এত নাটক করছিস কেন বলতো? কি দরকার?

রিয়াঃ না না, কি আবার দরকার হবে? দরকার ছাড়া কি আমি তোকে ফোন দেই না?

তামিমঃ দরকার না থাকলে তোর মতো কিপটা টাকা খরচ করে আমাকে ফোন দেবে? সেটাও আমাকে বিশ্বাস করতে বলিস?

রিয়াঃ হুহ, শোননা আমি কি বলি?

তামিমঃ অপারেটরের এক্সাম্পল খুঁজে পাচ্ছিস না তো? আমি নিজেও খুঁজে পাচ্ছি না। দুই চারটা যা পেয়েছি তা তোকে দিতে পারবো না।

রিয়াঃ ওহ মাই গড, নাঈম ভাইয়া তো বাস্তব জীবন থেকে অপারেটর খুঁজতে বলেছিল। আমি তো ভুলেই গেছি।

তামিমঃ তুই ভুলে গেছিস? তাহলে আর কোন দরকারে আমাকে ফোন দিয়েছিস।

রিয়াঃ আমার না, ফুসকা খেতে খুব মন চাচ্ছে।

তামিমঃ তোর ফুসকা এডিশন করতে মন চাইলেও আমার পকেট মানি সাবট্রাকশন করতে মোটেও মন চাচ্ছে না।

রিয়াঃ আমি কি তোকে বলেছি, যে আমার ফুসকার বিল তোকে দিতে হবে? আমার বিল আমি দিবো, তোর বিল তুই দিবি।

তামিমঃ আমার ওয়ালেট ইকুয়্যাল টু জিরো এবং আমার ফুসকা এডিশন করার কোনো ইচ্ছে নেই।

রিয়াঃ শোন না ভাই, দেখ আঙ্কেল কিন্তু তোকে আমার বাবার থেকে অনেক বেশি পকেট মানি দেই। আমার পকেট মানি স্মলার দ্যান তোর পকেট মানি।

তামিমঃ এই সব বলে লাভ নেই। আমার ফুসকার বিল তোকে অ্যাসাইন করতে হবে। তাহলেই আমি যাব। নাহলে যাব না।

রিয়াঃ তাহলে অন্ততপক্ষে রিক্সা ভাড়াটা তুই অ্যাসাইন কর।

তামিমঃ করতে পারি, তবে আরও একটা শর্ত আছে।

রিয়াঃ আবার কি শর্ত?

তামিমঃ দেখ, এতক্ষণ আমি অনেক চেষ্টা করেও বাস্তব জীবনে অপারেটর খুঁজে পাচ্ছিলাম না। কিন্তু তোর সাথে কথা বলে অনেক গুলো জীবন্ত উদাহরণ পেয়ে গেছি। তোর সাথে বের হওয়ার পর থেকে যত গুলো উদাহরণ পাবো, সব আমার। একটাও তুই তোর আর্টিকেলে লিখে নাঈম ভাইকে জমা দিতে পারবি না?

রিয়াঃ আমাকে তোর বলদ মনে হয়? দুই জন মিলে আলোচনা করে এক্সাম্পল আসছে, মানে দুই জনের সমান অধিকার। ৫০% এক্সাম্পল রিয়ার == ৫০% এক্সাম্পল তামিমের, যদি এই কন্ডিশন সত্য রিটার্ন করে শুধুমাত্র তাহলেই আমি ফুসকা খাইতে যাব। আর না হলে আমার বান্ধবী বাধনকে ফোন দিয়ে আজাইরা আলাপ করবো। আমি এখন আজাইরা আলাপ থেকেও অপারেটর বের করে আনতে পারবো।

তামিমঃ এখন তুই আমার সাথে পালটি খাচ্ছিস?

রিয়াঃ রাজি থাকলে বাসার নিচে আয়, আর না থাকলে ফোট। আমার এক্সাম্পল খুঁজতে হবে।

তামিমঃ তুই নিচে নাম, আমি আসছি।

Arithmetic Operators:

সব থেকে সহজ এবং প্রয়োজনীয় অপারেটর হচ্ছে অ্যারিথমেটিক অপারেটর। বুদ্ধির পর থেকে প্রথম যখন যোগ বিয়োগ গুণ ভাগ করা শুরু করেছি, তখন থেকেই এই অপারেটর ব্যবহার করে আসছি। হয়ত কখনো নাম জানা হয় নি যে ইংরেজিতে একে কি বলে, কিন্তু ব্যবহার করে আসছি। যোগ, বিয়োগ, গুণ, ভাগ এই অপারেশন গুলোকে বলা হয় অ্যারিথমেটিক অপারেশন। কম্পিউটারে এই চারটি অপারেশনের জন্য ৫ টি অপারেটর আছে।

OperandOperatorOperationDescription
A, B+A + Bদুইটা সংখ্যা যোগ করার কাজে ব্যবহৃত হয়
A, B-A - Bএকটা সংখ্যা থেকে আর একটা সংখ্যা বিয়োগ করার অপারেশন ঘটায়
A, B*A * Bমাল্টিপ্লিকেশন বা গুণ করার কাজে ব্যবহৃত হয়
A, B/A / Bএকটা সংখ্যাকে আর একটা সংখ্যা দ্বারা ভাগ করার অপারেশন ঘটায়
A, B%A % Bএকটা সংখ্যাকে আর একটা সংখ্যা দ্বারা ভাগ করলে অনেক সময় ভাগশেষ থাকে, সেই ভাগশেষ বের করতে ব্যবহৃত হয়

যে কোনো ধরনের সাধারণ অংক যদি আপনি কম্পিউটারে করতে চান তাহলে আপনার এই কয়টা অপারেটরের দরকার হবে। অপারেটর গুলো দেখলেই আমাদের কম্পিউটার সাহেব বুঝে যাবে যে তার ঠিক কি অপারেশন করতে হবে আর কিভাবে এই অপারেশন করতে হবে।

Increment Decrement Operators

দুইটা সিম্পল অপারেটর আছে যার কাজ শুধু ভ্যারিয়েবলের ভ্যালু এক করে বৃদ্ধি করা আবার এক করে কমানো। যেই অপারেটরটা ভ্যারিয়েবলের ভ্যালু এক করে বৃদ্ধি করে তাকে আমরা বলি ইনক্রিমেন্ট অপারেটর আর যে অপারেটরটা ভ্যারিয়েবলের ভ্যালু এক করে কমায় তাকে আমরা বলি ডিক্রিমেন্ট অপারেটর।

দুই রকমের ইনক্রিমেন্ট অপারেটর আছে, প্রিইনক্রিমেন্ট এবং পোস্টইনক্রিমেন্ট। একই ভাবে দুই রকমের ডিক্রিমেন্ট অপারেটর আছে, প্রিডিক্রিমেন্ট এবং পোস্ট ডিক্রিমেন্ট।

OperandOperatorOperationDescription
A++++Aপ্রিইনক্রিমেন্ট অপারেটর
A++A++পোষ্টইনক্রিমেন্ট অপারেটর
A----Aপ্রিডিক্রিমেন্ট অপারেটর
A--A--পোষ্টডিক্রিমেন্ট অপারেটর

নোটঃ প্রিইনক্রিমেন্ট এবং পোষ্টইনক্রিমেন্ট অপারেটর গুলোর পার্থক্য আপনারা পরে জানলেও চলবে।

Assignment Operators

আমরা সাধারণ ভাবে একটা ভ্যারিয়েবলের ভিতরে যখন একটা ভ্যালু স্টোর করে রাখি তখন ভ্যালু স্টোর করার জন্য আমরা একটা সমান চিহ্ন ব্যবহার করি। এই সমান চিহ্নকেই বলে অ্যাসাইনমেন্ট অপারেটর। সব থেকে সাধারণ এবং বহুল ব্যবহৃত অ্যাসাইনমেন্ট অপারেটর হচ্ছে =। এছাড়াও আমাদের কাজ সহজ করার জন্য আরও কয়েকটা অ্যাসাইনমেন্ট অপারেটর আছে। এর কাজ হচ্ছে যোগ বিয়োগ গুন ভাগ করার পরে রেসাল্টটা আগের ভ্যারিয়েবলের ভিতরেই অ্যাসাইন করে রাখা। তবে এই অপারেটর গুলো না জানলেও আপনি কাজ চালিয়ে নিতে পারবেন। তবে জানলে আপনার নিজের কাজই অনেক সহজ হয়ে যাবে।

OperandOperatorOperationDescription
A, B=A = Bবেসিক অ্যাসাইনমেন্ট অপারেটর
A, B+=A += Bএডিশন অ্যাসাইনমেন্ট - যোগ করে A তে অ্যাসাইন করবে
A, B-=A -= Bসাবট্রাকশন অ্যাসাইনমেন্ট - বিয়োগ করে A তে অ্যাসাইন করবে
A, B*=A *= Bমাল্টিপ্লিকেশন অ্যাসাইনমেন্ট - গুণ করে A তে অ্যাসাইন করবে
A, B/=A /= Bডিভিশন অ্যাসাইনমেন্ট - ভাগ করে A তে অ্যাসাইন করবে
A, B%=A %= Bমডুলাস অ্যাসাইনমেন্ট - মড করে A তে রাখবে

Continue Conversation (2) -

প্রেক্ষাপটঃ তামিম রিয়ার বাসার সামনে দাঁড়িয়ে আছে। রিয়া নামলেই তারা ফুসকা খেতে যাবে। তামিম পকেট থেকে ফোন বের করে রিয়াকে ফোন দিচ্ছে।

তামিমঃ হ্যালো, বোনরে তোর কি নামার সময় হবে?

রিয়াঃ আসছি বাবা আসছি, আমি তৈরি হচ্ছি।

তামিমঃ তোর বাদামি কালারের চামড়ার ওপরে দশপল্ল মেকআপ মাল্টিপ্লিকেশন করলেও তুই সাদা হতে পারবি না। আর কি দরকার এতো মেকআপ করে।

রিয়াঃ আরে বাবা আমি মেকআপ করছি না। আমি নামছি।

তামিমঃ ওই রিকশা, মামা লালবাগ যাবেন?

রিকশাওয়ালাঃ যাব।

তামিমঃ ভাড়া নামক ভ্যারিয়েবলে কতো অ্যাসাইন করতে হবে মামা?

রিকশাওয়ালাঃ মামা কি কন? কিছুই তো বুঝি না।

তামিমঃ ওহ, সরি মামা সরি। ভাড়া কতো নিবেন?

রিকশাওয়ালাঃ মামা ৫০ টাকা দিয়েন।

রিয়াঃ আমি চলে এসেছি, রিকশা ঠিক হয়েছে?

তামিমঃ না, মামা রেগুলার ভাড়ার থেকে কম্পেয়ার করে ২০ টাকা বেশি অ্যাসাইন করতে বলছে।

রিয়াঃ মামা লালবাগের ভাড়া ৩০ টাকা, ৩০ টাকা হলে চলেন। আমরা রেগুলার যাতায়াত করি।

রিকশাওয়ালাঃ মামা আর দশ টাকা ধরে দিয়েন।

তামিমঃ না মা, ভাড়া == ৩০ টাকা হলেই আমরা যাবো, না হলে অন্য রিকশা দেখছি।

রিকশাওয়ালাঃ আচ্ছা চলেন, আমি ওই দিকেই যাবো।

রিয়াঃ তুই তো কথায় কথায় অপারেটর ঝাড়ছিস, সেই শেখা শিখে গেছিস।

তামিমঃ এই ক্রেডিট আসলে তোর। তোর সাথে কথা বলার থেকেই আমার মাথা থেকে শুধু অপারেটর বের হচ্ছে।

রিয়াঃ ক্রেডিট যেহেতু আমার, সেহেতু আমাকে কিছু এক্সাম্পল ধার দে।

তামিমঃ তোকে যে এক্সাম্পল ধার দিবো, এটা হচ্ছে অ্যাসাইনমেন্ট। একটা করে এক্সাম্পল খুঁজে পাবো আর একটা করে এক্সাম্পল তোর ঝুলিতে বৃদ্ধি পাবে। এটা হচ্ছে ইনক্রিমেন্ট।

রিয়াঃ হুম, গাধা কবে থেকে এত বুদ্ধিমান হয়ে গেলো বুঝতেই পারলাম না। আমরা যে রিক্সায় করে যাচ্ছি, এখানেও একটা ইনক্রিমেন্ট অপারেটর আছে। খুঁজে বের কর তো।

তামিমঃ রিক্সার মধ্যে ইনক্রিমেন্ট অপারেটর? কোথায়?

রিয়াঃ দেখ, আমরা যদি কাউন্ট করতে চায়, রিকশাওয়ালা মামা ঠিক কতটা প্যাডেল করেছেন তাহলে আমরা কি করবো?

তামিমঃ ইয়েস, ধরতে পেরেছি। কাউন্ট নামক ভ্যারিয়েবলের মধ্যে শূন্য নিয়ে পরে প্রতিটা প্যাডেল কমপ্লিট হওয়ার সাথে সাথে এক করে ইনক্রিমেন্ট করবো। ইয়েস, ভ্যারিয়েবল আর অপারেটর আসলে একে অন্যের সাথে ওতপ্রোত ভাবে মিশে আছে। যে কোনো অপারেশন করতে চাইলে, দুইটায় দরকার।

রিয়াঃ হুমম, আমিও ব্যাপারটা খেয়াল করেছি। যায় হোক, চলে এসেছি। তুই এখন রিকশাওয়ালা মামার ভাড়া নামক ভ্যারিয়েবলে ভ্যালু অ্যাসাইন কর, আর নিজের পকেট থেকে ভাড়াটা সাবসট্রাকট কর।

তামিমঃ ওহ শিট।

রিয়াঃ কি হয়েছে?

তামিমঃ আমি আমার পকেটে ওয়ালেট নামক ভ্যালু অ্যাসাইন করতে ভুলে গিয়েছি, মানে ওয়ালেট আনতে ভুলে গিয়েছি।

রিয়াঃ ওয়ালেট নামক ভ্যালু অ্যাসাইন করতে ভুলে যাওয়ার অর্থ যে মানিব্যাগ ভুলে আসা, সেটা আমি বুঝি। কিন্তু তুই নাটক করা বন্ধ করে রিক্সাভাড়া অ্যাসাইন কর। ডিল ইস ডিল।

তামিমঃ আমি সত্যি বলছি, ওয়ালেট আনতে ভুলে গিয়েছি। তুই দিয়ে দে না ভাড়াটা। তোর কাছে তো আছে।

রিয়াঃ আচ্ছা, ঠিক আছে। আমি ধার নামক ভ্যারিয়েবলের ভিতরে রিক্সা ভাড়ার ভ্যালুটা অ্যাসাইন করে রাখছি। মনে রাখিস, ইন্টারেস্ট নামক আর একটা ভ্যারিয়েবলও কিন্তু আমার কাছে আছে যার মধ্যে অ্যাসাইন করা আছে ৫০। একদিন আমার ধারের টাকা দিতে দেরি করবি, চক্র বৃদ্ধি হারে প্রতি দিন ৫০% করে ইন্টারেস্ট বাড়তে থাকবে।

তামিমঃ ওকে মা, বাড়ি গিয়েই তোকে সেন্ড মানি করে দিবো।

রিয়াঃ মামা, দুই প্লেট ফুসকা দেন।

তামিমঃ দেখেছিস, মামা একটা করে ফুসকা বানাচ্ছে আর প্লেটে রাখছে। এটাকে কি বলবি বলতো?

রিয়াঃ আরে গাধা, তুই কি মনে করেছিস আমি পারবো না? একটা একটা করে যে প্লেটে রাখছে এটা হচ্ছে ইনক্রিমেন্ট, আর একটু পরে একটা একটা করে ফুসকা যে আমরা মুখের মধ্যে পুড়বো সেটা হচ্ছে ডিক্রিমেন্ট।

তামিমঃ তুই তো দেখছি আমার থেকেও দুই ধাপ এগিয়ে।

রিয়াঃ ইয়েস, +=2

Relational Operators

কিছু অপারেটর আছে যে গুলো ব্যবহার করা হয় দুইটা নাম্বারের মধ্যে রিলেশন খুঁজে বের করার জন্য। দুইটা নাম্বারের মধ্যে তো আর প্রেমের রিলেশন হতে পারে না। এখানে রিলেশন বলতে বোঝায় কে বড়, কে ছোট অথবা দুইটাই সমান কি না? এই রিলেশনশিপটা ভালো ভাবে বোঝানোর জন্য অনেক গুলো অপারেটর রয়েছে। যেমন দুইটা নাম্বার A এবং B এর মধ্যে রিলেশনশিপ গুলো হচ্ছে -

OperandOperatorOperationDescription
A, B>A > BGreater Than - A > B A বড় না B বড়
A, B>=A >= BGreater Than or Equal - A >= B A বড় অথবা সমান কি না
A, B<A < BSmaller Than - A < B B বড় না A বড়
A, B<=A <= BSmaller Than or Equal - A <= B A বড় অথবা সমান কি না
A, B==A == BEqual to - A == B A এবং B সমান কি না
A, B!=A != BNot Equal - A != B A, B এর সমান না

এই ছয়টা অপারেটর ব্যবহার করে প্রোগ্রামিং এর সমস্ত রিলেশনকে প্রকাশ করা সম্ভব। যে কোনো রিলেশনাল অপারেটর অপারেশন শেষে একটা বুলিয়ান ভ্যালু মানে True অথবা False রিটার্ন করে থাকে।

Logical Operators

প্রোগ্রামিং এর আর এক ধরনের অপারেটর আছে যা খুব গুরুত্বপূর্ণ, সেটা হল লজিক্যাল অপারেটর। দুইটা ভিন্ন ভিন্ন রিলেশনকে যুক্ত করার কাজে ব্যবহৃত হয় লজিক্যাল অপারেটর। আমরা আগেই জেনেছি রিলেশনাল অপারেটর বুলিয়ান ভ্যালু রিটার্ন করে। আর লজিক্যাল অপারেটর দুইটা বুলিয়ান ভ্যালু থেকে ডিসিশন নেই যে কাজটা করবে কি করবে না। ধরে নেই আমার বয়স ২৪ এবং আমি একটি ব্যাংক একাউন্ট ক্রিয়েট করতে চাচ্ছি। ব্যাংক একাউন্ট ক্রিয়েট করার জন্য আমার বয়স ১৮ এর থেকে বেশি হতে হবে এবং আমার কাছে জাতীয় পরিচয় পত্র থাকতে হবে। এই দুইটা কন্ডিশনের একটা রিলেশনও যদি মিথ্যা হয় তাহলে আমি ব্যাংক একাউন্ট ক্রিয়েট করতে পারবো না। এই ধরনের সিসুয়েশন হ্যান্ডেল করার জন্য আমাদের কাছে তিনটা ভিন্ন ভিন্ন অপারেটর আছে।

OperandOperatorOperationDescription
A, B&&A && BLogical And Operator - যখন দুইটা কন্ডিশনই সত্য হবে তখন এটা True রিটার্ন করবে
A, B||A || BLogical Or Operator - যখন দুইটা কন্ডিশনের যে কোনো একটা সত্য হবে তখন এটা True রিটার্ন করবে
A, B!!(A && B)Logical Not Operator - যদি কন্ডিশন True রিটার্ন করে তাহলে False করে দেবে আর যদি False রিটার্ন করে True করে দেবে

এই অপারেটর গুলোর সাথে বুলিয়ান অ্যালজেবরার একটা সম্পর্ক আছে। আপনারা হয়ত অনেকেই ICT বইয়ে বুলিয়ান অ্যালজেবরা সম্পর্কে জেনে থাকবেন। বিষয়টা অনেকটা নিচের টেবিলের মতো। এখানে A এবং B হচ্ছে দুইটা কন্ডিশন এবং R হচ্ছে ফাইনাল রেজাল্ট।


Logical AND Operation

ABR
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

লজিক্যাল অ্যান্ড অপারেশনের ক্ষেত্রে যদি দুইটা কন্ডিশনের যে কোনো একটা কন্ডিশন False রিটার্ন করে তাহলেই পুরো লজিক্যাল অপারেশন False রিটার্ন করবো। শুধু মাত্র যখন দুইটা কন্ডিশন সত্য তখনই এটা True রিটার্ন করবে।

লজিক্যাল অর অপারেশন এর ঠিক উল্টো। যদি একটা কন্ডিশনও True রিটার্ন করে তাহলে এটা True রিটার্ন করবে। যখন দুইটা কন্ডিশনই False রিটার্ন করবে তখন পুরো অপারেশনটা False রিটার্ন করবে।


Logical OR Operation

ABR
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

সব থেকে সহজ হচ্ছে লজিক্যাল নট অপারেশন। এই ক্ষেত্রে কন্ডিশন যা রিটার্ন করবে তার উল্টোটা রিটার্ন করবে। কন্ডিশন True রিটার্ন করলে False রিটার্ন করবে, আবার কন্ডিশন False রিটার্ন করলে এটা True রিটার্ন করবে।


Logical NOT Operation

AR
TrueFalse
FalseTrue

ওপরের উদাহরণে একটু ফিরে যাওয়া যাক। আমার বয়স ২৪ এবং ব্যাংক একাউন্ট ক্রিয়েট করতে বয়স নূন্যতম ১৮ হতে হবে। যদি আমি পরীক্ষা করে দেখতে চাই আমি ব্যাংক একাউন্ট ক্রিয়েট করতে পারবো কি না, তাহলে আমি এই ভাবে কন্ডিশনটা লিখতে পারি - 24 > 18 .

আবার ব্যাংক একাউন্ট ক্রিয়েট করার জন্য আমার কাছে জাতীয় পরিচয়পত্র থাকতে হবে। ধরে নিলাম আমার কাছে জাতীয় পরিচয়পত্র আছে এবং সেটা আমি একটা ভ্যারিয়েবলের মধ্যে স্টোর করে রেখে দিয়েছি যার নাম nid.

যদি দুইটা কন্ডিশনের দুইটাই ফুল ফিল করার পরে আমাকে একাউন্ট ক্রিয়েট করতে দেই তাহলে অপারেশনটা হবে এরকম - 24 > 18 && nid

আবার যদি যে কোনো একটা কন্ডিশন ফুল ফিল করতে পারলেই তারা আমাকে একাউন্ট ক্রিয়েট করতে দেই তাহলে অপারেশনটা হবে এরকম - 24 > 18 || nid

Continue Conversation (3) -

রিয়াঃ মামা, ওর ফুসকা গুলো অনেক বড় বড়, আমার গুলো সব ছোট ছোট দিচ্ছেন কেন?

তামিমঃ মামা বোঝে যে তামিমের মন রিয়ার থেকে অনেক বড়, তামিম > রিয়া। তামিম তোমার মতো ছোট ছোট বিষয় নিয়ে ঝগড়া করে না।

রিয়াঃ তোর এতো ভালো সাজা লাগবে না। মামা, আমাকে আর একটা বেশি দিতে হবে, না হলে আমি টাকাই দিবো না।

ফুচকাওয়ালাঃ ওকে মামা, আপনাকে আর একটা ফুসকা ইনক্রিমেন্ট করে দেব।

রিয়াঃ 😱

তামিমঃ 😳

তামিমঃ মামা আপনে কেমনে বুঝলেন এটা ইনক্রিমেন্ট?

ফুচকাওয়ালাঃ আমি অনেকক্ষণ থেকে আপনাদের আলোচনা শুনছি, মজাই পাচ্ছি। নতুন অন্যরকম একটা ভাষায় কথা বলছেন। আপনাদের কথা থেকেই বুঝেছি নতুন ফুসকা দেওয়াকে আপনারা ইনক্রিমেন্ট বলছেন। আর খেয়ে ফেলাকে ডিক্রিমেন্ট বলছেন।

তামিমঃ 😱

রিয়াঃ আর কি শিখেছেন মামা?

ফুচকাওয়ালাঃ আপনি যে আমাকে ফুসকার বিল দিবেন এটা হচ্ছে আমার এডিশন এবং আপনার সাবস্ট্রাকশন।

রিয়াঃ 😳

তামিমঃ মামা, আপনি তো আমাদের থেকে অনেক কিছু শিখলেন, এই খুশিতে আমাদেরকে কিছু বোনাস দিবেন না?

ফুচকাওয়ালাঃ আমি গরিব মানুষ আর কি বোনাস দিব? আচ্ছা নেন, আপনাকে একটা ফুচকা ইনক্রিমেন্ট করে দেই।

তামিমঃ মামা, যেহেতু আপনি আমাকে একটা ফুসকা ইনক্রিমেন্ট করে দিলেন, আমি আরও তিনটা জিনিস আপনাকে শেখায়।

ফুচকাওয়ালাঃ জি মামা শেখান, নতুন জিনিস শিখতে আমার খুব ভালো লাগে।

তামিমঃ আপনি এক প্লেটে ১০ টা ফুচকা দিয়েছেন। এক প্লেট ফুচকার দাম পঞ্চাশ টাকা, তাহলে একটা ফুচকার দাম কতো?

ফুচকাওয়ালাঃ মামা, এই এত টুকু গুণ ভাগ তো আমিও পারি। একটা ফুচকার দাম ৫ টাকা।

তামিমঃ আপনি যেহেতু গুণ ভাগ পারেন তাহলে সরাসরিই বলি। আপনি গুণ করে যখন ১ প্লেট ফুচকার দাম বের করবেন তখন এটার নাম মাল্টিপ্লিকেশন, আর যখন এক প্লেট থেকে ভাগ করে একটা ফুচকার দাম বের করবেন তখন এটার নাম ডিভিশন।

ফুচকাওয়ালাঃ মামা, তিনটা নাম শেখাবেন বলেছিলেন। এটা তো দুইটা হল।

রিয়াঃ আপনার এক প্লেটে ১০ টা ফুচকা থাকার কথা, কিন্তু আমাকে আপনি ১ টা বোনাস দিয়েছেন। তাহলে এই ১ হচ্ছে মডিউলো বা রিমেইন্ডার।

তামিমঃ এই নেন মামা, আপনার আগের ভ্যারিয়েবলের সাথে ফুচকার দাম অ্যাড করেন।

তামিম এবং রিয়া আবার রিক্সা খুঁজছে বাসায় ফিরে যাওয়ার জন্য। অল্প খুঁজতেই রিক্সা পেয়েও গেলো। তারা রিক্সায় উঠেই দুই জন দুই জনের দিকে তাকাচ্ছে আর ফুসকাওয়ালার কথা মনে করে জোরে জোরে হাসছে।

রিয়াঃ আজকের ফুসকা > আগের দিনের ফুসকা

তামিমঃ আজকের ফুচকাওয়ালা মামাও অনেক মজার ছিল, কতো তাড়াতাড়ি বিষয় গুলো বুঝতে পারলো।

রিয়াঃ হুমম, আমিও তাই ভাবছিলাম। আমরা একটা বিষয় বোঝার জন্য কত চেষ্টা করি, কিন্তু উনি আমাদের কথা শুনেই সব বুঝতে পেরে গেলেন?

তামিমঃ আসলে নাঈম ভাইয়া ঠিকই বলে। Learning is A Social Process, দেখনা সকাল বেলা অপারেটর নিয়ে একটা বাস্তব উদাহরণও আমার মাথায় আসছিল না। তুই ফোন দিলি, তোর সাথে কথা বলতে বলতেই কতো গুলো উদাহরণ চলে এলো। তারপরে বাইরে আসলাম, এখন তো উদাহরণ রাখার জন্য ৮ বাইটের ভ্যারিয়েবল লাগবে বলে মনে হচ্ছে।

রিয়াঃ তুই ঠিকই বলেছিস। একা একা বসলে একটা বিষয় নিয়ে চিন্তা করতে করতে দিন শেষ হয়ে যায়। যখন তোকে ফোন দিয়ে দুই জন মিলে আলোচনা করি, তখন খুব তাড়াতাড়ি বিষয় গুলো বুঝতে পারি।

তামিমঃ ইয়েস, একা শেখা < অনেক জন মিলে শেখা

রিয়াঃ তবে সবারই শেখার মানুষিকতা থাকাটা অনেক জরুরি। আচ্ছা সাবস্ট্রাক্ট কর।

তামিমঃ মানে? কি সাবস্ট্রাক্ট করবো?

রিয়াঃ বললাম, বাদ দে এই বিষয়।

তামিমঃ ওহ আচ্ছা, এই কথা। তুইতো আর ইহজগতে নেই রে প্রোগ্রামিং কন্যা। তোর ভাষা বোঝার সামর্থ্য কি আমার আছে?

রিয়াঃ হইছে, এবার বল ছুটিতে কই ট্যুরে যাচ্ছিস? পাহাড়, জংগল না সমুদ্র?

তামিমঃ পাহাড় > জংগল কিন্তু সমুদ্র > পাহাড়। খুবই কনফিউসিং, তুই একটা প্লান কর।

রিয়াঃ আমার তো জংগল বাদে সবই ভালো লাগে, পাহাড় || সমুদ্র

তামিমঃ তুই আংকেলকে বলে তোর ভ্যারিয়েবলে একটু ভ্যালু বেশি স্টোর কর, দরকার হলে ৮ বাইটের ভ্যারিয়েবল নে। আমি ও নেওয়ার চেষ্টা করছি।

রিয়াঃ তুই সারা দিন আমাকে কিপটা বলিস, তুই জানিস না আমি কিপটা < আমার বাবা কিপটা

তামিমঃ একটু ভুল হয়েছে, তুই কিপটা == আংকেল কিপটা, যেমনে পারিস ম্যানেজ কর

রিয়াঃ বেশি ম্যানেজ করে কি হবে?

তামিমঃ পাহাড় || সমুদ্র না, পাহাড় && সমুদ্র

রিয়াঃ ওয়াও, ওকে আমি ম্যানেজ করার চেষ্টা করছি।

তামিমঃ মামা রাখেন, এই ভাড়াটাও আপু তুমি অ্যাসাইন করে দাও। আমি চললাম আর্টিকেল লিখতে।

রিয়াঃ ওই শয়তান, দাঁড়া। বাসায় এসে আমি কেন ভাড়া অ্যাসাইন করবো। তুই ভাড়া দিবি।

তামিমঃ আমি চললাম, তুমি রিক্সাওয়ালা মামার সাথে অপারেশন ঘটাও।

রিয়াঃ শয়তান, একটা এক্সাম্পলও তোকে দেবো না। আমার সব রেকর্ড করা আছে। এখনই লিখে ভাইয়াকে মেইল করে দেব।

তামিমঃ নো প্রব্লেম, তোমার ওই সব পচা এক্সাম্পল তুমি রাখো। আমি জানি কেমনে আরও ভালো অপারেটরের এক্সাম্পল খুঁজে বের করতে হয়। তোর লাগলে আমাকে ফোন দিস, ডজন খানেক নতুন এক্সাম্পল দিয়ে দেব।

রিয়াঃ 👿 👿 👿

Edit this page on GitHub