সি তে 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
কোথায় ব্যবহার করা যায়। আগেই বলেছি এটি ডিসিশন নিতে ব্যবহার করা হয়। আমরা একটি ছোট প্রোগ্রাম দিয়ে এর প্রয়োগ দেখব। এখানে আমরা দুইটি সংখ্যা ইউজারের কাছে জানতে চাইবো এবং সে দুটির মধ্যে কোনটি বড় আর কোনটি ছোট সেটি বের করব।
#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
কে নেস্টেড করে ব্যবহার করতে পারি। উদাহরণ হিসেবে আমরা আগের উদাহরণটিকে একটু পাল্টিয়ে দেখব। দুটির বদলে আমরা এবার তিনটি সংখ্যা নেব এবং দেখব কোনটি সবচেয়ে বড়।
#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 num2if(num1>num3) { //chechking with num3printf("%d is the largest number.", num1);}else {printf("%d is the largest number.", num3);}}else {if(num2>num3){ //checking num2 with num3printf("%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
ব্যবহার করে আরো জটিল ধরনের লজিক নিয়ে কাজ করতে পারি।