‘while’ লুপ — সি প্রোগ্রামিং বাংলা টিউটোরিয়াল পার্ট-৮

আসসালামু আলাইকুম

আজকের সি প্রোগ্রামিঙ্গের বাংলা টিউটোরিয়ালের আলোচ্য বিষয় হচ্ছে লুপ। সি প্রোগ্রামিং এর অন্যতম প্রধান বিষয় হচ্ছে এই লুপ।

ধরা যাক, আমাদেরকে বলা হলো ১-১০ পর্যন্ত সংখ্যা 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;

}

আশা করি বুঝতে পারবেন, যে কোন সমস্যায় কমেন্ট করতে ভুলবেননা। ধন্যবাদ।

Related Posts