else if আর nested if-else নিয়ে যত কথা

গতবারের আর্টিকেলে কথা বলেছিলাম if-else তথা কন্ডিশনাল স্টেটমেন্ট (conditional statement) নিয়ে। আজকে সেই টপিকের বাকি অংশ নিয়ে আলোচনা করার চেষ্টা করব।

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

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

এবার আসুন সুমনের প্রশ্নগুলোকে পরপর সাজিয়ে ফেলি।

  • “কি মিষ্টি আনবে?” ( মামার উত্তরঃ চমচম)
  • “যদি চমচম না পাই?” (মামার উত্তরঃ রসমালাই)
  • “যদি রসমালাই না পাই?” (মামার উত্তরঃ কালো জ্যাম)
  • সবশেষে কিছু না পেলে কি করবে সেটা তো মামা বলেই দিয়েছেন…

তাহলে সুমনের দোকানে গিয়ে প্রথম কাজ কি? অবশ্যই মামার কথামতো চমচম খোঁজা, তাই নয় কি? এবার যদি সে চমচম না পায় তাহলে কি মামার শেষ কথামত মুড়ি কিনে বাসায় ফিরে যাবে নাকি রসমালাই এর খোঁজ করবে? হ্যাঁ, ঠিক ধরেছেন, সে এবার রসমালাইয়ের খোঁজ করবে। তারপর যদি রসমালাই না পায় তবে কালো জ্যাম এর খোঁজ করবে। ঠিক একই ভাবে প্রোগ্রামিং জগতেও আমাদের মাঝে মাঝে একি সাথে কয়েকটি কন্ডিশন(condition) চেক করতে হয়। তখন তো শুধু if-else দিয়ে কাজ সারা যায় না, কারন if-else দিয়ে আমারা একটি মাত্র কন্ডিশন চেক করতে পারি। অর্থাৎ এটা যদি হয় তো এটা কর নাহলে ওটা কর। এই সমস্যার সমাধান করে দিতে পারে else if । আসুন এক নজরে এর স্ট্রাকচার (structure) দেখে নেয়া যাক।

if (check condition) {

// do something

} else if (check another condition) {

// do something

} else {

// do something

}

তাহলে দেখা যাচ্ছে, if এর মতই else if এ কন্ডিশন চেক করতে হয় এবং কন্ডিশন সত্য বা true হলে {} ব্লকে থাকা স্টেটমেন্ট কাজ করবে। আর যদি মিথ্যা বা false হয় তাহলে পরের চেকিং এ চলে যাবে। তারমানে else if দিয়ে if এর মতই কন্ডিশন চেক করা যায়। কিন্তু প্রশ্ন হল, আমি কি একাধিক বার else if কে ব্যাবহার করতে পারব নাকি শুধুমাত্র একবার?

আপনি চাইলে যতবার খুশি else if ব্যাবহার করে কন্ডিশন চেক করতে পারবেন। আরেকটু পরিস্কার ধারনা নিতে আসুন সুমনের গল্পটিকে code রূপে লিখিঃ

if ( চমচম কি আছে ) {

চমচম কিনো;

} else if ( রসমালাই কি আছে ) {

রসমালাই কিনো;

} else if ( কালো জ্যাম কি আছে ) {

কালো জ্যাম কিনো;

} else {

মুড়ি কিনে বাসায় যাও;

}

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

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

উপরের উদাহরণ টি দেখে আশা করি বুঝতে পারছেন যে nested কিভাবে কাজ করে। আমরা যদি if-else এর ভিতর nested ব্যাবহার করি তাহলে তাকে nested if-else বলা হয়ে থাকে। এবং খেয়াল করে দেখুন আপনি if, else if বা else যেখানে খুশি যত বার খুশি nested আকারে ব্যাবহার করতে পারছেন। তবে মনে রাখবেন কন্ডিশন চেক করার সময় যদি কোন এক জায়গায় কন্ডিশনটি মিথ্যা বা false হয়, তবে এর পর থেকে সেই ব্লকটি আর কাজ করবে না। উপরের উদাহরণটি লক্ষ্য করুন, যদি if কন্ডিশনটি true হয় তবে else থাকা কোন if, else if বা else তথা nested if-else কোন কিছুই আর কাজ করবে না। ঠিক একই ভাবে if এর ভিতর থাকা দ্বিতীয় if টির কন্ডিশন true হলে এর ব্লক স্টেটমেন্ট কাজ করবে অন্যথায় else এর স্টেটমেন্ট কাজ করবে, সেই সাথে প্রথম if ব্লক এর কাজও শেষ হয়ে যাবে।

আশা করি, এই আর্টিকেল এর মাধ্যমে আপনাদেরকে else if আর nested if-else সম্পর্কে ধারনা দিতে পেরছি। ভালো লাগলে share করতে ভুলবেন না। Happy Coding.

A software engineer from Bangladesh.

A software engineer from Bangladesh.