Skip to main content

পাঠ ২: একটি While লুপ ব্যবহার করা

এই পাঠে, আপনি বাম্পার সেন্সর এবং whileলুপ ব্যবহার করে একটি প্রকল্প তৈরি করবেন। মিনি-চ্যালেঞ্জে, আপনি ওয়াল মেজের শুরু থেকে 'A' অক্ষর পর্যন্ত নেভিগেট করার জন্য এই দক্ষতাগুলি প্রয়োগ করবেন।

ওয়াল মেজ খেলার মাঠের ড্যাশবোর্ড দেখাচ্ছে না। ভিআর রোবটের সামনে একটি দেয়াল রয়েছে যা এটি স্পর্শ করছে, যা ইঙ্গিত দেয় যে গোলকধাঁধায় এগিয়ে যাওয়ার জন্য এটিকে ঘুরতে হবে।

শেখার ফলাফল

  • কমান্ডের আচরণ সম্পূর্ণ না হলেও, অপেক্ষমাণ কমান্ডের অধীনে প্রকল্পটি অব্যাহত রাখার বিষয়টি চিহ্নিত করুন।
  • প্রকল্পটি চালিয়ে যাওয়ার আগে একটি অপেক্ষা কমান্ড আচরণটি সম্পূর্ণ করে কিনা তা চিহ্নিত করুন।
  • চিহ্নিত করুন যে whileলুপ বারবার একটি বুলিয়ান অবস্থা পরীক্ষা করবে এবং শর্তটি True রিপোর্ট না করা পর্যন্ত পরবর্তী কমান্ডে যাবে না।
  • সেন্সরের অবস্থা পরীক্ষা করার জন্য whileলুপটি নন-ওয়েটিং কমান্ডের সাথে (যেমন ড্রাইভ) ব্যবহৃত হয় কিনা তা চিহ্নিত করুন।
  • নয়কীওয়ার্ডটি বুলিয়ান কন্ডিশনের মানকে True থেকে False অথবা False থেকে True তে উল্টে দেয় কিনা তা চিহ্নিত করুন। 
  • left_bumper.pressedএবং right_bumper.pressedকমান্ডগুলি whileলুপে একটি True বা False মান প্রদান করে তা চিহ্নিত করুন।
  • বাম্পার সেন্সর চাপা না হওয়া পর্যন্ত একটি VR রোবট ড্রাইভ ফরওয়ার্ড আছে এমন একটি প্রকল্প কীভাবে তৈরি করবেন তা বর্ণনা করুন।

যখন Loops

যখন লুপ বুলিয়ান শর্ত স্বীকার করে। যখনলুপ বারবার একটি বুলিয়ান অবস্থা পরীক্ষা করে এবং প্রকল্প প্রবাহ নিয়ন্ত্রণ করে। whileলুপটি লুপিং চালিয়ে যাবে যতক্ষণ না শর্ত& True থাকে। শর্তটি False হিসাবে রিপোর্ট করার পরে while লুপটি লুপ থেকে বেরিয়ে আসবে এবং লুপের বাইরে পরবর্তী কমান্ডে চলে যাবে।

ভেক্সকোড ভিআর পাইথন টুলবক্স। while কমান্ডটি লাল রঙে হাইলাইট করা হয়েছে, কোডিং ইন্টারফেসের দিকে নির্দেশ করে একটি তীর চিহ্ন। টুলবক্স থেকে কোডিং ইন্টারফেসে while কমান্ড টেনে আনার পর কোডটি def main():, while condition:, wait(5, MSEC) পড়ে।

মূলত, একটিwhileলুপ VR রোবটকে একটি আচরণ চালিয়ে যেতে বলছেযখনএকটি নির্দিষ্ট শর্ত পূরণ করছে। যুক্তিটি এই দৃশ্যের মতোই:যখনসূর্য জ্বলছে, তখন বাইরে খেলতে যাও।তুমি কী করবে? "সূর্য জ্বলজ্বল করছে" এর অবস্থা আপনার কোথায় থাকা উচিত তা নির্ধারণ করে। যখন সূর্য জ্বলছে, শর্তটি সত্য, তাই আপনি বাইরে খেলতে যান। যখন সূর্য অস্ত যায়, সেই শর্তটি মিথ্যা, তাই আপনি ভিতরে ফিরে আসবেন।

বাম পাশে একটি কোড উদাহরণ আছে যেখানে "সূর্যের আলো জ্বলতে থাকাকালীন" পড়া হয়েছে: "বাইরে খেলো"। while স্টেটমেন্টের পরে এটি "ভেতরে আসুন" লেখা আছে। ডানদিকে একটি মেয়ে রৌদ্রোজ্জ্বল দিনে তার বাড়ির বাইরে সাইকেল চালাচ্ছে। নিয়ম অনুসারে, সূর্যের আলো আর না ওঠা পর্যন্ত সে বাইরে খেলবে, এবং তারপর ভেতরে যাবে।

যখন লুপস এবং ওয়াল মেজ সমস্যা

ওয়াল মেজে ভিআর রোবটের ক্ষেত্রেও একই যুক্তি প্রযোজ্য। বাম্পার সেন্সরটি চাপা না থাকা সত্ত্বেও, ভিআর রোবটটি এগিয়ে যেতে থাকবে। যখন এটি চাপা হয়, এটি থামানো বা ঘুরিয়ে দেওয়া উচিত। whileলুপ ব্যবহার করে নন-ওয়েটিং কমান্ডের সাথে, যেমন ড্রাইভ, আমরা VR রোবটকে ঠিক এটি করার জন্য কোড করতে পারি। তবে, বাম্পার সেন্সর কমান্ডগুলি বাম্পার সেন্সর চাপার অবস্থা ব্যবহার করে (left_bumper.pressedor right_bumper.pressed)বাম্পার সেন্সরনয়চাপা থাকা অবস্থায় VR রোবটকে ড্রাইভ করার জন্য কোড করার জন্য, আমাদেরনয়অপারেটর ব্যবহার করতে হবে।

def main():
	while not condition:
		wait (5, MSEC)

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

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

অপেক্ষার আদেশ

ড্রাইভট্রেন.ড্রাইভ_ফর(ফরওয়ার্ড, ২০০, এমএম)
ড্রাইভট্রেন.টার্ন_ফর(ডান, ৯০, ডিগ্রি)

অপেক্ষমান নয় এমন কমান্ড

ড্রাইভট্রেন.ড্রাইভ(এগিয়ে)
ড্রাইভট্রেন.টার্ন(ডানদিকে)

কীওয়ার্ড নয়

নয়কীওয়ার্ডটি সাধারণতwhileলুপের সাথে ব্যবহার করা হবে, যাতে কন্ডিশনটি False রিটার্ন করার সময় লুপের ভিতরের কমান্ডগুলি কার্যকর করা যায়। 'সূর্য জ্বলছে' উদাহরণটি ব্যবহার করতে,নয়অপারেটর ব্যবহার করে একই প্রভাব অর্জন করা যেতে পারে। যখন সূর্যজ্বলছে না, ভেতরে এসো।

বাম দিকে একটি উদাহরণ কোড দেখানো হয়েছে, যেখানে সূর্য না জ্বললেও পড়া হচ্ছে:, ভিতরে এসো। কিছুক্ষণ পর কমান্ড হল বাইরে খেলা। ডানদিকে রাতের বেলায় একটি ঘর দেখানো হয়েছে যেখানে চাঁদ দেখা যায়। এই কোড অনুসারে, যতক্ষণ সূর্যের আলো না থাকে, ততক্ষণ কেউ বাইরে খেলবে না এবং ঘরের ভেতরেই থাকবে।

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

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

নয় কীওয়ার্ডটি একটি লজিক্যাল অপারেটর যা একটি বুলিয়ানের মান উল্টে দেয়। বুলিয়ান মান প্রদানকারী কমান্ডের সামনেনয়কীওয়ার্ডটি রাখলে True কে False তে এবং False কে True তে উল্টে যাবে। উদাহরণস্বরূপ, কল্পনা করুন যে VR রোবটের বাম বাম্পার সেন্সরটি চাপা আছে, এবং left_bumper.pressedকমান্ডটি True প্রদান করে। নয়কীওয়ার্ডটি বুলিয়ান মান উল্টে দেবে এবং এই এক্সপ্রেশনটিকে False রিটার্ন করবে।

left_bumper.pressed() নয়

আপনার ব্যবহৃত সেন্সর ডেটার উপর নির্ভর করে, একটি VR রোবটকে পছন্দসই আচরণ সম্পাদন করতেনয়কীওয়ার্ডটি প্রয়োজন হতে পারে। 

def main():
	while not left_bumper.pressed():
		drivetrain.drive(FORWARD)
		wait(5, MSEC)
	drivetrain.stop()

While লুপ এবং বাম্পার সেন্সর দিয়ে একটি প্রকল্প তৈরি করা

প্রকল্পের নাম এবং সংরক্ষণ করুন

  • একটি নতুন টেক্সট প্রজেক্ট খুলুন এবং অনুরোধ করা হলেওয়াল মেজ প্লেগ্রাউন্ডনির্বাচন করুন। ওয়াল মেজ প্লেগ্রাউন্ড সিলেকশন টাইলটি নীচে ওয়াল মেজ পড়ে এবং উপরে মেজটি দেখায়।
  • প্রকল্পটির নাম দিন Unit4 Lesson2VEXcode VR টুলবার। টুলবারের মাঝখানে প্রকল্পের নামটিতে ইউনিট ৪ পাঠ ২ লেখা আছে এবং একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে।

     

  • নতুন টেক্সট প্রজেক্টের অংশ হিসেবে স্বয়ংক্রিয়ভাবে পপুলেট হওয়া ড্রাইভট্রেন কমান্ডটি প্রতিস্থাপন করতে whileকমান্ডটি ওয়ার্কস্পেসে টেনে আনুন বা টাইপ করুন। লক্ষ্য করুন লুপের ভেতরে একটি wait কমান্ড আছে। waitকমান্ডটি সরাবেন না, এটি নিশ্চিত করবে যে VR রোবট প্রকল্পটি সঠিকভাবে সম্পাদন করছে। আপনার প্রকল্পটি দেখতে এরকম হওয়া উচিত:

    def main():
    	while শর্ত:
    		অপেক্ষা (5, MSEC)
  • whileকমান্ডে 'while' এর পরেনয়অপারেটর টাইপ করুন। আপনার প্রকল্পটি এখন এইরকম দেখা উচিত:

    def main():
    	while not condition:
    		wait(5, MSEC)
  • while লুপের 'condition'-এ left_bumper.pressedকমান্ডটি টেনে আনুন অথবা টাইপ করুন। লুপের ভিতরের কমান্ডগুলি তখনই কার্যকর হবে যখন শর্তটি সত্য নয়, অর্থাৎ যখন বাম বাম্পার সেন্সরটিচাপা থাকবে,চাপা থাকবে না। আপনার প্রকল্পটি এখন এইরকম দেখা উচিত:

    def main():
    	while not left_bumper.pressed():
    		wait(5, MSEC)
  • whileলুপের ভিতরে, drive কমান্ডটি টেনে আনুন অথবা টাইপ করুন। নিশ্চিত করুন যেড্রাইভকমান্ড এবংwaitকমান্ডটিwhileলুপের মধ্যে সঠিকভাবে ইন্ডেন্ট করা আছে, যাতে লুপটি ইচ্ছামত চলে। আপনি নির্দেশিকা রেখাগুলিকে চাক্ষুষ সাহায্য হিসেবে ব্যবহার করতে পারেন। আপনার প্রকল্পটি এখন এইরকম দেখা উচিত:

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
  • whileলুপের বাইরে stop কমান্ড টেনে আনুন অথবা টাইপ করুন। নিশ্চিত করুন যেstopকমান্ডটিwhileলুপের সাথে সারিবদ্ধ, এবং ইন্ডেন্ট করা নয়, যাতে এটি উদ্দেশ্য অনুসারে লুপের বাইরে চলে। আপনি নির্দেশিকা রেখাগুলিকে চাক্ষুষ সাহায্য হিসেবে ব্যবহার করতে পারেন।  আপনার প্রকল্পটি এখন এইরকম দেখা উচিত:

    def main():
    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    	drivetrain.stop()
  • খেলার মাঠের জানালাটি যদি ইতিমধ্যে খোলা না থাকে, তাহলে সেটি খুলুন। নিশ্চিত করুন যেওয়াল মেজ প্লেগ্রাউন্ডখোলা আছে। 
  • প্রকল্প চালান।
  • ওয়াল মেজের শুরু থেকেই ভিআর রোবটের ড্রাইভ দেখুন এবং বাম্পার সেন্সরটি দেয়ালে চাপ দিলে থামুন।
  • ড্রাইভ কমান্ডটি VR রোবটকে Left Bumper Pressed কমান্ডের সাহায্যে বাম্পার সেন্সরের অবস্থা পরীক্ষা করার সময় এগিয়ে যেতে সাহায্য করে। একবার left_bumper.pressedকমান্ডটি True হিসেবে রিপোর্ট করলে, VR রোবট লুপের বাইরে পরবর্তী কমান্ডে চলে যাবে এবং ড্রাইভিং বন্ধ করবে।

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