Skip to content

Latest commit

 

History

History
executable file
·
122 lines (94 loc) · 9.6 KB

loop.md

File metadata and controls

executable file
·
122 lines (94 loc) · 9.6 KB

লুপ

লুপ হচ্ছে এমন একটি কমান্ড যার সাহায্যে একটি কাজ অনেকবার করা যায়। একটি লেখা যদি আপনি কয়েকবার প্রিন্ট করতে চান তাহলে হয়তো আপনি নিচের মত একটা প্রোগ্রাম লিখে ফেলতে পারবেন ।

// "প্রোগ্রামিং অনেক মজার" লেখাটি চার বার প্রিন্ট হবে।
দেখাও("প্রোগ্রামিং অনেক মজার");
দেখাও("প্রোগ্রামিং অনেক মজার");
দেখাও("প্রোগ্রামিং অনেক মজার");
দেখাও("প্রোগ্রামিং অনেক মজার");

উপরের প্রোগ্রামটিতে আপনি একই কোড ৪ বার লিখলেন, বিষয়টা কোন ব্যাপারই না। কিন্তু যখন আপনাকে বলা হবে ১০ লক্ষ বার প্রিন্ট করতে তখন হয়তো প্রোগ্রামিং বিষয় আপনার জন্য আর মজার থাকছে না। ঘাবড়াবার কিছুই নেই, এই সমস্যা সমাধানের জন্য প্রতিটি প্রোগ্রামিং ল্যাঙ্গুয়েজে একটি মজার ফিচার রয়েছে যাকে আমারা লুপ বলি।

লুপ এর সিন্ট্যাক্স

লুপ( কতবার_ঘুরবে? ){
  // কোড .....
}

একটি লুপ ব্লকের (দ্বিতীয় বন্ধনীর মধ্যে) মধ্যে যে কোড গুলো লিখবেন সেগুলো কতবার রিপিট হবে সেটা আপনি বলে দিলেই সম্পুর্ন কোড টি ততবার ঘুরবে। এবার দেখি লুপ দিয়ে কিভাবে একটি লেখা ৪ বার প্রিন্ট করা যায়।

লুপ( ৪ বার ){
  দেখাও("প্রোগ্রামিং অনেক মজার"); // এই লাইন টি ৪ বার রান হবে, অর্থাৎ ৪ বার প্রিন্ট করবে।
}

ছোটবেলায় আমাদের টিচাররা প্রায়ই একটা বাড়ির কাজ দিত : "হাতের লেখা সুন্দর করতে হবে" এটা ১০০ বার লিখে আনতে হবে। এখন আমি যদি এটার জন্য একটা প্রোগ্রাম বানাতে চাই তাহলে সেটা হবে এমন:

//হাতের লেখা সুন্দর করার প্রোগ্রাম
লুপ( ১০০ বার ){
  দেখাও("হাতের লেখা সুন্দর করতে হবে");
}

লুপ এর ইন্ডেক্স

প্রোগ্রামিং এ ইন্ডেক্স বলতে পজিশন বা লোকেশনকে নির্দেশ করে। লুপ এ ইন্ডেক্স বলতে বুঝি যে এই মূহূর্তে কোড ব্লক টি কততম বার এক্সিকিউট হতে যাচ্ছে। পতাকায় লুপ ব্লকের মাঝে _ইন্ডেক্স নামে একটি রিড-অনলি ভ্যারিয়েবল আছে যা লুপের বর্তমান পজিশন নির্দেশ করে।

নোট: _ইন্ডেক্স এর মান ০ থেকে শুরু হয়

// ০ থেকে ৯ পর্যন্ত প্রিন্ট করার প্রোগ্রাম
লুপ(১০ বার){
  দেখাও(_ইন্ডেক্স);
}

ইনফিনিট লুপ

কতবার লুপটি ঘুরবে তা উল্ল্যেখ না থাকলে এটি ইনফিনিট বা অসীম লুপ হিসেবে ধরা হবে, কোড ব্লকটি আজীবন ঘুরতে থাকবে। অন্যান্য ল্যাঙ্গুয়েজ এ ইনফিনিট লুপ অনেকটা এমন: while(true){ }

সতর্কতা:

ইনফিনিট লুপ না জেনে ব্যবহার না করাই উত্তম । ইনফিনিট লুপ ব্যবহারের ক্ষেত্রে অবশ্যই সেখান থেকে বের হওয়ার ব্যবস্থা রাখতে হবে।

থামো বা ব্রেক স্টেটমেন্ট

একটি লুপের মাঝে যখনই "থামো;" ব্যবহার করবেন তখনই লুপটি বন্ধ হয়ে যাবে, অর্থাৎ আপনি লুপ থেকে বের হয়ে যাবেন।

// ইনফিনিট লুপ
লুপ(){
    ধরি বয়স = _ইন্ডেক্স + ১;
    যদি(বয়স ৮০ হয়){
      দেখাও("এ দুনিয়া থেকে বিদায় নিলাম");
      থামো ; // লুপ বন্ধ করা
    }নাহলে{
      দেখাও("কফি খাই কোড করি");
    }
}
দেখাও("লুপ শেষ");

/* আউটপুট:
৭৯ বার "কফি খাই কোড করি" প্রিন্ট হবে
তারপর "এ দুনিয়া থেকে বিদায় নিলাম" প্রিন্ট হবে
তারপর "লুপ শেষ" প্রিন্ট হবে
*/

কন্টিনিউ স্টেটমেন্ট

কন্টিনিউ স্টেটমেন্ট অনেকটা ব্রেক স্টেটমেন্ট এর মত । তবে এটি লুপ থামিয়ে দেয় না বরং একটি লুপকে পরবর্তী কোড রান করতে বাধা দেয় এবং পরবর্তী লুপ রান করে। সহজভাবে বলতে গেলে এটি অনেকটা SKIP বাটনের মত কাজ করে। কন্টিনিউ স্ট্যাটমেন্ট এ "চলবে" কিওয়্যার্ডটি ব্যবহার করা হবে। তবে পতাকার স্ট্যাবল রিলিজে এই কিওয়্যার্ডটি পরিবর্তন হতে পারে।

লুপ(১০ বার){
  যদি(_ইন্ডেক্স % ২ == ০ ){
    চলবে; // পরবর্তী লাইন গুলো রান হবে না, আরেকটি লুপ শুরু হবে।
  }
  দেখাও(_ইন্ডেক্স + ১);
}

// আউটপুট: ২,৪,৬,৮,১০
// ১ থেকে ১০ পর্যন্ত জোড় সংখ্যা গুলো প্রিন্ট হবে।

রেগুলার লুপ

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

লুপ( এসাইনমেন্ট স্টেটমেন্ট; কন্ডিশন  স্টেটমেন্ট; ইনক্রীমেন্ট বা ডিক্রীমেন্ট  স্টেটমেন্ট) {
    // কোড
}

এসাইনমেন্ট স্টেটমেন্ট: এটি লুপ শুরু হওয়ার আগে এক্সিকিউট হয়। এখানে ভ্যারিয়েবলের মান এসাইন করা হয়।

কন্ডিশন স্টেটমেন্ট: এখানে লুপটি কতবার চলবে তার কন্ডিশন দিতে হবে। এই স্টেটমেন্ট প্রতিবার এক্সিকিউট হবে এবং যতক্ষন কন্ডিশন সত্য (TRUE) হবে ততক্ষন লুপটি চলবে।

ইনক্রীমেন্ট বা ডিক্রীমেন্ট স্টেটমেন্ট: আপনার কোড ব্লকটি এক্সিকিট হবার পর প্রতিবার এটি এক্সিকিউট হবে। এখানে ভ্যারিয়েবলের মান বাড়াতে বা কমাতে পারবেন।

লুপ( ধরি ই = ১; ই<৪ ; ই++ ){
  দেখাও(ই+" নং লুপ চলমান");
}

/* আউটপুট:
১ নং লুপ চলমান
২ নং লুপ চলমান
৩ নং লুপ চলমান
*/