SL3 Framework

Variables

SL3 Framework - What is Variable

Declare Vairbale Not War

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

Start Conversation -

প্রেক্ষাপটঃ রিয়ার মেজাজ খুব গরম, তার Stack Learner এর ভ্যারিয়েবলের টিউটোরিয়াল দেখে মাথা গরম হয়ে গেছে। সে কোনো ভাবেই ভ্যারিয়েবলের সংজ্ঞার সাথে এর কাজ মেলাতে পারছে না। মেজাজ গরম করে সে তামিমকে ফোন দিচ্ছে। যতক্ষণ না তার কাছে ব্যাপারটা পরিষ্কার হচ্ছে ততক্ষণ পর্যন্ত সে ঘুমাতে পারবে না।

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

তামিমঃ আমি তো পৃথিবীর মায়া কাটিয়ে মহাজাগতিক চিন্তা ভাবনায় ব্যস্ত। পৃথিবীতে আর কোনো ভ্যারিয়েবল পাচ্ছি না, সব খোঁজা শেষ। এবার মহাকাশে আসলাম ভ্যারিয়েবল খুঁজতে।

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

তামিমঃ তুই গুগলে সার্চ কর, আমি এখন মঙ্গলে যাব ভ্যারিয়েবল খুঁজতে।

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

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

রিয়াঃ তুই ভাট না বকে আমাকে বোঝা যে ভ্যারিয়েবল কি?

তামিমঃ আচ্ছা আচ্ছা, আমাকে আগে পৃথিবীতে ল্যান্ড করতে দে। আমি কিছুক্ষণের মধ্যেই তোকে গুগল মিটে কল দিচ্ছি।

What is Variable?

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

SL3 Framework - What is Variable

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

SL3 Framework - Variable Syntax

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

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

Video About What is Variable

Continue Conversation (1)

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

রিয়াঃ এই গাধা, আমাকে ভ্যারিয়েবল বোঝা।

তামিমঃ বোঝাবো বাবা বোঝাবো, আগে তুই কি করছিস সেটা বল।

রিয়াঃ কি আর করছি? নিজের মাথার চুল ছিঁড়ছি। তুই ভ্যারিয়েবল বোঝা।

তামিমঃ আরে নিজের মাথার চুল পড়ে ছিঁড়িস, আগে বল কি করছিস।

রিয়াঃ ভ্যারিয়েবল বুঝতে না পেরে মেজাজ খুব গরম হয়ে গেছে, তাই কফি খাচ্ছি।

তামিমঃ আচ্ছা, গুড। কফি কি করে বানালি?

রিয়াঃ আমার কিন্তু মেজাজ গরম হয়ে যাচ্ছে তামিম। তুই ভ্যারিয়েবল বোঝাবি কি না বল?

তামিমঃ আরে রেগে যাস কেন? বলনা কফি কি করে বানালি?

রিয়াঃ কি করে আবার? কফি, চিনি, কফিমেট আর গরম পানি দিয়ে গুলালাম। আর কফি হয়ে গেলো।

তামিমঃ আচ্ছা কফি হওয়ার পরে তুই কফি খাচ্ছিস কি করে?

রিয়াঃ কি করে আবার? আমার মাথায় ঢেলে নিয়েছি, গড়ায়ে গড়ায়ে পড়ছে আমি চেটে চেটে খাচ্ছি। তুই আমার মাথা না খেয়ে বলবি ভ্যারিয়েবল কি?

তামিমঃ বলবো তো, কিন্তু তুই বলতে দিচ্ছিস কই?

রিয়াঃ কফি ঢেলে কফির মগে রেখেছি আর মগ থেকে খাচ্ছি।

তামিমঃ তুই তো ভ্যারিয়েবল শিখেই গিয়েছিস। আর অলরেডি ভ্যারিয়েবল ব্যবহার করছিস।

রিয়াঃ মানে?

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

রিয়াঃ তার মানে, ভ্যারিয়েবল হল যে কিছু একটা ধারণ করে রাখে?

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

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

তামিমঃ আচ্ছা। তুই এখন তোর কফির মগে কফি খাচ্ছিস, তাই না?

রিয়াঃ আর কতবার বলবো, খাচ্ছি তো।

তামিমঃ তুই চাইলেই তোর কফির মগে পানি অথবা চা অথবা কোক খেতে পারিস?

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

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

রিয়াঃ না, নেই।

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

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

তামিমঃ হ্যাঁ, তুই আসলেই বুঝতে পেরেছিস। এবার তুই তোর চারপাশ থেকে ভ্যারিয়েবল খুঁজে বের কর। আর আমাকে আমার হাদিয়া দে।

রিয়াঃ আমি দুঃখিত, আমার ভ্যারিয়েবলে কোনো ভ্যালু নেই।

তামিমঃ মানে?

রিয়াঃ মানে, আমার ওয়ালেটে কোনো টাকা নেই, যা ফোট।

তামিমঃ যাচ্ছি, তবে মনে রাখিস এখনি সব শেষ না। কিছুক্ষণ পরে আবার আমাকে তুই ফোন দিবি। তখন দেখে নেব।

SL3 Framework - Lots Of Variables

Why Do We Need Variable

ভ্যারিয়েবলের সংজ্ঞা থেকেই আমরা মোটামোটি বুঝতে পারছি কেন আমাদের ভ্যারিয়েবল দরকার। যে কোন ডেটা স্টোর করে রাখার জন্য আমাদের ভ্যারিয়েবল দরকার। কিন্তু প্রশ্ন হচ্ছে কেন আমরা ডেটা স্টোর করে রাখবো? স্টোর করে না রেখে যদি আমরা সরাসরি ব্যবহার করতে চাই তাহলে কি হবে না? অনেক সময় হবে আবার অনেক সময় হবে না। তবে যদি আমরা স্টোর করে রাখি তাহলে অনেক ক্ষেত্রেই আমাদের কাজ অনেক সহজ হয়ে যাবে।

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

বাসায় এসে চিনিটা আবার একটা ভ্যারিয়েবল থেকে সরিয়ে আর একটা ভ্যারিয়েবলের মধ্যে স্টোর করা হয়। মানে বুঝলেন না? প্যাকেট ভ্যারিয়েবল থেকে সরিয়ে কৌটা ভ্যারিয়েবলের মধ্যে রাখা হয়। প্যাকেট ভ্যারিয়েবলের বিষয়টা তো বোঝা গেলো যে পরিবহনে যেন সুবিধা হয় তাই আমরা প্যাকেট ব্যবহার করছি। কিন্তু কৌটা ভ্যারিয়েবল কেন ব্যবহার করছি?

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

Video About Why Do We Need Variable

Continue Conversation (2)

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

রিয়াঃ কি করছিস?

তামিমঃ তুই এখন যা তো, আমার মাথার ঠিক নেই। কোনো ভাবেই হিসেব মিলছে না।

রিয়াঃ এমনি কি আমি তোকে গাধা বলি? এখানে ভ্যারিয়েবল কই?

তামিমঃ সব জায়গায় প্রোগ্রামিং টানিস না, এখানে ভ্যারিয়েবল দিয়ে আমি কি করবো?

রিয়াঃ ওরে আমার প্রোগ্রামার সাহেব, পৃথিবীর সমস্ত ভ্যারিয়েবল খুঁজে মহাকাশে ভ্যারিয়েবল খুঁজতে গেলেই প্রোগ্রামার হওয়া যায় না। আগে নিজের সমস্যা সমাধান করেন প্রোগ্রামিং ব্যবহার করে।

তামিমঃ কি করে?

রিয়াঃ যা, তুই আমাকে ভ্যারিয়েবল শিখিয়েছিলি না? তোকে আমি ভ্যারিয়েবল ব্যবহার করেই সমস্যার সমাধানটা করে দেই, এটাই তোর হাদিয়া। একটা খাতা দে -

SALARY = 20000
MEHEDI = 500
MAHIR = 300
SAKIB = 500
BADHON = 1000
LIVING_COST = 10000
PHONE_BILL = 300

তামিমঃ এটা কি করলি?

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

তামিমঃ তা তো রাখলি, এবার কি করবি?

রিয়াঃ এবার প্রথমেই ধারের টাকাটা আলাদা করে ফেলবো। তারপরে আসল থেকে ধারটাকে আলাদা করে রাখবো। তাহলে একটা প্যারা কমে যাবে।

BORROWED = MEHEDI + MAHIR + SAKIB + BADHON // 2300 TAKA
REMAIN = SALARY - BORROWED // 17700 TAKA

রিয়াঃ 2300 টাকা আলাদা করে রাখ। এইটা হচ্ছে তোর ধারের টাকা, এর ভিতরেই সবার টাকা আছে। যখন যাকে দিবি তখন ভ্যারিয়েবল থেকে দেখে নিবি কার ভ্যালু কতো। বুঝেছিস।

তামিমঃ বুঝতে পেরেছি, এখন তো আমিই সব করতে পারবো।

রিয়াঃ পারবি, তবে আজকে আমিই করি, তুই পরের মাস থেকে হিসেব করিস।

COST = LIVING_COST + PHONE_BILL // 10300 TAKA
REMAIN = REMAIN - COST // 17700 - 10300 = 7400 TAKA

রিয়াঃ তোর অন্যান্য খরচ হচ্ছে ১০৩০০ টাকা, ধার শোধ করার পরে ছিল ১৭৭০০ টাকা। তাহলে নতুন করে তোর আছে ১৭৭০০ - ১০৩০০ টাকা, মানে ৭৪০০ টাকা।

তামিমঃ ওয়াও, আমার কাছে ৭৪০০ টাকা থাকছে?

রিয়াঃ না, তোর কাছে থাকছে ৬০০০ টাকা।

তামিমঃ কই? ভালো করে দেখ, ৭৪০০ টাকা থাকছে।

রিয়াঃ ট্রিট নামের আর একটা ভ্যারিয়েবল নিয়ে তার ভ্যালু সেট কর ১৪০০ টাকা। তোর আগে যা ছিল সেখান থেকে ট্রিটের ভ্যালুটা বিয়োগ করে দেখ ৬০০০ টাকায় থাকবে।

তামিমঃ 🥶

Examples:

আমরা ভ্যারিয়েবল সম্পর্কে অনেক কিছু জেনেছি। আমার মনে হয় এখন আশেপাশে তাকালে আমরা অনেক ভ্যারিয়েবল খুঁজেও পাবো। তারপরেও আপনারা যেন আরও অনেক সহজে ভ্যারিয়েবল খুঁজে পেতে পারেন এই জন্য কয়েকটা উদাহরণ এখানে দেওয়া হল -

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

SL3 Framework - Example 1 Water Pump

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

SL3 Framework - Example 2 Masala Box

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

Variable & Data Types

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

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

ভিন্ন ভিন্ন ডেটা টাইপ থাকার আর একটা বড় কারণ হলো সাইজ। ধরেন আপনি তেল কিনতে দোকানে গেলেন। আপনার ১০০ গ্রাম তেল দরকার, তাই আপনি একটা ছোট বোতল নিয়ে গেলেন যেন দোকানদার আপনার বোতলের ভিতরে তেলটা দিতে পারে। এখন ১০০ গ্রাম তেল আনার জন্য আপনি কি ৫ লিটারের একটা বোতল নিয়ে যাবেন? অবশ্যই না। আপনি ১০০ গ্রাম, ২০০ গ্রাম, ২৫০ গ্রাম যদি তাও না থাকে সর্বোচ্চ ৫০০ গ্রামের একটা বোতল নিয়ে যাবেন ১০০ গ্রাম তেল আনার জন্য। ডেটা টাইপের মাধ্যমে আমরা একটা ভ্যারিয়েবলের সাইজ বলে দেই। যদি আমি অল্প ডেটা স্টোর করতে চাই, তাহলে ছোট সাইজের ভ্যারিয়েবল নিবো। যদি আমার বড় সাইজের ডেটা স্টোর করতে হয় তাহলে আমি বড় সাইজের ভ্যারিয়েবল নিবো।

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

SL3 Framework - Data Types

Continue Conversation (3)

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

রিয়াঃ তামিম, তোর সাথে দেখা হয়ে খুব ভালো হল রে ভাই। এখন তুই আমাকে ডেটা টাইপ বোঝা।

তামিমঃ কি? ডেটা টাইপ? ডেটা টাইপ কেন? তুই না SL3 এর কমান্ড ট্রেইনিং করছিস? আর এই লিস্টে কি ডেটা টাইপ আছে?

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

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

রিয়াঃ তাহলে কি আমি ডেটা টাইপ শিখবো না?

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

রিয়াঃ প্রতিটা ল্যাংগুয়েজের ডেটা টাইপ ভিন্ন ভিন্ন সেটা বুঝতে পারলাম। তাহলে ভিন্ন ভিন্ন ল্যাংগুয়েজে কি ডেটা টাইপের কনসেপ্টও ভিন্ন ভিন্ন?

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

রিয়াঃ ভ্যারিয়েবল তো স্টোরেজ। মনে থাকবে না কেন?

তামিমঃ ভ্যারিয়েবল মানে স্টোরেজ। কিন্তু তোকে যদি জিজ্ঞাসা করি কত বড় স্টোরেজ?

রিয়াঃ কত বড় স্টোরেজ মানে? যত বড় লাগবে তত বড় স্টোরেজ।

তামিমঃ কিন্তু কম্পিউটার কি করে বুঝবে কতো বড় লাগবে? আচ্ছা, তুই তো অনেক কফি খাস তাই না?

রিয়াঃ হ্যাঁ খাই।

তামিমঃ এখন কফি খাওয়ার জন্য কি তুই তোর বাড়ির পানির ট্যাংক ব্যবহার করিস?

রিয়াঃ তুই কি পাগল? ট্যাংক কেন ব্যবহার করবো? এক কাপ কফি রাখার জন্য এত বড় ট্যাংক কোনো পাগলও ব্যবহার করবে না।

তামিমঃ এক্সাক্টলি। ছোটো ডেটা রাখার জন্য আমাদের দরকার ছোটো স্টোরেজ, আর বড় ডেটা রাখার জন্য দরকার বড় স্টোরেজ। খেয়াল কর, আমি এখন যে চানাচুরটা খাচ্ছি তার দাম ১০ টাকা, সব থেকে ছোট প্যাকেট। এর থেকে বড় প্যাকেটের দাম ৩৫ টাকা, তার থেকে বড় প্যাকেটের দাম ৭৫ টাকা, তার থেকে বড় প্যাকেটের দাম ১০০ টাকা। এখন ১০০ টাকার চানাচুরের প্যাকেটে যদি আমি ১০ টাকার চানাচুর রাখি তাহলে কাস্টমার মারবে না?

রিয়াঃ মারবে তো বটেই, কাস্টমার কি তোর মতো গাধা নাকি?

তামিমঃ ডেটা টাইপ ব্যবহার করে আমরা কম্পিউটারকে বলে দিতে পারি একটা ভ্যারিয়েবলের ভিতরে কতো জায়গা রাখতে হবে।

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

তামিমঃ তুই তো ইনটেলিজেন্ট। সব কিছুই সহজে বুঝে যাস।

রিয়াঃ আর তুই গাধা।

তামিমঃ দে, এবার আমার চানাচুরের বিল তুই দিবি। চানাচুর দিয়েই তুই ডেটা টাইপ বুঝেছিস।

রিয়াঃ 👿

Video About Data Type and Data Type Size

Find Out Variables:

তামিমের আম্মু তামিমকে বাজারে পাঠিয়েছেন ১০০০ টাকার একটা নোট হাতে দিয়ে। সাথে একটা লিস্টও ধরিয়ে দিয়েছেন। ১লিটার তেল, ২ কেজি আটা, ১ কেজি চিনি, ২ হালি ডিম এবং ১ ডজন কলা কিনতে হবে। তামিম বাজারে গিয়ে দেখে ১ লিটার তেলের দাম ১০০ টাকা, ১ কেজি আটার দাম ৪০ টাকা, ১ কেজি চিনি ৬০ টাকা, ১ হালি ডিমের দাম ৩৮ টাকা এবং ১ ডজন কলার দাম ৬০ টাকা। সে সব গুলো বাজার নিয়ে একটা ব্যাগের ভিতরে রাখলো। তারপরে হিসেব করে দোকানদার কে টাকা দিলো এবং ফিরতি টাকা ফেরত নিয়ে বাসায় চলে আসলো।

ওপরের গল্প থেকে খুঁজে বের করতে হবে এখানে কি কি ভ্যারিয়েবল আছে এবং কত টাকা ফেরত আসলো।

ভ্যারিয়েবল গুলো খুঁজে বের করে প্রোগ্রামটা আমি সুডো কোডে লিখতে পারি -

TOTAL_MONEY = 1000
OIL = 1
FLOUR = 2
SUGAR = 1
EGG = 2
BANANA = 1
OIL_PRICE = 100 * 1 = 100
FLOUR_PRICE = 40 * 2 = 80
SUGAR_PRICE = 60 * 1 = 60
EGG_PRICE = 38 * 2 = 76
BANANA_PRICE = 60 * 1 = 60
TOTAL_COST = OIL_PRICE + FLOUR_PRICE + SUGAR_PRICE + EGG_PRICE + BANANA_PRICE
TOTAL_COST = 376
REMAIN = TOTAL_MONEY - TOTAL_COST = 1000 - 376 = 624
NOTE: Here Bag is Also Variable, Because Tamim Uses Bag to Hold All The Comodities

Ending Conversation -

তামিমঃ কি রে কি করিস?

রিয়াঃ মঙ্গলের ভ্যারিয়েবল খোঁজা শেষ, এবার ভাবছি পৃথিবীতে নেমে আসবো। মাটির নিচের ভ্যারিয়েবল গুলো একটু খুঁজে দেখতে হবে।

তামিমঃ অনেক হয়েছে ভ্যারিয়েবল খোঁজা। আর ভ্যারিয়েবল খুঁজতে হবে না। এত ভ্যারিয়েবল দিয়ে করবি কি?

রিয়াঃ কি করবো মানে? জিনিসপত্র রাখবো।

তামিমঃ শুধু জিনিসপত্র রাখলেই চলবে? কোনো অপারেশন ঘটাতে হবে না?

রিয়াঃ অপারেশন? সেটা কি?

তামিমঃ বুঝবে বাছা বুঝবে, প্রোগ্রামিং ফান্ডামেন্টালস এর পরের ডকুমেন্টে তো নাঈম ভাই আমাদেরকে এটাই শেখাবেন।

রিয়াঃ তাই নাকি? আমি প্রস্তুত। চল পরের ডকুমেন্ট পড়া শুরু করি।

Edit this page on GitHub