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

যখন লুপস এবং ওয়াল মেজ সমস্যা
ওয়াল মেজে ভিআর রোবটের ক্ষেত্রেও একই যুক্তি প্রযোজ্য। বাম্পার সেন্সরটি চাপা না থাকা সত্ত্বেও, ভিআর রোবটটি এগিয়ে যেতে থাকবে। যখন এটি চাপা হয়, এটি থামানো বা ঘুরিয়ে দেওয়া উচিত। whileলুপ ব্যবহার করে নন-ওয়েটিং কমান্ডের সাথে, যেমন ড্রাইভ, আমরা VR রোবটকে ঠিক এটি করার জন্য কোড করতে পারি। তবে, বাম্পার সেন্সর কমান্ডগুলি বাম্পার সেন্সর চাপার অবস্থা ব্যবহার করে (left_bumper.pressedor right_bumper.pressed)বাম্পার সেন্সরনয়চাপা থাকা অবস্থায় VR রোবটকে ড্রাইভ করার জন্য কোড করার জন্য, আমাদেরনয়অপারেটর ব্যবহার করতে হবে।
def main():
while not condition:
wait (5, MSEC)আপনার তথ্যের জন্য
নন-ওয়েটিং এবং ওয়েটিং কমান্ড নির্ধারণ করে যে পরবর্তী কমান্ড কখন একটি আচরণ শুরু করে। drive_forএবং turn_forএর মতো অপেক্ষা কমান্ডগুলি প্রকল্পের পরবর্তী কমান্ডে যাওয়ার আগে তাদের আচরণগুলি সম্পূর্ণ করে। নন-ওয়েটিং কমান্ড, যেমন ড্রাইভএবং টার্ন, প্রোজেক্টের পরবর্তী কমান্ডে যেতে থাকে, এমনকি যদি নন-ওয়েটিং কমান্ডের আচরণ সম্পূর্ণ না হয়।
অপেক্ষার আদেশ
ড্রাইভট্রেন.ড্রাইভ_ফর(ফরওয়ার্ড, ২০০, এমএম)
ড্রাইভট্রেন.টার্ন_ফর(ডান, ৯০, ডিগ্রি)অপেক্ষমান নয় এমন কমান্ড
ড্রাইভট্রেন.ড্রাইভ(এগিয়ে)
ড্রাইভট্রেন.টার্ন(ডানদিকে)কীওয়ার্ড নয়
নয়কীওয়ার্ডটি সাধারণতwhileলুপের সাথে ব্যবহার করা হবে, যাতে কন্ডিশনটি False রিটার্ন করার সময় লুপের ভিতরের কমান্ডগুলি কার্যকর করা যায়। 'সূর্য জ্বলছে' উদাহরণটি ব্যবহার করতে,নয়অপারেটর ব্যবহার করে একই প্রভাব অর্জন করা যেতে পারে। যখন সূর্যজ্বলছে না, ভেতরে এসো।

ওয়াল মেজে, এটি কার্যকর যাতে আমরা VR রোবটকে কোড করতে পারি যাতে বাম্পার সেন্সরটিনাচাপলেও, এটি এগিয়ে যায়। অবস্থা এখনও 'যদি বাম্পার সেন্সর চাপা হয়', কিন্তু এইভাবে, যখন এটি মিথ্যা রিপোর্ট করে (চাপা হয় না), প্রকল্প প্রবাহ লুপে থাকে। যখন বাম্পার সেন্সর চাপা হয়, তখন শর্তটি সত্য হয়, তাই প্রকল্পটি লুপের বাইরে চলে যাবে।
আপনার তথ্যের জন্য
নয় কীওয়ার্ডটি একটি লজিক্যাল অপারেটর যা একটি বুলিয়ানের মান উল্টে দেয়। বুলিয়ান মান প্রদানকারী কমান্ডের সামনেনয়কীওয়ার্ডটি রাখলে 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 Lesson2।

-
নতুন টেক্সট প্রজেক্টের অংশ হিসেবে স্বয়ংক্রিয়ভাবে পপুলেট হওয়া ড্রাইভট্রেন কমান্ডটি প্রতিস্থাপন করতে 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 রোবট লুপের বাইরে পরবর্তী কমান্ডে চলে যাবে এবং ড্রাইভিং বন্ধ করবে।
এই পাঠের বাকি অংশটি চালিয়ে যেতে পরবর্তী বোতামটি নির্বাচন করুন।