Skip to main content

পাঠ ৪: বারবার আচরণ

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

পূর্ববর্তী পৃষ্ঠা থেকে একই প্রকল্প প্রবাহ, চারটি if বিবৃতি এবং তীরচিহ্ন সহ, প্রতিটি if বিবৃতির অবস্থা নির্দেশ করে এবং একমাত্র বিবৃতি যা সত্য হিসাবে রিপোর্ট করে তা হল সামনের চোখটি কোনও রঙ সনাক্ত করে না, যার অর্থ রোবটটি এগিয়ে যাবে।

শেখার ফলাফল

  • একটি অসীম while লুপ চিরতরে লুপের ভিতরের আচরণগুলি পুনরাবৃত্তি করে তা চিহ্নিত করুন।
  • একটি প্রকল্পে কেন অসীম whileলুপ ব্যবহার করা হবে তা বর্ণনা করো।
  • একটি অসীম whileলুপের ভিতরে একাধিক if স্টেটমেন্ট আছে এমন একটি প্রকল্পের প্রকল্প প্রবাহ বর্ণনা করো।
  • লুপের সাথে অসীম এর সাথে স্টেটমেন্ট ব্যবহার করলে কেন ব্যবহার করা হয় তা ব্যাখ্যা করো।

বারবার শর্ত পরীক্ষা করা

আগের পাঠে যেমন দেখা গেছে, if বিবৃতিটি শুধুমাত্র একবার একটি শর্ত পরীক্ষা করে। এর মধ্যে থাকা শর্তগুলির জন্য যদি স্টেটমেন্ট বারবার চেক করা হয়, প্রকল্পটিকে বারবার শুরুতে লুপ ব্যাক করতে হবে। এটি করার জন্য, একটি অসীম whileলুপ প্রয়োজন।

সত্য থাকাকালীন:
	অপেক্ষা করুন (5, MSEC)

একটি অসীম while লুপ এমন একটি শর্ত ব্যবহার করে যা সর্বদা True তে মূল্যায়ন করে। যখন শর্তটি সত্য হয় তখন লুপ লুপের বডি এক্সিকিউট করে, তাই লুপের ভিতরের কমান্ডগুলি অসীমভাবে পুনরাবৃত্তি হয়।

অসীম whileলুপ এবং ডিস্ক মেজ সমস্যা

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

এখানে ইন্ডেন্টেশনটি লক্ষ্য করুন। if স্টেটমেন্টের সকলকে অসীম while লুপের মধ্যে ইন্ডেন্ট করা হয়েছে। অসীম while লুপের শেষ wait কমান্ড দ্বারা চিহ্নিত করা হয়।

def main():
    while True:
        
        # যদি সামনের চোখ সবুজ শনাক্ত করে তাহলে ডানে ঘুরুন
        যদি front_eye.detect(GREEN):
            drivetrain.turn_for(RIGHT, 90, DEGREES)

        # যদি সামনের চোখ নীল শনাক্ত করে তাহলে বামে ঘুরুন
        যদি front_eye.detect(BLUE):
            drivetrain.turn_for(LEFT, 90, DEGREES)

        # যদি সামনের চোখ লাল শনাক্ত করে তাহলে থামুন
        যদি front_eye.detect(RED): 
            drivetrain.stop()

        # যদি সামনের চোখ কোনটিই শনাক্ত না করে তাহলে সামনের দিকে চালান
        যদি front_eye.detect(NONE): 
            drivetrain.drive(FORWARD)

        wait(5, MSEC)

পূর্ববর্তী পাঠ থেকে প্রকল্পে, মধ্যে শর্তাবলী যদি বিবৃতি শুধুমাত্র একবার পরীক্ষা করা হয়। যেহেতু এর মধ্যে থাকা শর্তগুলি যদি স্টেটমেন্টগুলি শুধুমাত্র একবার চেক করা হয়, VR রোবটটি চিরতরে এগিয়ে যায় কারণ প্রকল্পের শুরুতে কোনও রঙ সনাক্ত না হওয়ার শর্তটি সত্য হিসাবে রিপোর্ট করা হয়েছিল।

এখন যেহেতু অসীম যখন লুপ যোগ করা হয়েছে, প্রতিটি শর্ত if স্টেটমেন্ট বারবার চেক করা হবে।

  • ইনফিনিটwhile লুপের অবস্থা সর্বদা সত্য, এবং তাই ইনফিনিটwhile লুপের ভিতরের কোড সর্বদা কার্যকর হবে। এটি ক্রমাগতভাবে এর শর্তগুলি পরীক্ষা করবে যদি বিবৃতি প্রকল্পটি চলমান থাকে। 
    • মনে রাখবেন যে while লুপের 'ভিতরের' অংশটি ইন্ডেন্টেশন দ্বারা নির্দেশিত হয়।
  • প্রকল্পের প্রবাহের সময়, যদি if স্টেটমেন্টের শর্ত True হয়, তাহলে if স্টেটমেন্টের ভিতরের কমান্ডগুলি কার্যকর করা হয়। যদি if স্টেটমেন্টের শর্ত False হয়, তাহলে if স্টেটমেন্টের ভিতরের কমান্ডগুলি কার্যকর করা হবে না এবং প্রকল্পের প্রবাহ পরবর্তী কমান্ড পর্যন্ত অব্যাহত থাকবে। এটি ভিআর রোবটকে নির্দিষ্ট রঙ শনাক্ত করার পর ঘুরতে বা থামার মতো বিচ্ছিন্ন আচরণ করতে সক্ষম করে।
  • যদি স্টেটমেন্ট অসীম যখনলুপের সাথে ব্যবহার করা হয় যাতে শর্তগুলি ক্রমাগত পরীক্ষা করা হয়, মূলত লুপের মধ্যে যদিস্টেটমেন্টের প্রজেক্ট ফ্লোকে একত্রিত করে।

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