Skip to content

Chapter 2: জাভাস্ক্রিপ্ট ভেরিয়েবল-Javascript Variable

2-1: জাভাস্ক্রিপ্ট ভেরিয়েবল

ভেরিয়েবল কী এবং কীভাবে কাজ করে?

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

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

  • একটা কৌটাতে ময়দা
  • একটা কৌটাতে চিনি
  • একটা কৌটাতে লবণ
  • একটা কৌটাতে সুজি
  • একটা কৌটাতে সাগুদানা

খুশিতে-ঠেলায় তো কৌটার মধ্যে একটা একটা জিনিস রাখছোস। এখন দুইদিন পরে কেউ যদি বলে, লবণের কৌটা নিয়ে আসো। তখন তুই কনফিউজড হয়ে যাবি। কোন কৌটার মধ্যে লবণ আছে, আর কোন কৌটার মধ্যে চিনি বা সুজি বা ময়দা আছে। আর তুই হালকা একটু চালাক চতুর হলে—

Container boxes illustration

  • যে কৌটার মধ্যে ময়দা রাখলি, সেই কৌটার বাইরে লিখে দিতি 'ময়দা'
  • একইভাবে যে কৌটার ভিতরে চিনি রাখলি, বাইরে থেকে লিখে দিতি 'চিনি'
  • আর যে কৌটাতে লবণ রাখলি, সেই কৌটাতে লিখে দিতি 'লবণ'

এইভাবে সবগুলা কৌটার একটা নাম থাকলে তুই চট করে যে জিনিস দরকার, সেটা নিয়ে আসতে পারবি।

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

ভেরিয়েবল কী?

এখন একটু সন্ধি বিচ্ছেদ করে ফেল, যেমন:

  • বিদ্যা + আলয় = বিদ্যালয়
  • হিম + আলয় = হিমালয়
  • জান + টুস = জান্টুস

একইভাবে তুই বলতে পারিস: vari + able = variable

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

ধর, সাদা কৌটাতে যতটুকু তুই চিনি রাখছিলি, সেটা ভ্যারি করতে পারে। কারণ হতে পারে—

  • তুই আঙ্গুল দিয়ে এক চিমটি চিনি খেয়ে ফেল্লি
  • ইঁদুর আংকেল লেবুর শরবত খাওয়ার জন্য দুই চামচ চিনি খেয়ে ফেলল
  • পিঁপড়া ভাইয়ারা এসে পিঠে করে যতটুকু পারছে, চিনি পাচার করে নিয়ে গেল
  • বাবার বয়সি একজন চিনি খেতে খেতে চিনি বাবা হয়ে গেল

এমন অনেকভাবেই চিনি যতটুকু ছিল অর্থাৎ, চিনির পরিমাণ (quantity) যতটুকু ছিল সেটা চেইঞ্জ হয়ে যেতে পারে। তবে সব সময় যে চিনির পরিমাণ চেইঞ্জ হবে এমন না। তবে কখনো কখনো চেইঞ্জ হতে পারে, আবার দরকার হলে চেইঞ্জ না-ও হতে পারে। আর এইটাকেই বলে ভেরিয়েবল।

সহজভাবে বলতে গেলে— কোনো একটা মান, যেটা চাইলে চেইঞ্জ হতে পারে বা ভ্যারি করতে পারে সেটাই ভেরিয়েবল

কৌটার ওপরে নাম লেখার মতো করে ভেরিয়েবলের নাম দিতে হবে। কারণ, আমি যদি তোকে এসে বলি 38: এই 38 টা কী হতে পারে?

  • হতে পারে কারো বয়স, কারো ওজন বা কারো পকেটে কত টাকা আছে অথবা কারো বন্ধুর সংখ্যা
  • আবার ব্রাউজারে তুই কয়টা ট্যাব খুলে রাখছস কিংবা প্রতিদিন কয়বার করে বলিস, আজকেই পড়া শুরু করবো কিন্তু শেষ পর্যন্ত পড়া শুরু করা হয় না

অথচ 38 বলার সাথে সাথে তুই যদি বলে দেস weight বা ওজন। তখন স্পষ্টভাবে বুঝা যাচ্ছে যে, কারো ওজন হচ্ছে 38 কেজি।

কনসেপ্টটা তো কিছুটা বুঝা গেল। এইবার দেখ কোডিংয়ের সময় ভেরিয়েবল লিখতে গেলে কী কী করা লাগে।

ভেরিয়েবল ডিক্লেয়ার করার জন্য পাঁচটা জিনিস লাগে—

১. const: এটার মাধ্যমে বোঝা যায় যে, তুই একটা ভেরিয়েবল ডিক্লেয়ার করেছিস।

২. নাম: নাম দিয়ে বুঝাবে, ভেরিয়েবলে কী রাখা হচ্ছে।

৩. সমান চিহ্ন, ইকুয়াল সাইন (=): এটা দিয়ে বুঝাবে, তুই একটা মান সেট করতে যাচ্ছিস।

৪. মান: ভেরিয়েবলের মান যেটা হবে, সেটা লিখবি।

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

এই হচ্ছে টোটাল পাঁচটা জিনিস, যা একটি ভেরিয়েবল ডিক্লেয়ার করতে প্রয়োজন। এই পাঁচটা জিনিস কীভাবে ইউজ করে, সেজন্য পাঁচটা ভেরিয়েবলের উদাহরণ দিলাম।

উদাহরণ:

javascript
const weight = 38;
const price = 760;
const year = 1865;
const balance = 2000;
const age = 14;

সমান চিহ্নের বামপাশে যেটা আছে, সেটা হচ্ছে নাম বা ভেরিয়েবলের নাম, আর ডানপাশে যেটা রয়েছে, সেটা হচ্ছে মান বা ভ্যালু।

Problem For Practice

১. তোর জন্মসালটি একটা ভেরিয়েবলে রাখ।

২. তোরা কয় ভাই-বোন, সেটা একটা ভেরিয়েবলে রাখ।

৩. তোর ক্লাসে কতজন স্টুডেন্ট আছে, তাদের সংখ্যা দিয়ে students নামক একটা ভেরিয়েবল ডিক্লেয়ার কর।

৪. লাস্ট পরীক্ষায় কত নাম্বার পাইছিলি, সেটা দিয়ে marks নামক একটা ভেরিয়েবল ডিক্লেয়ার কর।

৫. তোর বাসায় কয়টা রুম আছে, সেটা নিয়ে rooms নামক একটা ভেরিয়েবল ডিক্লেয়ার কর।

৬. তোর দৈনিক পড়াশোনার সময়কে ঘণ্টা হিসেবে একটি ভেরিয়েবলে রাখ।

৭. তোর ফোন নাম্বারে যতগুলা ডিজিট বা অঙ্ক যোগ করে যোগফল total নামে একটা ভেরিয়েবলে রাখ।

2-2: log-এর গোল, console

তুই জামা কিনলে, নতুন ফোন কিনলে এইটা মানুষকে দেখাস, শো অফ করোস। একইভাবে তুই কিছু কোড করলে সেটার আউটপুট দেখতে চাইবি। সেজন্য আউটপুট দেখানোর একটা জায়গা লাগবে। এই আউটপুট দেখানোর একটা জায়গা হচ্ছে 'কনসোল' (console), এইখানে কনসোল বলতে বুঝায় একটা স্ক্রিন বা একটা ডিসপ্লে, যেখানে আউটপুট দেখানো যায়।

Console example

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

পরবর্তীতে ভিডিও গেমসের মধ্যেও কনসোল নামের জিনিস চলে আসছে। অনেকটা ক্যালকুলেটরে কিছু হিসাব করতে ছোট একটা ডিসপ্লে আছে। এমনকি মোবাইলেরও একটা ডিসপ্লে আছে। এমন একটা কিছু হচ্ছে কনসোল।

JavaScript Console

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

Console.log example

সো, কনসোলের মধ্যে আউটপুট দেখতে চাইলে পাঁচটা কাজ করতে হবে:

১. console (কনসোল) শব্দ লিখবি। এইটা দিয়ে বুঝানো হয়, তুই কনসোলের মধ্যে কিছু করতে চাস।

২. একটা ডট চিহ্ন (.) দিবি। এইটা দিয়ে বুঝানো হয়, তুই কনসোলের মধ্যে কিছু একটা লিখবি।

৩. এরপর log (লগ) লিখবি। লগ বলতে বুঝায়, তুই কিছু একটা লিখে রাখতে চাস। আর জাভাস্ক্রিপ্টের জগতে লিখে রাখা বা আউটপুট দেখানো বুঝায়।

৪. তারপর দুইটা ব্র্যাকেট চিহ্ন দিবি।

৫. ব্র্যাকেটের ভিতরে যে জিনিসটা আউটপুট হিসেবে দেখতে চাস, সেটা লিখবি।

তুই যদি চার শ তিনকে (403) আউটপুট হিসেবে দেখতে চাইছ, তাহলে লিখতে পারিস:

javascript
console.log(403);

Output: 403;

ওপরে তুই প্রথমে console লিখবি, তারপর একটা ডট চিহ্ন (.) দিবি। তারপর log লিখবি। এরপর দুইটা ব্র্যাকেটের ভিতরে যেটা আউটপুট হিসেবে দেখতে চাইছ, সেটাকে লিখবি।

আর তুই চাইলে কোনো ভেরিয়েবলের মানকেও আউটপুট হিসেবে দেখতে পারবি। সেটা দেখার জন্য জাস্ট console.log-এর পরে প্রথম ব্র্যাকেটের ভিতরে সেই ভেরিয়েবলের নাম লিখে দিবি, তাহলে সেই ভেরিয়েবলের মান আউটপুট হিসেবে পেয়ে যাবি।

javascript
const money = 835;
console.log(money);

Output: 835

কিছু কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজে আউটপুট দেখানোকে প্রিন্ট করা বলে। অনেকটা প্রিন্টারে প্রিন্ট করলে যেমন আউটপুট দেখায়, সেই রকম একটা বিষয়।

Javascript Variable Problem Practice:

১. তোর বর্তমান বয়স age নামে একটি ভেরিয়েবলে রাখ। কনসোলে তারপর এই ভেরিয়েবলটি প্রিন্ট কর।

২. তুই এই বছর যে কয়টা বই পড়ার পরিকল্পনা করছস, সেটাকে booksToRead নামে একটি ভেরিয়েবলে রাখ। পরে booksToRead-এর মান কনসোলে আউটপুট দেখা।

৩. তুই প্রতিদিন সকাল কয়টার সময় ঘুম থেকে উঠস, সেটাকে wakeUpTime নামে একটি ভেরিয়েবলে ডিক্লেয়ার কর। তারপর wakeUpTime-এর নতুন মান সেট কর এবং কনসোলে আউটপুট হিসেবে দেখা।

৪. আজ সারাদিনে কতঘণ্টা সময় তুই মোবাইল ফোনে নষ্ট করছস, সেটাকে wastedTime নামে একটি ভেরিয়েবলে এই মান রাখ। তারপর এইটাকে কনসোলে দেখা।

৫. এই মুহূর্তে তুই কত টাকা ধার করে রাখছস? সেটাকে borrow নামে একটি ভেরিয়েবলে রাখ।

৬. তোর প্রিয় টিম অপোজিট টিমকে সর্বোচ্চ কয়টা গোল দিছে এক ম্যাচে। সেটা দিয়ে goals নামে একটা ভেরিয়েবলে লিখে সেটাকে আউটপুট হিসেবে দেখা।

৭. তোর বিছানায় কয়টা বালিশ আছে, সেটার জন্য pillow নামে একটা ভেরিয়েবল ডিক্লেয়ার কর। তারপর কনসোলে সেটাকে আউটপুট হিসেবে দেখা।

2-3: String ধরে মারো টান

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

যদি জিজ্ঞেস করি, তোর 'ইয়ে'র নাম কি? তুই কি সংখ্যা দিয়ে বলতে পারবি?

হয়তো তোর বয়স কত, টাকা আছে কত, ওজন কত— এগুলো সংখ্যা দিয়ে বলতে পারবি। কিন্তু যদি নাম জিজ্ঞাসা করি, তাহলে কি তুই সংখ্যা দিয়ে বলতে পারবি? বা কোনো স্যার পরীক্ষায় বাম্বু দিছে। সেই স্যারের নাম কি সংখ্যা দিয়ে বলতে পারবি। অথবা নেক্সটে কোনো সাবজেক্টের এর পরীক্ষা কিংবা কাল রাতে কই আছিলি, দুপুরে কী খাইছস অথবা কোন ব্র্যান্ডের ফোন ইউজ করছ— এইগুলার কোনোটাই কিন্তু সংখ্যা দিয়ে প্রকাশ করতে পারবি না; বরং কোনো একটা শব্দ বা কথা বা একাধিক বর্ণের সমষ্টি দিয়ে তোকে কিছু একটা বলতে হবে। ধর, একটা ভেরিয়েবল ডিক্লেয়ার করলাম এবং এর নাম দিলাম name এবং ডানপাশে লিখলাম:

javascript
const name = "sadaruddin";

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

javascript
const address = "anderkilla bandorban";

ডাবল কোটেশন দিয়ে স্টার্ট করতে হবে এবং ডাবল কোটেশনের মাঝখানে আমরা আমাদের ঠিকানাটা লিখে দিব। ঠিক ওপরে যেভাবে দেখানো হয়েছে সেভাবে, এই যে ডাবল কোটেশনের মাঝে কিছু একটা লিখা, এইটাকে স্ট্রিং(string) বলে বা স্ট্রিং টাইপের ভেরিয়েবল বলে।

স্ট্রিং কেন বলে?

স্ট্রিং বলতে সাধারণত সুতা ধরা হয়। আগের দিনে ৫০০-৭০০ বছর আগে যখন কম্পিউটার ছিল না, তখন ছাপাখানায় বই, নিউজপেপার, ম্যাগাজিন ইত্যাদি ছাপানোর জন্য ছোট ছোট কাঠের তৈরি অক্ষরকে পাশাপাশি বসিয়ে এক একটা বাক্য বা লাইন সেট করতে হতো। সেট করার পর সেই অক্ষরগুলাকে ছাপাখানায় পাঠাতো ছাপানোর জন্য। অক্ষরগুলোকে ছাপাখানায় পাঠানোর সময় সবগুলো অক্ষরকে সুতা দিয়ে বেঁধে পাঠাতো, যাতে করে অক্ষরগুলো নড়েচড়ে না যায় বা হারিয়ে না যায় বা পড়ে না যায়।

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

String printing press illustration

এভাবেই লেখাগুলার নাম দড়ি বা স্ট্রিং হয়ে ওঠে।

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

javascript
const favFood = "Biryani";

এখানে তুই চাইলে সিঙ্গেল কোটেশনও ব্যবহার করতে পারিস অথবা ডাবল কোটেশনও দিতে পারিস, তাতে কোনো প্রবলেম হবে না।

javascript
const hidingPlace = "Bed er niche";

আরও চার-পাঁচটা স্ট্রিং টাইপের ভেরিয়েবল নিচে দিয়েদিলাম—

javascript
const drinking = "Tea";
const subject = "English";
const teacher = "Dragon Delwar";
const phone = "Samsung";
const fruit = "watermelon";

এই সবগুলোকে স্ট্রিং টাইপ ভেরিয়েবল বলা হয়।

JS String Practice:

১. এখন name নামে একটা ভেরিয়েবল ডিক্লেয়ার কর, আর যেটার মান হবে তোর নাম। এরপর সেটাকে console-এ আউটপুট হিসেবে দেখা।

২. তোর ঠিকানা (address) একটা স্ট্রিং ভেরিয়েবল ডিক্লেয়ার করে দেখ। আর সেটাকে console.log() দিয়ে আউটপুট দেখ।

৩. তোর বেস্ট ফ্রেন্ড কোন স্কুল, কলেজ বা ভার্সিটিতে পড়ে, সেই স্কুল, কলেজ বা ভার্সিটির নামে একটা ভেরিয়েবল ডিক্লেয়ার কর। তারপর সেটাকে আউটপুট হিসেবে দেখা।

৪. তোর প্রিয় নায়িকার নাম fan নামে একটা ভেরিয়েবলে রাখ। তারপর কনসোলে দেখা।

৫. এই বছরের তোর প্রিয় সিনেমার নাম movieOfTheYear নামে একটা ভেরিয়েবলে রাখ। তারপর সেটা কনসোলে প্রিন্ট কর।

৬. সবার কিছু শখ বা hobby থাকে। তোর শখ বা hobby নামে একটা স্ট্রিং ভেরিয়েবল ডিক্লেয়ার কর।

৭. তোর প্রিয় রং কোনটা? color নামে একটা স্ট্রিং ভেরিয়েবল ডিক্লেয়ার কর।

2-4: কানামাছি true কানামাছি false

সব সময় কিন্তু স্ট্রিং বা সংখ্যা দিয়ে ভেরিয়েবল প্রকাশ হবে না। তুই যদি কাউকে জিজ্ঞাসা করিস, সে সিঙ্গেল কি না? সে তখন Yes অথবা No উত্তর দিবে। অথবা ধর তোকে জিজ্ঞাসা করা হলো, তুই স্বাধীন নোয়াখালী বিভাগের নাগরিক কি না? তুই অবশ্যই Yes অথবা No উত্তর দিবি। আবার ধর তোর বড় বোন তোকে জিজ্ঞাসা করল, তুই তার ভ্যানিটি ব্যাগ থেকে টাকা সরাইছিস কি না? তখন তুই Yes অথবা No বলবি।

এইসব ক্ষেত্রে তুই যদি ভেরিয়েবল ডিক্লেয়ার করতে চাস, ঠিক আগের মতো const লিখবি। এরপর একটা নাম দিবি, যেমন moneyMoved। এখানে উত্তরটা অবশ্যই Yes অথবা No হবে। তবে yes বা no লেখা যাবে না; বরং লিখতে হবে true বা false। অর্থাৎ yes হলে true, আর no হলে false লিখতে হবে। সেজন্য আমরা লিখতেছি:

javascript
const moneyMoved = true;

এবং এই true বা false কোনো ধরনের কোটেশনের মধ্যে লেখা যাবে না। কারণ, true বা false কোনো স্ট্রিং না; বরং এইগুলা স্পেশাল কি-ওয়ার্ড। যা জাভাস্ক্রিপ্ট দেখলেই বুঝে ফেলে স্পেশালভাবে। অনেকটা const-এর মতো। আরও কয়েকটা উদাহরণ দেখি:

javascript
const learning = true;
const isChilling = true;
const isHomeworkDone = false;
const isCrushReplied = false;
const hasPhoneBattery = false;
const singleForever = true;
const passed = false;

এই true অথবা false দিয়ে যে সকল ভেরিয়েবলের মান সেট করা হবে, তাদেরকে বলা হয় বুলিয়ান (boolean) ডাটা টাইপ। তুই চাইলে console লগ করে এই ভেরিয়েবলের আউটপুট দেখতে পারবি।

javascript
const isRich = true;
const passed = false;
console.log(isRich);
console.log(passed);

Output:

true
false

Javascript Boolean Data Type Practice:

১. ধর তোর বন্ধু পরীক্ষায় বাম্বু খাইছে। এখন সে হ্যাপি কি না, সেটা একটা boolean টাইপের ভেরিয়েবল ডিক্লেয়ার করে সেটার মান রাখ। আর সেটা console-এ প্রিন্ট কর।

২. তুই নিজে একটা প্রোগ্রাম লিখে দেখ, তোর crush তোকে মেসেজ দিয়েছে কি না। ধর মেসেজ দিলে true, না দিলে false। সেটা প্রিন্ট কর console.log() দিয়ে।

৩. তোর প্রিয় টিম খেলায় জিতে গেল, এখন সেই খুশিতে বগল বাজাতে বাজাতে celebrating নামে একটা boolean ভেরিয়েবল ডিক্লেয়ার করে সেটার মান দে, আর আউটপুট দেখ।

৪. তোর এখন boolean টাইপ সম্পর্কে ভালো ধারণা হয়েছে। এবার একটা প্রোগ্রাম লিখ, যেখানে তুই তিনটা boolean ভেরিয়েবল ডিক্লেয়ার করবি: "isHappy", "hasMoney", আর "isHungry"। এই তিনটার মান যথাক্রমে true, false, আর true সেট করবি। তারপর আউটপুট দে console.log() দিয়ে।

৫. তোর আজকে পড়া শেষ হয়েছে কি না? পড়া শেষ হলে true, না হলে false হবে। আর সেটা রাখার জন্য isStudyDone নামে একটা boolean ভেরিয়েবল ডিক্লেয়ার কর।

৬. এখন isPhoneCharged নামে একটা boolean ভেরিয়েবল ডিক্লেয়ার কর। চার্জ শেষ হলে true, শেষ না হলে false।

৭. তোর কি রাতের খাওয়া শেষ? সেটা নিয়ে isDinnerDone নামে একটি boolean ভেরিয়েবল ডিক্লেয়ার কর। খাওয়া শেষ হলে কী লিখবি, আর শেষ না হলে কী লিখবি, সেটা তো জানোস অলরেডি।

2-5: জাভাস্ক্রিপ্ট দিয়ে- গণিতের গ্যাংস্টার

অঙ্ক, ইংরেজি আর ভূতের মধ্যে পোলাপান সবচেয়ে বেশি ভয় পায় অঙ্ক আর ইংরেজিকে, কম ভয় পায় ভূতকে। এমনকি একপাশে অঙ্ক আরেকপাশে যমদূত দাঁড়ায় থাকলে পোলাপান ভয়ে অঙ্কের কাছে যাবে না, যমদূতের কাছে যাবে।

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

এই ডালভাত খেতে খেতে ফটাফট দুটি ভেরিয়েবল ডিক্লেয়ার করে ফেল:

javascript
const eggPrice = 10;
const onionPrice = 20;

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

ডানপাশে কোনো মান বা ভ্যালু দিবি না; বরং প্রথম দুইটা ভেরিয়েবলের নাম লিখে দুইটা নামের মধ্যে একটা যোগ চিহ্ন দিয়ে দিবি।

javascript
const eggPrice = 10;
const onionPrice = 20;
const total = eggPrice + onionPrice;

এইটা বুঝার জন্য প্রথমেই total নামক ভেরিয়েবলের সমান চিহ্নর ডানপাশে তাকাবি। সেটা দেখলে বুঝা যায় eggPrice আর onionPrice যোগ করা হচ্ছে। এই যোগ করার অর্থ হচ্ছে eggPrice ভেরিয়েবলের মানের সাথে onionPrice ভেরিয়েবলের মান যোগ করা হচ্ছে। তারপর যে যোগফল হবে, সেটা হবে total নামক ভেরিয়েবলের মান। এরপর তুই চাইলে total ভেরিয়েবলকে console.log করে আউটপুট হিসেবে দেখতে পারবি।

javascript
const eggPrice = 10;
const onionPrice = 20;
const total = eggPrice + onionPrice;
console.log(total);

Output: 30

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

javascript
const eggPrice = 10;
const onionPrice = 20;
const result = eggPrice - onionPrice;
console.log(result);

Output: -10

এখানে মাইনাস (-10) আসার কারণ ছোট সংখ্যা থেকে আমরা বড় সংখ্যা বিয়োগ দিয়েছি। eggPrice ভেরিয়েবলের মান onionPrice ভেরিয়েবলের চাইতে কম। আর ছোট জিনিস থেকে বড় জিনিস বিয়োগ করলে বিয়োগফল নেগেটিভ তো আসবেই।

আবার তুই যদি যোগফল-বিয়োগফল আলাদা ভেরিয়েবলে না রেখে জাস্ট আউটপুট দেখতে চাইলে সরাসরি console.log -এর ভিতরে একটা ভেরিয়েবলের পর বিয়োগ চিহ্ন দিয়ে তারপর আরেকটা ভেরিয়েবল লিখে দিতে পারবি।

javascript
console.log(onionPrice - eggPrice);

Output: 10

এগুলো নরমাল অপারেশন, যেগুলো আমরা ডেইলি লাইফে রেগুলারলি যোগ-বিয়োগ করে থাকি। একই স্টাইলে আমরা Multiplication operation বা গুণ করতে পারি।

javascript
console.log(onionPrice * eggPrice);

Output: 200

নরমালি অঙ্কের ক্ষেত্রে গুণের জন্য আমরা X চিহ্নটা ব্যবহার করি। তবে প্রোগ্রামিংয়ে এই গুণকে স্টার বা এস্টেরিস্ক চিহ্ন ( * ) দিয়ে প্রকাশ করা হয়।

একইভাবে চাইলে আমরা ভাগও করতে পারি বা Division operation করতে পারি। কিন্তু এখানে একটু ঝামেলা আছে।

javascript
console.log(onionPrice / eggPrice);

Output: 2

(/) এই চিহ্নের মাধ্যমে আমরা ভাগ বা division operation করতে পারি

কিন্তু আমরা যদি 10-কে 3 দিয়ে ভাগ দেই, সে ক্ষেত্রে ভাগফল হবে 3 এবং ভাগশেষ হবে 1। কিন্ত কোনো ক্যালকুলেটরে 10 ভাগ 3 দিলে আউটপুট দেখাবে 3.333333 এমন কিছু। এমনকি কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজে আমরা 10-কে 3 দিয়ে ভাগ করলে সেও ক্যালকুলেটরের মতো 3.33333333 রেজাল্ট দিবে।

javascript
console.log(10 / 3);

Output: 3.33333333

নরমালি অঙ্ক করার সময় আমরা ভাগফল এবং ভাগশেষ আলাদা আলাদাভাবে বের করি। কিন্তু প্রোগ্রামিংয়ে তুই যদি দশকে তিন দিয়ে ভাগ (/) করিস, তাহলে তুই আলাদা আলাদা ভাগফল এবং ভাগশেষ পাবি না; বরং একসাথেই পাবি।

আমাদের যখন ভাগশেষ প্রয়োজন হবে, তখন কীভাবে সেটা দেখব? সেটার জন্য আরেকটা অপারেটর রয়েছে modules বা remainder operator (%)। প্রোগ্রামিংয়ে এই অপারেটরের মাধ্যমে শুধু ভাগশেষ প্রকাশ হয়। গণিতে আমরা শতকরা বা পার্সেন্টেজ হিসেব করার জন্য % ইউজ করি। তবে প্রোগ্রামিংয়ের ক্ষেত্রে %-কে ভাগশেষ বের করার জন্য ইউজ করব।

যেমন, 11-কে যদি 7 দিয়ে ভাগ দেই, ভাগফল হয় 1 এবং ভাগশেষ হবে 4, আর 10-কে 3 দিয়ে ভাগ করলে ভাগশেষ হিসেবে 1 থাকে।

javascript
console.log(11 % 7);
console.log(10 % 3);

Output:

4

1

দুইটা ভেরিয়েবলের মান যদি স্ট্রিং হয় এবং এই দুইটাকে যদি তুই যোগ করতে চাস, তাহলে জাভাস্ক্রিপ্ট দুইটা ভেরিয়েবলের মানকে পাশাপাশি বসিয়ে দিবে।

javascript
const first = "Mobarok";
const second = "Tobarok";
console.log(first + second);

Output: MobarokTobarok

দুটি string পাশাপাশি বসিয়ে (অ্যাড করে) আউটপুট দেখাবে।

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

javascript
const sugar = 20;
const money = "20";
console.log(sugar + money);

Output: 2020

শুধু যে ভেরিয়েবলের সাথে ভেরিয়েবলের যোগ, বিয়োগ, গুণ ও ভাগ করব, সেটা কিন্তু না; বরং ভেরিয়েবলের সাথে সংখ্যার যোগ, বিয়োগ, গুণ ও ভাগ করতে পারবে। যেমন,

javascript
const price = 35;
const inboxEAsenPrice = price + 10;
const newPrice = price + 50;
const discountedPrice = newPrice - 10;
console.log(discountedPrice);

Output: 75

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

আমরা আরও অনেক কিছু জানব। আমাদের অনেক কিছু জানার আছে। সবে তো মাত্র শুরু।

Math operations illustration

Javascript Math Operator Practice:

১. ধর, তুই 100 টাকা আয় করেছিস। তার মধ্যে 40 টাকা খরচ করছিস। বাকি টাকা কত রইল, সেটা বের করার একটা প্রোগ্রাম লিখ।

২. তোর কাছে 10টা পেন্সিল আছে। প্রতিবার তুই একসাথে 2টা পেন্সিল ব্যবহার করবি। কত বার ব্যবহার করতে পারবি? প্রোগ্রাম লিখে বের কর।

৩. তোর কাছে 60 টাকা আছে। তুই যদি প্রতিবার 15 টাকা করে খরচ করিস, কয়বার খরচ করতে পারবি? এবং খরচের পর কয় টাকা বাকি থাকবে, সেটা বের করতে একটা প্রোগ্রাম লিখ।

৪. ধর, তুই দুইটা স্ট্রিং লিখলি "Hello" আর "World"। এই দুইটা স্ট্রিংকে একসাথে জোড়া দিয়ে কীভাবে "HelloWorld" বানানো যায়, সেটা দেখানোর জন্য একটা প্রোগ্রাম লিখ।

৫. তুই যদি 153 কেজি চাল আর 261 কেজি ডাল কিনলি, তাহলে তুই কয় কেজি জিনিস কিনেছিস? মোট কেজি বের করার একটা প্রোগ্রাম লিখ।

৬. তোর কাছে 500 টাকা আছে, প্রতিবার তুই 75 টাকা খরচ করবি। কয়বার খরচ করতে পারবি আর শেষে কয় টাকা বাকি থাকবে, সেটা বের করার একটা প্রোগ্রাম লিখ।

৭. তুই 8-কে 3 দিয়ে ভাগ দিলে ভাগফল কত আর ভাগশেষ কত, সেটা বের করার জন্য একটা প্রোগ্রাম লিখ।

৮. তুই 50-কে 9 দিয়ে ভাগ দিলে শুধু ভাগশেষ কত থাকে, সেটা বের করার একটা প্রোগ্রাম লিখ।

৯. তুই "Bangla" আর "desh" স্ট্রিং যোগ করে "Bangladesh" বানাতে চাস। কীভাবে করবি, সেটা দেখানোর একটা প্রোগ্রাম লিখ।

১০. ধর, একদিন ঘুম থেকে উঠে ক্ষিধার চোটে তুই ছোটখাটো একটা রাক্ষস হয়ে গেছস। তারপর থেকে প্রতিদিন 4 কেজি চালের ভাত খেয়ে ফেলস। এখন যদি তোকে 12 মন (480 কেজি) চাল দেয়া হয় থাকে, তাহলে এই চাল দিয়ে তোর কত দিন যাবে। আবার একমাস যদি 30 দিনে হয়, তাহলে এই 12 মন চাল দিয়ে তোর কত মাস যাবে।

এগুলো প্র্যাকটিস করে করে তোর প্রোগ্রামিংয়ের বেসিক মজবুত করতে পারবি।

Released under the MIT License.