if…else statement (ইফ…এলস স্টেটমেন্ট)


Q1. if statement (ইফ স্টেটমেন্ট) এর সীমাবদ্ধতা ব্যাখ্যা কর।

উত্তরঃ if statement ব্যবহার করে একটি সংখ্যা 100 এর অপেক্ষা বড় হলে Large এবং ছোট হলে Small লেখা প্রদর্শন করার নিচের প্রোগ্রামটি লক্ষ্য করি-

#include<stdio.h>
#include<conio.h>
int main()
{
 int n;
 printf("Enter any integer number: \n");
 scanf("%d", &n);  
 if(n>100)
 printf("Large \n"); 
 printf("Small ");		
}

ব্যাখ্যাঃ

(১) int n; এর মাধ্যমে n নামের integer (পূর্ণসংখ্যা) টাইপের একটি চলক ঘোষণা করা হয়েছে।

(২) printf(“Enter any integer number: \n”); স্টেটমেন্টটি কার্যকর হবে ফলে আউটপুটে Enter any integer number: লেখাটি প্রদর্শিত হবে এবং কার্সর নিচের লাইনে প্রথম ঘরে চলে যাবে।

(৩) scanf(“%d”, &n); স্টেটমেন্টটি কার্যকর হবে ফলে কম্পিউটার ইউজারের কাছ থেকে একটি ইনটিজার টাইপের ডেটা গ্রহণের জন্য অপেক্ষা করবে। ইউজার যে সংখ্যাটি টাইপ করে Enter প্রেস করবে সেই সংখ্যাটি n এর মেমোরি এড্রেসে জমা হবে।

(৪) if (n>100) এখানে if ফাংশনের ‘()’ বন্ধনীর ভিতরে একটি কন্ডিশন (n>100) আছে। অর্থাৎ if(n>100) এই স্টেটমেন্টের কারণে কম্পিউটার নিজেকে একটি প্রশ্ন করবে। প্রশ্নটি হল: n এর মান কী 100 অপেক্ষা বড়? কম্পিউটারের সিপিইউ এর গাণিতিক যুক্তি ইউনিট থেকে উত্তরটি আসবে। উত্তর শুধুমাত্র সত্য বা মিথ্যা আসবে। অর্থাৎ n এর মান 100 অপেক্ষা বড় হলে উত্তর হবে সত্য। অন্যথায় উত্তর হবে মিথ্যা।

(৫) উত্তর সত্য হলে- if সংশ্লিষ্ট প্রথম printf(“Large \n”); ফাংশনটি কার্যকর হবে।

(৬) উত্তর মিথ্যা হলে if সংশ্লিষ্ট প্রথম printf(“Small”); ফাংশনটি কার্যকর হবে না।  

(৭) উল্লেখ্য যে- if এর সাথে দ্বিতীয় printf() এর কোনো সম্পর্ক নেই। কন্ডিশন সত্য হলেও দ্বিতীয় printf() টি কার্যকর হবে এবং মিথ্যা হলেও কার্যকর হবে।

(৮) ধরা যাক, ইউজার কী-বোর্ড হতে 105 ইনপুট দিল। ফলে আউটপুটে প্রথম printf(“Large \n”); সহ দ্বিতীয় printf(“Small”); কার্যকর হবে। এবং আউটপুট নিম্নরুপ হবে।

আউটপুটঃ
Enter any integer number:
105
Large
Small

(৯) আবার ধরা যাক, ইউজার কী-বোর্ড হতে 95 ইনপুট দিল। ফলে আউটপুটে প্রথম printf(“Large \n”) কার্যকর হবে না। কিন্তু দ্বিতীয় printf()  কার্যকর হবে। ফলে আউটপুট নিম্নরুপ হবে।

আউটপুটঃ
Enter any integer number:
95
Small

পাঠক ইতিমধ্যে নিশ্চয়ই বুঝতে পেরেছেন সমস্যাটি কোথায়! 100 অপেক্ষা ছোট সংখ্যার ক্ষেত্রে প্রোগ্রামটি সঠিকভাবে কাজ করলেও, 100 অপেক্ষা বড় সংখ্যার জন্য প্রোগ্রামটি সঠিকভাবে কাজ করতে পারছে না। 100 অপেক্ষা বড় সংখ্যার ক্ষেত্রে আউটপুটে Large এবং Samll উভয় লেখা প্রদর্শন করে। কারণ if statement এর সাহায্যে শুধুমাত্র একটি কন্ডিশন চেক করা যায়। দুই বা ততোধিক condition চেক করার জন্য if…else স্টেটমেন্টের প্রয়োজন হবে।

Q2. if…else statement (ইফ…এলস স্টেটমেন্ট) এর সিনট্যাক্স ব্যাখ্যা কর।

C তে if statement এর মতোই if…else statement ব্যবহার করা যায়। তবে এদের মধ্যে কিছুটা পার্থক্য আছে। পার্থক্যটা উপরের প্রশ্নের উত্তরে ব্যাখ্যা করা হয়েছে। if…else স্টেটমেন্ট True Block Statement ও False Block Statement নিয়ে গঠিত যা নির্ভর করে condition এর উপর। নিচের সিনট্যাক্সটি লক্ষ্য করি-

ব্যাখ্যাঃ

(১) বন্ধনী ‘()’ এর মধ্যে বিদ্যমান condition টি- সত্য হলে True BlockSatement কার্যকর হবে। আর False Block Statement কার্যকর হবে না।

(a) সত্য না হলে অর্থাৎ মিথ্যা হলে True Block Satement কার্যকর হবে না কিন্তু False Block Statement কার্যকর হবে।

(২) অর্থাৎ সরল বাক্যে এভাবে বলা যায়- condition সত্য হলে এটা কার্যকর হবে আর মিথ্যা হলে ওটা কার্যকর হবে।

(৩) স্পষ্টতই if…else স্টেটমেন্ট এর সাহয্যে কমপক্ষে দুটি condition যাচাই করা যায়।

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 ");		
}

ব্যাখ্যাঃ

(১) int n; এর মাধ্যমে n নামের integer (পূর্ণসংখ্যা) টাইপের একটি চলক ঘোষণা করা হয়েছে।

(২) printf(“Enter any integer number: \n”); স্টেটমেন্টটি কার্যকর হবে ফলে আউটপুটে Enter any integer number: লেখাটি প্রদর্শিত হবে এবং কার্সর নিচের লাইনে প্রথম ঘরে চলে যাবে।

(৩) scanf(“%d”, &n); স্টেটমেন্টটি কার্যকর হবে ফলে কম্পিউটার ইউজারের কাছ থেকে একটি ইনটিজার টাইপের ডেটা গ্রহণের জন্য অপেক্ষা করবে। ইউজার যে সংখ্যাটি টাইপ করে Enter প্রেস করবে সেই সংখ্যাটি n এর মেমোরি এড্রেসে জমা হবে। ধরা যাক, ইউজার কী-বোর্ড হতে 5 ইনপুট দিল।

(৪) if (n>0) এখানে if ফাংশনের ‘()’ বন্ধনীর ভিতরে একটি কন্ডিশন (n>0) আছে। অর্থাৎ if(n>0) এই স্টেটমেন্টের কারণে কম্পিউটার নিজেকে একটি প্রশ্ন করবে। প্রশ্নটি হল: n এর মান কী 0 অপেক্ষা বড়? বা 5 কী 0 অপেক্ষা বড়? উত্তর সত্য হবে।

(৫) উত্তর সত্য হওয়ায়- if সংশ্লিষ্ট True Statement বা printf(“The number is positive \n”); ফাংশনটি কার্যকর হবে। কিন্তু else সংশ্লিষ্ট False Statement বা printf(“The number is negative”); কার্যকর হবে না। ফলে আউটপুট নিন্মরুপ হবে-

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

(৬) কিন্তু, ইউজার কী-বোর্ড হতে -5 ইনপুট দিলে শর্তটি এরকম হবে- n এর মান কী 0 অপেক্ষা বড়? বা -5 কী 0 অপেক্ষা বড়? উত্তর মিথ্যা হবে। উত্তর মিথ্যা হলে if সংশ্লিষ্ট True Statement বা printf((“The number is positive \n”) ফাংশনটি কার্যকর হবে না। কিন্তু else সংশ্লিষ্ট False Statement বা দ্বিতীয় printf((“The number is negative”) কার্যকর হবে।  এবং আউটপুট নিম্নরুপ হবে-

আউটপুটঃ
Enter any integer number:
-5
The number is negative

Leave a Reply

Your email address will not be published. Required fields are marked *