জাভাস্ক্রিপ্ট টিউটোরিয়াল-শিখুন গল্পে গল্পে সাথে 1100+ Exercise

  • জাভাস্ক্রিপ্ট পরিচিতি-Introduction to JavaScript
  • প্রোগ্রামিং শুরু করতে কতটুকু গণিত লাগে?
  • প্রোগ্রামিং শুরু করতে কতটুকু ইংরেজি জানা লাগে?
  • ভালো প্রোগ্রামার কিভাবে হবো? [+৭টি গুরুত্বপূর্ণ টিপস]
  • Condition: নো কনফিউশন
  • ছাত্র যখন পাত্র
  • ডিসকাউন্ট খেকো else-if
  • স্যারের বাঁশ বাসায় ঠাস
  • লজিক্যাল নট (!) ফিজিক্যালি হট

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


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


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


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


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


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

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


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


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-এর কম হয়, তাহলে তুই ভোট দিতে পারবি না। এই কোডটা দেখতে কেমন হবে?


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 স্টেটমেন্ট, যা চার লাইনে লেখা হয়েছে।


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


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



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


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


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


let price = 500;
let isLeader = false;

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


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


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." 


Previous PageNext Chapter