Skip to main content

পাঠ ২: প্রকল্পটি তৈরি এবং পরীক্ষা করা

প্রকল্পটি নির্মাণ অব্যাহত রাখা 

  • এখন if elseস্টেটমেন্টের শর্ত সেট করতে হবে। দুর্গ সনাক্ত করার জন্য দূরত্ব সেন্সর ব্যবহার করতে, found_objectকমান্ড ব্যবহার করা যেতে পারে। শর্তে found_objectকমান্ড যোগ করুন। আপনার প্রকল্পটি এখন এইরকম দেখা উচিত:

    def main():
    	# দূরত্ব সেন্সর কি দুর্গ সনাক্ত করে?
    	
    	যদি front_distance.found_object():
    		# একটি দূরত্ব সেন্সর দ্বারা ক্র্যাশ দুর্গ সনাক্ত করা হয়
    		পাস
    		
    	অন্যথায়:
    		# দূরত্ব সেন্সর ব্যবহার করে একটি দুর্গ খুঁজে পেতে ঘুরুন
    		পাস
  • যদি দূরত্ব সেন্সর একটি বস্তু খুঁজে পায়, VR রোবটটি দুর্গের উপর ধাক্কা দিতে এগিয়ে যেতে হবে। if else স্টেটমেন্টের 'if' শাখায় একটি ড্রাইভকমান্ড যোগ করুন এবং VR রোবটকে এগিয়ে নিয়ে যাওয়ার জন্য প্যারামিটারটি সেট করুন। (এই কমান্ডটি 'পাস 'প্রতিস্থাপন করা উচিত)। 

    def main():
    	# দূরত্ব সেন্সর কি দুর্গ সনাক্ত করে?
    	
    	যদি front_distance.found_object():
    		# একটি দূরত্ব সেন্সর দ্বারা ক্র্যাশ দুর্গ সনাক্ত করা হয়
    		drivetrain.drive(FORWARD)
    		
    	অন্যথায়:
    		# দূরত্ব সেন্সর
    		পাস ব্যবহার করে একটি দুর্গ খুঁজে পেতে ঘুরুন
  • যখন found_object কমান্ডটি False রিপোর্ট করবে, তখন 'else' শাখাটি চালু হবে, তাই VR রোবটকে খেলার মাঠে একটি দুর্গ খুঁজে পেতে ঘুরতে হবে। 'অন্য' শাখার ভিতরে একটি turn কমান্ড যোগ করুন এবং VR রোবটটিকে ডানদিকে ঘুরানোর জন্য প্যারামিটারগুলি সেট করুন। 

    def main():
    	# দূরত্ব সেন্সর কি দুর্গ সনাক্ত করে?
    	
    	যদি front_distance.found_object():
    		# একটি দূরত্ব সেন্সর দ্বারা ক্র্যাশ দুর্গ সনাক্ত করা হয়
    		drivetrain.drive(FORWARD)
    		
    	অন্যথায়:
    		# দূরত্ব সেন্সর ব্যবহার করে একটি দুর্গ খুঁজে পেতে ঘুরুন
    		drivetrain.turn(RIGHT)

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

if elseস্টেটমেন্টের 'else' শাখাটি শুধুমাত্র একটি প্রকল্পেif elseস্টেটমেন্টের অংশ হিসেবে কাজ করে। যদিওস্টেটমেন্ট একা থাকলেথাকতে পারে, VEXcode VR Python-এ 'অন্য' স্টেটমেন্ট নেই। 'যদি' শাখার শর্ত পূরণ না হলে 'অন্য' শাখাটি পরিচালিত হয়। একটি নির্দিষ্ট শর্ত ('যদি' শাখা) ছাড়া, 'অন্য' শাখাটি কখনই চলবে না। পাইথনে কন্ডিশনাল স্টেটমেন্ট প্রদর্শনকারী তিনটি কোড স্নিপেট, প্রতিটিতে একটি if স্টেটমেন্ট রয়েছে যার পরে একটি কন্ডিশন এবং তারপরে pass কীওয়ার্ড রয়েছে। প্রথম দুটি স্নিপেটের উপরে সবুজ চেকমার্ক রয়েছে, যা সঠিক ব্যবহার নির্দেশ করে। প্রথম স্নিপেটে শুধুমাত্র একটি if স্টেটমেন্ট থাকে, যেখানে দ্বিতীয়টিতে একটি if এবং একটি else স্টেটমেন্ট থাকে যার প্রতিটিতে pass কীওয়ার্ড থাকে। লাল ক্রস দিয়ে চিহ্নিত তৃতীয় স্নিপেটে শুধুমাত্র একটি else স্টেটমেন্ট রয়েছে যার পাস আছে, যা ভুল ব্যবহার নির্দেশ করে, কারণ else স্টেটমেন্টটি একটি if স্টেটমেন্টের পরে আসা উচিত।

একটি লুপ যোগ করুন এবং প্রকল্পটি পরীক্ষা করুন

  • প্রকল্পটি পরীক্ষা করার আগে, আরও একটি কমান্ড যোগ করতে হবে। If else স্টেটমেন্টটি স্টেটমেন্টের বাইরে পরবর্তী কমান্ডে যাওয়ার আগে কেবল একবার শর্তটি পরীক্ষা করবে। ইউনিট ৭-এ, ভিআর রোবটকে বারবার ডাউন আই সেন্সরের অবস্থা পরীক্ষা করার নির্দেশ দেওয়ার জন্য প্রকল্পে একটি অসীমwhile লুপ যুক্ত করা হয়েছিল। দূরত্ব সেন্সরের অবস্থা বারবারপরীক্ষা করা হচ্ছে কিনা তা নিশ্চিত করতে, একটি infinite while লুপ টেনে আনুন বা টাইপ করুন, তারপর infinitewhile লুপের ভিতরেif elseস্টেটমেন্টটি কপি করুন। আপনার প্রকল্পটি এখন এইরকম দেখা উচিত:
    • লুপে কমান্ড কপি এবং পেস্ট করার সময় ইন্ডেন্টেশনের কথা মনে রাখবেন, যাতে প্রকল্পটি চালানোর সময় উদ্দেশ্য অনুসারে কাজ করে। 

      def main():
      
      	while True:
      		# দূরত্ব সেন্সর কি দুর্গ সনাক্ত করে?
      	
      		যদি front_distance.found_object():
      			# একটি দূরত্ব সেন্সর দ্বারা ক্র্যাশ দুর্গ সনাক্ত করা হয়
      			drivetrain.drive(FORWARD)
      		
      		অন্যথায়:
      			# দূরত্ব সেন্সর ব্যবহার করে একটি দুর্গ খুঁজে পেতে ঘুরুন
      			drivetrain.turn(RIGHT)
      		
      		wait(5, MSEC)
  • যদি খেলার মাঠের উইন্ডোটি ইতিমধ্যে খোলা না থাকে তবে তা খুলুন। নিশ্চিত করুন যেDynamic Castle Crasher Playgroundখোলা আছে, এবং প্রকল্পটি চালান। ডায়নামিক ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নিচের দৃশ্যে দেখা যাচ্ছে যে কেবল কিছু দুর্গ ভেঙে পড়েছে। খেলার মাঠের চারপাশে ঘোরাঘুরি করার পর, ভিআর রোবটটি খেলার মাঠের উপরের ডানদিকে রয়েছে।
  • ভিআর রোবটটি কমপক্ষে দুটি দুর্গে আঘাত করার পরে, খেলার মাঠটি পুনরায় লোড করুন এবং ডাইনামিক ক্যাসল ক্র্যাশার খেলার মাঠটির অন্য একটি লেআউটে প্রকল্পটি চালান। খেলার মাঠের ইন্টারফেস সহ ডায়নামিক ক্যাসেল ক্র্যাশারের উপর থেকে নীচের দৃশ্য। খেলার মাঠের ইন্টারফেসের নীচে বাম দিকে রিসেট বোতামটি একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে।
  • প্রকল্পের প্রতিটি ধাপে, ভিআর রোবটটি ঘুরবে যতক্ষণ না দূরত্ব সেন্সর দ্বারা একটি দুর্গ সনাক্ত করা হয়, তারপর সেই ভবনটিকে ধাক্কা দেওয়ার জন্য সেই ভবনের দিকে গাড়ি চালাবে।ডায়নামিক ক্যাসেল ক্র্যাশার খেলার মাঠের একটি কোণাকৃতির দৃশ্য যেখানে দেখানো হয়েছে যে ভিআর রোবটটি লাল সীমানা রেখার উপর দিয়ে এবং খেলার মাঠের প্রান্ত থেকে একটি দুর্গের টুকরো ঠেলে দিচ্ছে।
  • প্রকল্পটি চালানোর সময়, VR রোবট একটি দুর্গের টুকরোকে পুরোটা প্রান্তে ঠেলে দিতে পারে এবং খেলার মাঠ থেকে পড়ে যেতে পারে। এর কারণ হল found_objectকমান্ডটি এখনও রিপোর্ট করছে যে VR রোবটের সামনে একটি বস্তু রয়েছে। যখন এই কমান্ডটি True রিপোর্ট করে, তখন VR রোবট এগিয়ে যায়, যার ফলে VR রোবটটি খেলার মাঠ থেকে পড়ে যায়।

একটি যদি অন্যথায় স্টেটমেন্ট সহ প্রজেক্ট ফ্লো

if else বিবৃতিটি ব্যবহার করা হয় যাতে VR রোবট সিদ্ধান্ত নিতে পারে। যদি বুলিয়ান শর্ত সত্য হয়, তাহলে 'if' শাখার ভিতরের কমান্ডগুলি চলবে। যদি বুলিয়ান কন্ডিশন False হয়, তাহলে 'else' শাখার ভিতরের কমান্ডগুলি চলবে।

উদাহরণস্বরূপ, Dynamic Castle Crasher Playground-এর এই পুনরাবৃত্তিতে, যখন প্রকল্পটি শুরু হয় তখন দূরত্ব সেন্সর একটি বস্তু সনাক্ত করে -found_objectকমান্ডের অবস্থা True রিপোর্ট করে। এখন প্রকল্পের 'যদি'শাখাটি চলবে, এবং VR রোবট এগিয়ে যাবে। ভিআর রোবটটি প্রকল্পের 'অন্য' শাখাটি এড়িয়ে যাবে।বাম দিকে প্রকল্পের বর্তমান কোড স্নিপেট রয়েছে। ডানদিকে ডাইনামিক ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নিচের দৃশ্য দেখা যাচ্ছে যেখানে খেলার মাঠের ইন্টারফেস দৃশ্যমান। খেলার মাঠের ইন্টারফেসে দূরত্ব সেন্সরের পরিমাপ ৫৬৮ মিমি এবং একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে। এটি দেখায় যে খেলার মাঠের মাঝখানে অবস্থিত দুর্গটি VR রোবট থেকে 568 মিলিমিটার দূরে।

  • লক্ষ্য করুন যে দূরত্ব সেন্সর ডেটা ড্যাশবোর্ডেও রিপোর্ট করা হয়েছে। যখন একটি বস্তু সনাক্ত করা হয়, দূরত্ব মান প্রদর্শিত হবে।

তবে, ডাইনামিক ক্যাসেল ক্র্যাশার প্লেগ্রাউন্ডের এই পুনরাবৃত্তিতে, যখন প্রকল্পটি শুরু হয় তখন দূরত্ব সেন্সর কোনও বস্তু সনাক্ত করে না -found_object কমান্ডের অবস্থা মিথ্যা বলে রিপোর্ট করে। এখন VR রোবটটি প্রকল্পের 'যদি' শাখাটি এড়িয়ে যাবে, এবং প্রকল্পের 'অন্য' শাখাটি চলবে, তাই VR রোবটটি ডানদিকে ঘুরবে।বাম দিকে প্রকল্পের বর্তমান কোড স্নিপেট রয়েছে। ডানদিকে ডাইনামিক ক্যাসেল ক্র্যাশার খেলার মাঠের উপর থেকে নিচের দৃশ্য দেখা যাচ্ছে যেখানে খেলার মাঠের ইন্টারফেস দৃশ্যমান। খেলার মাঠের ইন্টারফেসে দূরত্ব সেন্সরের পরিমাপ ১৩৫৪ মিমি এবং একটি লাল বাক্স দিয়ে হাইলাইট করা হয়েছে। এটি দেখায় যে খেলার মাঠের শীর্ষে থাকা দুর্গটি VR রোবট থেকে ১৩৫৪ মিলিমিটার দূরে।

  • লক্ষ্য করুন যে ড্যাশবোর্ডে দূরত্ব সেন্সরের মান > 3000 মিমি হিসাবে রিপোর্ট করা হয়েছে। দূরত্ব সেন্সর 3000 মিলিমিটার (মিমি) সীমার মধ্যে থাকা বস্তু সনাক্ত করতে পারে, তাই যখন কোনও বস্তু সনাক্ত করা যায় না, তখন মানটি (>) 3000 মিমি এর চেয়ে বেশি হিসাবে রিপোর্ট করা হয়। 

যেহেতু if else স্টেটমেন্টটি একটি অসীম while লুপের ভিতরে, তাই প্রজেক্টটি অসীমwhile লুপের উপরে ফিরে আসে যাতে if else স্টেটমেন্টের অবস্থা বারবার পরীক্ষা করা যায়। এই লুপটি চিরকাল চলতে থাকবে, যা VR রোবটকে প্রতি সেকেন্ডে শত শত বার if elseঅবস্থা ক্রমাগত পরীক্ষা করার নির্দেশ দেবে।This is the project's code snippet surrounded by an orange arrow that begins and ends on the while True: statement at the top of the code snippet. There is a note on the arrow that says Loops continuously, showing that anything nested in the while True loop will repeat forever.

  • মনে রাখবেন যে if elseস্টেটমেন্টের ভিতরে থাকা ড্রাইভ এবং turn কমান্ডগুলি নন-ওয়েটিং কমান্ড। নন-ওয়েটিং কমান্ডগুলি কোনও প্রকল্প চলমান থাকাকালীন তার প্রবাহকে থামায় না।  if else স্টেটমেন্টে (যেমন 'অবজেক্ট সনাক্ত হলে এগিয়ে যান') একটি নন-ওয়েটিং আচরণ কার্যকর করা হলে শর্তটি পরীক্ষা করা হলে তা অব্যাহত থাকবে এবং শর্তটি পরিবর্তন হলেই কেবল পরিবর্তন হবে।

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

শর্তটি পরীক্ষা করার সময় প্রকল্পের শুধুমাত্র একটি শাখা চালানো হচ্ছে তা নিশ্চিত করার জন্য একটিif elseস্টেটমেন্ট ব্যবহার করা হয়। শুধুমাত্র একটি উদাহরণ বা শর্ত যেকোনো সময় সত্য হতে পারে। এটি প্রকল্পটিকে আরও দক্ষ করে তোলে।

পাইথন প্রজেক্ট কোড যেখানে তীরচিহ্নগুলি if এবং else স্টেটমেন্টের দিকে নির্দেশ করে। তীরচিহ্নের উপরের অংশে "Distance.found_object" লেখা আছে, যাতে "Distance Sensor এর অবস্থা পরীক্ষা করা হয়" লেখা থাকে। যদি বিবৃতিটি অবস্থা পরীক্ষা করে তাহলে "Distance.found_object" দেখাবে। যদি অবজেক্টটি সনাক্ত করা হয়, তাহলে if স্টেটমেন্টের অধীনে কমান্ডটি কার্যকর করা হবে, কিন্তু যদি কোনও অবজেক্ট সনাক্ত না হয়, তাহলে else স্টেটমেন্টের অধীনে কমান্ডটি কার্যকর করা হবে।

বর্তমান প্রকল্পের সাথে ইউনিট ৭-এ তৈরি প্রকল্পের তুলনা করুন।  ইউনিট ৭ প্রকল্পে চারটি যদি বিবৃতি ব্যবহার করা হয়েছে।

ইউনিট ৭-এর প্রজেক্ট কোডটি পুরো কোডটিকে ঘিরে একটি বড় কমলা তীর চিহ্ন সহ, while True স্টেটমেন্ট দিয়ে শুরু এবং শেষ। কমলা তীরের উপরে একটি নোট লেখা আছে "যদি অসীম while লুপে থাকা বিবৃতিগুলি বারবার পরীক্ষা করা হয়।" while True স্টেটমেন্টের ভেতরে সবুজ তীরগুলি প্রকল্পের প্রবাহ দেখায়, যদি একটি নির্দিষ্ট রঙ দেখা যায় তবে individual if স্টেটমেন্ট দিয়ে শুরু হয় এবং সেই অনুযায়ী কী আচরণ করা উচিত, তা সে কোনও আচরণ করার জন্য হোক বা পরবর্তী if স্টেটমেন্টে যাওয়ার আগে পর্যন্ত শেষ হয় যেখানে সবকিছু আবার লুপ হয়।

একাধিক if স্টেটমেন্ট সহ একটি প্রকল্প চালানোর সময়, এটি সম্ভব হতে পারে যে প্রকল্পটি লুপের সাথে অসীম কমান্ডের মধ্য দিয়ে চলার সময় একাধিক শর্ত সত্য (অথবা মিথ্যা) রিপোর্ট করবে। এই ধরণের দ্বন্দ্বের কারণে প্রকল্পটি বন্ধ হয়ে যেতে পারে অথবা আরও ধীর গতিতে চলতে পারে। 

অন্য কথায়, একটি প্রকল্পে একাধিক ifবিবৃতি একাধিক প্রস্থান র‍্যাম্প সহ একটি রাস্তা দিয়ে ভ্রমণ করার মতো। আপনি যেখানে যাওয়ার চেষ্টা করছেন তার উপর নির্ভর করে আপনি বিভিন্ন জায়গায় ঘুরবেন। উদাহরণস্বরূপ,যদিতুমি স্কুলে যাও, তাহলে তুমি বাম দিকে ঘুরবে; যদি তুমি দোকানে যাও, তাহলে তুমি ডান দিকে ঘুরবে। কিন্তু আপনি যদি স্কুলে বা দোকানে না যান? উভয় শর্ত মিথ্যা রিপোর্ট করবে, এবং আপনি সরল পথে থাকবেন। অথবা যদি আপনি স্কুল এবং দোকান উভয়ই যাচ্ছেন? উভয় শর্তই সত্য রিপোর্ট করবে, কিন্তু আপনি একই সময়ে দুটি অবস্থানে ঘুরতে পারবেন না। একটি চিত্র যেখানে তিনটি দিকনির্দেশক তীর সহ একটি ধূসর T-আকৃতির ছেদ দেখানো হয়েছে - একটি বাম দিকে নির্দেশিত, একটি সোজা উপরে নির্দেশিত এবং একটি ডান দিকে নির্দেশিত। চৌরাস্তার মাঝখানে একটি ভিআর রোবট রয়েছে। চিত্রের ডানদিকে কোড ফর্ম্যাটে দুটি শর্তসাপেক্ষ বিবৃতি রয়েছে: যদি স্কুলে যাচ্ছি: বাম দিকে ঘুরুন এবং যদি দোকানে যাচ্ছি: ডান দিকে ঘুরুন। if বিবৃতিগুলি কালো এবং নীল রঙে লেখা আছে, নীল রঙে if এবং নীল রঙে নির্দেশাবলী লেখা আছে।

 

উপমাটি আরও জোরদার করার জন্য, একটি if elseবিবৃতি রাস্তার একটি কাঁটায় ভ্রমণের মতো - এটি আপনাকে সিদ্ধান্ত নিতে বাধ্য করে। যদিতুমি স্কুলে যাও, তাহলে বাম দিকে ঘুরো; অন্যথায়, ডান দিকে ঘুরো। তুমি যেখানেই যাও না কেন, তুমি হয় বাম দিকে ঘুরবে, না হয় ডানে। if elseস্টেটমেন্ট ব্যবহার করলে উপরের মতো বাগ এড়ানো যাবে, কারণ এটি আপনাকে সিদ্ধান্ত নিতে বাধ্য করবে, কারণ একটি নির্দিষ্ট মুহূর্তে শুধুমাত্র একটি শর্ত সত্য হতে পারে।A diagram showing a gray Y-shaped intersection with two directional paths - one leading left and one leading right. In the center of the intersection is the VR Robot. Above the diagram is code showing conditional statements in code format: if going to school: Turn left and else: Turn right. The if and else statements are written in black and blue text, with if and else in blue and the directional instructions in lighter blue.

প্রশ্ন

পাঠ কুইজ অ্যাক্সেস করতে নীচের একটি লিঙ্ক নির্বাচন করুন.

গুগল ডক / .ডকএক্স / .পিডিএফ