নিয়ন্ত্রণ#

ভূমিকা#

VEXcode VR-এর কন্ট্রোল ব্লকগুলো লুপ ও কন্ডিশন পরিচালনা করে এবং ব্লকগুলোর রান হওয়া বিলম্বিত করার মাধ্যমে একটি প্রোজেক্টের প্রবাহ নিয়ন্ত্রণ করে।

লুপ হলো এমন একটি প্রক্রিয়া যেখানে একটি কম্পিউটার একই ধাপ বা একাধিক ধাপ বারবার পুনরাবৃত্তি করতে থাকে যতক্ষণ না তাকে থামতে বলা হয়। কন্ডিশন হলো একটি নিয়ম যা কম্পিউটার পরবর্তী পদক্ষেপ কী হবে তা নির্ধারণ করার জন্য যাচাই করে। উদাহরণস্বরূপ, একটি সেন্সর কোনো বস্তু শনাক্ত করলে একটি রোবট সামনে এগোতে পারে।

নিচে উপলব্ধ ব্লকগুলোর একটি তালিকা দেওয়া হলো:

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

  • অপেক্ষা করুন – একটি নির্দিষ্ট শর্ত পূরণ না হওয়া পর্যন্ত ব্লকগুলির চলা থামিয়ে রাখে।

  • পুনরাবৃত্তি – এক সেট ব্লককে নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করে।

  • চিরকাল – এক সেট ব্লক অনির্দিষ্টকালের জন্য পুনরাবৃত্তি করে।

  • repeat until – একটি শর্ত পূরণ না হওয়া পর্যন্ত ব্লকগুলির একটি সেট পুনরাবৃত্তি করে।

  • while – একটি শর্ত সত্য থাকা পর্যন্ত একগুচ্ছ ব্লকের পুনরাবৃত্তি করে।

  • if – কোনো শর্ত সত্য হলে একগুচ্ছ ব্লক চালায়।

  • if / else – শর্ত সত্য হলে এক সেট ব্লক চলে, অন্যথায় অন্য সেট চলে।

  • if / else if / else – একাধিক শর্তের উপর নির্ভর করে বিভিন্ন ব্লক সেট চালায়।

  • break – একটি repeat, forever, repeat until, অথবা while লুপ থেকে অবিলম্বে বেরিয়ে যায়।

  • প্রকল্প বন্ধ করুন – প্রকল্পটি শেষ করে।

অপেক্ষা করুন#

wait স্ট্যাক ব্লকটি পরবর্তী ব্লকে যাওয়ার আগে একটি নির্দিষ্ট সময়ের জন্য ব্লকগুলোর চলমান গতি থামিয়ে দেয়।

অপেক্ষা করুন স্ট্যাক ব্লক#
(1) সেকেন্ড অপেক্ষা করো

প্যারামিটার

বর্ণনা

সময়

অপেক্ষা করার সময়, যা সেকেন্ডে একটি ধনাত্মক পূর্ণ সংখ্যা বা দশমিক সংখ্যা হিসাবে প্রকাশ করতে হবে।

উদাহরণ

চালু হলে, এটি এক সেকেন্ডের জন্য সামনে এগোয়, তারপর সব নড়াচড়া থেমে যায়।#
শুরু হলে :: hat events
[Move forward for one second, then stop.]
[সামনে v] দিকে চালাও
(1) সেকেন্ড অপেক্ষা করো
চালানো বন্ধ করো

অপেক্ষা করুন যতক্ষণ না#

wait until স্ট্যাক ব্লকটি একটি নির্দিষ্ট শর্ত পূরণ না হওয়া পর্যন্ত ব্লকগুলোর চলমান প্রক্রিয়াকে থামিয়ে রাখে এবং এরপর পরবর্তী ব্লকে যায়।

স্ট্যাক ব্লক পর্যন্ত অপেক্ষা করুন#
<> না হওয়া পর্যন্ত অপেক্ষা করো

প্যারামিটার

বর্ণনা

অবস্থা

পরবর্তী ব্লকে যাওয়ার আগে যে শর্তটি অবশ্যই পূরণ করতে হবে।

উদাহরণ

চালু করলে, স্ক্রিনে চাপ না দেওয়া পর্যন্ত এটি সামনে এগোতে থাকে, তারপর সব নড়াচড়া থেমে যায়।#
শুরু হলে :: hat events
[Move forward until a button is pressed, then stop.]
[সামনে v] দিকে চালাও
<[LeftBumper v] চাপা হয়েছে?> না হওয়া পর্যন্ত অপেক্ষা করো
চালানো বন্ধ করো

পুনরাবৃত্তি#

রিপিট সি ব্লকটি এর ভেতরের ব্লকগুলোকে একটি নির্দিষ্ট সংখ্যক বার চালায়।

সি ব্লক পুনরাবৃত্তি করুন#
[10] বার পুনরাবৃত্তি করো
अंत

প্যারামিটার

বর্ণনা

সময়

একটি পূর্ণ সংখ্যা যা নির্ধারণ করে রিপিট ব্লকটি কতবার চলবে।

উদাহরণ

শুরু হলে :: hat events
[Move in a square path.]
[4] বার পুনরাবৃত্তি করো
[সামনে v] দিকে [150] [mm v] চালাও ▶
[ডান v] দিকে [90] ডিগ্রি ঘোরো ▶
अंत

চিরকাল#

ফরেভার সি ব্লকটি তার ভেতরের ব্লকগুলোকে অবিরাম বারবার চালাতে থাকে।

চিরকাল সি ব্লক#
চিরকাল
अंत

প্যারামিটার

বর্ণনা

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

উদাহরণ

চালু করলে, এটি একটি অসীম চক্রের মধ্যে ৫০ মিমি সামনে এগিয়ে এবং ৯০ ডিগ্রি ডানে ঘুরে একটি বর্গাকার পথে অবিরাম চলতে থাকে।#
শুরু হলে :: hat events
[Move in a square path forever.]
চিরকাল
[সামনে v] দিকে [150] [mm v] চালাও ▶
[ডান v] দিকে [90] ডিগ্রি ঘোরো ▶
अंत

পুনরাবৃত্তি করুন যতক্ষণ না#

repeat until C ব্লকটি নির্দিষ্ট শর্ত পূরণ না হওয়া পর্যন্ত এর ভেতরের ব্লকগুলোকে বারবার চালায়।

ব্লক না হওয়া পর্যন্ত পুনরাবৃত্তি করুন#
<> না হওয়া পর্যন্ত পুনরাবৃত্তি করো
अंत

প্যারামিটার

বর্ণনা

অবস্থা

একটি এক্সপ্রেশন বা ভেরিয়েবল যা প্রতিটি লুপের আগে যাচাই করা হয়। যদি এটি False হয়, তাহলে ব্লকগুলো পুনরাবৃত্তি হতে থাকে। যদি এটি True হয়, তাহলে লুপটি থেমে যাবে।

উদাহরণ

চালু করলে, স্ক্রিনে চাপ না দেওয়া পর্যন্ত সব এলইডি লাল থাকে, তারপর সেগুলো বন্ধ করে দেয়।#
শুরু হলে :: hat events
[Move the pen until the bumper is pressed.]
[সামনে v] দিকে চালাও
<[LeftBumper v] চাপা হয়েছে?> না হওয়া পর্যন্ত পুনরাবৃত্তি করো
কলম সরান [নিচে v]
(0.5) সেকেন্ড অপেক্ষা করো
কলম সরান [উপরে v]
(0.5) সেকেন্ড অপেক্ষা করো
अंत
(0.5) সেকেন্ড অপেক্ষা করো
চালানো বন্ধ করো

যখন#

while C ব্লকটি নির্দিষ্ট শর্ত পূরণ হওয়া পর্যন্ত এর ভেতরের ব্লকগুলোকে বারবার চালায়।

সি ব্লক চলাকালীন#
যখন <>
अंत

প্যারামিটার

বর্ণনা

অবস্থা

একটি এক্সপ্রেশন বা ভেরিয়েবল যা প্রতিটি লুপের আগে যাচাই করা হয়। যদি এটি True হয়, তাহলে ব্লকগুলো পুনরাবৃত্তি হতে থাকে। যদি এটি False হয়, তাহলে লুপটি থেমে যাবে।

উদাহরণ

চালু করলে, সমস্ত এলইডি সবুজ রেখে এটি ২০০ মিমি সামনে এগিয়ে যায়। চলাচল থেমে গেলে এলইডিগুলো নিভে যায়।#
শুরু হলে :: hat events
[Display a message while moving.]
[সামনে v] দিকে [300] [mm v] চালাও ◀ এবং অপেক্ষা করো না
যখন <চালানো চলছে?>
[Moving...] প্রিন্ট করো ▶
(0.1) সেকেন্ড অপেক্ষা করো
সব সারি মুছে দাও
अंत
[Done!] প্রিন্ট করো ▶

যদি#

C-এর if ব্লকটি শর্তটি সত্য হলে ভেতরের ব্লকগুলোকে চালায়।

যদি ব্লক#
যদি <> তাহলে
अंत

প্যারামিটার

বর্ণনা

অবস্থা

একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় যাচাই করা হয়। যদি এটি True হয়, তাহলে if ব্লকের ভেতরের ব্লকগুলো চলবে। যদি এটি False হয়, তাহলে ব্লকগুলো এড়িয়ে যাওয়া হয়।

উদাহরণ

চালু হলে, স্ক্রিনে চাপ দেওয়া হয়েছে কিনা তা ক্রমাগত পরীক্ষা করে। চাপ দিলে, রোবটটি মাঝারি শক্তিতে একটি বস্তুতে লাথি মারে।#
শুরু হলে :: hat events
[Turn in a circle if the bumper is pressed.]
[সামনে v] দিকে চালাও
চিরকাল
যদি <[LeftBumper v] চাপা হয়েছে?> তাহলে
[বিপরীত v] দিকে (200) [mm v] চালাও ▶
[ডান v] দিকে (360) ডিগ্রি ঘোরো ▶
अंत
চালানো বন্ধ করো
अंत

যদি / অন্যথায়#

C-এর if / else ব্লকটি শর্তটি True বা False হওয়ার উপর ভিত্তি করে কোন ব্লক সেটটি চলবে তা নির্ধারণ করে।

যদি তাহলে অন্যথায় ব্লক#
যদি <> তাহলে
অন্যথায়
अंत

প্যারামিটার

বর্ণনা

অবস্থা

একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় যাচাই করা হয়। যদি এটি True হয়, তাহলে if ব্লকের ভেতরের অংশগুলো চলবে। আর যদি এটি False হয়, তাহলে else ব্লকের ভেতরের অংশগুলো চলবে।

উদাহরণ

চালু হলে, স্ক্রিনে চাপ দেওয়া হয়েছে কিনা তা ক্রমাগত পরীক্ষা করে। চাপ দিলে, সামনের দিকে তাকানো একটি উত্তেজিত ইমোজি দেখায়; অন্যথায়, সামনের দিকে তাকানো একটি বিরক্ত ইমোজি দেখায়।#
শুরু হলে :: hat events
[If bumper pressed, reverse and turn right.]
চিরকাল
যদি <[LeftBumper v] চাপা হয়েছে?> তাহলে
[বিপরীত v] দিকে (100) [mm v] চালাও ▶
[ডান v] দিকে (90) ডিগ্রি ঘোরো ▶
অন্যথায়
[সামনে v] দিকে চালাও
अंत

যদি / অন্যথায় যদি / অন্যথায়#

if / else if / else এক্সপ্যান্ডেবল C ব্লকটি শর্তের উপর ভিত্তি করে কোন ব্লক সেটটি চলবে তা নির্বাচন করে:

  • শর্তটি সত্য প্রমাণিত হলে if তার কোড ব্লকটি চালায়।

  • else if শুধুমাত্র তখনই অতিরিক্ত শর্তগুলো যাচাই করে, যখন পূর্ববর্তী সমস্ত শর্ত False হিসেবে প্রমাণিত হয়। একাধিক else if স্টেটমেন্ট ব্যবহার করা যেতে পারে।

  • পূর্ববর্তী কোনো শর্তই সত্য না হলে, else তার কোড ব্লকটি কেবল তখনই চালায়।

if else if else ব্লক#
যদি <> তাহলে
অন্যথায় যদি <> তাহলে
অন্যথায়
अंत

প্যারামিটার

বর্ণনা

অবস্থা

একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় যাচাই করা হয়। প্রথম যে শর্তটি সত্য হয়, সেটি ওই ব্লক সেটটি চালায়। যদি সমস্ত শর্ত মিথ্যা প্রমাণিত হয়, তবে else ব্লকের ভেতরের ব্লকগুলো চলবে।

উদাহরণ

কন্ট্রোলারের অ্যাক্সিস ১-এর অবস্থান পরিবর্তন হলে, সামনে ঠেললে এটি সামনে যায়, পিছনে টানলে পিছনে যায় এবং নিরপেক্ষ অবস্থায় থেমে যায়।#
শুরু হলে :: hat events
[Turn right if the an Eye Sensor detects red, left if it detects green, and continue driving if anything else.]
চিরকাল
যদি <[FrontEye v] কি [লাল v] শনাক্ত করছে?> তাহলে
[ডান v] দিকে (90) ডিগ্রি ঘোরো ▶
অন্যথায় যদি <[FrontEye v] কি [সবুজ v] শনাক্ত করছে?> তাহলে
[বাম v] দিকে (90) ডিগ্রি ঘোরো ▶
অন্যথায়
[সামনে v] দিকে চালাও
अंत
अंत

বিরতি#

break স্ট্যাক ব্লক একটি লুপ থেকে অবিলম্বে বেরিয়ে যায়। এই ব্লকটি repeat, repeat until, while, এবং forever ব্লকের ভিতরে ব্যবহার করা যেতে পারে। যখন প্রোজেক্ট চলাকালীন কোনো ঘটনার কারণে, যেমন একটি বোতাম চাপা হলে বা একটি সেন্সর কোনো বস্তু শনাক্ত করলে, লুপটিকে সময়ের আগেই থামাতে হয়, তখন Break ব্লকটি কার্যকর।

স্ট্যাক ব্লক ভাঙুন#
বিরতি দাও

প্যারামিটার

বর্ণনা

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

উদাহরণ

চালু করলে, স্ক্রিনে চাপ না দেওয়া পর্যন্ত প্রতি ০.৫ সেকেন্ড পর পর এলইডি-গুলো লাল ও সবুজ রঙে জ্বলে ওঠে, তারপর থেমে যায়।#
শুরু হলে :: hat events
[Stop turning after a button is pressed.]
চিরকাল
[সামনে v] দিকে চালাও
যদি <[LeftBumper v] চাপা হয়েছে?> তাহলে
বিরতি দাও
अंत
अंत
চালানো বন্ধ করো

প্রকল্পটি বন্ধ করুন#

stop project স্ট্যাক ব্লকটি একটি চলমান প্রজেক্ট বন্ধ করে দেয়।

প্রজেক্ট ব্লক বন্ধ করুন#
প্রকল্প বন্ধ করো

প্যারামিটার

বর্ণনা

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

উদাহরণ

চালু করা হলে, স্ক্রিনে চাপ না দেওয়া পর্যন্ত এটি প্রতি ০.৫ সেকেন্ড পর পর লাল ও সবুজ এলইডি জ্বালায়, তারপর প্রজেক্টটি বন্ধ করে দেয়।#
শুরু হলে :: hat events
[Stop the project entirely after a button is pressed.]
চিরকাল
[সামনে v] দিকে চালাও
যদি <[LeftBumper v] চাপা হয়েছে?> তাহলে
প্রকল্প বন্ধ করো
अंत
अंत