فهم بناء الجملة لإنشاء وظائف في 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() {

	تعريف المتغيرات، إلخ.
	التعبيرات...
	//لا حاجة إلى إرجاع صريح.
}

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

void function-name(data-type variable) {

	تعريفات المتغيرات، إلخ.
	التعبيرات...
	//لا حاجة إلى إرجاع صريح.
}

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

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

void function-name(data-type variable, data-type variable, etc.) {

	تعريفات المتغيرات، إلخ.
	التعبيرات...
	//لا حاجة إلى إرجاع صريح.
}

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

void function-name(data-type variable, data-type variable, etc.) {

	تعريفات المتغيرات، إلخ.
	التعبيرات...
	return return-value
}

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

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

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

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

هل يتم إنشاء الدالة قبل الدالة الرئيسية main() أم بعدها؟

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

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

 يُظهر محرر الأكواد VEXcode Pro V5 الدالة الرئيسية التي تستدعي getGCD قبل تعريفها، مع تمييز getGCD كخطأ في المعرف غير المعلن.

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

حلان ممكنان:

int getGCD(int a, int b) {
  int remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  return a;
}


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 remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  return a;
}
	

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


ماذا لو كنت ترغب في تقسيم الوظائف إلى وحدات في ملفات مختلفة؟

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

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

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

هنا هو كيف:

واجهة VEXcode Pro V5 مع فتح قائمة سياق المجلد المضمن وتحديد خيار ملف جديد لإنشاء ملف رأس.

نافذة إنشاء ملف جديد تعرض خيار ملف رأس C++ المحدد مع إدخال اسم الملف common.h.

يعرض محرر الأكواد VEXcode Pro V5 دالة getGCD المعرفة في ملف common.cpp منفصل.

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

الخطوة الثانية: أنشئ ملف cpp منفصل، على سبيل المثال، باسم common.cpp

نافذة إنشاء ملف جديد تعرض خيار ملف مصدر C++ المحدد مع إدخال اسم الملف common.cpp.

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

int getGCD(int a, int b) {
  int remainder = 1;
  while (remainder > 0) {
    remainder = a % b;
    a = b;
    b = remainder;
  }
  return a;
}

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

#include "vex.h"
#include "common.h"
using namespace 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: