if - else স্টেটম্যান্ট

সি তে if-else হল ডিসিশন মেকিং স্টেটমেন্ট। প্রোগ্রামের বিভিন্ন যায়গায় আমাদের লজিকাল ডিসিশন নিতে হতে পারে এবং সেগুলোর উপর ভিত্তি করে আমাদের বিভিন্ন কাজ করা লাগতে পারে। এধরনের অপারেশনের জন্য if-else ব্যবহার করা হয়। if-else এর সিনট্যাক্স স্ট্রাকচার নিচের মত।

if(expression is true)
{
statement;
}
else
{
statement;
}

খুব সাধারণভাবে বলা যায় আমরা if দিয়ে একটি স্টেটমেন্ট ট্রু নাকি ফলস সেটি দেখব এবং তারপর সেটি সত্য হলে আমরা কিছু স্টেটমেন্ট এক্সিকিউট করব আর না হলে অন্য কিছু স্টেটমেন্ট এক্সিকিউট করব। if-else আমাদের প্রোগ্রামটির কাজের ধারাকে বিভিন্ন ব্রাঞ্চ বা শাখায় ভাগ করে দিতে পারে। এখানে লক্ষ্যণীয় যে if-else এ মূলত if ব্লকটি প্রধান। অনেক সময় আমাদের else ব্লকটি একেবারে নাও লাগতে পারে। সেক্ষেত্রে শুধুমাত্র if ব্লকেই কাজ হয়ে যায়।

if(expression is true)
{
statement;
}

আরেকটি বিষয় হল if সিনট্যাক্স এক্সপ্রেশনের নিউম্যারিক ভ্যালু নিয়ে কাজ করে। তাই সবসময় expression != 0 না দিয়ে সরাসরি expression দিলেও হয়। অর্থাৎ নিচের দুইটি if ই কাজ করে একইভাবে।

if(expression !=0)
{
statement;
}
if(expression)
{
statement;
}

if-else এর ব্যবহার

আসুন এবার আমরা দেখি if-else কোথায় ব্যবহার করা যায়। আগেই বলেছি এটি ডিসিশন নিতে ব্যবহার করা হয়। আমরা একটি ছোট প্রোগ্রাম দিয়ে এর প্রয়োগ দেখব। এখানে আমরা দুইটি সংখ্যা ইউজারের কাছে জানতে চাইবো এবং সে দুটির মধ্যে কোনটি বড় আর কোনটি ছোট সেটি বের করব।

#include<stdio.h>
int main(void)
{
int num1, num2;
printf("Enter two numbers to compare :\n");
scanf("%d %d", &num1, &num2);
if(num1>num2) {
printf("%d is greater than %d", num1, num2);
}
else {
printf("%d is greater than %d", num2, num1);
}
return 0;
}

এখানে আমরা দুইটি সংখ্যা নিয়েছি এবং প্রথমে if দিয়ে আমরা দেখছি num1 কি num2 এর চাইতে বড় কি-না। যদি বড় হয় তাহলে if ব্লকটি এক্সিকিউট হবে এবং প্রিন্ট করবে num1 বড়। এবং যদি num1 বড় না হয় তাহলে else ব্লকটি কাজ করে এবং প্রিন্ট করবে num2 বড়।

নেস্টেড if-else

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

#include<stdio.h>
int main(void)
{
int num1,num2,num3;
printf("Enter three numbers to compare :\n");
scanf("%d %d %d", &num1, &num2, &num3);
if(num1>num2) { //if num1 is greater than num2
if(num1>num3) { //chechking with num3
printf("%d is the largest number.", num1);
}
else {
printf("%d is the largest number.", num3);
}
}
else {
if(num2>num3){ //checking num2 with num3
printf("%d is the largest number.", num2);
}
else {
printf("%d is the largest number.", num3);
}
}
return 0;
}

এখানে আমরা যেটি করেছি সেটি হল, প্রথমে আমরা দেখেছি num1 কি num2 এর চাইতে বড় কি না। যদি বড় হয় তাহলে আমরা আরেকটি if ব্লকে num1 কে num3 এর সাথে তুলনা করেছি। আবার যদি প্রথম if এক্সপ্রেশনটি ট্রু না হয় অর্থাৎ যদি num1 ছোট হয়, তাহলে আমরা else ব্লকে গিয়ে আবার num2 কে num3 এর সাথে তুলনা করেছি। এরকমভাবে আমরা নেস্টেড if-else ব্যবহার করে আরো জটিল ধরনের লজিক নিয়ে কাজ করতে পারি।