Nested if…else


Q1. Nested if…else কাকে বলে?

উত্তরঃ একটি if স্টেটমেন্টের ভিতরে আরও এক বা একাধিক if স্টেটমেন্ট কাজ করলে তাকে nested if স্টেটমেন্ট বলে।

Q2. Nested if…else এর সিনট্যাক্স ব্যাখ্যা কর।

Nested if..else এর সিনট্যাক্সটি আরও ভালভাবে বোঝার জন্য নিচের প্রোগ্রামটি লক্ষ্য করি-

নিচের প্রোগ্রামটির সাহয্যে একটি সংখ্যা ধনাত্বক না ঋণাত্বক তা যাচাই করা যাবে। যে সংখ্যাটিকে যাচাই করব তা কী-বোর্ড হতে গ্রহণ করার ব্যবস্থা করতে হবে অর্থাৎ ইনপুট নিতে হবে।

#include<stdio.h>
#include<conio.h>
int main()
{
 int n;
 printf("Enter any integer number: \n");
 scanf("%d", &n);  
 if(n>0)
  printf("The number is positive \n"); 
 else
  printf("The number is negative ");		
}

উপরের ধনাত্বক অথবা ঋণাত্বক সংখ্যা যাচাই করার প্রোগ্রামটিতে একটি সীমাবদ্ধতা আছে। ইউজার ইনপুট হিসেবে শূন্য ‘0’ প্রেস করলে আউটপুট আসবে- The number is negative যা সঠিক নয়।

এর কারণ হচ্ছে- if (n>0) অর্থাৎ প্রদত্ত সংখ্যাটি শূন্যের চেয়ে বড় হলে সেটিকে ধনাত্বক এবং শূন্যের সমান অথবা ছোট হলে সেটিকে ঋণাত্বক হিসেবে বিবেচনা করবে।

আবার যদি if (n>=0) দেয়া হয় তাহলেও ভুল হবে। কারণ সেক্ষেত্রে শূন্য ‘0’ ইনপুটের ক্ষেত্রে আউটপুট হবে- The number is positive যা সঠিক নয়। এসমস্যা সমাধানের জন্য সোর্স প্রোগ্রামে নিম্নলিখিত সংশোধন নিয়ে আসতে হবে-

#include<stdio.h>
#include<conio.h>
int main()
{
 int n;
 printf("Enter any integer number: \n");
 scanf("%d", &n);  
 if(n>=0)
 {
  if(n==0)
   printf("The number is neither positive nor negative");
  else 
   printf("The number is positive");
  }		  
 else
  printf("The number is negative ");		
}

ব্যাখ্যাঃ

(১) এখানে nested if concept চলে এসেছে। একটি if স্টেটমেন্টের ভিতরে আরও এক বা একাধিক if স্টেটমেন্ট কাজ করলে তাকে nested if স্টেটমেন্ট বলে।

(২) এখানে প্রথম if এর সাহয্যে সংখাটি শূন্যের চেয়ে সমান অথবা বড় কীনা তা যাচাই করে তারপর দ্বিতীয় if এর সাহয্যে সেটি শূন্য কীনা যাচাই করা হয়েছে। প্রোগ্রামটি কীভাবে কাজ করবে তা ভালভাবে বোঝার জন্য ধরা যাক ইউজার কিবোর্ড থেকে 0 ইনপুট দিল। তার মানে n এর মান 0.

(৩) if(n>=0) এর মাধ্যমে কম্পিউটার নিজেকে প্রশ্ন করবে সেটি হল: n কী 0 এর সমান অথবা বড়? বা 0 কী এর 0 চেয়ে সমান অথবা বড়? উত্তর সত্য। ফলে কম্পাইলার True Block Statement এর মধ্যে প্রবেশ করবে।

(৪)  True Block Statement এ বিদ্যমান if(n==0) এর মাধ্যমে কম্পাইলার নতুন প্রশ্নের সম্মুখীন হবে, সেটি হলঃ n কী 0 এর সমান? বা  0 কী 0 এর সমান? উল্লেখ্য এখানে ‘==’ চিহ্নের সাহয্যে তুলনা বোঝায়। উত্তর হবে সত্য। উত্তর সত্য হওয়ায় if(n==0) সংশ্লিষ্ট printf(“The number is neither positive nor negative”); কার্যকর হবে। ফলে আউটপুট নিম্নরুপ হবে-

আউটপুটঃ
Enter any integer number:
0
The number is neither positive nor negative

(৫) কিন্তু ইউজার কিবোর্ড থেকে 0 এর চেয়ে বড় যেকোনো সংখ্যা যেমন 15 ইনপুট দিলে আউটপুট অন্যরকম হবে। এক্ষেত্রে প্রথম if condition সত্য হলেও True Block Statement এর ভিতরে বিদ্যমান দ্বিতীয় if condition মিথ্যা হবে। ফলে if(n==0) সংশ্লিষ্ট printf(“The number is neither positive nor negative”); কার্যকর না হয়ে else সংশ্লিষ্ট printf(“The number is positive”); কার্যকর হবে। ফলে আউটপুট নিম্নরুপ হবে-

আউটপুটঃ
Enter any integer number:
15
The number is positive

Leave a Reply

Your email address will not be published.