Back to Overview
8 min read

What conditional logic is?

Rakib
Rakibposted 2 years ago

এই ব্লগ এর মাধ্যমে আমারা পরিচিত হব conditional logic এর সাথে। এখানে condition হচ্ছে শর্ত। আর conditional logic এ এক বা একাধিক শর্ত থাকতে পারে। এক বা একাধিক শর্ত নিয়ে যে শর্তটি গঠন করা হবে তার ফলাফল দুই রকম হবে - ( true (সত্য) বা false (মিথ্যা)। চলুন কিছু উদাহরণ দিয়ে আলোচনা করি।

ধরা যাক, আমি সাতরাস্তা থেকে বাস এ করে গাজীপুর যাব। এখন সাতরাস্তা থেকে বাস ভাড়া ৪০ টাকা। এখন আমাকে বাস এ ওঠার আগে দেখতে হবে আমার কাছে ৪০ টাকা আছে কিনা। যদি থাকে অর্থাৎ (হ্যা বা true) হলে বাস এ ওঠবো। আর যদি (না বা false) হয় তাহলে বাস এ ওঠবো না।

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

  1. যদি ২ দ্বারা ভাগ দিয়ে ভাগশেষ ০ হয় তাহলে সংখ্যাটি জোড় হবে।
  2. যদি ২ দ্বারা ভাগ দিয়ে ভাগশেষ ০ না হয় তাহলে সংখ্যাটি জোড় হবে।

এখন কম্পিউটার প্রোগ্রামিংয়ে শর্ত বা কন্ডিশনাল লজিক নিয়ে কাজ করতে হলে কিছু মৌলিক বিষয় আমাদের জানতে হবে। প্রথমটি ইতিমধ্যেই আমরা জেনে গিয়েছি যে এক বা একাধিক শর্ত মিলে আমরা যেই কন্ডিশনাল লজিক তৈরি করবো, তার চূড়ান্ত ফলাফল দুই রকমের হতে পারে: সত্য অথবা মিথ্যা।

আরেকটি বিষয় হচ্ছে, একটি শর্তের উল্টো শর্ত তৈরি করার পদ্ধতি, যাকে বলে NOT (নট)।

যেমন “সবুজ বাতি জ্বালানো আছে” শর্তটি আমরা উল্টে ফেলতে পারি এভাবে : “সবুজ বাতি জ্বালানো নেই”, এবং একে এভাবেও লেখা যায় : NOT সবুজ বাতি জ্বালানো আছে। “সবুজ বাতি জ্বালানো আছে” যদি সত্য হয়, তাহলে “NOT সবুজ বাতি জ্বালানো আছে” হবে মিথ্যা। আর “সবুজ বাতি জ্বালানো আছে” যদি মিথ্যা হয়, তাহলে “NOT সবুজ বাতি জ্বালানো আছে” হবে সত্য। তেমনি “আজকে মঙ্গলবার” শর্তটি সত্য হলে “NOT আজকে মঙ্গলবার” হবে মিথ্যা। আর “আজকে মঙ্গলবার” শর্তটি মিথ্যা হলে “NOT আজকে মঙ্গলবার” হবে সত্য। তাহলে আমরা বলতে পারি : NOT true হচ্ছে false আর NOT false হচ্ছে true।

আমরা যখন একাধিক শর্ত নিয়ে কাজ করবো, তখন দুইটিই সত্য বা দুইটির যেকোনো একটি সত্য, এমন চিন্তাভাবনা করার প্রয়োজন হয়। তখন আমাদের কাজে লাগবে AND (অ্যান্ড) এবং OR (অর)। AND-এর ক্ষেত্রে যদি তার দুইপাশের (বাম ও ডানপাশের) শর্ত সত্য হয়, তাহলে পুরো শর্তটি সত্য, এর অন্যথা হলে (যেকোনো একটি মিথ্যা কিংবা দুটিই মিথ্যা) পুরো শর্তটি মিথ্যা। যেমন : কোনো চতুর্ভূজ বর্গক্ষেত্র হওয়ার শর্ত হচ্ছে : সবগুলো কোণ প্রতিটি এক সমকোণ (90 ডিগ্রী) AND সবগুলো বাহু সমান দৈর্ঘ্যের। অর্থাৎ, AND এর বামদিকের ও ডানদিকের দুইটি শর্তই সত্য হতে হবে।

OR-এর ক্ষেত্রে, তার দুইপাশের যেকোনো একটি সত্য হলেই পুরো শর্তটি সত্য। কেবল দুইটিই যদি মিথ্যা হয়, তাহলে শর্তটি মিথ্যা। যেমন: ট্রাফিক লাইটের ক্ষেত্রে, লাল বাতি জ্বলছে OR হলুদ বাতি জ্বলছে – এই শর্তটি সত্য হবে যদি লাল বাতি জ্বালানো থাকে, কিংবা হলুদ বাতি জ্বালানো থাকে, কিংবা দুটি বাতিই জ্বালানো থাকে। লাল ও হলুদ দুটি বাতিই যদি জ্বালানো না থাকে, তাহলে শর্তটি মিথ্যা।

প্রোগ্রামিং এ ব্যবহৃত কিছু লজিকাল অপারারেটরঃ

  • AND: যদি AND operator এর দুই পাশের statement যদি true হয় তাহলেই এটি true return করবে।
  • OR: যদি AND operator এর দুই পাশের যে কোনো একটি statement যদি true হয় তাহলেই এটি true return করবে।
  • NOT: এটি boolean operator এর reverse করে। যদি true এর আগে এটি ব্যাবহার করা হয় তাহলে এটি false return করবে। আর যদি false এর আগে এটি ব্যাবহার করা হয় তাহলে এটি true return করবে।

প্রোগ্রামিং এ ব্যবহৃত কিছু comparison অপারারেটরঃ

  • == : দুইটি জিনিস সমান কিনা তা check করার জন্য "==" অপারারেটর ব্যাবহার করা হয়।
  • !=: দুইটি জিনিস সমান না কিনা তা check করার জন্য "!=" অপারারেটর ব্যাবহার করা হয়। যদি দুইটি জিনিস সমান হয় তাহলে এটি false return করবে। আর যদি দুইটি জিনিস সমান নয়া হয় তাহলে এটি true return করবে।
  • > : এটি দুটি জিনিসের মাঝে compare করার জন্য ব্যাবহার করা হয়। যদি বাম পাশের expression ডান পাশের expression এর চেয়ে বড় হয় তাহলে এটি true return করবে। আর যদি বাম পাশের expression ডান পাশের expression এর চেয়ে ছোট হয় তাহলে এটি false return করবে।


প্রোগ্রামিং এ তিন ধরণের if statemen ব্যাবহার করা হয়।

  1. if statement
  2. if-else statement
  3. if-elseif-else

if statements structure:

if(expression) {
   //statements
}

এখানে if এর ভিতরের expression যদি true হয় তাহলে if ব্লক এর ভিতরের statements গুলো exicute হবে। আর যদি if এর ভিতরের expression যদি false হয় তাহলে if ব্লক এর ভিতরের statements গুলো exicute হবে না।

একটি কোড এর মাধ্যমে আলোচনা করা যাকঃ

এখন আমারা একটি প্রোগ্রাম লিখব যেখানে কোনো সংখ্যা জোড় কিনা তা চেক করবো। যদি জোড় হয় তাহলে "Even" print করবো।

const number = 10;
if(number % 2 == 0) {
  console.log('Even');
}

আমরা জানি যদি কোনো সংখ্যাকে যদি 2 দ্বারা ভাগ দিলে ভাগশেষ শূন্য হয় তাহলে সেই সংখ্যাটি জোড় সংখ্যা। উপরের কোডের if condition এ ও আমরা number কে %(মডুলাস) অপারেটর দ্বারা ভাগশেষ বের করেছি এবং ভাগশেষ এর মান 0 এর সমান কিনা তা "==" অপারেটর এর মাধ্যমে চেক করছি। এখানে 10 এর মডুলাস 0, যা 0 এর সমান। সুতরাং, উপরের প্রোগ্রামটি "Even" প্রিন্ট করবে।

Output:

Even

উপরের প্রোগ্রাম এ যদি number=10 এর জায়গায় অন্য কোনো বিজোড় সংখ্যা থাকত তাহলে কোনো কিছু print করত না। কারন বিজোড় সংখ্যার মডুলাস কখনো 0 হবে না, তাই if এর ভিতরের expression false হবে। ফলে এটি if block এর ভিতরে প্রবেশ করবে না।


if-else structure:

if(expression) {
   //statements
}else{
  // statements
}

যদি আমাদের প্রোগ্রাম লিখার সময় এমন কোন কন্ডিশন লিখার প্রয়োজন হয় যে, কোনো expression সত্য হলে এই কাজটি হবে, নাহলে অন্য কাজটি হবে। ওইসব ক্ষেত্রে আমরা if-else ব্যাবহার করবো। এখানে if এর ভিতরের expression যদি true হয় তাহলে if ব্লক এর ভিতরের statements গুলো exicute হবে। আর যদি if এর ভিতরের expression যদি false হয় তাহলে else ব্লক এর ভিতরের statements গুলো exicute হবে।

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

তাহলে আমরা প্রগ্রামটি এইভাবে লিখতে পারিঃ

const number = 10;
if(number % 2 == 0) {
  console.log('Even');
}else {
  console.log('Odd')
}

Output:

Even

উপরের প্রোগ্রাম এ যদি নাম্বার বিজোড় হয় তাহলে,

const number = 5;
if(number % 2 == 0) {
  console.log('Even');
}else {
  console.log('Odd')
}

Output:

Odd

আমরা যদি আমাদের প্রোগ্রাম কে আরেকটু পরিবর্তন করে এমন ভাবে লিখি যে, যদি কোনো সংখ্যা যদি 0 হয় তাহলে আমরা প্রিন্ট করবো ''Number is Zero and an even number"। যদি জোড় হয় তাহলে প্রিন্ট করবো "Number is even"। আর যদি বিজোড় হয় তাহলে প্রিন্ট করবো "Number is odd"। এইখানে কিন্তু আমাদের তিনটি condition চেক দেয়ার প্রয়োজন হচ্ছে। এইক্ষেত্রে আমরা if-elseif-else ব্যাবহার করতে পারি।

তাহলে আমাদের প্রোগ্রাম টি হবেঃ

const number = 10;
if(number == 0) {
  console.log('Number is Zero and even number');
}elseif(number % 2 == 0){
  console.log('Number is even');
}else {
  console.log('Number is odd');
}

output:

Number is even

যদি নাম্বারটি 0 হয় তাহলে,

const number = 0;
if(number == 0) {
  console.log('Number is Zero and even number');
}elseif(number % 2 == 0){
  console.log('Number is even');
}else {
  console.log('Number is odd');
}

output:

Number is Zero and even number

যদি নাম্বারটি 5 হয় তাহলে,

const number = 5;
if(number == 0) {
  console.log('Number is Zero and even number');
}elseif(number % 2 == 0){
  console.log('Number is even');
}else {
  console.log('Number is odd');
}

output:

Number is odd

অর্থাৎ যখন আমাদের দুই বা তার বেশি condition check দেয়ার প্রয়োজন পরে সেই ক্ষেত্রে আমরা if-elseif-else ব্যাবহার করবো। তাহল if-elseif-else এর structure হবেঃ

if(expression){
  //statements
}elseif(expression){
  //statements
}elseif(expression){
  //statements 
}elseif...{
}else{
  //statements
}


নিচে কিছু প্র্যাকটিস প্রবলেম দেয়া আছে যেগুলো সমাধান করলে condition সম্পর্কে আরেকটু ধারণা তৈরি হবে।

  1. Write a program to check whether the number is greater than 10 or not
  2. Write a program to find the maximum between two numbers
  3. Write a program to check whether the number is greater than 10 and divided by 3 or not
  4. Write a program to check whether a number is positive, negative, or zero
  5. Write a program to check whether a number is positive and then check number is even or odd
  6. Write a program to check character is a vowel or not