সি প্রোগ্রামিং সুইস...কেইস স্টেটমেন্ট | C Programming switch...case Statement
সি প্রোগ্রামিং switch...case স্টেটমেন্ট
নেস্টেড if...else
স্টেটমেন্ট ব্যবহার করে আপনি অনেক ভ্যালুর বিপরীতে কোনো একটি নির্দিষ্ট কোড ব্লককে এক্সিকিউট(execute) করতে পারেন। কিন্তু আপনি যদি সিঙ্গেল ভ্যারিয়েবলের ভ্যালু চেক করাতে চান তাহলে nested if...else স্টেটমেন্টের পরিবর্তে switch
স্টেটমেন্ট ব্যবহার করাই উত্তম হবে।
switch স্টেটমেন্ট প্রায়ই নেস্টেট if...else
স্টেটমেন্টের চেয়ে দ্রুততর এবং সুইস স্টেটমেন্টের সিনট্যাক্সও তুলনামূলক সহজ ও স্বচ্ছ।
সি সুইস সিনট্যাক্স
switch (expression)
{
case value1:
//expression এর ভ্যালু value1 এর সমান হলে এই কোড এক্সিকিউট হবে;
break;
case value2:
//expression এর ভ্যালু value2 এর সমান হলে এই কোড এক্সিকিউট হবে;
break;
.
.
.
default:
//expression এর ভ্যালু কোনো value এর সমান না হলে এই কোড এক্সিকিউট হবে;
}
switch...case স্টেটমেন্ট কিভাবে কাজ করে?
- উপরের সিনট্যাক্সে expression প্রোগ্রামে শুধুমাত্র একবার এক্সিকিউশন(execution) হয়।
- এক্সপ্রেশনের ভ্যালু সুইস ব্লকের যেই case value এর সাথে মিলে যায় প্রোগ্রাম কন্ট্রোল তার কাছে চলে আসে ফলে সেই case value এর কোড ব্লকটি সম্পাদিত(execution) হয়।
- উপরের সিউডোকোড(pseudocode) এ expression এর ভ্যালু যদি value2 এর সমান হয় তাহলে কম্পাইলার case value2 এর কোড ব্লককে এক্সিকিউট করবে।
- case value2 এর পরে কোনো break স্টেটমেন্ট না থাকলে সুইস ব্লকের শেষ পর্যন্ত এক্সিকিউশন হবে।
- এক্সপ্রেশনের ভ্যালু সুইস ব্লকের কোনো case value এর সাথে না মিললে default এর কোড ব্লকটি সম্পাদিত হবে।
- পরবর্তী case কে এক্সিকিউট থেকে বাধা দিতে break স্টেটমেন্ট ব্যবহার করা হয়।
সি সুইস স্টেটমেন্ট ফ্লোচার্ট
উদাহরন ১: সুইস স্টেটমেন্ট
#include<stdio.h>
#include<conio.h>
int main()
{
int num;
clrscr();
printf("Enter any number (1 to 7) \n: ");
scanf("%d",&num);
switch(num)
{
case 1:
printf("Today is Saturday");
break;
case 2:
printf("Today is Sunday");
break;
case 3:
printf("Today is Monday");
break;
case 4:
printf("Today is Tuesday");
break;
case 5:
printf("Today is Wednesday");
break;
case 6:
printf("Today is Thursday");
break;
case 7:
printf("Today is Friday");
break;
default:
printf("Only enter value 1 to 7");
}
getch();
}
আউটপুট
Enter any number (1 to 7): 4 Today is Tuesday
উপরের প্রোগ্রামে ইউজার 4 ইনপুট দেওয়ায় এক্সপ্রেশনের ভ্যালু case 4 : এর সাথে মিলে গেছে এবং Tuesday প্রিন্ট হয়েছে।
উদাহরন ২: সুইস স্টেটমেন্ট
// সাধারণ ক্যালকুলেটর তৈরির জন্য প্রোগ্রাম
// ইউজার কর্তৃক ইনপুটের উপর ভিত্তিকরে যোগ, বিয়োগ, গুণ অথবা ভাগ সম্পন্ন হবে।
# include <stdio.h>
int main() {
char operator;
double firstNumber,secondNumber;
printf("Enter an operator (+, -, *,): ");
scanf("%c", &operator);
printf("Enter two operands: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
switch(operator)
{
case '+':
printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber+secondNumber);
break;
case '-':
printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber-secondNumber);
break;
case '*':
printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber*secondNumber);
break;
case '/':
printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber);
break;
// অপারেটর কোনো case ভ্যালু (+, -, *, /) এর সাথে না মিললে এই স্টেটমেন্ট সম্পাদিত হবে।
default:
printf("Error! operator is not correct");
}
return 0;
}
আউটপুট
Enter an operator (+, -, *,): - Enter two operands: 50.27 20.25 32.5 - 12.4 = 30.02
ইউজার - অপারেটর ইনপুট দেওয়ায় ইহা oparetor ভ্যারিয়েবলে জমা হয়েছে। এবং দুটি অপারেন্ড 32.5 এবং 12.4 ইনপুট দেওয়ায় এগুলো যথাক্রমে firstNumber এবং secondNumber ভ্যারিয়েবলে জমা হয়েছে।
তারপরে প্রোগ্রামের কন্ট্রোল নিচের ব্লকে জাম্প করে।
printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber-firstNumber);
অবশেষে break statement সুইস স্টেটমেন্টের সমাপ্তি ঘটায়।
যদি break স্টেটমেন্ট ব্যবহার করা না হত তাহলে সঠিক case এর পরবর্তী সকল case এক্সিকিউট(execute) হত।