সি প্রোগ্রামিং ভাষায় কন্ট্রোল স্টেটমেন্ট ব্যবহার করে প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করা যায়। এটি মূলত প্রোগ্রামের কার্যক্রম পরিচালনা করতে এবং নির্দিষ্ট শর্ত অনুযায়ী সিদ্ধান্ত নিতে সহায়ক হয়। সি ভাষায় প্রধান কন্ট্রোল স্টেটমেন্টগুলো হল:
- If Statement
- Switch Statement
- Loop Statements (for, while, do-while)
- Break Statement
- Continue Statement
- Goto Statement
১. if স্টেটমেন্ট
if স্টেটমেন্ট ব্যবহার করে নির্দিষ্ট শর্ত যাচাই করা হয়। শর্ত সত্য হলে নির্দিষ্ট ব্লক এক্সিকিউট হয়, অন্যথায় পরের ব্লক এক্সিকিউট হয় না।
উদাহরণ:
int a = 10, b = 20;
if (a < b) {
printf("a is less than b\n");
}
if-else স্টেটমেন্ট
শর্ত মিথ্যা হলে else ব্লক এক্সিকিউট হয়।
if (a > b) {
printf("a is greater than b\n");
} else {
printf("a is not greater than b\n");
}
else if স্টেটমেন্ট
একাধিক শর্ত যাচাইয়ের জন্য else if ব্যবহার করা হয়।
if (a > b) {
printf("a is greater than b\n");
} else if (a < b) {
printf("a is less than b\n");
} else {
printf("a is equal to b\n");
}
২. switch স্টেটমেন্ট
switch স্টেটমেন্ট ব্যবহার করে একটি ভ্যারিয়েবলের মান বিভিন্ন ক্ষেত্রে তুলনা করে নির্দিষ্ট কাজ সম্পন্ন করা হয়।
উদাহরণ:
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
default:
printf("Invalid day\n");
}
৩. লুপ স্টেটমেন্ট
একটি কাজ বারবার সম্পন্ন করার জন্য লুপ স্টেটমেন্ট ব্যবহার করা হয়।
for লুপ
for লুপ সাধারণত নির্দিষ্ট সংখ্যক বার চালানোর জন্য ব্যবহৃত হয়।
for (int i = 0; i < 5; i++) {
printf("%d\n", i);
}
while লুপ
while লুপে শর্ত সত্য হলে ব্লক এক্সিকিউট হয়।
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
do-while লুপ
do-while লুপ অন্তত একবার চালায় এবং শর্ত পুনরায় পরীক্ষা করে।
int i = 0;
do {
printf("%d\n", i);
i++;
} while (i < 5);
৪. break স্টেটমেন্ট
break স্টেটমেন্ট ব্যবহার করে লুপ বা switch ব্লক থেকে বেরিয়ে আসা যায়।
for (int i = 0; i < 5; i++) {
if (i == 3) {
break;
}
printf("%d\n", i);
}
৫. continue স্টেটমেন্ট
continue স্টেটমেন্ট ব্যবহার করে বর্তমান ইটারেশন বাদ দিয়ে পরবর্তী ইটারেশনে যেতে সহায়তা করে।
for (int i = 0; i < 5; i++) {
if (i == 3) {
continue;
}
printf("%d\n", i);
}
৬. goto স্টেটমেন্ট
goto স্টেটমেন্ট ব্যবহার করে প্রোগ্রামের নির্দিষ্ট স্থানে সরাসরি চলে যাওয়া যায়। এটি সাধারণত কম ব্যবহার করা হয়।
int a = 10;
if (a < 20) {
goto myLabel;
}
printf("This won't be printed\n");
myLabel:
printf("Jumped to myLabel\n");
সারসংক্ষেপ
- if-else: শর্ত ভিত্তিক সিদ্ধান্ত নেয়।
- switch: একাধিক মানের উপর ভিত্তি করে সিদ্ধান্ত নেয়।
- for, while, do-while: পুনরাবৃত্তি করে কাজ সম্পন্ন করে।
- break: লুপ বা
switchথেকে বেরিয়ে আসে। - continue: বর্তমান ইটারেশন বাদ দিয়ে পরেরটিতে চলে যায়।
- goto: প্রোগ্রামের নির্দিষ্ট স্থানে চলে যাওয়ার জন্য।
এই স্টেটমেন্টগুলো প্রোগ্রামিংয়ের মূল লজিক ও কাঠামো গঠন করতে সাহায্য করে।
সি প্রোগ্রামিং ভাষায় শর্ত ভিত্তিক স্টেটমেন্ট ব্যবহার করে নির্দিষ্ট শর্তের উপর ভিত্তি করে প্রোগ্রামের নির্দিষ্ট অংশ চালানো হয়। এই স্টেটমেন্টগুলো প্রোগ্রামে সিদ্ধান্ত গ্রহণের জন্য ব্যবহৃত হয়। শর্ত ভিত্তিক স্টেটমেন্টগুলো হল: if, if-else, এবং switch।
১. if স্টেটমেন্ট
if স্টেটমেন্ট ব্যবহার করে একটি শর্ত যাচাই করা হয়। শর্তটি সত্য (true) হলে if ব্লকের কোড কার্যকর হয়।
উদাহরণ:
#include <stdio.h>
int main() {
int age = 20;
if (age >= 18) {
printf("You are eligible to vote.\n");
}
return 0;
}
এখানে, age >= 18 শর্তটি সত্য হলে, প্রিন্ট করবে "You are eligible to vote."।
২. if-else স্টেটমেন্ট
if-else স্টেটমেন্ট ব্যবহার করে একটি শর্ত যাচাই করা হয়। শর্তটি সত্য হলে if ব্লকের কোড কার্যকর হয়, আর মিথ্যা (false) হলে else ব্লকের কোড কার্যকর হয়।
উদাহরণ
#include <stdio.h>
int main() {
int age = 16;
if (age >= 18) {
printf("You are eligible to vote.\n");
} else {
printf("You are not eligible to vote.\n");
}
return 0;
}
এখানে, age >= 18 শর্তটি মিথ্যা হওয়ায় "You are not eligible to vote." প্রিন্ট করবে।
৩. else if স্টেটমেন্ট
else if স্টেটমেন্ট ব্যবহার করে একাধিক শর্ত যাচাই করা যায়। প্রথম শর্ত মিথ্যা হলে পরবর্তী else if শর্ত পরীক্ষা করে, যতক্ষণ না কোনো শর্ত সত্য হয়।
উদাহরণ:
#include <stdio.h>
int main() {
int marks = 85;
if (marks >= 90) {
printf("Grade: A\n");
} else if (marks >= 80) {
printf("Grade: B\n");
} else if (marks >= 70) {
printf("Grade: C\n");
} else if (marks >= 60) {
printf("Grade: D\n");
} else {
printf("Grade: F\n");
}
return 0;
}
এখানে, marks এর মান ৮৫ হওয়ায় "Grade: B" প্রিন্ট করবে কারণ marks >= 80 শর্তটি সত্য।
৪. switch স্টেটমেন্ট
switch স্টেটমেন্ট ব্যবহার করে একটি একক ভ্যারিয়েবলের মান বিভিন্ন case এর সাথে মিলিয়ে একাধিক শর্ত যাচাই করা যায়। যখন কোনো case এর সাথে মান মেলে, তখন সেই case এর ব্লক এক্সিকিউট হয়। প্রতিটি case ব্লকের শেষে break স্টেটমেন্ট ব্যবহার করা হয় যাতে পরবর্তী case ব্লকগুলোতে প্রবেশ না করে।
উদাহরণ:
#include <stdio.h>
int main() {
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("Invalid day\n");
}
return 0;
}
এখানে, day এর মান ৩, তাই "Wednesday" প্রিন্ট করবে। যদি day এর মান ১ থেকে ৭ এর মধ্যে না থাকে, তাহলে default ব্লক এক্সিকিউট হবে এবং "Invalid day" প্রিন্ট করবে।
সংক্ষেপে:
- if: একটি শর্ত সত্য হলে নির্দিষ্ট ব্লক চালায়।
- if-else: শর্ত মিথ্যা হলে বিকল্প ব্লক চালায়।
- else if: একাধিক শর্ত যাচাই করে, প্রথম সত্য শর্তের জন্য নির্দিষ্ট ব্লক চালায়।
- switch: একক ভ্যারিয়েবলের মান বিভিন্ন ক্ষেত্রে মিলিয়ে নির্দিষ্ট ব্লক চালায়।
সি প্রোগ্রামিং ভাষায় লুপিং স্টেটমেন্ট ব্যবহার করে একটি নির্দিষ্ট কাজ বারবার সম্পন্ন করা যায়। লুপিং স্টেটমেন্টগুলো প্রোগ্রামের বিভিন্ন অংশ পুনরাবৃত্তি করতে ব্যবহৃত হয়। সি ভাষায় প্রধান তিনটি লুপিং স্টেটমেন্ট রয়েছে: for লুপ, while লুপ, এবং do-while লুপ।
১. for লুপ
for লুপ সাধারণত নির্দিষ্ট সংখ্যক বার লুপ চালানোর জন্য ব্যবহৃত হয়। for লুপের মধ্যে তিনটি অংশ থাকে:
- Initialization: লুপ ভ্যারিয়েবল সেট করে।
- Condition: শর্তটি সত্য হলে লুপ চলতে থাকে।
- Update: প্রতি ইটারেশনের পর ভ্যারিয়েবল আপডেট হয়।
উদাহরণ:
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
printf("Iteration %d\n", i);
}
return 0;
}
বিবরণ: এখানে for লুপটি পাঁচবার চলবে এবং প্রতিটি ইটারেশনে "Iteration i" প্রিন্ট করবে।
আউটপুট:
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
২. while লুপ
while লুপ ব্যবহার করে শর্ত সত্য (true) থাকলে নির্দিষ্ট কোড ব্লক বারবার চালানো হয়। যদি শর্ত মিথ্যা (false) হয়, তাহলে লুপ শেষ হয়।
উদাহরণ:
#include <stdio.h>
int main() {
int i = 1;
while (i <= 5) {
printf("Iteration %d\n", i);
i++;
}
return 0;
}
বিবরণ: এখানে while লুপটি পাঁচবার চলবে যতক্ষণ i <= 5 শর্তটি সত্য থাকে। প্রতি ইটারেশনে i এর মান ১ করে বৃদ্ধি পাবে।
আউটপুট:
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
৩. do-while লুপ
do-while লুপের বিশেষত্ব হলো এটি অন্তত একবার চলবেই, এমনকি যদি শর্তটি শুরুতেই মিথ্যা হয়। প্রথমে do ব্লকটি চালানো হয়, তারপর while অংশে শর্ত যাচাই করা হয়।
উদাহরণ:
#include <stdio.h>
int main() {
int i = 1;
do {
printf("Iteration %d\n", i);
i++;
} while (i <= 5);
return 0;
}
বিবরণ: এখানে do-while লুপটি পাঁচবার চলবে। প্রথমে do ব্লক এক্সিকিউট হবে এবং i এর মান ১ থেকে ৫ পর্যন্ত বাড়বে।
আউটপুট:
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
লুপের সংক্ষেপ:
- for লুপ: নির্দিষ্ট সংখ্যক বার চলার জন্য সবচেয়ে উপযুক্ত, যখন লুপের শুরু, শর্ত এবং আপডেট এক লাইনে দেয়া হয়।
- while লুপ: শর্ত ভিত্তিক লুপ, যেখানে শর্ত সত্য থাকলে লুপ চলে।
- do-while লুপ: অন্তত একবার চালানো হয় এবং তারপর শর্ত যাচাই করা হয়।
এই তিনটি লুপ বিভিন্ন পরিস্থিতিতে প্রোগ্রামের কার্যকারিতা বাড়াতে এবং কোড পুনরাবৃত্তি কমাতে সাহায্য করে।
সি প্রোগ্রামিং ভাষায় break এবং continue স্টেটমেন্ট ব্যবহার করে লুপের নির্দিষ্ট অংশে প্রবাহ নিয়ন্ত্রণ করা যায়। এগুলো লুপের কার্যক্রম শেষ বা স্কিপ করতে সহায়ক।
১. break স্টেটমেন্ট
break স্টেটমেন্ট ব্যবহার করে লুপ বা switch স্টেটমেন্ট থেকে সরাসরি বেরিয়ে আসা যায়। যখনই break স্টেটমেন্টে পৌঁছানো হয়, লুপ বা switch অবিলম্বে বন্ধ হয়ে যায় এবং লুপের পরবর্তী অংশে চলে যায়।
উদাহরণ:
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // i==5 হলে লুপ বন্ধ হবে
}
printf("%d\n", i);
}
return 0;
}
বিবরণ: এখানে i এর মান ৫ হলে break স্টেটমেন্ট কার্যকর হবে, এবং লুপ সম্পূর্ণভাবে বন্ধ হয়ে যাবে।
আউটপুট:
1
2
3
4
২. continue স্টেটমেন্ট
continue স্টেটমেন্ট ব্যবহার করে লুপের বর্তমান ইটারেশন বাদ দিয়ে পরবর্তী ইটারেশনে চলে যাওয়া যায়। continue স্টেটমেন্টে পৌঁছানো মাত্রই লুপের নিচের কোড স্কিপ করা হয় এবং পরবর্তী ইটারেশন শুরু হয়।
উদাহরণ:
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
continue; // i==5 হলে এই ইটারেশন স্কিপ হবে
}
printf("%d\n", i);
}
return 0;
}
বিবরণ: এখানে i এর মান ৫ হলে continue স্টেটমেন্ট কার্যকর হবে, ফলে সেই ইটারেশনটি বাদ দিয়ে পরবর্তী ইটারেশন শুরু হবে।
আউটপুট:
1
2
3
4
6
7
8
9
10
সংক্ষেপে:
- break: লুপ বা
switchথেকে সম্পূর্ণ বেরিয়ে আসার জন্য ব্যবহৃত হয়। - continue: লুপের বর্তমান ইটারেশন বাদ দিয়ে পরবর্তী ইটারেশন শুরু করার জন্য ব্যবহৃত হয়।
break এবং continue স্টেটমেন্ট ব্যবহার করে লুপের প্রবাহ আরও সহজভাবে নিয়ন্ত্রণ করা যায় এবং কোডের কার্যকারিতা বৃদ্ধি করা যায়।
নেস্টেড লুপ এবং নেস্টেড কন্ডিশনাল স্টেটমেন্ট সি প্রোগ্রামিং ভাষায় লজিক্যাল ও পদ্ধতিগত কাজগুলোকে আরও বেশি বিস্তারিতভাবে এবং নিয়ন্ত্রিতভাবে সম্পন্ন করতে ব্যবহৃত হয়। নেস্টেড লুপের মধ্যে অন্য লুপ এবং নেস্টেড কন্ডিশনালের মধ্যে আরেকটি শর্তযুক্ত স্টেটমেন্ট থাকে।
১. নেস্টেড লুপ
নেস্টেড লুপ হল এক ধরনের লুপ, যেখানে একটি লুপের ভেতরে আরেকটি লুপ থাকে। সাধারণত বহুল ব্যবহৃত নেস্টেড লুপের মধ্যে for লুপ, while লুপ, এবং do-while লুপ অন্তর্ভুক্ত থাকে। নেস্টেড লুপ সাধারণত টু-ডাইমেনশনাল স্ট্রাকচার, যেমন ম্যাট্রিক্স প্রিন্ট করার জন্য ব্যবহৃত হয়।
উদাহরণ:
একটি ৩x৩ ম্যাট্রিক্স আকারে সংখ্যাগুলি প্রিন্ট করা:
#include <stdio.h>
int main() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
printf("%d ", i * j);
}
printf("\n"); // প্রতিটি লাইন শেষে নতুন লাইন প্রিন্ট করা হয়
}
return 0;
}
বিবরণ: এখানে একটি বাইরের for লুপ i দিয়ে এবং একটি অভ্যন্তরীণ for লুপ j দিয়ে চলছে। বাইরের লুপ প্রতিবার চালু হলে, অভ্যন্তরীণ লুপটি সম্পূর্ণভাবে চালানো হয়। এটি i * j এর গুণফল প্রিন্ট করে।
আউটপুট:
1 2 3
2 4 6
3 6 9
২. নেস্টেড কন্ডিশনাল স্টেটমেন্ট
নেস্টেড কন্ডিশনাল স্টেটমেন্টে একটি if, else if, অথবা else স্টেটমেন্টের মধ্যে অন্য একটি শর্তযুক্ত স্টেটমেন্ট ব্যবহার করা হয়। এটি সাধারণত আরও বিস্তারিত শর্ত যাচাই করতে সাহায্য করে।
উদাহরণ:
নেস্টেড if স্টেটমেন্টের সাহায্যে একটি সংখ্যা ধনাত্মক, ঋণাত্মক বা শূন্য নির্ধারণ করা:
#include <stdio.h>
int main() {
int num = -5;
if (num >= 0) {
if (num == 0) {
printf("The number is zero.\n");
} else {
printf("The number is positive.\n");
}
} else {
printf("The number is negative.\n");
}
return 0;
}
বিবরণ: এখানে বাইরের if শর্তটি যাচাই করে সংখ্যা শূন্যের চেয়ে বড় বা সমান কিনা। এরপর যদি সংখ্যাটি শূন্য হয়, তাহলে অভ্যন্তরীণ if শর্তটি প্রিন্ট করে "The number is zero", অন্যথায় "The number is positive" প্রিন্ট করে। যদি বাইরের if শর্তটি মিথ্যা হয় (সংখ্যা ঋণাত্মক), তবে "The number is negative" প্রিন্ট করবে।
আউটপুট:
The number is negative.
৩. নেস্টেড লুপ ও কন্ডিশনাল স্টেটমেন্ট একত্রে
নেস্টেড লুপ ও কন্ডিশনাল স্টেটমেন্ট একসাথে ব্যবহার করে আরও জটিল লজিক গঠন করা যায়। উদাহরণস্বরূপ, ম্যাট্রিক্স আকারে ১ থেকে ৯ পর্যন্ত সংখ্যাগুলি প্রিন্ট করা এবং শুধুমাত্র জোড় সংখ্যাগুলি আলাদা করে দেখানো।
#include <stdio.h>
int main() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
int num = i * j;
if (num % 2 == 0) {
printf("Even:%d ", num);
} else {
printf("Odd:%d ", num);
}
}
printf("\n");
}
return 0;
}
আউটপুট:
Odd:1 Even:2 Odd:3
Even:2 Even:4 Even:6
Odd:3 Even:6 Odd:9
এই উদাহরণগুলো দেখায় কীভাবে নেস্টেড লুপ ও কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে প্রোগ্রামে কার্যকরী ফলাফল তৈরি করা যায়।