فهم بناء الجملة لإنشاء وظائف في VEXcode Pro V5

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

تعريف الوظيفة

الآن بعد أن مررنا ببعض العينات، دعونا نلقي نظرة على الشكل العام لتعريف الدالة:

void function-name() {

	تعريفات للمتغيرات، إلخ.
	تعبيرات...
	// ليس من الضروري العودة الصريحة.
}

لا تُرجع الدالة أي قيمة خاصة، ولا معلمات واردة.

اسم وظيفة باطلة (متغير نوع البيانات) {

	تصريحات المتغيرات، وما إلى ذلك
	تعبيرات ...
	// ليس من الضروري العودة الصريحة.
}

إذا كنت تريد متغيرات متعددة، فما عليك سوى استخدام "،" كمحدد:

لا تُرجع الدالة أي قيمة خاصة، ولكن باستخدام معلمة واحدة.

اسم وظيفة باطلة (متغير نوع البيانات، متغير نوع البيانات، وما إلى ذلك) {

	تعريفات المتغيرات، إلخ.
	تعبيرات...
	// ليس من الضروري العودة الصريحة.
}

لا تُرجع الدالة أي قيمة خاصة، ولكن مع أكثر من معلمة واحدة.

اسم وظيفة باطلة (متغير نوع البيانات، متغير نوع البيانات، وما إلى ذلك) {

	تعريفات المتغيرات، إلخ.
	تعبيرات...
	إرجاع قيمة الإرجاع
}

تقوم الدالة بإرجاع قيمة من نوع بيانات محدد، مع أكثر من معلمة واحدة.

يجب أن يكون نوع الإرجاعللدالة هو نفس نوع بيانات قيمة الإرجاع التي ترجعها الوظيفة. يمكن أن تكون القيمة المرجعةقيمة ثابتة أو متغيرة. يجب أن تكون مسبوقة بالكلمة الأساسية "return."

تحكم القواعد التالية نوع الإرجاع:

  • لا توجد أي قيود تقريبًا على نوع الإرجاع، باستثناء المصفوفة. (المصفوفة هي موضوع آخر أكثر تقدمًا فيما يتعلق بكيفية إنشاء بياناتك. إنه خارج نطاق هذه المقالة ولن يتم تناوله هنا.
  • تحديد أن نوع الإرجاع "باطل" يعني عدم وجود قيمة إرجاع ضرورية. وجملة "العودة" ضمنية. وهذا يعني أنه يتعين عليك ذكر "الإرجاع" بشكل صريح في نهاية دالة "باطلة".

إنشاء وظيفة قبل الرئيسي () أو بعد؟

يقرأ المترجم ملفك من الأعلى إلى الأسفل. وبالتالي، فإن الترتيب مهم.

لنأخذ دالة القاسم المشترك الأكبر (GCD) البسيطة كمثال. سوف تحصل على خطأ:استخدام معرف غير معلن 'getGCD'

 لقطة شاشة لواجهة برمجة VEXcode V5 تُظهر كتل ترميز مختلفة وخيارات لبرمجة أنظمة VEX Robotics، وتوضح الميزات المتاحة للمستخدمين في قسم البرمجة.

في الواقع هذا صحيح سواء كان من main() أو كتلة دالة الاستدعاء الأخرى، أي أن "كتلة الدالة المستدعية" يجب أن تسبق "كتلة دالة الاستدعاء".

حلان ممكنان:

int getGCD(int a, int b) {
  int المتبقية = 1;
  بينما (الباقي > 0) {
    الباقي = أ % ب؛
    أ = ب؛
    ب = الباقي؛
  }
  إرجاع أ;
}


int main() {
	Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
	

انقل "الوظيفة المستدعىة" أعلى "كتلة وظيفة الاستدعاء" في المثال "main()."

int getGCD(int, int);

int main() { 
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

int getGCD(int a, int b) {
  int المتبقية = 1;
  بينما (الباقي > 0) {
    الباقي = أ % ب;
    أ = ب؛
    ب = الباقي؛
  }
  إرجاع أ؛
}
	

ضع النموذج الأولي (ويسمى أيضًا التوقيع) للوظيفة قبل "كتلة وظيفة الاستدعاء".


ماذا لو كنت ترغب في نمطية الوظائف في ملفات مختلفة؟

الخطوة 1: قم بإنشاء ملف رأس، ثم ضع النموذج الأولي للوظيفة في هذا الملف.

على سبيل المثال، قم بإنشاء ملف باسم "myFuncs.h"

تحتاج إلى "إضافة" ملف الرأس هذا إلى مشروعك قبل تجميع التعليمات البرمجية الخاصة بك. يتيح ذلك لـ VEXcode Pro V5 IDE "أن يكون على علم" بتضمين ملف الرأس الجديد هذا قبل أن يبدأ في إنشاء مشروعك.

هنا هو كيف:

لقطة شاشة لواجهة برمجة تعرض ميزات فئة V5، بما في ذلك مقتطفات التعليمات البرمجية والأدوات للمطورين، مما يوضح الوظائف المتاحة في قسم البرمجة.

لقطة شاشة للمحتوى المتعلق بالبرمجة في وصف فئة V5، والتي تعرض الميزات والوظائف الرئيسية للمطورين.

لقطة شاشة لوصف فئة برمجة V5، والتي تعرض الميزات والوظائف الرئيسية المتعلقة بالبرمجة في منصة V5.

في ملف الرأس هذا "common.h" (يمكنك تسمية ما تريد، طالما أنه أبجدي رقمي بدون مسافة.)

الخطوة 2: قم بإنشاء ملف cpp منفصل، على سبيل المثال، يسمى common.cpp

لقطة شاشة لواجهة برمجة تعرض خيارات وميزات الترميز المختلفة، وتوضح وظيفة وتخطيط وصف فئة V5 في قسم البرمجة.

// هذا هو الملف common.cpp

int getGCD(int a, int b) {
  int المتبقية = 1;
  بينما (الباقي > 0) {
    الباقي = أ % ب؛
    أ = ب؛
    ب = الباقي؛
  }
  إرجاع أ;
}

انقل الدالة getGCD(...) إلى هذا الملف

#include "vex.h"
#include "common.h"
باستخدام مساحة الاسم vex؛

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

الآن، كل ما لديك في ملف cpp الرئيسي سيتكون مما يلي

المرجع:https://api.vexcode.cloud/v5/html/namespacevex.html

سيتم تغطية المواضيع المستقبلية في أقسام أكثر تقدمًا من مكتبة VEX في المستقبل:

  • التمرير حسب القيمة مقابل التمرير حسب المرجع
  • تمرير في مجموعة
  • تمر في هيكل

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: