আমরা পূর্বের পর্বে জেনেছি সি প্রোগ্রামিং এর while লুপ স্টেটমেন্ট নিয়ে। এই পর্বে আমরা সি প্রোগ্রামিং এর do-while লুপ স্টেটমেন্ট নিয়ে বিস্তারিত আলোচনা করব।
do-while লুপ আর while লুপের মাঝে তেমন কোনো বিশেষ পার্থক্য নেই তবে একটি বিশেষ পার্থক্য হচ্ছে do-while লুপের কন্ডিশন বা test expression চেক করার পূর্বে লুপের বডিতে যে স্টেটমেন্ট রয়েছে তা মিনিমাম একবার নির্বাহ হবে। কারন এই লুপে কন্ডিশন পরে চেক করা হয়, কন্ডিশন যদি সত্য হয় তাহলে লুপটি পুনরায় চলবে আর কন্ডিশন মিথ্যে হলে লুপটি আর চলবে না অর্থাৎ পরের স্টেটমেন্ট এক্সিকিউট করবে। তবে প্রোগ্রামিং এ do-while loop তেমন একটা বেশি ব্যবহার করা হয় না।
initialization;do{statements----------------------------increment/decrement;}while(condition);
প্রথমেই আমাদেরকে initialization মানে একটা প্রাথমিক মান নির্ধারণ করে দিতে হয় নতুবা প্রাথমিক মান 0 থেকে শুরু হয়। এরপর do কিওয়ার্ডের ব্রাকেটের ভিতরে আমাদেরকে statements দিতে হবে। কেননা do-while লুপের কন্ডিশন চেক করার পূর্বে লুপের বডিতে যে স্টেটমেন্ট দেওয়া হবে তা মিনিমাম একবার নির্বাহ করবে। এরপর আমাদেরকে Update statement নির্ধারন করে দিতে হবে।
এরপর while কিওয়ার্ডের প্যারেন্থেসিসের ভিতরে condition বা শর্ত দিতে হয়। যদি আমাদের দেওয়া condition সত্য হয় তাহলে 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 4547 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 8789 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 4446 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 8688 90 92 94 96 98 100