5.7.10 লুপ স্টেটমেন্ট (Loop Statements)

একই কাজ বারবার করার জন্য প্রোগ্রামিং ভাষায় লুপ স্টেটমেন্ট থাকে। সি প্রোগ্রামিং ভাষায় তিন ধরনের লুপ আছে, for লুপ, while লুপ এবং do-while লুপ। এই বইতে কেবল for লুপ ও while লুপের ব্যবহার দেখানো হবে।

while লুপ

While লুপের সিনট্যাক্স হচ্ছে-

while (condition)
{
	statement;
	...
}

এখানে condition সত্য হলে, while-এর ব্লকের ভেতরের কাজ করা হবে। কাজ শেষে আবার condition পরীক্ষা করা হবে। এবারেও condition সত্য হলে আবারো while-এর ব্লকের ভেতরের কাজ করা হবে। এভাবে চক্রাকারে কাজটি বারবার চলতে থাকবে যতক্ষণ পযন্ত condition সত্য থাকে। যেমন- ধরা যাক, একটি প্রোগ্রাম লিখতে হবে, যেটি I Love Bangladesh কথাটি পাঁচবার প্রিন্ট করবে।

উদাহরণ ১০

#include <stdio.h>
int main()
{
	int i;
	i = 0;
	while (i < 5) {
		printf ("I Love Bangladesh.\n");
		i = i + 1;
        }
	return 0;
}

i = 0; স্টেটমেন্টে i তে 0 রাখা হয়েছে। তারপর while-এর ভেতরের শর্ত পরীক্ষা করা হবে। i < 5 শর্তটি সত্য, কারণ i-এর মান এখন 0। তারপর printf() স্টেটমেন্টের কাজ হবে। তারপর i = i + 1; স্টেমেন্টটি এক্সিকিউট হবে। এই স্টেটমেন্টে i-এর মানের সঙ্গে 1 যোগ করে সেটি আবার i-তে রাখা হয়েছে (বা অ্যাসাইন করা হয়েছে)।
i-এর মান এখন 1। তারপরে আবার i < 5 শর্তটি পরীক্ষা করা হবে এবং এবারো শর্তটি সত্য (i-এরমান এখন 1)। তাই printf() ফাংশনটি এক্সিকিউট হবে। তারপরে আবার i-এর মান 1 বাড়বে। এভাবে চলতে থাকবে এবং যখন i-এর মান বেড়ে 5 হবে, তখন i < 5 শর্তটি মিথ্যা হয়ে যাবে এবং প্রোগ্রামটি while লুপের বাইরে চলে আসবে। i-এর পাঁচটি মান (0, 1, 2, 3, 4)-এর জন্য printf() ফাংশনটি পাঁচবার এক্সিকিউট হবে এবং পাঁচবার I Love Bangladesh কথাটি প্রিন্ট হবে।

উদাহরণ ১১

এখন আরেকটি প্রোগ্রাম লেখা হবে, যার কাজ হবে 1 থেকে 100 পযন্ত সব সংখ্যা প্রিন্ট করা।

#include <stdio.h>

int main()
{
	int n;
	n = 1;
	while (n <= 100) {
		printf ("%d\n", n);
		n = n + 1;
        }
	return 0;
}

প্রোগ্রামঃ 5.15

১ থেকে ১০০ পর্যন্ত প্রতিটি সংখ্যা প্রিন্ট করার প্রোগ্রামের ফ্লোচার্ট ৫.৯ চিত্রে দেখানো হল।

উদাহরণ ১২

এখন, 1 থেকে 100 পযন্ত সব জোড় সংখ্যা প্রিন্ট করার প্রোগ্রাম লেখা হবে। এটি আগের প্রোগ্রামের মতোই হবে, তবে প্রতিটি সংখ্যা প্রিন্ট করার আগে সেটি জোড় কি না, তা পরীক্ষা করা হবে। উল্লেখ্য যে, কোনো সংখ্যাকে 2 দিয়ে ভাগ করলে ভাগশেষ যদি 0 হয়, তাহলে সেটি জোড় সংখ্যা।

#include <stdio.h>

int main()
{
	int n;
	n = 1;
	while (n <= 100) {
		if (n % 2 == 0) {
			printf ("%d\n", n);
		}
		n = n + 1;
	}
	return 0;
}

প্রোগ্রামঃ 5.16

প্রোগ্রামটি চাইলে এভাবেও লেখা যায়-

#include <stdio.h>

int main()
{
	int n = 2;
	while (n <= 100) {
		printf ("%d\n", n);
		n = n + 2;
	}
	return 0;
}

প্রোগ্রামঃ 5.17

উপরের প্রোগ্রামটিতে n-এর মান 2 থেকে শুরু হয়েছে এবং লুপের ভেতরে প্রতিবার n-এর মান 2 করে বাড়ানো হচ্ছে। তাই প্রোগ্রামটি 2 থেকে শুরু করে প্রতিটি জোড় সংখ্যা প্রিন্ট করবে এবং n-এর মান 100-এর চেয়ে বেশি হলে লুপ থেকে বের হয়ে যায়।

উদাহরণ ১৩

এখন 1 থেকে 100 পর্য্ন্ত সব পূর্ণসংখ্যার যোগফল নির্ণয় করার প্রোগ্রাম লেখা হবে। যদিও ধারার সূত্র ব্যবহার করে এক লাইনেই এটি করে ফেলা যায়, কিন্তু এখানে লুপ ব্যবহার করে প্রোগ্রামটি তৈরি করা হবে। শুরুতে ধরা হবে যোগফল শূন্য। তারপর যোগফলের সঙ্গে প্রথমে 1 যোগ করা হবে, তারপর 2 যোগ করা হবে, এভাবে 100 পর্য্ন্ত সব সংখ্যা ওই যোগফলের সঙ্গে যোগ করা হবে।

#include <stdio.h>

int main()
{
	int n, sum;
	sum = 0;
	n = 1;
	while (n <= 100)
	{
		sum = sum + n;
		n = n + 1;
	}
	printf ("Result: %d\n", sum);
	return 0;
}

প্রোগ্রামঃ 5.18

for লুপ

সি প্রোগ্রামিং ভাষায় for লুপের সিনট্যাক্স হচ্ছে এরকম-

for (initialization; condition; increment)
{
	statement;
	...
}

1 থেকে 100 পর্য্ন্ত সংখ্যাগুলো যোগ করার প্রোগ্রামটি যদি for লুপ ব্যবহার করে লেখা হয়, সেটি দাঁড়াবে এমন-

#include <stdio.h>

int main()
{
	int n, sum;
	sum = 0;
	for (n = 1; n <= 100; n = n + 1) {
		sum = sum + n;
	}
	printf ("Result : %d\n", sum);
	return 0;
}

প্রোগ্রামঃ 5.19

উদাহরণ ১৪

এখন for লুপ ব্যবহার করে নামতা লেখার প্রোগ্রাম তৈরি করতে হবে। প্রথমে ফ্লোচার্ট (চিত্র ৫.১০) তৈরি করে দেখানো হবে, তারপর প্রোগ্রাম লেখা হবে।

#include <stdio.h>
int main()
{
	int i, n;
	scanf ("%d", &n);
	for (i = 1; i <= 10; i = i + 1) {
		printf ("%d x %d = %d\n", n, i, n * i);
	}
	return 0;
}

প্রোগ্রামঃ 5.50

প্রয়োজন হলে একটি লুপের ভেতরে আরো লুপ ব্যবহার করা যায়। একে বলে নেস্টেড লুপ (nested loop)।