আসসালামু আলাইকুম
আজকের সি প্রোগ্রামিঙ্গের বাংলা টিউটোরিয়ালের আলোচ্য বিষয় হচ্ছে লুপ। সি প্রোগ্রামিং এর অন্যতম প্রধান বিষয় হচ্ছে এই লুপ।
ধরা যাক, আমাদেরকে বলা হলো ১-১০ পর্যন্ত সংখ্যা print করতে বলা হল। আমরা printf ব্যবহার করে প্রিন্ট করে দিতে পারি, সেক্ষেত্রে আমাদের কোডটি কেমন হবে?
#include<stdio.h>
main()
{
printf(” 1 \n”);
printf(” 2 \n”);
printf(” 3 \n”);
printf(” 4 \n”);
printf(” 5 \n”);
printf(” 6 \n”);
printf(” 7 \n”);
printf(” 8 \n”);
printf(” 9 \n”);
printf(” 10 \n”);
return 0;
}
হয়ে গেল, এই কোডটি লিখতে আমাদের ক ১০টা printf(); ফাংশন লিখতে হয়েছে। এবারে যদি বলা হয়, ১-১০০ পর্যন্ত লেখ? লিখলাম ১০০ লাইন। কিন্ত যদি বলা হয় ১০,০০০ বা ১,০০,০০,০০,০০,০০০ বা তারও বেশি? এই সমস্যা সমাধানের উপায় হচ্ছে লুপ।
সি তে লুপ মূলত ৩ ধরনের। আজকের বিষয় ‘while’ লুপ।
প্রথমেই দেখে নেই ‘while’ লুপ এর ফরম্যাট কেমন –
(Initialization);
while (condition)
{
Statements;
Increment/decrement;
}
এখন While লুপ ব্যবহার করে আমরা ১-১০ পর্যন্ত সংখ্যা প্রিন্ট করব। কোডটি হবে এমন,
#include<stdio.h>
main()
{
int x = 1 ;
while(x<10)
{
printf(” %d \n”, x) ;
x++ ;
}
return 0;
}
এই কোডটি রান করালে নিচের মত ফলাফল আসবে,
1
2
3
4
5
6
7
8
9
লক্ষ্য করুন, আমাদের চেয়েছি ১০ পর্যন্ত প্রিন্ট করতে, কিন্ত আমাদের ফলাফলে ৯ পর্যন্ত এসেছে। এর কারন আস্তে আস্তে জানব।
while লুপ এর তিনটি ধাপ , যে ভেরিয়েবল নিয়ে আমরা কাজ করব, সেটার শুরুর মান নির্ধারন করে দেয়া, যাকে বলা হয় (Initialization); উপরের কোডটিতে আমাদের ভেরিয়েবল int x , আমরা যেহেতু ১ থেকে প্রিন্ট করতে চাইছি, তাই int x = 1 ; হবে while লুপ এর প্রথম ধাপ (Initialization);
while লুপ এর দ্বিতীয় ধাপ হচ্ছে কন্ডিশন, যেটা while (condition) এভাবে লিখতে হয়। আমরা চাইছি ১-১০ পর্যন্ত প্রিন্ট করব, তাই আমাদের কন্ডিশন হবে while(x<10), অর্থাৎ যতক্ষন x, ১০ এর থেকে ছোট থাকবে ততক্ষন লুপ কাজ করবে।
এবারে while লুপ এর তৃতীয় ধাপ, ইনক্রিমেন্ট/ ডিক্রিমেন্ট, অর্থাৎ x পরবর্তী যে মান প্রিন্ট হবে সেটি আগের মান থেকে বড় না ছোট হবে। এই ধাপটি লুপের মদ্ধে লিখতে হয়, যেমন x++ ;
এই কোডে x এর শুরুর মান ছিল ১, x এর মান যখন ১, while(x<10) লুপের কন্ডিশন চেক করবে, x কি ১০ এর ছোট? হ্যা, লুপের ভেতরে প্রবেশ করবে, printf(” %d \n”, x) ; x এর মান ১ প্রিন্ট করবে, x++ ; // x = x + 1 তারপর x এর মান বাড়াবে ১ করে। কারন আমরা পরবর্তী সংখ্যা ২ প্রিন্ট করতে চাই। মান বাড়িয়ে x=২ হবে, আবার কন্ডিশন চেক করবে, x কি ১০ এর ছোট?, হ্যা, ২ প্রিন্ট করবে। এভাবে ৯ বার লুপ ঘুরে ১-৯ পর্যন্ত প্রিন্ট করবে, x এর মান ১ বেড়ে ১০ যখন হবে তখন কন্ডিশন চেক করবে। কিন্ত এবারে x=১০, আর আমদের কন্ডিশনে x এর ১০ এর ছোট হতে হবে। তাই লুপ আর চলবেনা।
কিন্ত আমরা চাই ১০ পর্যন্ত প্রিন্ট করতে, সেক্ষেত্রে আমাদের কন্ডিশনে দিতে হবে while(x<=10) । অর্থাৎ যতক্ষন x ১০ এর ছোট বা সমান হবে ততক্ষন লুপ চলবে। x এর মান বেড়ে x=১১ হলে লুপ আর চল্বেনা। নিচের কোডটি দেখুন, আর রান করুন। বুঝতে পারবেন।
#include<stdio.h>
main()
{
int x = 1 ;
while(x<=10)
{
printf(” %d \n”, x) ;
x++ ; // x = x + 1
}
return 0;
}
এবারে আর্ব একটি উদাহরন দেখা যাক। ধরা যাক বলা হল ১-৫০ পর্যন্ত জোড় সংখ্যা গুলো প্রিন্ট করতে হবে। তাহলে আমাদের ভেরিয়েবল x এর শুরুর মান হবে ২, x=২, লুপের কন্ডিশন হবে x<=৫০, অর্থাৎ যতক্ষন x এর মান ৫০ এর ছোট বা সমান থাকবে ততক্ষন লুপ চলবে। যেহেতু জোড় সংখ্যা সেক্ষেত্রে এবারে x এর মান ১ করে বাড়বেনা, ২ করে বাড়বে তাই ইনক্রিমেন্ট এ আমরা লিখব x = x + 2; প্রথমে নিজে চেস্টা করুন। প্রয়োজনে নিচের কোডটি দেখে নিতে পারেন।
#include<stdio.h>
main()
{
int x = 2 ;
while( x <= 50 )
{
printf(” %d \n”, x) ;
x = x + 2 ;
}
return 0;
}
আশা করি বুঝতে পারবেন, যে কোন সমস্যায় কমেন্ট করতে ভুলবেননা। ধন্যবাদ।