English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية C++ الأساسية

C++ 流程控制

وظائف مخصصة في C++

C++ 数组 & 字符串

C++ 数据结构

C++ 类 & 对象

المؤشرات في C++

الوراثة في C++

دليل STL C++

C++ 参考手册

وظائف مخصصة في C++

在本文中,您将学习有关C ++中函数的所有知识。有哪些类型的函数,如何在示例中使用它们。

在编程中,函数是指将代码分组以执行特定任务的代码块。

取决于函数是预定义的还是由程序员创建的;函数有两种类型:

  1. 标准库函数

  2. دالة معرفة المستخدم

标准库函数

库函数是C ++编程中的内置函数。

程序员可以通过直接调用函数来使用库函数;他们不需要自己编写。

示例1:库函数

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    double number, squareRoot;
    cout << "输入一个数字: ";
    cin >> number;
    // sqrt() هي دالة مكتبة تستخدم لحساب الجذور المربعة
    squareRoot = sqrt(number);
    cout << "عدد " << number << "  جذر مربع = " << squareRoot;
    return 0;
}

نتيجة الخروج

ادخل عدد: 26
جذر مربع 26 = 5.09902

في هذا المثال، يتم استدعاء دالة مكتبة sqrt() لحساب جذور مربعة عدد 26.

ملاحظة في البرنامج أعلاه #include <cmath>، هنا cmath هي ملف الرأس. تم تعريف دالة sqrt() في ملف الرأس cmath.

عندما تستخدم #include <cmath> لضم محتويات ملف cmath إلى هذا البرنامج، يمكنك استخدام جميع الدوال المحددة في cmath.

كل برنامج C ++ صالح يحتوي على دالة واحدة على الأقل، وهي دالة main().

دالة معرفة المستخدم

يسمح C ++ للمبرمجين بتعريف دوالهم الخاصة.

تقوم الدوال المحددة من قبل المستخدم بتنظيم كود تنفيذ مهمة معينة وتعيين اسم (مؤشر) لهذا المجموعة من الكود.

عند استدعاء هذه الدالة من أي جزء من البرنامج، ستقوم بتنفيذ الكود الموجود في جسم الدالة.

كيف تعمل الدوال المحددة من قبل المستخدم في C؟

حسب الشكل أعلاه.

عند بدء تشغيل البرنامج، يتم استدعاء دالة main، أي تنفيذ الكود من دالة main عند بدء تشغيل البرنامج.

عندما يصل التحكم في البرنامج إلى function_name() داخل main، سيقوم بالانتقال إلى void function_name() وتنفيذ جميع الكود الموجود داخل void function_name().

ثم، يعود التحكم في البرنامج إلى دالة main، حيث، كما هو موضح في الشكل، يتم تنفيذ الكود بعد استدعاء function_name().

مثال 2: دالة معرفة المستخدم

برنامج C ++ يقوم بضيفان عددين. يتم إنشاء دالة add() لضيف الأعداد ويتم عرض الجمع في دالة main().

#include <iostream>
using namespace std;
// م原型 (البيان)
int add(int, int);
int main()
{
    int num1, num2, sum;
    cout << "ادخل رقمين للاضافة: ";
    cin >> num1 >> num2;
    // استدعاء الدالة
    sum = add(num1, num2);
    cout << "الجمع = " << sum;
    return 0;
}
// تعريف الدالة
int add(int a, int b)
{
    int add;
    add = a + b;
    // جملة العودة
    return add;
}

نتيجة الخروج

ادخل رقمين للاضافة: 8
-4
الجمع = 4

م原型 (البيان)

إذا تم تعريف الدالة المحددة من قبل المستخدم بعد دالة main()، فإن المحول سيظهر خطأ. هذا لأن المحول لا يعرف الدالة المحددة من قبل المستخدم، ونوع المعلمات التي يتم نقلها إلى الدالة ونوع العودة.

في C ++، هو نموذج الدالة وهو إعلان للدالة دون جسمها لتقديم معلومات للمحول عن الدالة المحددة من قبل المستخدم. نموذج الدالة في المثال التالي هو:

int add(int, int);

يمكنك رؤية أن النموذج لا يحتوي على جسم الدالة. ويحتوي فقط على نوع العودة والمعلمات، وليس هناك معلمات. يمكنك أيضًا إعلان نموذج الدالة كما في المثال التالي، ولكن لا تحتاج إلى كتابة المعلمات.

int add(int a, int b);

ملاحظة:إذا كانت الدالة المحددة من قبل المستخدم موجودة قبل دالة main()، فإنه لا يجب تعريف النموذج.

دعوة الدالة

لتنفيذ كود جسم الدالة، يجب دعوة (دعوة) الدالة المحددة من قبل المستخدم.

في البرنامج المذكور أعلاه، يتم دعوة الدالة المحددة من قبل المستخدم add(num1, num2) من الدالة الافتراضية main().

يُرجع هذا الدالة عددًا صحيحًا، ويُخزن هذا العدد في متغير variable add.

تعريف الدالة

تُسمى الدالة نفسها تعريف الدالة. تعريف الدالة في البرنامج المذكور أعلاه هو:

// تعريف الدالة
int add(int a, int b)
{
    int add;
    add = a + b;
    return add;
}

عند دعوة الدالة، يتم نقل التحكم إلى الجملة الأولى في جسم الدالة.

ثم يتم تنفيذ الأوامر الأخرى في جسم الدالة بالترتيب.

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

نقل المعلمات إلى الدالة

في البرمجة، المعلمات (parameter) هي البيانات التي يتم نقلها إلى الدالة (تعريف الدالة) عند دعوة الدالة.

في هذا المثال، يتم نقل متغيري num1 و num2 إلى الدالة أثناء دعوة الدالة. وتُسمى هذه المعلمات معلمات فعلية.

تُستبدل قيم num1 و num2 بالمتغيرات a و b على التوالي. وتُسمى هذه المعلمات a و b بمعلمات النمط.

كما يظهر في الشكل التالي:

ملاحظات حول نقل المعلمات

  • يجب أن يكون عدد المعلمات الفعلية والمشكلة متساويين. (استثناءً:)تحميل الدالة)

  • يجب أن يكون نوع المعلمات الفعلية مطابقاً لنوع المعلمات النمطية الأولى. وبالمثل، يجب أن يكون نوع المعلمات الفعلية الثانية مطابقاً لنوع المعلمات النمطية الثانية، وهكذا.

  • يمكنك دعوة الدالة a دون إرسال أي معلمات. عدد المعلمات التي يتم إرسالها إلى الدالة يعتمد على كيفية حل المشكلة من قبل المبرمج.

  • يمكنك تحديد قيم افتراضية للعناصر. وتسمى هذه العناصرالقيم الافتراضية.

  • في البرنامج المذكور أعلاه، كلا العنصرين هما من نوع int. ولكن ليس من الضروري استخدام عنصرين من نفس النوع في نفس الوقت.

جملة return

يمكن للدالة استخدام جملة return لإرجاع قيمة واحدة إلى البرنامج الذي دعته.

في البرنامج المذكور أعلاه، يتم استخدام الجمل التالية لإرجاع قيمة add إلى البرنامج الذي دعته من خلال الدالة المحددة من قبل المستخدم:

return add;

يوضح الشكل أدناه عمل تعليمات return.

في البرنامج المذكور أعلاه، يتم إعادة قيمة وظيفة الدالة المحددة في الدالة المحددة إلى الدالة المحددة. ثم يتم حفظ هذه القيمة في متغير sum.

الاحتياطية على العودة، أي أن متغير العودة add من نوع int، sum أيضًا من نوع int.

بالإضافة إلى ذلك، يحدد نوع العودة للوظيفة في معرف الوظيفة int add(int a, int b) في int قبل add(int a, int b)، يعني int أن الوظيفة يجب أن تعود قيمة من نوع int.

إذا لم يكن هناك قيمة عائدة يجب استخدام void.