Skip to content

Chapter 5: JavaScript Condition-জাভাস্ক্রিপ্ট কন্ডিশন

5-1: Condition: নো কনফিউশন

JavaScript Condition

দুষ্ট পোলাপান সুষ্ঠ বিনোদন না খুঁজে ক্রাশের ফোন নাম্বার খোঁজে।

— ভালো কথা মনে করছস, তোর কাছে সাফার নাম্বার আছে না। আমাকে দে।

দিব, যদি তুই আমাকে স্পেশাল একটা ট্রিট দেস।

— ট্রিট একটা না। তোকে ডাবল ট্রিট দিব। একটা তো ফোন নাম্বারের জন্য, আরেকটা দিব জাভাস্ক্রিপ্ট মজায় মজায় শেখানোর জন্য।

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

If you buy food for me I will give you the phone number

একইভাবে তুই দোকানে গিয়ে বলতে পারিস— যদি বিরিয়ানির দাম 300 টাকার কম হয়, তাহলে আমি বিরিয়ানি খাব। এইটাকে ইংরেজিতে বললে বলা যায়:

If biriyani price is less than 300 tk I will buy biryani

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

javascript
if (condition) {
  // code to be executed if the condition is true
}

এই স্টাইলে শর্ত (condition) অবশ্যই থাকবে এবং শর্তটি যদি সত্য হয়, তাহলে শর্তের পরে সেকেন্ড ব্র্যাকেটের { } ভেতরের কোড কাজ করবে। শর্ত সত্য না হলে সেকেন্ড ব্র্যাকেটের ভিতরের কোডের কাছে যাবে না। একটি উদাহরণ দেখ:

javascript
if (3 < 10) {
  console.log("I am small. I do not bite.");
}

Output: I am small. I do not bite.

এখানে 3, 10 থেকে ছোট, তাই শর্ত সত্য হবে আর আউটপুটে দেখাবে "I am small. I do not bite."

এখন, যদি শর্তটি চেইঞ্জ করে দিই, যেমন 13 < 10, তাহলে কি আউটপুট আসবে?

javascript
if (13 < 10) {
  console.log("Smaller but stronger.");
}

Output:

এখানে আউটপুট আসবে না। কারণ, 13, 10 থেকে বড়, ছোট নয়। অর্থাৎ শর্তটি মিথ্যা, তাই আউটপুটে কিছু দেখাবে না।

মেইন কাহিনি: if-এর পরে থাকা শর্তটি যদি সত্য হয়, তবে { }-এর ভিতরে থাকা কোড কার্যকর হবে। সত্য না হলে, যাবে না।

বুঝার সুবিধার্থে প্রথমে শর্তের ভিতরে দুইটা সংখ্যা বা ডাইরেক্ট মান নিয়ে কম্পেয়ার করছিলাম। পরের শর্তের ভিতরে একটা ভেরিয়েবলের সাথে মান বা ভ্যালুর কম্পেয়ার কর। যেমন:

javascript
const biriyaniPrice = 500;
if (biriyaniPrice < 300) {
  console.log("Mama, give me some biriyani");
}

Output:

এখন যদি এই কোডটি রান করা হয়, আউটপুটে কিছুই দেখাবে না। কারণ, শর্তটি সত্য নয়। কিন্তু যদি বিরিয়ানির দাম শর্তটি পূরণ করত, তাহলে আউটপুটে "Mama, give me some biriyani" দেখাত।

মানলে আছি, না মানলেও আছি

এতক্ষণ পর্যন্ত কাহিনি ছিল শর্ত সত্য হলে কিছু একটা হবে। অন্যদিকে শর্ত সত্য না হলে কী হবে, সেটা নিয়ে কিছু বলে নাই। এইবার দুই সাইডেই খেলা হবে। অর্থাৎ শর্ত মানলে কিছু একটা হবে। আবার শর্ত না মানলে বা শর্ত মিথ্যা হলে অন্য কিছু হবে। এই টাইপের বিষয়।

এক্ষেত্রে কোড স্ট্রাকচার দেখতে নিচের মতো হবে। অর্থাৎ যদি শর্ত সত্য হয়, তাহলে if-এর পর ব্র্যাকেটের { } ভিতরে যা কিছু থাকবে, তা কার্যকর হবে। আর যদি শর্তটি মিথ্যা হয়, তবে else-এর পরে ব্র্যাকেটের { } ভিতরে যা কিছু থাকবে, তা কার্যকর হবে।

javascript
if (condition) {
  // execute code if the condition is true
} else {
  // execute code if the condition is false
}

ধর, যদি বাইরে বৃষ্টি হয়, তাহলে সে আর আমি গাছের নিচে দাঁড়িয়ে বৃষ্টি পড়ার রোমান্টিক দৃশ্য দেখব (জাস্ট ফ্রেন্ড হিসেবে)। আর যদি বৃষ্টি না হয়, তাহলে সেও দাঁড়াবে না। আমারও একসাথে বৃষ্টি দেখা হবে না।

এমন একটা বিষয়। এইটার জন্য কোড করবি কীভাবে?

javascript
const rainingOutside = true;
if (rainingOutside == true) {
  console.log("You and me– under the tree");
} else {
  console.log("No rain, no romance.");
}

Output: You and me– under the tree

আরেকটা উদাহরণ দেই। ধর, যদি কোনো বস্তুর ওজন 20 কেজির বেশি হয়, তাহলে আমি রিকশা ভাড়া করব। আর যদি ওজন 20 কেজির কম হয়, তাহলে আমি সেই বস্তুকে নিজে কাঁধে করে নিয়ে যাব। এর জন্য কোডটি হবে:

javascript
const weight = 40;
if (weight > 20) {
  console.log("Rickshaw mama cholo jai.");
} else {
  console.log("Walking is Exercising.");
}

Output: Rickshaw mama cholo jai.

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

JavaScript Condition Practice:

  1. তোর আম্মু বলছে, 6টার আগে বাসায় ফিরলে তোকে নাস্তা খাওয়াবে। আর দেরি করলে ঝাড়ুর বাড়ি দিবে। এই শর্তের জন্য কোড কর।

  2. একটা মোবাইল অ্যাপে যদি লগইন সফল হয়, তাহলে "Welcome!" দেখাবে। যদি ব্যর্থ হয়, "Get Lost!" দেখাবে। এই শর্তের জন্য প্রোগ্রাম লিখ।

  3. তুই যদি 5 কি. মি. দৌড়াস, তাহলে তোকে চকলেট খেতে দিবে। যদি না দৌড়াস, তাহলে তোর মোটা ভুঁড়ি হবে। এই শর্তের জন্য প্রোগ্রাম লিখ।

  4. ধর, তোর বাবা বলেছে, যদি তুই পরীক্ষায় 80-এর বেশি পেয়ে পাস করিস, তাহলে তোকে বাইক কিনে দিবে। কিন্তু যদি কম হয়, তাহলে বাইক দিবে না। একটা প্রোগ্রাম লিখে দেখ, তুই বাইক পাবি কি না, যদি তোর নম্বর 85 হয়।

  5. যদি মুভির শো রাত 9টার আগে হয়, তাহলে তুই মুভি দেখবি। যদি পরে হয়, তাহলে বাসায় গিয়ে নাকে তেল দিয়ে ঘুমাবি। এর জন্য প্রোগ্রাম লিখ।

  6. তাপমাত্রা 30 ডিগ্রি বা তার বেশি হয়, তাহলে এয়ার কন্ডিশনার চালাবি। আর কম হলে কম্বল মুড়ি দিয়েই ঘুমাবি। এর জন্য কোড লিখ।

5-2: ছাত্র যখন পাত্র

Multiple Conditions

ধর তোর মাথা গরম হয়ে গেল। তুই ছাত্র থেকে পাত্র হওয়ার জন্য লাফাইতে শুরু করলি। সাফার বাসায় প্রস্তাব পাঠানোর চেষ্টা করলি। চেষ্টা শুরু করতেই দেখলি— বিয়ের বাজারে গেলেই পাত্রী একটা, বিয়ে করার শর্ত দেয় পঞ্চাশটা। তোর ইনকাম থাকতে হবে। টাকা থাকতে হবে। চাকরি-বাকরি থাকতে হবে। স্যালারি কত পাইতেছস, সেটার শর্ত পূরণ করতে হবে।

জাস্ট এক শর্ত পূরণ করে একটা বিয়ে করা সম্ভব না। তারপরেও প্রথমে স্যালারির শর্তটা দেখ—

javascript
const salary = 75000;

if (salary > 50000) {
  console.log("Su —--- patro");
} else {
  console.log("Next 5 years single thako");
}

Output: Su —--- patro

একটার পর একটা শর্ত আসতেই থাকবে। একটা শর্ত নিয়ে কথা বলার সাথে সাথে আরেকটা শর্ত চলে আসলে দুটি কেস হতে পারে:

দুইটি শর্তই পূরণ করতে হবে (AND কেস)। দুটি শর্তের যেকোনো একটি পূরণ হলেই হবে (OR কেস)।

যদি salary 50000 টাকার ওপরে হয় এবং সাথে বিসিএস ক্যাডার হয়, তাহলে বিয়ে হবে। এটি হলো AND (&&) কন্ডিশন:

javascript
const salary = 63000;
const isBCS = true;

if (salary > 50000 && isBCS == true) {
  console.log("Sei level er —--- patro");
} else {
  console.log("dooore giya moro");
}

Output: Sei level er —--- patro

এই জন্য ওপরে দেখছিস দুইটা শর্ত। একটা হচ্ছে salary > 50000, আরেকটা শর্ত isBCS == true। এই দুইটা শর্তের মাঝখানে && দেয়া আছে। এই && দেয়ার মানে হচ্ছে— এই দুইটা শর্তের দুইটাই যদি সত্য হয়, তাহলেই if-এর পরে যে কোড আছে, চলবে। আর দুইটার মধ্যে যদি কোনো একটা শর্ত মিথ্যা হয়ে যায়, তাহলে if-এর শর্তের পরের ব্র্যাকেটের ভিতরে যে কোড আছে, তার কাছে যাবে না; বরং else-এর পরে ব্র্যাকেটের ভিতরে যে কোড আছে, তার কাছে যাবে। আর যদি দুইটা শর্তই মিথ্যা হয়, তাহলে তো else-এর ভিতরে যাবেই।

এখন যদি isBCS ভেরিয়েবলটাকে false করে দিস, অর্থাৎ বিসিএস প্রাপ্ত না হয়, তাহলে আউটপুট অন্যরকম হবে।

javascript
const salary = 55000;
const isBCS = false;

if (salary > 50000 && isBCS == true) {
  console.log("Agun er gola —--- patro");
} else {
  console.log("dooore giya moro");
}

Output: dooore giya moro.

এটা তো গেল AND বা "এবং"-এর পার্ট। মানে দুইটা শর্তের মধ্যে দুইটাই পূরণ হলেই কাজ হবে।

এখন আসা যাক OR (||)-এর পার্টে, মানে যেকোনো একটি শর্ত পূরণ হলেই হবে। এখন এখানে সেলারি 25000 টাকা। তাহলে কি আমাদের শর্তটা পূরণ হবে? না, কারণ 25000 টাকা 25000 টাকার চেয়ে বড় না। একইভাবে, হাইটও 72 ইঞ্চির থেকে বেশি না।

javascript
const salary = 25000;
const height = 68;

if (salary > 25000 || height > 72) {
  console.log("bolo baba kobul");
} else {
  console.log("vaag tui mokbul");
}

Output: vaag tui mokbul

এখন যদি আমি সেলারিটা শুধু এক টাকা বাড়িয়ে দিই, অর্থাৎ 25001 টাকা করে দিই, তাহলে আউটপুট আসবে:

javascript
const salary = 25001;
const height = 68;
if (salary > 25000 || height > 72) {
  console.log("bolo baba kobul");
} else {
  console.log("vaag tui mokbul");
}

Output: bolo baba kobul

এই জন্য ওপরে দেখছিস দুইটা শর্ত। একটা হচ্ছে salary > 25000, আরেকটা শর্ত height > 72। এই দুইটা শর্তের যেকোনো একটা সত্য হলেই if-এর পরে যে কোড, সেই কোড এক্সিকিউট হবে। এমনকি যদি দুইটা শর্তই সত্য হয়, তাহলে তো if-এর ভিতরে যাবেই। তবে দুইটার মধ্যে দুইটাই শর্ত মিথ্যা হয়ে গেলে if-এর পরের শর্তের ভিতরে যাবে না; বরং else-এর পরে যে কোড আছে, সেখানে যাবে।

JavaScript multiple condition Practice:

  1. একটি প্রোগ্রাম লিখ। যেটা চেক করবে, বয়স 18-এর বেশি কি না এবং উচ্চতা 60 ইঞ্চির বেশি কি না। তাহলে সে গাড়ি ঠেলবে, না হয় সে গাড়িতে বসে থাকবে।

  2. একটি প্রোগ্রাম লিখ। যা চেক করবে, একজন শিক্ষার্থী ভর্তি হওয়ার যোগ্য কি না। গণিত স্কোর 80-এর বেশি অথবা ইংরেজি স্কোর 85-এর বেশি হতে হবে। আর এইগুলার কোনোটাই সত্যি না হলে বলবি— তোকে বিয়ে দিয়ে দিব।

  3. একজন স্টুডেন্টের GPA যদি 5 হয় এবং পরিবারের মাসিক আয় 10000-এর কম হয়, তাহলে সে স্কলারশিপ পাবে। না হয় তাকে বেতন দিয়ে পড়তে হবে।

  4. একজন চাকরিপ্রার্থী পরীক্ষা দিতে পারবে, যদি তার বয়স 30-এর কম হয় এবং কাজের অভিজ্ঞতা 2 বছরের বেশি হয়। আর না হয় চাকরির পরীক্ষা দিতে পারবে না। এমন একটা প্রোগ্রাম লিখ।

  5. তোর ফ্রিজের ভেতর ডিমের সংখ্যা 12-এর বেশি অথবা মুরগি না থাকে, তাহলে তুই ডিমের কোরমা রান্না করবি। আর না হলে পাউরুটি আর কলা খাবি। এমন একটা কোড লিখ।

  6. একজন মানুষের যদি শরীরের তাপমাত্রা 100 ডিগ্রির বেশি অথবা কাশি থাকে, তাহলে সে ডাক্তারের কাছে যাবে। নচেৎ সে কাঁথা মুড়ি দিয়ে শুয়ে থাকবে। এর জন্য একটা প্রোগ্রাম লিখ।

  7. একজন শিক্ষার্থীকে পরীক্ষা দিতে দেয়া হবে, যদি তার উপস্থিতি 80 শতাংশের বেশি এবং হোমওয়ার্ক জমা দেয়া থাকে। নচেৎ অটো ফেল। এই শর্তের জন্য প্রোগ্রাম লিখ।

  8. যদি তোর বাসার বিদ্যুৎ চলে যায় এবং মোবাইলে চার্জ না থাকে, তাহলে তুই পড়তে বসবি। না হলে ভিডিও গেম খেলবি। এর জন্য কোড লিখ।

  9. শার্টের দাম 1000 টাকার বেশি হলে এবং কুপন থাকলে তোকে 20 পারসেন্ট ডিসকাউন্ট দেয়া হবে। এর জন্য প্রোগ্রাম লিখ।

5-3: ডিসকাউন্ট খেকো else-if

Discount

বেশির ভাগ বাঙালি দোকানে গিয়ে পণ্য খোঁজে না, ডিসকাউন্ট খোঁজে। যাই কেনে, বলে, ডিসকাউন্ট দেন। 100 টাকা ডিসকাউন্ট চাইলে যদি না পায়, তাহলে 50 টাকা হলেও ডিসকাউন্ট দিতে বলে। সেটাও না পাইলে দোকানদারকে বলে অন্তত ফ্রি ফ্রি পিঠটা একটু চুলকিয়ে দেন।

এখন সেই নাছোড়বান্দা ডিসকাউন্ট খেকো কাস্টমারের জন্য দোকানদার আগে থেকে জিনিসপত্রের দাম বাড়িয়ে তারপর সেই বাড়তি দামের ওপরে ডিসকাউন্ট দেয়। মাঝেমধ্যে অফার দেয়— 5000 টাকার বেশি কেনাকাটা করলে 10% ডিসকাউন্ট দেওয়া হবে। আর 5000 টাকার কম কেনাকাটা করলে কোনো ডিসকাউন্ট দিবে না। অর্থাৎ যে 5000 টাকার কম কেনাকাটা করবে, তাকে ফুল টাকাই দিতে হবে। এখন একটা হিসাব কর, যেখানে কেউ 5000 টাকার বেশি কেনাকাটা করলে 10% ডিসকাউন্টের পর তাকে কত টাকা দিতে হবে।

পার্সেন্টের হিসাব তো জানিস? আমি যদি বলি, 60 টাকার 10% কত। সেটার হিসাব কীভাবে করবি? তখন 60 টাকাকে 100 দিয়ে ভাগ করবি, আর যত পার্সেন্ট বের করবি, সেই পার্সেন্ট দিয়ে গুণ করবি।

অর্থাৎ 60 টাকার 10% হবে

(60/100)*10 = 6

এইবার পার্সেন্টেজের হিসাব বুঝলে পুরা কোড তেমন কোনো ব্যাপারই না।

javascript
const price = 6500;
if (price >= 5000) {
  const discount = (price / 100) * 10;
  const pay = price - discount;
  console.log(pay);
} else {
  console.log(price);
}

Output: 5850;

ওপরের কোডে দেখ, if-এর পরে চেক করতেছে, price ভেরিয়েবলের মান 5000-এর বেশি কি না। যদি বেশি হয়, তাহলে শর্ত সত্য হবে এবং কোড if-এর ভিতরে যাবে। তারপর if-এর ভিতরে দেখবি discount নামে একটা ভেরিয়েবল আছে। সেটার মান হচ্ছে price / 100 * 10। এইটা দিয়ে আসলে ডিসকাউন্টের হিসাব করা হচ্ছে।

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

আর শেষের লাইনে আউটপুট দেখার জন্য pay-কে console log করা হয়েছে। এই কোড তিনবার পড়, দেখ। প্র্যাকটিস কর, তাহলে বুঝতে পারবি।

আরও একটি শর্ত যোগ কর।

কিছু বাদাইম্মা আছে। যতই বলিস, 5000 টাকার বেশি কিনলে ডিসকাউন্ট। তারপরেও সে যদি তিন-চার হাজার টাকার জিনিস কেনার পর ডিসকাউন্ট দেন, ডিসকাউন্ট দেন বলে বলে ঘ্যানর ঘ্যানর করে। এইসব ঘ্যানর ঘ্যানর মানুষদের জন্য দোকানদার ঠিক করল— 5000 টাকার বেশি কেউ কিনলে তাকে তো 10% ডিসকাউন্ট দিবে। আর কেউ যদি 5000 টাকার কম, তবে 2500 টাকার বেশি জিনিস কিনে, তাহলে 5% ডিসকাউন্ট দিবে। এইটার জন্য কোড কীভাবে লিখবি?

javascript
const price = 4000;
if (price >= 5000) {
  const discount = (price / 100) * 10;
  const pay = price - discount;
  console.log(pay);
} else if (price >= 2500) {
  const discount = (price / 100) * 5;
  const pay = price - discount;
  console.log(pay);
} else {
  console.log(price);
}

Output: 3800;

প্রথমে if-এর পরে যেটা আছে, সেটা আগের মতোই। সো, সেটা বুঝতে তেমন সমস্যা হবে না। এরপরে দেখ, else if-এর পরে একটা শর্ত আছে price >= 2500 হিসেবে। এইখানে শুধু চেক করতেছে 2500 টাকার সমান বা বেশি দাম কি না।

এখন তুই বলতে পারিস— ভাই, তুই না বলছিলি 5000 টাকার কম, আর 2500 টাকার বেশি হলে তারপর 5% ডিসকাউন্ট হবে। এখন দেখি 2500-এর বেশি হলেই 5% ডিসকাউন্ট দিয়ে দিচ্ছিস। তাহলে 5000-এর কম, সেটা কেন চেক করতেছিস না।

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

if-else অনেকটা চৌরাস্তার মোড়ের মতো। তুই গেলে যেকোনো একটা রাস্তা দিয়ে যাবি। দুনিয়ার কোনো মানুষ একসাথে দুই রাস্তা দিয়ে যেতে পারবে না। একইভাবে if-else-এর মধ্যে যেকোনো একটা রাস্তায় যাবে।

সেজন্যই if-else-এর মধ্যে কোড যেকোনো একটা এক্সিকিউট হবে। if-এ গেলে else-এ যাবে না। আবার else-এ গেলে if-এ যাবে না। একইভাবে if-else, if-else এইগুলার মধ্যেও যেকোনো একটা একটার মধ্যে যাবে। সো, if-এর ভিতরে গেলে অন্য কোনোটার ভিতরে যাবে না।

আর কেউ যদি 5000-এর বেশি না কিনে, তাহলে 5000-এর ভিতরে যাবে না। তখন নিচে নেমে যাবে। চেক করবে, সেটা 2500-এর বেশি কি না। যদি সত্য হয়, অর্থাৎ 2500-এর বেশি হয়, তাহলে সে else if-এর ভিতরে চলে যাবে। আর যদি 2500-এর কম হয়, else-if এর ভিতরে যাবে না। তখন সেটা else-এর ভিতরে চলে যাবে।

আর else if-এর ভিতরের কোড কিন্তু almost if-এর ভিতরের মতোই। একটু কষ্ট করে পড়, বুঝে ফেলবি।

এখন কেউ যদি 4000 টাকার কেনাকাটা করে, তাহলে সে 5% ডিসকাউন্ট পাবে এবং পেমেন্ট করতে হবে 3800 টাকা।

কিন্তু যদি 2000 টাকার জিনিস কেনা হয়, তাহলে তাকে পুরো টাকাটাই দিতে হবে।

JavaScript else-if Condition Practice:

  1. তুই নিজের দোকান খুলছিস। তোর দোকানে কেউ 3000 টাকার বেশি কেনাকাটা করলে 5% ডিসকাউন্ট, আর 6000 টাকার বেশি কেনাকাটা করলে 15% ডিসকাউন্ট দিবি। যদি এক বন্ধু এসে 4500 টাকার জিনিস কিনে, তবে তাকে কত টাকা দিতে হবে?

  2. তুই একটি রেস্টুরেন্ট চালাচ্ছোস, যেখানে 12 বছরের নিচে বাচ্চাদের ফ্রি খাওয়ানো হয় এবং 60 বছরের ওপরের মানুষকে 50% ডিসকাউন্ট দেওয়া হয়, বাকিদের পুরা টাকা দিতে হয়।

  3. যদি কারো ব্যাংক একাউন্টে ব্যালেন্স 1000 টাকার কম হয়, তাহলে বলবি, "ডিপোজিট কর।" 1000 থেকে 5000-এর মধ্যে হলে বলবি, "বিন্দাস লাইফ এনজয় কর।" আর 5000-এর বেশি হলে বলবি, "তুই ধনী, আমাকে বিয়া কর।"

  4. একটা পরীক্ষায় যদি কোনো ছাত্রের মার্কস 50-এর কম হলে বলবি "Fail", 50 থেকে 80-এর মধ্যে হলে বলবি "Pass", আর 80-এর বেশি হলে বলবি "A+"।

  5. কোনো বইয়ের পৃষ্ঠাসংখ্যা 100-এর কম হলে বলবি "Small book", 100 থেকে 500-এর মধ্যে হলে বলবি "Mid-size book", আর 500-এর বেশি হলে বলবি "heart-attack size book"।

  6. একটা প্রোগ্রাম লিখ। যা চেক করবে, তাপমাত্রা 0 ডিগ্রির কম হলে বলবে "Ice", 0 থেকে 20-এর মধ্যে হলে বলবে "Cool Cool", আর 20-এর বেশি হলে বলবে "Hot Hot"।

  7. তোর একটা গেমিং অ্যাপ আছে। প্লেয়ারের লেভেল 10-এর কম হলে বলবি "novice", 10 থেকে 50-এর মধ্যে হলে বলবি "Expert", আর 50-এর বেশি হলে বলবি "Pro Gamer"।

5-4: স্যারের বাঁশ বাসায় ঠাস

Nested If-Else

তুই পরীক্ষা দিয়ে বাসায় ফিরছিস, আর বাসার গেটে দারোয়ান জিজ্ঞেস করল, 'মামা, পাস করছেন তো? পাশ করলে ভিতরে যান, না হলে ভিতরে যাইয়েন না।'

সাহস করে ভিতরে গেলি, দরজা খুলে দিল তোর বোন। সে জিজ্ঞেস করল,'রেজাল্ট ভালো হয়েছে তো? ভালো হলে ডাইনিং টেবিলে খাবার দেয়া আছে, খা। না হলে সোজা বাথরুমে গিয়ে সিটকিনি আটকে বসে থাক। আব্বু আসলে তোর খবর আছে। আর যদি বাঁচতে চাস, এক্ষুনি নিচে যেয়ে দোকান থেকে আমার জন্য আইসক্রিম নিয়ে আয়। নচেৎ আব্বুকে বলে দিব, আজকে তোর রেজাল্ট দিছে।'

এগুলো হলো ধাপে ধাপে শর্তের উদাহরণ। এক শর্ত পূরণ করলে আরেকটি শর্ত আসে এবং এভাবে শর্তের ধাপগুলো বাড়তেই থাকে।

If-else: হয় এটা, না হয় বাকি সব। else If: হয় এটা, না হয় ওটা, না হয় বাকি সব। Nested If-else: এক শর্ত পার হওয়ার পর সেই শর্তের ভিতরে আরেকটা শর্ত।

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

javascript
const money = 300;
const popcornPrice = 40;
if (money >= 300) {
  console.log("Going to watch a movie");

  if (popcornPrice <= 50) {
    console.log("Buying PopCorn");
  } else {
    console.log("PopCorn is Expensive");
  }
} else {
  console.log("Home Alone.");
}

Output:
Going to watch a movie
Buying PopCorn

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

আপাতত এটা খুব বেশি গুরুত্বপূর্ণ নয়, তবে জানার জন্য জানানো হচ্ছে। মাঝেমধ্যে হয়তোবা ব্যবহার করতে হতে পারে।

JavaScript Nested If-Else Practice:

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

  2. যদি তোর বাসায় মেহমান আসে, প্রথমে জিজ্ঞেস করবি, তারা চা খাবে কি না। যদি চা খেতে চায়, তাহলে জিজ্ঞেস করবি, সাথে বিস্কুট খাবে কি না। না চাইলে বলবি, 'শুধু চা রেডি।' আর যদি চা-ও না খেতে চায়, বলবি, 'বসে বসে স্টার জলসা দেখুন।'

  3. তুই একটি অ্যাপ বানিয়েছিস। প্রথমে চেক করবি, ব্যবহারকারীর অ্যাকাউন্ট অ্যাকটিভ কি না। যদি অ্যাকটিভ হয়, তার সাবস্ক্রিপশন চেক করবি। যদি প্রিমিয়াম হয়, তাকে প্রিমিয়াম ফিচার দেখাবি। না হলে বলবি, 'ফ্রি ভার্সন দেখুন।'

  4. তোর বাসার ফ্রিজে খাবার আছে কি না, চেক করবি। যদি থাকে, খাবার গরম করবি। আর যদি না থাকে, চেক করবি, ফুড ডেলিভারি অ্যাপ কাজ করছে কি না। কাজ করলে অর্ডার করবি, না হলে বলবি, 'আজকে আমি রোজা।'

  5. ধর, তুই একটা পার্টি করবি। প্রথমে দেখবি, পার্টিতে 100 জনের বেশি গেস্ট আসবে কি না। যদি আসে, তাহলে চেক করবি, সবাই গিফট আনবে কি না। যদি আনে, বলবি, 'Lets party all night.' নচেৎ বলবি, 'I will party with myself।'

5-5: লজিক্যাল নট (!) ফিজিক্যালি হট

তুই যদি পলিটিক্যাল লিডার হয়ে থাকস, তাহলে সরকারি টাকা নিজের টাকা মনে করে খেয়ে ফেলবি। এমন একটা শর্তটা এইভাবে লেখা যায়:

javascript
if (isLeader === true) {
  console.log("Government money is my money");
}

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

javascript
if (isLeader) {
  console.log("Government money is my money");
}

এইবার উল্টাটা দেখি: if স্টেটমেন্টের কন্ডিশনের জায়গায় একটা ভেরিয়েবলের মান false কি না, সেটা চেক করতে চাই। সে ক্ষেত্রে তুই লিখতে পারবি:

javascript
const isPassed = false;
if (isPassed == false) {
  console.log("Ajke khawa dawa bondho.");
}

এইটার মানে হচ্ছে, যদি isPassed-এর মান false হয়, তাহলে সেকেন্ড ব্র্যাকেটের ভিতরে যাও। তবে চাইলে এইটা শর্টকাটে এভাবে না লিখে আমরা লিখতে পারি:

javascript
if (!isPassed) {
  console.log("Ajke khawa dawa bondho.");
}

এখানে আমরা যে চিহ্নটি ব্যবহার করেছি, তা হলো লজিক্যাল নট (!) চিহ্ন। আমি বলি পল্টিবাজ নট চিহ্ন। এই নট চিহ্ন (!) ব্যবহার করার একটা স্পেশাল মাজেজা আছে।

এই চিহ্ন ব্যবহার করলে বুলিয়ার মান উল্টায় যায়। অর্থাৎ পল্টি খায়।

কোনো ভেরিয়েবলের মান যদি true হয় এবং তার নামের আগে যদি ! চিহ্ন দেয়া হয়, তাহলে true-এর মান উল্টে গিয়ে false হয়ে যাবে। আবার যদি কোনো ভেরিয়েবলের মান যদি false হয় এবং তার নামের আগে যদি ! চিহ্ন থাকে, তাহলে সেটার মান উল্টে গিয়ে true হয়ে যাবে।

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

আর এই অসম্ভবকে সম্ভব করার জন্য আমরা পল্টি মারব। পল্টি মারার হিসাবটা একটু সহজভাবে বলতেছি— isPassed-এর মান false তো কী হইছে। আমরা isPassed-এর মান চেক করব না। আমরা চেক করব isPassed-এর মানের উল্টাটা। কারণ, আমরা জানি, কোনো বুলিয়ান ভেরিয়েবল false হলে এর উল্টা true হবে, আর true হলে সেটার উল্টা false হবে।

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

আর কোনো একটা বুলিয়ান ভেরিয়েবলের মান উল্টানোর জন্য তার নামের আগে একটা আশ্চর্যবোধক চিহ্ন (!) দিয়ে দিবি। যদিও প্রোগ্রামিং ফিল্ডে এই আশ্চর্যবোধক চিহ্নের নাম হচ্ছে লজিক্যাল not অপারেটর। কোনো বুলিয়ান ভেরিয়েবলের নামের আগে এই not অপারেটর দিলে সে সেই বুলিয়ান ভেরিয়েবলের মান উল্টায় ফেলে। true-কে false বানায় ফেলে, আর false-কে true বানায় ফেলে। অনেকটা দিনকে রাত আর রাতকে দিন বানায় ফেলার মতো।

আর এই ! অপারেটর দেয়ার কারণে if-এর পরে শর্তের ভিতরের ওভারঅল !isPassed-এর মান true হয়ে যাবে। সেই কারণে isPassed-এর মান false হলেও !isPassed-এর মান true হয়ে সেটা শর্তের ভিতরে চলে যাবে।

টার্নারি অপারেটর

টার্নারি অপারেটর হলো তিনটি অংশ নিয়ে গঠিত একটি শর্টকাট, যা if-else স্টেটমেন্টের শর্টকাট বা এক লাইনে লেখার জন্য ইউজ করা হয়। এটিকে তিনটি অংশে ভাগ করা যায়:

Condition: শর্ত বা কন্ডিশন True Expression: শর্তটি সত্য হলে যা হবে False Expression: শর্তটি মিথ্যা হলে যা হবে

এটা সাধারণত if-else-এর মতোই কাজ করে, তবে সংক্ষিপ্ত আকারে। ধর, তোর বয়স 18-এর বেশি হলে তুই ভোট দিতে পারবি, আর যদি 18-এর কম হয়, তাহলে তুই ভোট দিতে পারবি না। এই কোডটা দেখতে কেমন হবে?

javascript
const age = 20;
if (age >= 18) {
  console.log("Vote for the hot.");
} else {
  console.log("You are not eligible to vote");
}

ওপরের কোডে যদি তোর বয়স 18-এর বেশি হয়, তাহলে "Vote for the hot" আউটপুট হবে। আর যদি 18-এর কম হয়, তাহলে "You are not eligible for vote" প্রিন্ট হবে। এটি একটি সাধারণ if-else স্টেটমেন্ট, যা চার লাইনে লেখা হয়েছে।

টার্নারি অপারেটর ব্যবহার করে আমরা একই কাজটা মাত্র একটা লাইনে করতে পারি:

javascript
const age = 18;
age >= 18 ? console.log("Eligible") : console.log("Not Eligible");

এখানে টার্নারি অপারেটর ব্যবহার করে আমরা সবকিছু এক লাইনে লিখেছি। যদি তোর বয়স 18-এর বেশি বা সমান হয়, তাহলে "Eligible" প্রিন্ট হবে। আর যদি 18-এর কম হয়, তাহলে "Not Eligible" প্রিন্ট হবে।

এটা একটা সাধারণ টার্নারি অপারেটরের উদাহরণ। এখন, আরেকটা উদাহরণ দেখি:

ধর, তোর দোকানে যদি কোনো নেতা আসে, তাহলে তাকে সম্মান জানিয়ে কোনো জিনিসের মূল্য নেয়া হয় না (অর্থাৎ অনিচ্ছা সত্ত্বেও ফ্রিতে খাওয়ানো হয়)। আর যদি সাধারণ মানুষ আসে, তাহলে তুই 100 টাকা বাড়তি নিবি। এর জন্য কোডটা এমন হবে:

javascript
let price = 500;
let isLeader = false;

if (isLeader === true) {
  price = 0;
} else {
  price = price + 100;
}

ওপরের কোডটি টার্নারি অপারেটর ব্যবহার করে এক লাইনে লেখতে পারি:

javascript
price = isLeader === true ? 0 : price + 100;

এটা মজার, তাই না? চার-ছয়-সাত লাইনের কোডকে আমরা একটা লাইনে প্রকাশ করতে পারলাম!

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

JavaScript Logical Not Operator Practice:

  1. তুই নিজের দোকান খুলছিস। তোর দোকানে কেউ 3000 টাকার বেশি কেনাকাটা করলে ক্যাশব্যাক 500 টাকা। আর তার কম কেনাকাটা করলে ক্যাশব্যাক 0 টাকা। এখন এই জিনিসটা এক লাইনে লিখ। ভেরিয়েবলের নাম হবে cashback, আর মান সেট করবি টার্নারি অপারেটর ইউজ করে।

  2. তোর বয়স যদি 15-এর বেশি হয়, তাহলে "Teenager" দেখাবে। আর যদি কম হয়, তাহলে "Child" দেখাবে। এটা টার্নারি অপারেটর দিয়ে এক লাইনে লিখ।

  3. যদি isLoggedIn-এর মান true হয়, তাহলে "Welcome back"-কে message হিসেবে সেট করবি। আর যদি false হয়, তাহলে "Please login"-কে message হিসেবে সেট করবি। এই জিনিসটা টার্নারি অপারেটর দিয়ে এক লাইনে লিখ।

  4. তোর গাড়ির তেলের ট্যাংক যদি full হয়, তাহলে "Ready for a long drive" দেখাবি। আর না হলে "Fill the tank" দেখাবি।

  5. তুই যদি পরীক্ষায় পাস করিস, তাহলে "Party time" দেখাবি। আর যদি ফেল করিস, তাহলে "Next Semester e serious study korbo" দেখাবি। এক লাইনে টার্নারি অপারেটর দিয়ে কর।

  6. যদি sunny ভেরিয়েবলের মান false হয়, তাহলে "Stay home"-কে কনসোল লগ করবি।

  7. যদি Expensive ভেরিয়েবলের মান false হয়, তাহলে কনসোল লগ করবি "I will buy this item."

Released under the MIT License.