الدوال Functions في لغة ++C - ProgrammerTech
Language:

Search

الدوال Functions في لغة ++C

  • Share this:
الدوال Functions في لغة ++C

الدوال function في ++C

الدالة ( Function ) هي عبارة عن برنامج فرعي مهمته تنفيذ مهمة معينة حين يتم إستدعاءه (عبارة عن مجموعة أوامر مجمعة في مكان واحد و تتنفذ عندما نقوم بإستدعائها). و يحتوي كل برنامج ++C على برنامج واحد على الأقل وهو ()main و يمكن لجميع البرامج البسيطة تحديد وظائف إضافية.

مما يتألف البرنامج الفرعي؟

 

يتألف البرنامج الفرعي من ثلاث أقسام وهي كالتالي :

  1. التصريح عن البرنامج و ينتهي بفاصلة منقوطة و لكن إن كان التصريح خارج التعليمة أي قبلها void main() فإن البرنامج الفرعي يكون مشاع لكل البرامج المتاحة في البرنامج, أما إن كتبت داخل جسم void main() فإن البرنامج الفرعي يكون حكراً على هذه التعليمة.
  2. كود طلب البرنامج و ينتهي بفاصلة منقوطة.
  3. جسم البرنامج وهو يشابه طريقة كتابة البرنامج الرئيسي و بدون فاصلة منقوطة ويكتب جسم التابع بعد نهاية كتابة جسم البرنامج الرئيسي.

 

 

التصريح عن التابع في C++

هو أن نكتب إسم خرج التابع ثم إسم التابع و من ثم نكتب الباراميترات, أي نوع الخرج.

void positive (int);

حيث أن void خرج التابع و positive إسم التابع و int البارميترات.

بناء الدوال في ++C

return_type function_name( parameter list ) {
    body of the function
}

حيث أن:

  1. return_type: تعني تحديد النوع الذي سوف ترجّعهُ الدالة عندما تنتهي.
  2. function_name: تمثل الإسم الذي نعطيه للدالة ونستدعيها به عند حاجتها.
  3. Parameter list: الباراميترات (وضعها يكون إختياري).
  4. body of the function: جسم الدالة و هي الأوامر التي نضعها في الدالة.

كما لاحظنا أنها تتألف من رأس الدالة و جسم الوظائف و ثم أجزاء البرنامج. نوع الإرجاع return_Type يمكن أن يكون أي نوع من أنواع البيانات ( int - double - bool - string إلخ..). في حال كانت الدالة لا تقوم بإرجاع أي قيمة يجب وضع الكلمة void مكان الكلمة return_type.

 

مثال 1
#include <iostream>
using namespace std;
int max(int num1, int num2);
int main () {
   int a = 100;
   int b = 200;
   int ret;
   ret = max(a, b);
   cout << "Max value is : " << ret << endl;
   return 0;
}
int max(int num1, int num2) {
   int result;
   if (num1 > num2)
      result = num1;
   else
      result = num2;
   return result;
}

أنشأنا دالتين من نوع int و هما int num1 و int num2 ثم قمنا بالدخول للبرنامج الرئيسي و أنشأنا متغيرات عددية وهي:

 

  • المتغير a و قيمته تساوي 100.
  • المتغير b و قيمته تساوي 200.
  • المتغير ret و قيمته معرفة الرقم الأكبرمن المتغيرين السابقات.

 

 ثم أنشأنا دالة طباعة و تطبع لنا Max value is ثم يقوم بطباعة الرقم الأكبر, ثم أنشأنا دالة max و بها المتغيرين.

و أنشأنا متغير result لتخزين النتيجة به ووضعنا شروط في حال كان num1 اكبر من num2 قم بطباعة قيمة num1 و غير ذلك قم بطباعة num2 و ارجع النتيجة لنا.

عند تشغيل الكود سوف تكون نتيجته هي 200.

200

  

 

مثال 2
#include <iostream>
using namespace std;
int sum(int a, int b = 20) {
   int result;
   result = a + b;
   return (result);
}
int main () {
   int a = 100;
   int b = 200;
   int result;
   result = sum(a, b);
   cout << "Total value is :" << result << endl;
   result = sum(a);
   cout << "Total value is :" << result << endl;
   return 0;
}

قمنا بإنشاء دالتين int و هو sum و الدالتين هما int a و int b و قيمة b تساوي 20 و أنشأنا متغير آخر لتخزين النتيجة به وهو result و قيمة هذا المتغير هي ناتج جمع a+b و يقوم بإرجاع الناتج.

ثم في البرنامج الرئيسي عيننا قيمة للمتغير a و هي 100 و المتغير b و هي 200.

عند تشغيل البرنامج ستكون نتيجته هي

Total value is: 300
Total value is: 120

 

إعطاء قيمة إفتراضية للباراميترات في ++C

لغة ++C تتيح وضع قيم إفتراضية للباراميترات مما يجعل المبرمج عند إستدعاء الدالة مُخيّر على تمرير قيم بمكان الباراميترات عوضاً عن أن تكون مجبراً على ذلك. القيمة الإفتراضية للباراميتر إسمها Default Argument.

 

مثال 3
#include <iostream>
using namespace std;
void printAdmin(string admin="Muhammad")
{
    cout << "Your admin is " << admin << endl;
}
int main()
{
    printAdmin();
    printAdmin("Kaissar");
    return 0;
}

عرفنا دالة void و إسمها printAdmin و عند إستدعاءها يمكن تمرير قيمة بمكان الباراميتر admin و يمكن أيضاً عدم تمرير قيمة لأنه في الأساس يملك قيمة وهي Muhammad. و في داخل البرنامج الرئيسي قمنا بإستدعاء الدالة بدون تمرير لها قيمة لأن هي تملك قيمة و بالتالي ستقى قيمتها نفسها Muhammad. ثم قمنا بإستدعاء الدالة مرة أخرى و مررنا لها قيمة وهي Kaissar و بالتالي الباراميتر ستصبح قيمته Kaissar. عند تشغيل الكود ستكون نتيجته

Your admin is Muhammad
Your admin is 

إذا كانت الدالة تمتلك أكثر من باراميتر في البرنامج و تٌريد وضع قيمة إفتراضية لأحد الباراميترات الموجودة التي تمكلها فقط, فيجب عليك وضع الباراميترات التي تملك قيم إفتراضية في النهاية.


Muhammad Alush

Muhammad Alush

إسمي محمد تركي العلوش من سورية من ريف حلب الشرقي 1994, محب للتقنية و التعلم الذاتي, و جميع خبراتي تعلمتها ذاتياً, و اللغات البرمجية التي أتقنها هي html, css, javascript, php, c, python بالإضافة إلى حبي الكبير لمجال الشبكات.

موقعي programmer-tech.com