নিয়ন্ত্রণ#
ভূমিকা#
কন্ট্রোলের মধ্যে টাইমিং, প্রোগ্রাম ফ্লো, কন্ডিশনাল লজিক এবং প্রজেক্ট টার্মিনেশনের ফাংশন অন্তর্ভুক্ত রয়েছে। এই কন্ট্রোলগুলো আপনাকে প্রোগ্রাম চালানো থামাতে, লুপ তৈরি করতে, লজিক পাথ নির্ধারণ করতে এবং একটি প্রোগ্রাম শেষ করতে দেয়।
ফাংশন এবং কীওয়ার্ড#
নিচে উপলব্ধ কন্ট্রোলগুলোর একটি তালিকা দেওয়া হলো, যার মধ্যে এপিআই ফাংশন এবং সি++ কীওয়ার্ড অন্তর্ভুক্ত রয়েছে:
wait– একটি নির্দিষ্ট সময়ের জন্য প্রকল্পটি থামিয়ে দেয়।for– একটি কোড ব্লক নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করে।if– কোনো শর্ত সত্য হলে একটি কোড ব্লক রান করে।if/else– শর্ত সত্য হলে একটি কোড ব্লক, অথবা মিথ্যা হলে ভিন্ন একটি কোড ব্লক রান করে।if/else if/else– ক্রমানুসারে একাধিক শর্ত পরীক্ষা করে এবং যে ব্লকটির শর্ত প্রথমে সত্য হয়, সেটি চালায়।while– যতক্ষণ কোনো শর্ত সত্য থাকে, ততক্ষণ কোডের একটি অংশ পুনরাবৃত্তি করে।break– বর্তমান লুপ থেকে অবিলম্বে প্রস্থান করে।programStop– প্রজেক্টটি অবিলম্বে বন্ধ করে দেয়।
wait#
কোডের পরবর্তী লাইনে যাওয়ার আগে প্রজেক্টটিকে একটি নির্দিষ্ট সময়ের জন্য থামিয়ে দেয়।
Available Functionsvoid wait(
double time,
timeUnits units );
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
অপেক্ষা করার সময়, যা ধনাত্মক |
|
|
সময় প্রকাশের একক: |
এই ফাংশনটি কোনো মান ফেরত দেয় না।
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
কোডের একটি ব্লক পুনরাবৃত্তি করে। গণনার পদ্ধতিটি একটি নির্দিষ্ট সংখ্যক বার চলে; পরিসর-ভিত্তিক পদ্ধতিটি একটি সংগ্রহের প্রতিটি আইটেমের জন্য একবার চলে।
Syntax1 — গণনা লুপ — একটি নির্দিষ্ট সংখ্যক বার চলে।
for (int i = 0; i < count; i++) { // code block }
Parameters2 — রেঞ্জ-ভিত্তিক লুপ — একটি সংগ্রহের প্রতিটি আইটেমের জন্য একবার চলে।
for (type element : collection) { // code block }
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
কোড ব্লকটি যতবার পুনরাবৃত্তি করা হবে। |
|
টাইপ নাম |
সংগ্রহের প্রতিটি আইটেমের ডেটা টাইপ (যেমন |
|
|
লুপের বর্তমান আইটেমের মান ধারণ করার জন্য ব্যবহৃত ভেরিয়েবলের নাম। |
|
|
অ্যারে (বা ভেক্টর) যা লুপের মাধ্যমে চালানো হবে এমন আইটেমগুলো ধারণ করে। |
এই নিয়ন্ত্রণ কাঠামোটি কোনো মান ফেরত দেয় না।
Examples// Drive in a square
for (int i = 0; i < 4; i++) {
Drivetrain.driveFor(forward, 100, mm);
Drivetrain.turnFor(right, 90, degrees);
}
// Drive forward different distances
int distances[] = {100, 150, 200};
for (int d : distances) {
Drivetrain.driveFor(forward, d, mm);
wait(0.5, seconds);
}
if#
শর্তটি true হলে আবদ্ধ কোড ব্লকটি রান করে।
if (condition) {
// code block
}
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় মূল্যায়ন করা হয়। যদি এটি |
এই নিয়ন্ত্রণ কাঠামোটি কোনো মান ফেরত দেয় না।
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Display a message once the screen is pressed
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
Brain.Screen.print("Screen pressed!");
break;
}
wait(5, msec);
}
if/else#
শর্তটি (যেমন true অথবা (যেমন false এর উপর ভিত্তি করে নির্ধারণ করে যে আবদ্ধ কোডের কোন ব্লকটি চলবে।
if (condition) {
// code block if true
}
else {
// code block if false
}
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় ইভ্যালুয়েট করা হয়। যদি এটি |
এই নিয়ন্ত্রণ কাঠামোটি কোনো মান ফেরত দেয় না।
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
একাধিক শর্তের উপর ভিত্তি করে কোন আবদ্ধ কোড ব্লকটি চলবে তা নির্বাচন করে।
Syntaxif (condition) {
// code block if first condition is true
}
else if (condition) {
// code block if second condition is true
}
else {
// code block if no conditions are true
}
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় মূল্যায়ন করা হয়। প্রথম যে শর্তটি |
এই নিয়ন্ত্রণ কাঠামোটি কোনো মান ফেরত দেয় না।
Notesifতার ব্লকটি চালায় যদি শর্তtrue।else ifশুধুমাত্র তখনই অতিরিক্ত শর্তগুলো যাচাই করে যখন পূর্ববর্তী সমস্ত শর্তfalseহয়। একাধিকelse ifস্টেটমেন্ট ব্যবহার করা যেতে পারে।elseতার ব্লকটি তখনই চালায় যদি পূর্ববর্তী কোনো শর্তই সত্য না হয়true।
while (true) {
// Turn screen blue if pressed on the left half
if (Brain.Screen.pressing() && Brain.Screen.xPosition() < 240) {
Brain.Screen.clearScreen(blue);
// Turn screen green if pressed on the right half
} else if (Brain.Screen.pressing() && Brain.Screen.xPosition() > 240) {
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
wait(20, msec);
}
while#
যতক্ষণ শর্তটি true থাকে, ততক্ষণ কোডটি বারবার চলে।
while (condition) {
// code block
}
প্যারামিটার |
প্রকার |
বর্ণনা |
|---|---|---|
|
|
একটি এক্সপ্রেশন বা ভেরিয়েবল যা প্রতিটি পুনরাবৃত্তির আগে মূল্যায়ন করা হয়। যদি এটি |
এই নিয়ন্ত্রণ কাঠামোটি কোনো মান ফেরত দেয় না।
Notesনিচের উদাহরণগুলোতে দেখানো অনুযায়ী, শর্তের আগে
!যোগ করে এটিকে ‘Wait until’-এর মতোও ব্যবহার করা যায়।
while (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green whenever it's pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
// Wait until the screen is pressed to turn it green
while (!Brain.Screen.pressing()) {
wait(20, msec);
}
Brain.Screen.clearScreen(green);
break#
বর্তমান লুপ থেকে অবিলম্বে বেরিয়ে যায়। যদি কোনো নেস্টেড লুপের মধ্যে থাকে, তাহলে break সবচেয়ে ভেতরের লুপ থেকে বেরিয়ে যায়।
break;
এই স্টেটমেন্টটি কোনো প্যারামিটার গ্রহণ করে না।
Return Valuesএই স্টেটমেন্টটি কোনো মান রিটার্ন করে না।
Exampleswhile (true) {
// Press the screen to pause on a color
Brain.Screen.clearScreen(red);
wait(500, msec);
if (Brain.Screen.pressing()) {
break;
}
Brain.Screen.clearScreen(green);
wait(500, msec);
if (Brain.Screen.pressing()) {
break;
}
}
programStop#
প্রকল্পটি অবিলম্বে শেষ করে।
SyntaxBrain.programStop();
এই স্টেটমেন্টটি কোনো প্যারামিটার গ্রহণ করে না।
Return Valuesএই স্টেটমেন্টটি কোনো মান রিটার্ন করে না।
Exampleswhile (true) {
// Press the screen to end the project
Brain.Screen.clearScreen(red);
wait(500, msec);
if (Brain.Screen.pressing()) {
Brain.programStop();
}
Brain.Screen.clearScreen(green);
wait(500, msec);
if (Brain.Screen.pressing()) {
Brain.programStop();
}
}