يتحكم#
مقدمة#
تتضمن عناصر التحكم وظائف للتوقيت، وتدفق البرنامج، والمنطق الشرطي، وإنهاء المشروع. تتيح لك هذه العناصر إيقاف التنفيذ مؤقتًا، وإنشاء حلقات تكرارية، وتحديد مسارات منطقية، وإنهاء البرنامج.
الوظائف والكلمات المفتاحية#
فيما يلي قائمة بعناصر التحكم المتاحة، بما في ذلك وظائف واجهة برمجة التطبيقات (API) وكلمات C++ الرئيسية:
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
}
المعلمة |
يكتب |
وصف |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. If it is |
لا تُرجع بنية التحكم هذه قيمة.
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
}
المعلمة |
يكتب |
وصف |
|---|---|---|
|
|
An expression or variable that is evaluated when the statement runs. If it is |
لا تُرجع بنية التحكم هذه قيمة.
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يتحقق من الشروط الإضافية فقط إذا كانت جميع الشروط السابقة خاطئةelse ifيمكن استخدام عبارات else if متعددةfalse.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ويمكن استخدامه أيضًا مثل “انتظر حتى” عن طريق إضافة
!قبل الشرط، كما هو موضح في الأمثلة أدناه.
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();
}
}