Skip to main content

পাঠ ৪: নেস্টেড লুপ ব্যবহার করা

আগের পাঠে, আপনি VR রোবটকে ডিস্ক মুভার প্লেগ্রাউন্ড এর তিনটি নীল ডিস্ক নীল গোলটিতে নিয়ে যাওয়ার, তোলার এবং সরানোর নির্দেশ দেওয়ার জন্য একটি প্রকল্প তৈরি করেছিলেন। এই পাঠে, আপনি নেস্টেড লুপ ব্যবহার করে ডিস্ক মুভার প্লেগ্রাউন্ড এ প্রতিটি রঙের একটি ডিস্ক তুলে তার সংশ্লিষ্ট রঙিন লক্ষ্যে স্থানান্তর করার জন্য একটি প্রকল্প তৈরি করবেন!

ম্যাচিং রঙের লক্ষ্যে প্রতিটি রঙের প্রথম ডিস্ক সহ ডিস্ক মুভার খেলার মাঠের উপর থেকে নীচের দৃশ্য। ভিআর রোবটটি সবুজ গোলের প্রান্তে, নীচের ডান কোণে ডান পাশের দেয়ালের দিকে মুখ করে আছে।

শেখার ফলাফল

  • কিভাবে নেস্ট লুপ শনাক্ত করুন.
  • নেস্টেড লুপের মাধ্যমে একটি প্রকল্পের প্রবাহ বর্ণনা কর।
  • একটি প্রকল্পে নেস্টেড লুপ কেন ব্যবহার করা হবে তা ব্যাখ্যা কর।

নেস্টেড লুপ কি?

এই কোর্সের পূর্ববর্তী ইউনিট এবং পাঠগুলিতে, আপনি নিয়ন্ত্রণ বিভাগের লুপগুলি ব্যবহার করেছেন যেমন লুপের জন্য, while লুপ, এবং infinite whileলুপগুলি আচরণ পুনরাবৃত্তি করার জন্য। একটি লুপ অন্য লুপের ভিতরে স্থাপন করাকে 'নেস্টিং' বলে। নেস্টেড লুপগুলি এমন প্রকল্পগুলিতে সহায়ক যেখানে একটি VR রোবট একই আচরণ একাধিকবার পুনরাবৃত্তি করে, যেমন খেলার মাঠে একাধিক ডিস্ক সরানো। নেস্টিং লুপগুলি একটি প্রকল্পকে আরও সহজে বোঝার জন্য সংগঠিত এবং ঘনীভূত করতে পারে। এটি কোডের প্রেক্ষাপট এবং উদ্দেশ্য আরও ভালভাবে বোঝার জন্য সহায়ক হতে পারে, সেইসাথে ত্রুটিগুলি সনাক্ত করা এবং একটি প্রকল্পের সমস্যা সমাধান করা সহজ করে তোলে। 

উদাহরণস্বরূপ, তিনটি নীল ডিস্ককে নীল লক্ষ্যে সরানোর জন্য, একটিforলুপ ব্যবহার করে একটি ডিস্ক সংগ্রহের প্রক্রিয়াটি একাধিকবার পুনরাবৃত্তি করা যেতে পারে। এখানে দেখানো প্রকল্পটি পাঠ ৩ প্রকল্পটি স্থাপন করে যেখানে প্রথম নীল ডিস্কটিকে নীল লক্ষ্যে for লুপের ভিতরে সরানো হবে, প্যারামিটারটি 3 তে সেট করা হবে। লক্ষ্য করুন কিভাবে পূর্ববর্তী প্রকল্পের চারটি অংশ এর মধ্যে লুপের জন্য ইন্ডেন্ট করা হয়েছে।

def main():
    রেঞ্জ(3) এ পুনরাবৃত্তি_গণনার জন্য:
        #1। প্রথম ডিস্কে ড্রাইভ করুন
        যখন down_eye.near_object() নয়:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 2। ডিস্ক
        magnet.energize(BOOST)

        # 3 তুলে নাও। লক্ষ্যে গাড়ি চালান
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 4. গোলে ডিস্কটি ফেলে দিন
        magnet.energize(DROP)

        drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)

    wait(5, MSEC)

যখন আপনি লুপগুলিকে 'নেস্ট' করেন, তখন বাইরের লুপটি ভিতরের লুপটি কতবার কার্যকর করা হবে তা নিয়ন্ত্রণ করে।  এই প্রকল্পে,লুপের জন্যহল বাইরের লুপ, এবং লুপের আচরণগুলি তিনবার পুনরাবৃত্তি করবে।

উপরে থেকে প্রকল্পটি লাল বাক্সে হাইলাইট করা for লুপ সহ। মূল সংজ্ঞার নীচে ইন্ডেন্ট করা হয়েছে, রেঞ্জ (3) কোলনে পুনরাবৃত্তির জন্য আন্ডারস্কোর গণনা হল লুপের শুরু, এবং প্রকল্পের চারটি অংশ তার নীচে ইন্ডেন্ট করা হয়েছে। প্রজেক্টের নীচের দিকে for loop কমান্ডের সাথে সারিবদ্ধভাবে একটি wait কমান্ড রয়েছে, যা লুপটি কোথায় শেষ হয় তা দেখায়।

ভিতরের লুপগুলি হল সেই লুপগুলি যা বাইরের লুপের মধ্যে থাকে। এই উদাহরণে,whileলুপের প্রতিটি (ডিস্কে এবং লক্ষ্যে ড্রাইভ করার জন্য) হল 'ইনার লুপ' যা প্রতিবার প্রকল্পটিforলুপের মধ্য দিয়ে যাওয়ার সময় কার্যকর করা হয়।উপরে থেকে একই প্রকল্প, প্রতিটি ভেতরের while লুপ একটি লাল বাক্সে হাইলাইট করা হয়েছে। প্রকল্পের প্রথম এবং তৃতীয় মন্তব্য বিভাগে while লুপ রয়েছে যাতে রোবটের সেন্সরগুলি ব্যবহার করে একটি ডিস্ক সনাক্ত না হওয়া পর্যন্ত গাড়ি চালানো যায়, তারপর প্রাচীর সনাক্ত না হওয়া পর্যন্ত।

আপনার তথ্যের জন্য

VEXcode VR পাইথন প্রকল্পগুলিতে ইন্ডেন্টেশন গুরুত্বপূর্ণ। নেস্টিং লুপ করার সময় আপনি ওয়ার্কস্পেসে ধূসর ইন্ডিকেটর লাইনগুলিকে ভিজ্যুয়াল সাহায্য হিসেবে ব্যবহার করতে পারেন, যাতে আপনার প্রজেক্ট উদ্দেশ্য অনুযায়ী কাজ করে। প্রতিটি লাইন একটি লুপের শুরু এবং শেষ নির্দেশ করে।

উপরে থেকে একই প্রকল্প, লাল বাক্সে নির্দেশিকা রেখাগুলি হাইলাইট করে, প্রকল্পের বাকি অংশের সাথে সম্পর্কিত প্রতিটি অভ্যন্তরীণ লুপের ইন্ডেন্টেশন সারিবদ্ধতা দেখায়। for লুপ লাইনটি সরাসরি চূড়ান্ত wait কমান্ড পর্যন্ত প্রসারিত হয়। এবং প্রতিটি while লুপ লাইন stop কমান্ড পর্যন্ত প্রসারিত হয়।

একটি নেস্টেড লুপ প্রকল্পের প্রবাহ 

এই উদাহরণে, প্রতিবারforলুপ পুনরাবৃত্তি হলে, একটি নীল ডিস্ক তুলে নীল গোলে ফিরিয়ে দেওয়া হয়। 

প্রথম পুনরাবৃত্তির পরে, প্রথম নীল ডিস্কটি নীল গোলে ফিরিয়ে দেওয়া হয় এবং VR রোবটটি দ্বিতীয় ডিস্ক সংগ্রহের জন্য প্রস্তুত হয়ে যায়।

উপরে থেকে প্রকল্পের পাশাপাশি একটি ছবি বাম দিকের কর্মক্ষেত্রে দেখানো হয়েছে, এবং ডানদিকে খেলার মাঠের জানালা দেখানো হয়েছে। এই প্রকল্পে for loop কমান্ড থেকে পুরো প্রকল্প জুড়ে একটি কমলা তীর চিহ্ন র‍্যাপ করা আছে, যা for loop এর প্রথম পুনরাবৃত্তিকে চিত্রিত করে। খেলার মাঠে, প্রথম নীল ডিস্কটি নীল গোলটিতে থাকে এবং ভিআর রোবটটি গোলের সামনের প্রান্তে অবশিষ্ট নীল ডিস্কগুলির দিকে মুখ করে অবস্থিত থাকে, যা প্রথম পুনরাবৃত্তির পরে রোবটের অবস্থান নির্দেশ করে।

দ্বিতীয় পুনরাবৃত্তির পরে, দ্বিতীয় নীল ডিস্কটি সংগ্রহ করা হয় এবং VR রোবটটি তৃতীয় ডিস্ক সংগ্রহের জন্য প্রস্তুত হয়ে যায়।

উপরে থেকে প্রকল্পের পাশাপাশি একটি ছবি বাম দিকের কর্মক্ষেত্রে দেখানো হয়েছে, এবং ডানদিকে খেলার মাঠের জানালা দেখানো হয়েছে। এই প্রকল্পে for loop কমান্ড থেকে পুরো প্রকল্প জুড়ে একটি কমলা তীর চিহ্ন র‍্যাপ করা আছে, যা for loop এর দ্বিতীয় পুনরাবৃত্তিকে চিত্রিত করে। খেলার মাঠে, নীল গোলটিতে দুটি নীল ডিস্ক রয়েছে এবং ভিআর রোবটটি গোলের সামনের প্রান্তে অবশিষ্ট নীল ডিস্কের দিকে মুখ করে অবস্থিত, যা দ্বিতীয় পুনরাবৃত্তির পরে রোবটের অবস্থান নির্দেশ করে।

তৃতীয় পুনরাবৃত্তির পরে, তৃতীয় নীল ডিস্কটি সংগ্রহ করা হয় এবং VR রোবট চলা বন্ধ করে দেয়। for লুপটি এখন তার পরিসর সম্পন্ন করেছে, তাই প্রকল্পটি সম্পন্ন হয়েছে। 

উপরে থেকে প্রকল্পের পাশাপাশি একটি ছবি বাম দিকের কর্মক্ষেত্রে দেখানো হয়েছে, এবং ডানদিকে খেলার মাঠের জানালা দেখানো হয়েছে। এই প্রকল্পে for loop কমান্ড থেকে পুরো প্রকল্প জুড়ে একটি কমলা তীর চিহ্ন র‍্যাপ করা আছে, যা for loop এর তৃতীয় পুনরাবৃত্তিকে চিত্রিত করে। খেলার মাঠে, তিনটি নীল ডিস্কই নীল গোলকটিতে থাকে এবং ভিআর রোবটটি গোল বাক্সের ঠিক বাইরে গোলক থেকে দূরে অবস্থিত থাকে, যা চূড়ান্ত পুনরাবৃত্তির পরে রোবটের অবস্থান নির্দেশ করে।

 

এই পাঠের বাকি অংশটি চালিয়ে যেতে পরবর্তী বোতামটি নির্বাচন করুন।