সুইচ#

ভূমিকা#

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

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

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

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

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

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

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

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

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

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

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

স্ট্যাক#

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

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

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

চালু করা হলে, এটি ৬-অক্ষীয় বাহুটিকে একটি অবস্থানে সরাতে একটি স্ট্যাক ব্লক ব্যবহার করে।#
শুরু হলে :: hat events
[Move the 6-Axis Arm to a standard position at the start of the project.]
[arm.move_to(120, 120, 75, False)] :: custom-switch

সি ব্লক#

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

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

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

চালু করার সময়, ৬-অ্যাক্সিস আর্মটি কোনো অবস্থানে পৌঁছাতে পারে কিনা তা পরীক্ষা করার জন্য এটি একটি সি ব্লক ব্যবহার করে।#
শুরু হলে :: hat events
[Check if the 6-Axis Arm can move to a position.]
if [if not arm.can_arm_reach_to(0, 0, 0):] :: custom-switch
কনসোলে [The 6-Axis Arm can't move to this position.] প্রিন্ট করো ◀ এবং কার্সার পরের সারিতে নিয়ে যাও
अंत

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

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

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

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

চালু করার সময়, ৬-অক্ষীয় বাহুটি কোনো অবস্থানে পৌঁছাতে পারবে কি না তা পরীক্ষা করার জন্য এটি একটি C এক্সপ্যান্ডেবল ব্লক ব্যবহার করে।#
শুরু হলে
[Check if the 6-Axis Arm can or can't move to a position.]
if [if not arm.can_arm_reach_to(0, 0, 0):] :: custom-switch-expand
কনসোলে [The 6-Axis Arm can't move to this position.] প্রিন্ট করো ◀ এবং কার্সার পরের সারিতে নিয়ে যাও
else [else:] :: custom-switch-expand
কনসোলে [The 6-Axis Arm can move to this position.] প্রিন্ট করো ◀ এবং কার্সার পরের সারিতে নিয়ে যাও
अंत

বুলিয়ান#

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

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

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

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

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

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

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

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

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

  • সমান: ==

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

পাইথন তুলনা অপারেটর সহ বুলিয়ান ব্লক#
<[drivetrain.get_heading()> 100] :: custom-switch>
চালু করা হলে, ৬-অক্ষীয় বাহুটি কোনো অবস্থানে পৌঁছাতে পারবে কি না, তা পরীক্ষা করার জন্য এটি একটি বুলিয়ান ব্লক ব্যবহার করে।#
শুরু হলে
[Check if the 6-Axis Arm can move to a position.]
যদি <না <[arm.can_arm_reach_to(0, 0, 0)] :: custom-switch>> তাহলে
কনসোলে [The 6-Axis Arm can't move to this position.] প্রিন্ট করো ◀ এবং কার্সার পরের সারিতে নিয়ে যাও
अंत

প্রতিবেদক#

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

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

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

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

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

  • যোগ: +

  • বিয়োগ: -

  • বিভাগ: /

  • গুণ: *

পাইথন সংযোজন সহ রিপোর্টার ব্লক#
([arm.get_y() + 45] :: custom-switch)
চালু করা হলে, ৬-অক্ষীয় বাহুটি চলার সময় বর্তমান y-অবস্থান প্রিন্ট করে।#
শুরু হলে
[Display the current y-position while the 6-Axis Arm moves.]
[arm v]-কে x:(-100) y:(200) z:(100) [mm v] অবস্থানে নিয়ে যাও ◀ এবং অপেক্ষা করো না
<[arm v] সরানো সম্পন্ন?> না হওয়া পর্যন্ত পুনরাবৃত্তি করো
কনসোলে ([arm.get_y()] :: custom-switch) প্রিন্ট করো ◀ এবং কার্সার পরের সারিতে নিয়ে যাও
[0.25] সেকেন্ড অপেক্ষা করো
अंत

টুপি#

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

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

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

পাইথন ফাংশন সংজ্ঞা সহ হ্যাট ব্লক#
[def function_name(parameter):] :: hat custom-switch
চালু করার সময়, একটি ফাংশন সংজ্ঞায়িত ও কল করার জন্য একটি Hat ব্লক ব্যবহার করা হয়।#
[def increment_y_100():] :: hat custom-switch
[Create a function to increment the 6-Axis Arm.]
[arm v]-এর অবস্থান x:[0] y:[100] z:[0] [mm v] বৃদ্ধি করো ▶

শুরু হলে :: hat events
[increment_y_100()] :: custom-switch