লুপ-সি প্রোগ্রামিং(C programming loop for HSC student)-smsakib5

লুপ-সি প্রোগ্রামিং(C programming loop for HSC student)-smsakib5

C Programming Image

লুপ (Loop): কোন স্টেটমেন্ট বারবার এক্সিকিউট এর জন্য লুপ (Loop) কন্ট্রোল স্টেটমেন্ট ব্যবহার করা হয়। সি ল্যাঙ্গুয়েজে বেশ করেক ধরণের লুপ রয়েছে। যথাঃ

while লুপ
for লুপ
do……..while লুপ ইত্যাদি।
নিচে এগুলো সম্পর্কে আলোচনা করা হলঃ

While লুপঃ সি প্রোগ্রামে while লুপের ব্যবহার অনেক। while লুপে, প্রথমে condition চেক করে এবং যদি condition সত্য হয় তাহলে লুপ বডি এক্সিকিউট হবে। লুপ বডি ততক্ষন পর্যন্ত এক্সিকিউট হবে যতক্ষণ না লুপ condition মিথ্যা হয় এবং যখন condition মিথ্যা হয় তখন কম্পাইলার লুপ বডি থেকে বের হয়ে আসবে।

while লুপের syntax হলঃ
Counter Declaration:
Counter Initialization:
while (test condition)
{
Statement Block
Also called loop body
Counter Increment/Decrement;
}
while লুপে, প্রথমে একটি Counter Variable Declare এবং Initialize করতে হয়। তারপর while লুপের একটি condition থাকে যদি condition সত্য হয় তাহলে লুপ বডি এক্সিকিউট হবে এবং counter variable এর মান increment/decrement হবে। counter variable এর মান increment/decrement এর পর কম্পাইলার আবার while লুপের কন্ডিশন চেক করবে যদি condition সত্য হয় তাহলে আবার লুপ বডি এক্সিকিউট হবে এবং counter variable এর মান increment/decrement হবে। এভাবে লুপ condition মিথ্যা না হওয়া পর্যন্ত চলতেই থাকবে। এখন আমরা while লুপের flowchart দেখব।

এবার while লুপের একটি উদাহরণ দেখিঃ

Output:
0 1 2 3 4 5 6 7 8 9

এখানে, ৪ নাম্বার লাইনে Integer ডেটাটাইপে num নামক একটি ভেরিয়েবল declare করা হয়েছে এবং ৫ নাম্বার লাইনে num ভেরিয়েবলকে 0 দ্বারা initialize করা হয়েছে। এর পর ৬ নাম্বার লাইনে লুপ শুরু হয়েছে। এই লুপটি কিভাবে কাজ করবে তা আমরা কয়েকটি ধাপে এ দেখবঃ

১ম ধাপঃ
৬ নম্বর লাইনে num ভেরিয়েবলের মান 0 সুতরাং (num<10) কন্ডিশনের মান সত্য তাই ৭-১০ লাইনগুলো এক্সিকিউট হবে।
৭ নম্বর লাইন থেকে লুপের ব্লক শুরু
৮ নম্বর লাইনের জন্য আউটপুট 0 দেখতে পাব।
৯ নম্বর লাইনে num ভেরিয়েবলের মান increment হবে অর্থাৎ num ভেরিয়েবলের মান শূণ্য থেকে 1 বেড়ে num=1 হবে।
১০ নম্বর লাইনে while লুপের ব্লক শেষ সুতরাং প্রোগ্রাম ৬ নম্বর লাইনে ফিরে যাবে।
২য় ধাপঃ

৬ নম্বর লাইনে এখন num ভেরিয়েবলের মান 1 সুতরাং (num<10) কন্ডিশনের মান সত্য। সুতরাং ৭-১০ লাইনগুলো এক্সিকিউট হবে।
৮ নম্বর লাইনের জন্য আমরা 1 আউটপুট দেখতে পাব।
৯ নম্বর লাইনে num এর মান 1 থেকে 1 বেড়ে num=2 হবে।
১০ নম্বর লাইনে while লুপের ব্লক শেষ সুতরাং প্রোগ্রাম ৬ নম্বর লাইনে ফিরে যাবে।

৩য় ধাপঃ

৬ নম্বর লাইনে num ভেরিয়েবলের মান 2 সুতরাং (num<10) কন্ডিশনের মান সত্য। সুতরাং ৭-১০ লাইনগুলো এক্সিকিউট হবে।
৮ নম্বর লাইনের জন্য আমরা 2 আউটপুট দেখতে পাব।
৯ নম্বর লাইনে num এর মান 2 থেকে 1 বেড়ে num=3 হবে।
১০ নম্বর লাইনে কম্পিউটার এসে দেখবে while লুপের ব্লক শেষ সুতরাং প্রোগ্রাম আবার ৬ নম্বর লাইনে ফিরে যাবে।
………………………………. ১১তম ধাপঃ

৬ নম্বর লাইনে num ভেরিয়েবলের মান ১০ সুতরাং (num<10) কন্ডিশনের মান মিথ্যা। সুতরাং ৭-১০ লাইনগুলো এবার আর এক্সিকিউট হবে না।
কম্পাইলার লুপ শেষ করে ১১ নম্বর লাইনে চলে যাবে পরবর্তী কাজগুলো করার জন্য (যদি থাকে)।
নিচে while লুপের আরো একটি উদাহরণ দেয়া হলঃ

Output :
Enter a number : 10
10 * 1 = 10
10 * 2 = 20
10 * 3 = 30
10 * 4 = 40
10 * 5 = 50
10 * 6 = 60
10 * 7 = 70
10 * 8 = 80
10 * 9 = 90
10 * 10 = 100


for লুপঃ লুপে সবচেয়ে বেশি ব্যবহৃত হয় for লুপ। for লুপের প্রধান সুবিদা হল যে, লুপের তিনটি phases (initialization, condition, increment/decrement) for লুপে একটি সিঙ্গেল step এ পর্যায়ক্রমে রয়েছে। তাই for লুপের syntax অন্যান্য লুপ থেকে সহজ। লুপ বডির বাহিরে কোথাও counter variable অ্যাসাইন করতে হয় না। for লুপের syntax হলঃ

for(initialization phase ;
condition phase ;
increment/decrement phase) {
loop body
}

এখানে for এর পরে প্রথম ব্র্যাকেটের মধ্যে তিনটি অংশ (initialization phase; condition phase; increment phase) আছে। তিনটি অংশ দুইটি সেমিকোলনের মাধ্যমে আলাদা করা আছে। যখনই for লুপ লেখা হবে, তখনই দুইটি সেমিকোলনের মাধ্যমে আলাদা করা তিনটি অংশ থাকতেই হবে। এগুলোতে কিছু লেখা না থাকলেও সেমিকোলন দুইটি থাকতেই হবে। while লুপ এবং for লুপ একই রেজাল্ট এক্সিকিউট করে।

নিচের প্রোগ্রামটি দেখঃ

Output :
1 2 3 4 5 6 7 8 9 10
এখানে ৪ নাম্বার লাইনে num একটি ভেরিয়েবল ডিক্লেয়ার করা হয়েছে। কম্পাইলার প্রথমে for লুপের initialization অংশে যাবে। সেখানে যে স্টেটমেন্ট থাকবে সেটি সম্পন্ন হবে। এখানে আছে num = 1 । অর্থাৎ num এর মান 1 । এই কাজটি একবারই হবে। একবার হয়ে যাওয়ার পর যতবার লুপ চলবে এটি আর হবে না। অর্থাৎ প্রথম সেমিকোলনের আগের অংশে যা থাকবে সেটি পুরো লুপ চলার শুরুতে সম্পন্ন হবে এবং আর কখনই হবে না। এরপরের যে অংশটি আছে সেটি হল loop condition । Initialization সম্পন্ন হওয়ার পর কম্পাইলার condition চেক করবে যদি কন্ডিশন সত্য হয় তাহলে সরাসরি loop body তে চলে যাবে এবং লুপ বডিতে যা থাকবে তা এক্সিকিউট হবে। এখানে আছে num <= 10 । যেহেতু প্রথমেই num এর মান 1 Initialize করা হয়েছে অতএব এখন condition সত্য। তাহলে লুপের ভিতরে প্রবেশ করবে এবং ৬-৮ নাম্বার লাইন এক্সিকিউট হবে। ৭ নাম্বার লাইনে জন্য আমরা আউটপুট 1 দেখতে পাব। এরপর কম্পাইলার increment/decrement অংশে আসবে। এখানে যে স্টেটমেন্ট লেখা থাকবে সেটি সম্পন্ন হবে। এখানে আছে num++ । num++ মানে হল num=num+1 অর্থাৎ num এর মান এক বাড়বে। এরপর প্রোগ্রাম আবার condition চেক করে দেখবে। condition সত্য হলে আবার লুপের ভিতর প্রবেশ করবে। ৭ নাম্বার লাইনে জন্য আমরা আরো একবার আউটপুট 2 দেখতে পাব। আবার increment/decrement অংশে যাবে। num এর মান এক বাড়বে। এরপর condition চেক করবে। ৭ নাম্বার লাইনে জন্য আমরা আবার একটি আউটপুট 3 দেখতে পাব। এভাবে 10 পর্যন্ত আউটপুট পাবো। num এর মান increment হতে হতে যখন num এর মান 11 হবে তখন কন্ডিশন মিথ্যা হয়ে যাবে এবং লুপ বডিতে আর যাবে না।

নিচের প্রোগ্রামটি দেখুন, এখানে ইউজার থেকে একটি নাম্বার ইনপুট নিবে এবং ইনপুট নাম্বার পর্যন্ত নাম্বারগুলোকে যোগ করবে এবং যোগফল প্রিন্ট করবে।

Outputs:
Enter last no. up to which you want to add no : 5
Sum of first 5 numbers is 15
do…while লুপঃ সি ল্যাঙ্গুয়েজে do……while লুপ এবং while লুপ প্রায় একই রকম। এই দুই লুপের মধ্যে পার্থক্য হল, while লুপ আগে condition চেক করে তারপর loop body এক্সিকিউট করে আর do….while লুপে আগে loop body এক্সিকিউট করে তারপর condition চেক করে।
do……while লুপের syntax হলঃ

do
{
Statement Block or
Loop Body
}
while(test condition);
প্রথমে do এর loop body এক্সিকিউট হবে তারপর প্রোগ্রাম condition চেক করবে। Condition যদি সত্য হয় তাহলে do এর loop body আবার এক্সিকিউট হবে এবং Condition মিথ্যে না হওয়া পর্যন্ত লুপ চলতে থাকবে। নিচে do….while লুপ এর flowchart দেখঃ

নিচের প্রোগ্রামটিতে printf() ফাংশানটি প্রথমে একবার এক্সিকিউট হবে তার পর Condition চেক করবে। এই প্রোগ্রামে do…while লুপ ব্যবহার করে ১ থেকে ৫ পর্যন্ত প্রিন্ট করবে।

Output:
1 2 3 4 5
মনে রাখবে যে, লুপ condition লুপ বডির শেষে লেখা হয়। লুপ বডি শুরু হওয়ার আগে num ভেরিয়েবলকে 1 দ্বারা initialize করা হয়েছে। প্রথমে কোন condition চেক করা ছাড়াই loop body এক্সিকিউট হবে তারপর num ভেরিয়েবলের মান increment হবে। শেষ ধাপে, condition চেক করবে। এখন, যদি condition মিথ্যা হয় তাহলে কম্পাইলার do statement এ যাবে না, আর যদি condition সত্য হয় তাহলে কম্পাইলার পুনরায় do statement এ যাবে এবং আবার loop body এক্সিকিউট হবে।

লুপে break এবং continue স্টেটমেন্ট এর ব্যবহারঃ সি ল্যাঙ্গুয়েজে break এবং continue নামে দুইটি built in স্টেটমেন্ট আছে, যেগুলো প্রোগ্রামের সাধারণ ধারাকে পরিবর্তন করতে সক্ষম। লুপ যেখানে একটি condition মিথ্যা না হওয়া পর্যন্ত কাজ চালিয়ে যায়, break এবং continue স্টেটমেন্ট সেখানে কিছু স্টেটমেন্ট skip করে প্রোগ্রাম পরবর্তি ধাপে নিয়ে যেতে সক্ষম। নিচের উদাহরণটি দেখুনঃ

এই প্রোগ্রামটিতে 1 থেকে 10 পর্যন্ত প্রিন্ট করবে। যদিও while লুপের condition হচ্ছে (n 10 হয়, তবে break; কর মানে লুপ থেকে বের হয়ে যাও বা লুপটি ভেঙে দাও। break সব সময় যেই লুপের ভেতর থাকে সেটির বাইরে প্রোগ্রামটিকে নিয়ে আসে। সুতরাং n-এর মান 10 প্রিন্ট হওয়ার পরে এর মান এক বাড়বে (n++;) অর্থাৎ n-এর মান হবে 11 । আর তখন n > 10 সত্য হবে, ফলে প্রোগ্রামটি if কন্ডিশনের ভেতরে ঢুকে যাবে। সেখানে গিয়ে সে দেখবে তাকে break করতে বলা হয়েছে তাই সে লুপের বাইরে চলে যাবে।

নিচে আরো একটি প্রোগ্রাম দেয়া হলঃ

Output :
Enter a number : 7
Prime Number
Continue এমন একটি স্টেটমেন্ট যেটি break এর উলটো কাজ করে। কোনো জায়গায় continue ব্যবহার করলে লুপের ভেতরে continue-এর পরের অংশের কাজ আর হয় না।
নিচের প্রোগ্রামটি দেখুনঃ

Output :
1 2
2 1
নেস্টেড loop: একটি লুপের ভিতরে যদি আরেকটি লুপ থাকে তাহলে তাকে নেস্টেড লুপ বলে। নেস্টেড লুপের প্রথম লুপকে Outer Loop এবং ভিতরের লুপকে Inner Loop বলে। নিচের প্রোগ্রামটি দেখঃ

Output:
*
**
***
****
*****




 

Comments

Popular posts from this blog

সি প্রোগামের অপারেটর কি??? কিভাবে কাজ করে?? বিস্তারিত জানুন-smsakib5

সি প্রোগ্রামিং এর ক্যারেকটার সেট ও টোকেন(Token & Charecter &Token)-smsakib5

Home Page-Computer Science