يتحكم#

مقدمة#

تتضمن عناصر التحكم وظائف للتوقيت، وتدفق البرنامج، والمنطق الشرطي، وإنهاء المشروع. تتيح لك هذه العناصر إيقاف التنفيذ مؤقتًا، وإنشاء حلقات تكرارية، وتحديد مسارات منطقية، وإنهاء البرنامج.

الوظائف والكلمات المفتاحية#

فيما يلي قائمة بعناصر التحكم المتاحة، بما في ذلك وظائف واجهة برمجة التطبيقات (API) وكلمات C++ الرئيسية:

  • wait – يقوم بإيقاف المشروع مؤقتًا لفترة زمنية محددة.

  • for – يكرر كتلة من التعليمات البرمجية عددًا محددًا من المرات.

  • if – يقوم بتشغيل كتلة من التعليمات البرمجية إذا كان الشرط صحيحًا.

  • if/else – يقوم بتشغيل كتلة واحدة من التعليمات البرمجية إذا كان الشرط صحيحًا، أو كتلة مختلفة إذا كان خاطئًا.

  • if/else if/else – يتحقق من عدة شروط بالترتيب وينفذ الكتلة الأولى التي يكون شرطها صحيحًا.

  • while – يكرر كتلة من التعليمات البرمجية طالما أن الشرط يظل صحيحًا.

  • break – يخرج من الحلقة الحالية فورًا.

  • programStop – ينهي المشروع فورًا.

wait#

يُوقف المشروع مؤقتًا لفترة زمنية محددة قبل الانتقال إلى سطر التعليمات البرمجية التالي.

Available Functions
void wait(
  double time,
  timeUnits units );

Parameters

المعلمة

يكتب

وصف

time

double

مقدار الوقت اللازم للانتظار، كقيمة موجبة double.

units

timeUnits

وحدة تمثيل الوقت: msec (افتراضي) - مللي ثانية أو seconds

Return Values

هذه الدالة لا تُرجع قيمة.

Examples
// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();

for#

يكرر كتلة من التعليمات البرمجية. يتم تشغيل نموذج العد عددًا محددًا من المرات؛ ويتم تشغيل النموذج القائم على النطاق مرة واحدة لكل عنصر في المجموعة.

Syntax

1 — حلقة العد — يتم تشغيلها عددًا ثابتًا من المرات.

for (int i = 0; i < count; i++) {
   // code block
}

2 — حلقة تكرارية تعتمد على النطاق — يتم تشغيلها مرة واحدة لكل عنصر في المجموعة.

for (type element : collection) {
   // code block
}

Parameters

المعلمة

يكتب

وصف

count

int

عدد مرات تكرار كتلة التعليمات البرمجية.

type

اسم النوع

نوع البيانات لكل عنصر في المجموعة (على سبيل المثال int، double).

element

variable

اسم المتغير الذي سيحتوي على قيمة العنصر الحالي في الحلقة.

collection

array

المصفوفة (أو المتجه) التي تحتوي على العناصر التي سيتم المرور عليها.

Return Values

لا تُرجع بنية التحكم هذه قيمة.

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.

Syntax
if (condition) {
  // code block
}

Parameters

المعلمة

يكتب

وصف

condition

bool

An expression or variable that is evaluated when the statement runs. If it is true, the code inside the if block runs; if it is false, the block is skipped.

Return Values

لا تُرجع بنية التحكم هذه قيمة.

Examples
while (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.

Syntax
if (condition) {
  // code block if true
}
else {
  // code block if false
}

Parameters

المعلمة

يكتب

وصف

condition

bool

An expression or variable that is evaluated when the statement runs. If it is true, the code inside the if block runs; if it is false, the code inside the else block runs instead.

Return Values

لا تُرجع بنية التحكم هذه قيمة.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Turn the screen green when pressed
    Brain.Screen.clearScreen(green);
  } else {
    Brain.Screen.clearScreen();
  }
}

if/else if/else#

يحدد أي جزء من التعليمات البرمجية المضمنة يتم تشغيله بناءً على شروط متعددة.

Syntax
if (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
}

Parameters

المعلمة

يكتب

وصف

condition

bool

تعبير أو متغير يتم تقييمه عند تنفيذ العبارة. الشرط الأول الذي يكون صحيحًا true يحدد الكتلة التي يتم تنفيذها؛ إذا لم يكن أي شرط صحيحًا true، يتم تنفيذ الكتلة else.

Return Values

لا تُرجع بنية التحكم هذه قيمة.

Notes
  • if يتم تشغيل كتلته إذا كان الشرط true.

  • else if يتحقق من الشروط الإضافية فقط إذا كانت جميع الشروط السابقة خاطئة else ifيمكن استخدام عبارات else if متعددة false.

  • else يتم تشغيل كتلتها فقط إذا لم يكن أي من الشروط السابقة صحيحًا true.

Examples
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.

Syntax
while (condition) {
  // code block
}

Parameters

المعلمة

يكتب

وصف

condition

bool

تعبير أو متغير يتم تقييمه قبل كل تكرار. إذا كانت قيمته true، تستمر الحلقة؛ وإذا كانت قيمته false، تتوقف الحلقة.

Return Values

لا تُرجع بنية التحكم هذه قيمة.

Notes
  • ويمكن استخدامه أيضًا مثل “انتظر حتى” عن طريق إضافة ! قبل الشرط، كما هو موضح في الأمثلة أدناه.

Examples
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 يُخرج الحلقة الداخلية.

Syntax
break;

Parameters

لا يقبل هذا البيان أي معلمات.

Return Values

لا تُرجع هذه العبارة قيمة.

Examples
while (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#

ينهي المشروع فوراً.

Syntax
Brain.programStop();

Parameters

لا يقبل هذا البيان أي معلمات.

Return Values

لا تُرجع هذه العبارة قيمة.

Examples
while (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();
  }
}