5.7.9 লজিকাল অপারেটর (Logical Operator)

একাধিক শর্ত মিলিয়ে নতুন শর্ত তৈরি করার জন্য গাণিতিক এক্সপ্রেশনের মতো, লজিকাল এক্সপ্রেশন লেখা যায়। বিভিন্ন শর্ত লজিকাল অপারেটর দিয়ে যুক্ত করে লজিকাল এক্সপ্রেশন তৈরি করা হয়।

সি প্রোগ্রামিং ভাষায় তিন ধরনের লজিক্যাল অপারটের আছে- && (and), || (or) এবং ! (not) অপারেটর।

অ্যান্ড (&&) অপারেটরের ক্ষেত্রে, বামপক্ষে একটি শর্ত ও ডান পক্ষে একটি শর্ত থাকবে। যদি দুটি শর্তই সত্য হয়, তাহলে পুরো এক্সপ্রেশনটি সত্য হবে। যে কোনো একটি বা দুটি শর্তই যদি মিথ্যা হয়, তাহলে পুরো শর্তটি মিথ্যা হবে।

ABA && B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

অর (||) অপারেটরের ক্ষেত্রে, বাম পক্ষে একটি শর্ত ও ডান পক্ষে একটি শর্ত থাকবে। যদি দুটি শর্তের কমপক্ষে একটি সত্য হয়, তাহলে || সহ পুরো শর্তটি সত্য হবে। দুটি শর্তই যদি মিথ্যা হয়, তাহলে পুরো শর্তটি মিথ্যা হবে।

ABA || B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse

নট (!) অপারেটরের বেলায়, অপারেটরের পরে কেবল একটি শর্ত থাকবে। শর্তটি সত্যি হলে পুরো শর্তটি মিথ্যা, আর শর্তটি মিথ্যা হলে পুরো শর্তটি সত্য হবে।

A!A
TrueFalse
FalseTrue

উদাহরণ ৮

ধরা যাক, কোনো চাকরির আদেনকারীদের বয়সসীমা নির্ধারণ করা হলো 18 থেকে 35 । এখন একটি প্রোগ্রাম লিখতে হবে, যেটি আবেদনকারীর বয়স ইনপুট নেবে এবং বয়সের হিসেবে যে আবেদন করার যোগ্য কি না, সেটি প্রিন্ট করবে।

#include <stdio.h>
int main()
{
	int age;
	scanf ("%d", &age);
	if (age >= 18 && age <= 35)
	{
		printf ("Yes, you are eligible.\n");
	}
	else
	{
		printf ("Sorry, you are not eligible.\n");
	}
	return 0;
}

প্রোগ্রামঃ 5.12

উপরের প্রোগ্রামটিতে if ব্লকের ভেতরে দুটি শর্ত ব্যবহার করা হয়েছে এবং দুটি && অপারেটর দ্বারা যুক্ত করা হয়েছে। অর্থাৎ, এক্ষেত্রে age >= 18 এবং age <= 35 দুটি শর্তই যদি সত্য হয়, তাহলে পুরো্ শর্তটি সত্য হবে। প্রোগ্রামটিতে যদি !(age < 18 || age > 35) শর্ত ব্যবহার করা হতো, তাহলেও প্রোগ্রামটি একই কাজ করত।

উদাহরণ ৯

একটি সংখ্যা ইনপুট নেওয়া হবে। সংখ্যাটি 3 দ্বারা বিভাজ্য হলে Fizz প্রিন্ট করতে হবে, 5 দ্বারা বিভাজ্য হলে Buzz আর ৩ ও ৫ উভয়টি দিয়ে বিভাজ্য হলে FizzBuzz প্রিন্ট করতে হবে.
কোনো সংখ্যা a যদি b দ্বারা বিভাজ্য হয়, তাহলে ভাগশেষ থাকবে 0। সি প্রোগ্রামিং ভাষায় ভাগশেষ বের করার অপারেটর হচ্ছে % (একে বলে মডুলাস modulus অপারেটর) । a%b-এর মান 0 হলে b দ্বারা a বিভাজ্য।

#include <stdio.h>
int main()
{
	int num;
	scanf ("%d", &num);
	if (num % 3 == 0 && num % 5 == 0)
	{
		printf ("FizzBuzz\n");
	}
	else if (num % 3 == 0)
	{
		printf ("Fizz\n");
	}
	else if (num % 5 == 0)
	{
		printf("Buzz\n");
	}
	return 0;
}

প্রোগ্রামঃ 5.13