সুইচ#

ভূমিকা#

সুইচ ব্লক শিক্ষার্থীদের ব্লক-ভিত্তিক কোডিং থেকে টেক্সট-ভিত্তিক কোডিং-এ যেতে সাহায্য করে। সুইচ ব্লকের সাহায্যে, শিক্ষার্থীরা একটি ব্লকস প্রোজেক্টের ভেতরে সরাসরি পাইথন কোড টাইপ করতে পারে—যেমন কমান্ড, কন্ডিশন, ভ্যালু বা ফাংশন ডেফিনিশন লেখা—এবং একই সাথে প্রোজেক্টের বাকি অংশও ব্লক ব্যবহার করে তৈরি করতে পারে। এছাড়াও, প্রতিটি ব্লককে তার সমতুল্য পাইথন কমান্ডে রূপান্তর করা যায়।

পাইথন কমান্ড, মেথড এবং অপারেটর কীভাবে টাইপ করতে হয় তা জানতে, VEX VR পাইথন API দেখুন।

যেহেতু সুইচ ব্লকে পাইথন কোড থাকে, তাই প্রজেক্টটি প্রত্যাশিতভাবে চলার জন্য বানান, বিরামচিহ্ন এবং ইন্ডেন্টেশন অবশ্যই সঠিক হতে হবে।

নিম্নে সকল সুইচ ব্লকের একটি তালিকা দেওয়া হলো:

সুইচ ব্লক — একটি ব্লকস প্রোজেক্টে পাইথন কোড যোগ করুন।

  • স্ট্যাক — পাইথন কমান্ড টাইপ করার জন্য একটি স্থান প্রদান করে যা অন্যান্য স্ট্যাক ব্লকের সাথে ক্রমানুসারে চলে।

  • C ব্লক — পাইথন কন্ট্রোল কোড টাইপ করার জন্য একটি জায়গা প্রদান করে, যেমন if, while, বা for স্টেটমেন্ট।

  • C এক্সপ্যান্ডেবল — একাধিক শাখা সহ পাইথন কন্ট্রোল কোড টাইপ করার জন্য একটি স্থান প্রদান করে, যেমন if, elif, অথবা else।

  • বুলিয়ান — পাইথন কোড টাইপ করার জন্য একটি স্থান প্রদান করে যা True অথবা False রিটার্ন করে।

  • রিপোর্টার — মান ফেরত দেয় এমন পাইথন কোড টাইপ করার জন্য একটি স্থান প্রদান করে।

  • Hat — একটি পাইথন ফাংশন সংজ্ঞায়িত করার জন্য স্থান প্রদান করে।

স্ট্যাক#

স্ট্যাক ব্লকটি পাইথন কমান্ড টাইপ করার জন্য একটি জায়গা প্রদান করে, যা অন্যান্য স্ট্যাক ব্লকের সাথে ক্রমানুসারে চলে।

স্ট্যাক ব্লক#
[] :: custom-switch

একটি স্ট্যাক ব্লকে এক লাইন বা একাধিক লাইনের পাইথন কোড থাকতে পারে।

চালু করা হলে, সামনে এগিয়ে যাওয়ার জন্য একটি স্ট্যাক ব্লক ব্যবহার করে।#
শুরু হলে
[Drive forward 400 mm.]
[drivetrain.drive_for(FORWARD, 400, MM)] :: custom-switch

সি ব্লক#

C ব্লক পাইথন কন্ট্রোল কোড টাইপ করার জন্য একটি জায়গা প্রদান করে, যেমন if, while, বা for স্টেটমেন্ট। C ব্লকের ভিতরে রাখা ব্লকগুলি সেই পাইথন কন্ট্রোল স্ট্রাকচারের অংশ হিসাবে চলে।

সি ব্লক#
if [] :: custom-switch
अंत

একটি C ব্লকে ব্যবহারযোগ্য পাইথন কন্ট্রোল কোডের মধ্যে রয়েছে:

  • if

  • while

  • for

চালু করার পর, বাম্পারে চাপ দিলে এটি থামানোর জন্য একটি সি ব্লক ব্যবহার করে।#
শুরু হলে
[Continuously drive until the bumper is pressed.]
[সামনে v] দিকে চালাও
চিরকাল
if [if bumper.pressed():] :: custom-switch
[Bumper was pressed!] প্রিন্ট করো ▶
চালানো বন্ধ করো
अंत
अंत

সি প্রসারণযোগ্য#

C Expandable ব্লকটি একাধিক শাখা সহ পাইথন কন্ট্রোল কোড টাইপ করার জন্য জায়গা প্রদান করে, যেমন if, elif, অথবা elseপ্লাস অ্যারো সিলেক্ট করে অতিরিক্ত শাখা যোগ করা যায়।

C প্রসারণযোগ্য ব্লক#
if [] :: custom-switch-expand
अंत

একটি C এক্সপ্যান্ডেবল ব্লকে ব্যবহারযোগ্য পাইথন কন্ট্রোল কোডের মধ্যে রয়েছে:

  • if

  • elif

  • else

  • while

  • for

চালু করা হলে, বাম্পার চাপলে থামার জন্য এবং অন্যথায় চলার জন্য এটি একটি সি এক্সপ্যান্ডেবল ব্লক ব্যবহার করে।#
শুরু হলে
[Continuously move forward until the bumper is pressed.]
চিরকাল
if [if bumper.pressed():] :: custom-switch-expand
[Bumper was pressed!] প্রিন্ট করো ▶
চালানো বন্ধ করো
else [else:] :: custom-switch-expand
[সামনে v] দিকে চালাও
अंत
अंत

বুলিয়ান#

বুলিয়ান ব্লকটি এমন পাইথন কোড টাইপ করার জন্য জায়গা দেয় যা True অথবা Falseরিটার্ন করে। এটিকে ষড়ভুজাকার ইনপুটযুক্ত ব্লকের ভিতরে রাখা যায়।

বুলিয়ান ব্লক#
<[] :: custom-switch>

একটি বুলিয়ান ব্লকে পাইথন শর্ত থাকতে পারে।

পাইথন শর্ত সহ বুলিয়ান ব্লক#
<[bumper.pressed()] :: custom-switch>

একটি বুলিয়ান ব্লকে লজিক্যাল অপারেটরও ব্যবহার করা যায়:

  • and

  • or

  • notনয়

পাইথন লজিক্যাল অপারেটর সহ বুলিয়ান ব্লক#
<[bumper.pressed() or distance.found_object()] :: custom-switch>

একটি বুলিয়ান ব্লক মান তুলনা করার জন্য তুলনা অপারেটর ব্যবহার করতে পারে:

  • এর চেয়ে বড়: >

  • এর চেয়ে কম: <

  • সমান: ==

  • অন্যান্য তুলনা অপারেটরগুলির মধ্যে রয়েছে <=, !=, এবং >=

পাইথন তুলনা অপারেটর সহ বুলিয়ান ব্লক#
<[drivetrain.heading()> 100] :: custom-switch>
চালু করা হলে, ডিস্টেন্স সেন্সর কোনো বস্তু খুঁজে পেলে এটি বন্ধ করার জন্য একটি বুলিয়ান ব্লক ব্যবহার করে।#
শুরু হলে
[Turn right until the Distance Sensor finds an object.]
[ডান v] দিকে ঘোরো
চিরকাল
যদি <[distance.found_object()] :: custom-switch> তাহলে
[Object found!] প্রিন্ট করো ▶
চালানো বন্ধ করো
अंत
अंत

প্রতিবেদক#

Reporter ব্লকটি এমন পাইথন কোড টাইপ করার জন্য জায়গা দেয় যা একটি মান রিটার্ন করে। এটিকে সার্কুলার ইনপুটযুক্ত ব্লকের ভিতরে রাখা যায়।

রিপোর্টার ব্লক#
([] :: custom-switch)

একটি Reporter ব্লকে এমন পাইথন কোড থাকতে পারে যা একটি মান রিটার্ন করে।

রিপোর্টার ব্লক, যেখানে পাইথন কোড একটি মান রিটার্ন করে।#
([drivetrain.heading()] :: custom-switch)

একটি রিপোর্টার ব্লকে গাণিতিক অপারেটর ব্যবহার করা যেতে পারে:

  • যোগ: +

  • বিয়োগ: -

  • বিভাগ: /

  • গুণ: *

পাইথন সংযোজন সহ রিপোর্টার ব্লক#
([drivetrain.heading() + 45] :: custom-switch)
চালু করা হলে, রোবটের অভিমুখের সাথে ৪৫ ডিগ্রি যোগ করে প্রিন্ট করে।#
শুরু হলে
[Print the robot's heading plus 45 degrees.]
([drivetrain.heading() + 45] :: custom-switch) প্রিন্ট করো ▶

টুপি#

Hat ব্লকটি একটি পাইথন ফাংশন সংজ্ঞায়িত করার জন্য জায়গা প্রদান করে। Hat-এর অধীনে সংযুক্ত ব্লকগুলো সেই ফাংশনের মূল অংশে পরিণত হয়।

টুপি ব্লক#
[] :: hat custom-switch

Hat ব্লকে একটি পাইথন ফাংশনের সংজ্ঞা লিখুন। প্যারামিটারগুলো প্রথম বন্ধনীর ভেতরে দিতে হবে। যদি ফাংশনটিতে কোনো প্যারামিটার ব্যবহৃত না হয়, তবে খালি প্রথম বন্ধনী ব্যবহার করুন।

পাইথন ফাংশন সংজ্ঞা সহ হ্যাট ব্লক#
[def function_name(parameter):] :: hat custom-switch
চালু করার সময়, একটি ফাংশন সংজ্ঞায়িত ও কল করার জন্য একটি Hat ব্লক ব্যবহার করা হয়।#
[def drive_400():] :: hat custom-switch
[Define a custom function using a Hat block.]
[সামনে v] দিকে (400) [mm v] চালাও ▶

শুরু হলে
[drive_400()] :: custom-switch