লুপ এবং লুপের বিস্তারিত আলোচনা

আসসালামুয়ালাইকুম। সবার কি অবস্থা ? অনেকদিন পর লিখতে বসলাম! যাই হোক আজ লুপ নিয়ে আলোচনা করব।

 

লুপ মানে হচ্ছে পুনরাবৃত্তি বা কোনো একটা নির্দিষ্ট কাজ বারবার হতে থাকা। ধরা যাক, আমরা চাচ্ছি ১ থেকে ১০ পর্যন্ত বিজোড় নাম্বারগুলো আমরা প্রিন্ট করব। এজন্য আমরা চাইলে প্রত্যেকটা বিজোড় সংখ্যা প্রিন্ট করতে পারি ।  কিন্তু, এটা একদিকে অনেক সময়সাপেক্ষ এবং এরকম করলে প্রোগ্রাম অনেক বড় হয়ে যায়! সেই সাথে দেখতেও ভালো দেখায় না। এজন্যই মূলত কোনো কাজ বারবার করতে চাইলে আমরা লুপ ব্যবহার করব!

একটি লুপের মুলত তিনটি অংশ থাকতেই হবে। সেগুলো হচ্ছেঃ

১) Initialization – অর্থাৎ, কোনো একটি ভেরিয়েবলকে ডিফাইন করা যার সাপেক্ষে আমাদের লুপ চলবে। যেমনঃ int j = 0;

২) Condition – লুপ ঠিক কতক্ষন পর্যন্ত চলবে তা বলে দেয়া কোনো একটি শর্ত জুড়ে দিয়ে ।

৩) Increment/ Decrement –  অর্থাৎ, ভেরিয়েবল এর মান কমানো বা বাড়ানো। এ সম্পর্কে নিচে বিস্তারিত বলা হয়েছে।

এখন এই লুপ ব্যবহার করার বেশ কয়টা নিয়ম বা সিস্টেম আছে। এখানে আমি ৩টা প্রধান উপায় নিয়ে আলোচনা করব।

 

মুলত, সবগুলো লুপেরই এই তিনটি অংশ থাকে। শুধু, লিখার ধরনটা ভিন্ন !

১) While

While লুপে প্রথমে যেকোনো একটি ভেরিয়েবলকে ডিফাইন করতে হয়। তারপর যেকোনো একটি শর্ত জুড়ে দিতে হয় যাতে লুপ কতক্ষন চলবে তা বলা হয়। যেমনঃ

Int I =0;  // variable declaration

While (I < 10) {

// do this;

}

এখন ভুলেও এই লুপ রান করে থাকলে আমি দায়ি থাকবো না। 😛 কারন, এই লুপটি হচ্ছে ইনফিনিট লুপ। এটি কখনো বন্ধ হবে না। কেন ? চলো দেখে আসি।

 

এখানে আমি প্রথমে একটা ভেরিয়েবলকে ডিফাইন করেছি । যার value হচ্ছে ০ । এখন লুপে একটা কন্ডিশন দিতে হয়। এখানে সেই কন্ডিশন হচ্ছে যদি I ১০ এর চাইতে ছোট হয় তবে কিছু একটা রিপিট হবে। তো আমরা দেখতেই পাচ্ছি I  ১০ এর চাইতে ছোট। তাই, এখন প্রোগ্রাম { } এর ভিতরে যাবে এবং যা আছে এর মধ্যে তা রান করবে। রান করা শেষে সে আবার কন্ডিশন চেক করবে। এখন I  এর value কিন্তু এখনো ০ ই আছে। অর্থাৎ, কন্ডিশন আবারো সত্য তাই লুপ আবারো { } এর মধ্যে থাকা স্টেটমেন্টগুলো রান করবে। এভাবে চলতেই থাকবে! কারো বাবার সাধ্য নাই এই প্রোগ্রামকে থামানোর 😛 কিন্তু, আমরা তো প্রোগ্রামার। তাই, এটাকে সায়েস্তা করার বা বন্ধ করার উপায় আমাদের জানা থাকা উচিত। কি সেই উপায় ?

 

আমরা প্রত্যেকবার কন্ডিশন চেক করার পর যখন লুপের মধ্যে ঢুকবে তখন ভেরিয়েবল এর মান চেঞ্জ করে দেব। অর্থাৎ, কমাবো অথবা বাড়িয়ে দেব। এখন, আমরা নিশ্চয়ই জানি I = I +1 or I = I -1 মানে কি ? এর মানে হচ্ছে I এর ভেলু এক করে বাড়ানো বা এক করে কমানো! এখন আমাদের আগের প্রোগ্রামে যদি আমরা I  এর ভেলু এক করে বাড়াই তাহলে কি হবে ? তাহলে প্রত্যেকবার প্রোগ্রাম এর মধ্যে থাকা স্টেটমেন্টগুলো প্রিন্ট হয়ে লুপ থেকে বের হওয়ার আগে এক করে বাড়বে। যেহেতু ০ থেকে শুরু তাই প্রথম বার লুপ থেকে বের হওয়ার পর I এর মান হবে ১। যা কিনা কন্ডিশনকে সমর্থন করে। অর্থাৎ, এটি ১০ এর চাইতে ছোট। কন্ডিশন সত্য হলে কি হয় ? কন্ডিশন সত্য হলে প্রোগ্রাম { }  এর মধ্যে প্রবেশ করে এবং এখানে যা আছে তা প্রিন্ট করে। তারপর, আবার বের হওয়ার আগে ভেরিয়েবল ১ বৃদ্ধি পায়!

Int I = 0;

While (I <10){

// do this;

I = I + 1;  // I increases by 1

}

এখন আমরা চাইলে I = I +1 কে I ++  এবং I = I -1 কে I– লিখতেই পারি! এখানে যে আমরা সবসময় এক করে বাড়াবো বা কমাবো তা কিন্তু নয় ! তুমি চাইলে দুই , তিন যত খুশি করে বাড়াতে বা কমাতে পারো !

 

২) for

For লুপটা আমার অনেক পছন্দের। এর কার্যক্রম while এর মতই । তাই বিস্তারিত না বলে শুধু কিভাবে লিখতে হয় তা বলছি।

For ( initialization ; condition ; increment/ decrement ){

// do something;

}

 

এখানে কোনো একটি ভেরিয়েবলকে প্রথমে initialize বা ডিফাইন করতে হবে। তারপর কন্ডিশন দিতে হবে । তারপর, Increment বা  Decrement।

এখন প্রথমে লুপ initialize হবে তারপর কন্ডিশন চেক করবে তারপর লুপের ভিতরের কাজ করে ভের হওয়ার আগে increment / decrement হবে ।  যেমনঃ

For ( int I = 0 ; I< 10; I++) {

// do something;

}

 

৩) do…while

এই লুপও প্রায় সেইম তব এখানে মজার ব্যাপার হচ্ছে যে এই লুপ প্রথমবার কন্ডিশন চেক না করেই রান হয়। অর্থাৎ, এটি কমপক্ষে একবার হলেও চলবে। মজার না ব্যাপারটা? 😉

 

Do {

// print anything;

Increment / decrement;

} while ( condition)

এখানেও আগের মত কন্ডিশন চেক করে তবে লুপ থেকে বের হওয়ার পর! পার্থক্যটা নিশ্চয়ই বুঝতে পেরেছো ?

Do {

//print something

I++;

} while ( I< 10)

 

তোমরা চাইলে যেকোনো ভুল কন্ডিশন দিয়ে দেখতে পারো ! তাইলে দেখতে পাবা যে লুপ প্রথম বার {} এর মধ্যে থাকা স্টেটমেন্ট প্রিন্ট করবে!

আরেকটা লুপ আছে foreach নামে । ওইটা আপাতত থাক। পরে কোনো একসময় আলোচনা করব

Reference:

  1.  https://www.tutorialspoint.com/java/java_loop_control.htm
  2. https://www.youtube.com/watch?v=6djggrlkHY8

আজ এ পর্যন্তই। কোনো প্রশ্ন থাকলে কিংবা পোষ্ট কেমন লাগলো তা জানাতে ভুলো না ।

ধন্যবাদ

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s