প্রোগ্রামিং করার সময় প্রোগ্রামের একটা নির্দিষ্ট অংশ প্রয়োজন অনুসারে অনেকবার ব্যবহার করার প্রয়োজন হয় । এ জন্য সকল প্রোগ্রামিং ল্যাঙ্গুয়েজ এ রয়েছে লুপ । লুপ এ একটি কন্ডিশন সেট করে দেওয়া হয় । যতক্ষণ কন্ডিশন সত্য হয় প্রোগ্রামের একটা নির্দিষ্ট অংশ ব্যবহার হতে থাকে, কন্ডিশন মিথ্যা হলে নির্দিষ্ট অংশ ব্যবহার করা বন্ধ করে দেয় এবং প্রোগ্রামের পরবর্তী অংশে চলে যায় । নিচের ফ্লোচার্টের মাধ্যমে আমরা লুপ সম্পর্কে একটা ধারনা পেতে পারি ।
সি শার্প ডিসিশন লুপ এর জন্য নিচের স্টেটমেন্ট গুলো ব্যবহার করা হয়
১. হোয়াইল লুপ (while loop)
২. ফর লুপ (for loop)
৩. ডু হোয়াইল লুপ (do..while loop)
৪. নেস্টেড লুপ (nested loops)
১. হোয়াইল লুপ (while loop): কন্ডিশন যতক্ষণ পর্যন্ত সত্য হয় হোয়াইল লুপ এক বা একাধিক স্টেটমেন্টকে কে ব্যবহার করতে থাকে । লুপের ভিতরের কোডকে এক্সিকিউট করার আগে প্রতিবার কন্ডিশন চেক হয় । নিচের হোয়াইল লুপের ফ্লোচার্ট দেখানো হল
সিনট্যাক্সঃ
while(কন্ডিশন)
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
উদাহারনঃ
হোয়াইল লুপ কিভাবে কাজ করে নিচের উদাহারনের মাধ্যমে আমরা সেটা বুঝতে পারি
হোয়াইল লুপের কাজ শুরু হওয়ার আগেই কন্ডিশন চেক করার জন্য ভ্যারিয়েবলের মান কত থেকে শুরু হবে সেটা নির্ধারণ করে দিতে হয় । যেমন উপরের উদাহারনে ১ নং স্টেজ এ i=0 নির্ধারণ বা ইনিশিয়ালাইজ করা হয়েছে । এর পর ২ নং স্টেজ এ কন্ডিশন চেক হয় , দেখা যাচ্ছে i এর মান 0, সুতরাং 0 , 10 থেকে ছোট । অর্থাৎ কন্ডিশন সত্য তাই ৩ নং স্টেজে লুপের ভিতরের কোড এক্সিকিউট হয় । এক্সিকিউট শেষে ৪ নং স্টেজে i এর মান ইনক্রিমেন্ট বা বৃদ্ধি পায় । এই স্টেজে i এর মান ১ বৃদ্ধি পেয়ে 0 থেকে 1 হয় । এরপর ৫ নং স্টেজে ২ নং স্টেজে যায় এবং আবার কন্ডিশন চেক হয় । এখন দেখা যাচ্ছে i এর মান 1, সুতরাং 1, 10 থেকে ছোট, অর্থাৎ আবার কন্ডিশন সত্য তাই পুনরায় ৩ নং স্টেজে লুপের ভিতরের কোড এক্সিকিউট হয়, এরপর আবার এক্সিকিউট শেষে ৪ নং স্টেজে i এর মান ১ বৃদ্ধি পেয়ে 1 থেকে 2 হয়, এবং পুনরায় পুনরায় ২ নং স্টেজে যায় এবং আবার কন্ডিশন চেক হয় । এভাবে যতক্ষণ কন্ডিশন সত্য হবে ততক্ষণ লুপটি চলতে থাকবে এবং i এর মান বাড়তে থাকবে । যখন i এর মান 10 হবে তখন কন্ডিশন মিথ্যা হবে কারন 10 কখনই 10 এর থেকে ছোট হতে পারেনা । তাই লুপের ভিতরের কোড গুলো আর এক্সিকিউট হবেনা অর্থাৎ আর ৩ নং স্টেজে আর প্রবেশ করবেনা ।
অউটপুটঃ
২. ফর লুপ (for loop): হোয়াইল লুপের মত ফর লুপে কন্ডিশন যতক্ষণ পর্যন্ত সত্য হয় হোয়াইল লুপ এক বা একাধিক স্টেটমেন্টকে কে ব্যবহার করতে থাকে । মূল পার্থক্য হল ফর লুপের ভিতরেই ইনিশিয়ালাইজেশন, কন্ডিশন চেকিং, ইনক্রিমেন্ট / ডিক্রিমেন্ট হয় । নিচের ফর লুপের ফ্লোচার্ট দেখানো হল
সিনট্যাক্সঃ
for (ইনিশিয়ালাইজেশন;কন্ডিশন;ইনক্রিমেন্ট / ডিক্রিমেন্ট)
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
উদাহারনঃ
ফর লুপ কিভাবে কাজ করে নিচের উদাহারনের মাধ্যমে আমরা সেটা বুঝতে পারি
১ নং স্টেজ এ i=0 নির্ধারণ বা ইনিশিয়ালাইজ করা হয়েছে । এর পর ২ নং স্টেজ এ কন্ডিশন চেক হয় , দেখা যাচ্ছে i এর মান 0, সুতরাং 0 , 10 থেকে ছোট । অর্থাৎ কন্ডিশন সত্য তাই ৩ নং স্টেজে লুপের ভিতরের কোড এক্সিকিউট হয় । এক্সিকিউট শেষে ৪ নং স্টেজে i এর মান ইনক্রিমেন্ট বা বৃদ্ধি পায় । এই স্টেজে i এর মান ১ বৃদ্ধি পেয়ে 0 থেকে 1 হয় । এরপর ৫ নং স্টেজে ২ নং স্টেজে যায় এবং আবার কন্ডিশন চেক হয় । এখন দেখা যাচ্ছে i এর মান 1, সুতরাং 1, 10 থেকে ছোট, অর্থাৎ আবার কন্ডিশন সত্য তাই পুনরায় ৩ নং স্টেজে লুপের ভিতরের কোড এক্সিকিউট হয়, এরপর আবার এক্সিকিউট শেষে ৪ নং স্টেজে i এর মান ১ বৃদ্ধি পেয়ে 1 থেকে 2 হয়, এবং পুনরায় পুনরায় ২ নং স্টেজে যায় এবং আবার কন্ডিশন চেক হয় । এভাবে যতক্ষণ কন্ডিশন সত্য হবে ততক্ষণ লুপটি চলতে থাকবে এবং i এর মান বাড়তে থাকবে । যখন i এর মান 10 হবে তখন কন্ডিশন মিথ্যা হবে কারন 10 কখনই 10 এর থেকে ছোট হতে পারেনা । তাই লুপের ভিতরের কোড গুলো আর এক্সিকিউট হবেনা অর্থাৎ আর ৩ নং স্টেজে আর প্রবেশ করবেনা ।
অউটপুটঃ
৩. ডু হোয়াইল লুপ (do..while loop): হোয়াইল এবং ফর লুপের মত ডু হোয়াইল লুপ একই ভাবে কাজ করে । মূল পার্থক্য হল ডু হোয়াইল লুপে শুরুতে লুপের ভিতরের কোড এক্সিকিউট হয় তারপর কন্ডিশন চেক হয় । ফলে শুরুতেই কন্ডিশন মিথ্যা হয় তাহলে লুপের ভিতরের কোড অন্তত একবার এক্সিকিউট হবে । যেটা হোয়াইল এবং ফর লুপে কখনই সম্ভব নয় । নিচের ডু হোয়াইল লুপের ফ্লোচার্ট দেখানো হল
সিনট্যাক্সঃ
do
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}while( কন্ডিশন );
উদাহারনঃ
ডু হোয়াইল লুপ কিভাবে কাজ করে নিচের উদাহারনের মাধ্যমে আমরা সেটা বুঝতে পারি
১ নং স্টেজ এ i=0 নির্ধারণ বা ইনিশিয়ালাইজ করা হয়েছে । এর পর ২ নং স্টেজ এ কন্ডিশন চেক না করেই লুপের ভিতরের কোড এক্সিকিউট হয় । এক্সিকিউট শেষে ৩ নং স্টেজে i এর মান ইনক্রিমেন্ট বা বৃদ্ধি পায় । এরপর ৪ নং স্টেজে কন্ডিশন চেক হয় । দেখা যাচ্ছে i এর মান 0, সুতরাং 0 , 10 থেকে ছোট । অর্থাৎ কন্ডিশন সত্য তাই ৫ নং স্টেজে লুপের ভিতরের প্রবেশ করে এবং কোড এক্সিকিউট হয় । এক্সিকিউট শেষে আবার ৩ নং স্টেজে i এর মান ইনক্রিমেন্ট বা বৃদ্ধি পায় । এই স্টেজে i এর মান ১ বৃদ্ধি পেয়ে 0 থেকে 1 হয় । এরপর পুনরায় ৪ নং স্টেজে যায় এবং আবার কন্ডিশন চেক হয় । এখন দেখা যাচ্ছে i এর মান 1, সুতরাং 1, 10 থেকে ছোট, অর্থাৎ আবার কন্ডিশন সত্য তাই পুনরায় ২ নং স্টেজে লুপের ভিতরের কোড এক্সিকিউট এবং এক্সিকিউট শেষে ৩ নং স্টেজে i এর মান ১ বৃদ্ধি পেয়ে 1 থেকে 2 হয়, এবং পুনরায় ৩ নং স্টেজে যায় এবং আবার কন্ডিশন চেক হয় । এভাবে যতক্ষণ কন্ডিশন সত্য হবে ততক্ষণ লুপটি চলতে থাকবে এবং i এর মান বাড়তে থাকবে । যখন i এর মান 10 হবে তখন কন্ডিশন মিথ্যা হবে কারন 10 কখনই 10 এর থেকে ছোট হতে পারেনা । তাই লুপের ভিতরের কোড গুলো আর এক্সিকিউট হবেনা অর্থাৎ আর ২ নং স্টেজে আর প্রবেশ করবেনা ।
অউটপুটঃ
ডুহোয়াইল লুপের সাথে হোয়াইল এবং ফর লুপের মধ্যে মূল পার্থক্য ভালভাবে বুঝার জন্য নিচের উধাহারনটি দেওয়া হল
int i = 11;
do
{
Console.WriteLine(i);
i++;
} while (i < 10);
Console.ReadKey();
এখানে দেখা যাচ্ছে i এর মান 11 এবং কন্ডিশন চেকিং এ দেওয়া আছে i এর মান অবশ্যই 10 থেকে ছোট হতে হবে । অর্থাৎ প্রোগ্রামটি রান করলে লুপের ভিতরের কোড এক্সিকিউট হওয়া উচিত না । কিন্তু প্রোগ্রামটি রান করলে নিচের আউটপুট পাওয়া যায়
অর্থাৎ কন্ডিশন মিথ্যা হওয়ার পরও লুপের ভিতরের কোড একবার এক্সিকিউট হয়েছে । কারন ডুহোয়াইল লুপে শুরুতেই ভিতরের কোড এক্সিকিউট হয় ফলে আগে 11 প্রিন্ট হয় । তারপর i এর মান ১ বৃদ্ধি পেয়ে 12 হয় এরপর কন্ডিশন চেক হয় তখন কন্ডিশন মিথ্যা হবে কারন 12, 10 থেকে বড়, ফলে লুপের ভিতরের কোড গুলো আর এক্সিকিউট হবেনা । যেটা হোয়াইল এবং ফর লুপে কখনোই সম্ভবনা ।
৪. নেস্টেড লুপ (nested loops): যদি হোয়াইল লুপ, ফর লুপ এবং ডু হোয়াইল লুপের ভিতরে যদি পুনরায় কোন লুপ ব্যবহার করা হয় তাহলে এই ধরনের স্টেটমেন্টকে নেস্টেড লুপ বলা হয় । প্রোগ্রামের প্রয়োজন অনুসারে একাধিক নেস্টেড লুপ ব্যবহার করা যায় ।
সিনট্যাক্সঃ
while(কন্ডিশন ১)
{
while(কন্ডিশন ২)
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
আবার
for (ইনিশিয়ালাইজেশন; কন্ডিশন ১; ইনক্রিমেন্ট / ডিক্রিমেন্ট)
{
for (ইনিশিয়ালাইজেশন; কন্ডিশন ২; ইনক্রিমেন্ট / ডিক্রিমেন্ট)
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
অথবা
do
{
do
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}while( কন্ডিশন ২);
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}while( কন্ডিশন ১);
উদাহারনঃ
for (int i = 0; i <= 5; i++)
{
for (int j = 0; j <= 5; j++)
{
Console.Write(“(i= “+i+“, j= “+j+“) “);
}
Console.WriteLine();
Console.WriteLine();
}
Console.ReadLine();
অউটপুটঃ
লুপ কন্ট্রোল স্টেটমেন্টঃ
লুপ কন্ট্রোল স্টেটমেন্ট এর মাধ্যমে আমরা লুপের ভিতরের কোড গুলোকে প্রয়োজন মত নিয়ন্ত্রণ করতে পারি । লুপকে নিয়ন্ত্রণ করার জন্য সাধারনত নিচের স্টেটমেন্ট গুলো ব্যবহার করা হয় ।
১. ব্রেক স্টেটমেন্ট (break)
২. কণ্টিনিউ স্টেটমেন্ট (continue)
১. ব্রেক স্টেটমেন্ট (break): ব্রেক হল একটি বিশেষ কিওয়ার্ড যেটা ব্যবহার করলে লুপের ভিতরের কোড গুলোকে এক্সিকিউট করা বন্ধ করে প্রোগ্রামের পরবর্তী অংশে চলে যায় অর্থাৎ লুপ এর কাজ চলাকালীন সময়ে লুপ থেকে বের হয়ে আসবার জন্য ব্যাবহার করা হয়।
সিনট্যাক্সঃ
break;
উদাহারনঃ
int i;
for (i = 0; i <10; i++)
{
if (i>5)
{
break;
}
Console.WriteLine(i);
}
Console.ReadLine();
অউটপুটঃ
২. কণ্টিনিউ স্টেটমেন্ট (continue): কণ্টিনিউ হল একটি বিশেষ কিওয়ার্ড যেটা লুপের ভিতরের কোন নির্দিষ্ট শর্তের জন্য কোড এক্সিকিউট না করে পুনরায় লুপ কে ঘুরানোর জন্য ব্যবহার করা হয় ।
সিনট্যাক্সঃ
continue;
উদাহারনঃ
int i;
for (i = 0; i <10; i++)
{
if (i==5 || i==6)
{
Console.WriteLine(“_\n”);
continue;
}
Console.WriteLine(i);
}
Console.ReadLine();
আউটপুটঃ
ইনফিনিট লুপ (Infinite Loop):
যদি কোন লুপের কন্ডিশন কখনো মিথ্যা না হয় অর্থাৎ লুপটি চলতেই থাকে তাহলে এই ধরনের লুপকে ইনফিনিট লুপ বলা হয় ।
সিনট্যাক্সঃ
for ( ; ; )
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
অথবা
while (true)
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
}
অথবা
do
{
/*………………স্টেটমেন্টস ………………
…………………………………………………*/
} while (true);
উদাহারনঃ
for ( ; ; )
{
Console.WriteLine(“Infinite Loop”);
if (Console.KeyAvailable)
{
break;
}
}
আউটপুটঃ