do-while লুপ স্টেটমেন্ট

আমরা পূর্বের পর্বে জেনেছি সি প্রোগ্রামিং এর while লুপ স্টেটমেন্ট নিয়ে। এই পর্বে আমরা সি প্রোগ্রামিং এর do-while লুপ স্টেটমেন্ট নিয়ে বিস্তারিত আলোচনা করব।

do-while লুপ আর while লুপের মাঝে তেমন কোনো বিশেষ পার্থক্য নেই তবে একটি বিশেষ পার্থক্য হচ্ছে do-while লুপের কন্ডিশন বা test expression চেক করার পূর্বে লুপের বডিতে যে স্টেটমেন্ট রয়েছে তা মিনিমাম একবার নির্বাহ হবে। কারন এই লুপে কন্ডিশন পরে চেক করা হয়, কন্ডিশন যদি সত্য হয় তাহলে লুপটি পুনরায় চলবে আর কন্ডিশন মিথ্যে হলে লুপটি আর চলবে না অর্থাৎ পরের স্টেটমেন্ট এক্সিকিউট করবে। তবে প্রোগ্রামিং এ do-while loop তেমন একটা বেশি ব্যবহার করা হয় না।

do-while লুপের সিনট্যাক্স

initialization;
do
{
statements
--------------
--------------
increment/decrement;
}while(condition);

ব্যাখ্যা

প্রথমেই আমাদেরকে initialization মানে একটা প্রাথমিক মান নির্ধারণ করে দিতে হয় নতুবা প্রাথমিক মান 0 থেকে শুরু হয়। এরপর do কিওয়ার্ডের ব্রাকেটের ভিতরে আমাদেরকে statements দিতে হবে। কেননা do-while লুপের কন্ডিশন চেক করার পূর্বে লুপের বডিতে যে স্টেটমেন্ট দেওয়া হবে তা মিনিমাম একবার নির্বাহ করবে। এরপর আমাদেরকে Update statement নির্ধারন করে দিতে হবে।

এরপর while কিওয়ার্ডের প্যারেন্থেসিসের ভিতরে condition বা শর্ত দিতে হয়। যদি আমাদের দেওয়া condition সত্য হয় তাহলে do-while লুপটির বডিতে যে স্টেটমেন্ট গুলো থাকবে সেগুলো এক্সিকিউট হবে আর আমাদের দেওয়া শর্ত যদি সত্য না হয়, তাহলে লুপটির ভিতরে আর ডুকবে না অর্থাৎ এই স্টেটমেন্ট আর এক্সিকিউট হবে না।

do-while লুপ নিয়ে আমরা কিছু প্রোগ্রাম দেখার চেষ্টা করি-

এখন আমরা ২০ থেকে ৩০ পর্যন্ত উল্টা প্রিন্ট করতে চাই, তাহলে-

#include <stdio.h>
int main()
{
int i = 30;
do
{
printf("%d ", i);
i--;
}while(i >= 20);
return 0;
}

আউটপুট

30 29 28 27 26 25 24 23 22 21 20

ব্যাখ্যা

আমরা প্রথমেই ইন্টিজার টাইপ ভেরিয়েবলে i = 30 ডিক্লেয়ার করেছি কারন আমাদেরকে প্রথমেই 30 থেকে উল্টা প্রিন্ট করতে হবে। এরপর do কিওয়ার্ডের ব্রাকেটের ভিতরে printf ফাংশনে বলে দিয়েছি, যাতে i এর মান গুলো প্রিন্ট করে, এরপর আপডেট স্টেটমেন্টে i-- করে দিয়েছি কারন আমাদের ভেল্যু গুলো উল্টা প্রিন্ট হবে তাই। এরপর while এর কন্ডিশনে বলেছি i >= 20 অর্থাৎ i এর মান 20 হয়ে গেলে লুপটি যাতে শেষ হয়ে যায়।

এখন 1 থেকে 100 পর্যন্ত সব সংখ্যার যোগফল যদি do-while লুপ দিয়ে বের করতে চাই তাহলে-

#include <stdio.h>
int main()
{
int i = 1, sum = 0;
do
{
sum = sum+i;
i++;
}while(i <= 100);
printf("Sum: %d \n", sum);
return 0;
}

আউটপুট

Sum: 5050

আমরা যদি do-while লুপ দিয়ে জোড়-বেজোড় সংখ্যা বের করতে চাই, তাহলে-

বেজোড় সংখ্যার জন্য
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i+2;
}while(i <= 100);
return 0;
}

আউটপুট

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87
89 91 93 95 97 99
জোড় সংখ্যার জন্য
#include <stdio.h>
int main()
{
int i = 0;
do
{
printf("%d ", i);
i = i+2;
}while(i <= 100);
return 0;
}

আউটপুট

0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44
46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86
88 90 92 94 96 98 100