شيفرة "مرحباً بالعالم" بلغة C++ وفق معيار C++11.
شيفرة "مرحباً بالعالم" بلغة C++ وفق معيار C++11.المؤلف: Wafelack · الترخيص: CC BY-SA 4.0 · السنة: 2020 · المصدر: ويكيميديا كومنز

الدوال في البرمجة

تُعد الدوال (Functions) أو الطرق (Methods) حجر الأساس في البرمجة الحديثة ومن أبرز المفاهيم الأساسية فيها.11الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبرانيeltabarani.comاذهب إلى المرجع ↓يُفتح في تبويب جديد22فهم الدوال (Functions) وأهميتها في البرمجة - شركة Syntax Roomsyntaxroom.comاذهب إلى المرجع ↓يُفتح في تبويب جديد وتُعرّف الدالة بأنها كتلة مُنظّمة من الشيفرة البرمجية تتمتع باسم مُحدّد وتُنفّذ مهمة خاصة.33الدوال في بايثون: المعاملات والقيم المرجعة بالأمثلةbadracademyedu.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد ويستطيع المبرمج كتابة هذه الشيفرة مرة واحدة فقط، ثم استدعاءها وإعادة استخدامها في أي موضع من البرنامج دون الحاجة لإعادة كتابتها مجددًا.33الدوال في بايثون: المعاملات والقيم المرجعة بالأمثلةbadracademyedu.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

تُقدّم الدوال فوائد عديدة لتنظيم البرامج وتطويرها:11الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبرانيeltabarani.comاذهب إلى المرجع ↓يُفتح في تبويب جديد22فهم الدوال (Functions) وأهميتها في البرمجة - شركة Syntax Roomsyntaxroom.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

تُمثّل الشيفرة التالية مثالًا بسيطًا لبناء دالة واستدعائها في لغة Python:

def greet():
    print("Hello")

greet()

التعريف

تُعرّف الدالة (Function) أو الطريقة (Method) في لغات البرمجة بأنها مجموعة كتل منظمة من الشيفرة البرمجية المجهزة لتأدية مهام محددة، وهي كود لا يُنفّذ إلا عند استدعائه.11الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبرانيeltabarani.comاذهب إلى المرجع ↓يُفتح في تبويب جديد55تعريف دوال جديدة في البرمجةharmash.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد وتعتمد فكرة الدوال على كتابة الشيفرة مرة واحدة فقط داخل البرنامج، ثم مناداتها وتشغيلها في أي مكان عند الحاجة، مما يحمي المبرمج من التكرار وإعادة كتابة المهمة ذاتها أكثر من مرة.55تعريف دوال جديدة في البرمجةharmash.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

تكمن أهمية الدوال في تبسيط الكود وتوفير أسلوب عملي لتنظيم كتابة البرامج، حيث تتيح تقسيم البرنامج إلى أجزاء صغيرة تيسّر عملية الفهم والتعديل، فضلًا عن إمكانية إعادة استخدام الشيفرات نفسها بسهولة.66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد11الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبرانيeltabarani.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد ويتألف البناء الهيكلي للدالة من جزءين رئيسيين هما الترويسة والجسم.66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

وتقسم الدوال في البرمجة إلى نوعين رئيسيين:66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

  1. الدوال الجاهزة: وهي دوال معدة مسبقًا وتكون مدمجة في بيئة البرمجة لتنفيذ الوظائف المباشرة.66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد
  2. الدوال المُنشأة من قِبل المستخدم: وهي دوال مخصصة يكتبها المبرمج وينشئها بنفسه لتأدية أغراض معينة.66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

المعاملات والقيم المرجعة

تُعدّ المعاملات (Parameters) والقيم المرجعة (Return Values) من العناصر الأساسية في البرمجة، إذ تُستخدم المعاملات لتمرير المدخلات والبيانات إلى الدالة، في حين تُعبر القيم المرجعة عن النتائج والمخرجات التي تعود بها الدالة بعد التنفيذ.77شرح أنواع الدوال في JavaScript مع تطبيقات عمليةcode-elta6ur.comاذهب إلى المرجع ↓يُفتح في تبويب جديد88الدوال | PDFscribd.comاذهب إلى المرجع ↓يُفتح في تبويب جديد99للمبتدئين Java دورة البرمجة بلغةoercommons.orgاذهب إلى المرجع ↓يُفتح في تبويب جديد وتتيح هذه الآلية تبادل القيم وإرسالها من وإلى الدوال بفاعلية، كما يمكن تحديد قيم افتراضية لهذه المعاملات.88الدوال | PDFscribd.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

وتتحدد كيفية التعامل مع البيانات ونطاقها داخل الدوال من خلال الآتي:

يوضح المثال التالي بلغة Java كيفية تعريف دالة باسم add تتقبل معاملين وتُرجع ناتج جمعهما:

public static int add(int a, int b) {
    return a + b;
}

النطاق

يُحدد نطاق المتغيرات (Variables Scope) المكان الذي ينتمي إليه المتغير والموضع الذي يُمكن الوصول إليه منه داخل الشفرة البرمجية، إذ لا تتاح جميع المتغيرات للاستخدام في كافة أجزاء البرنامج.11الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبرانيeltabarani.comاذهب إلى المرجع ↓يُفتح في تبويب جديد1010نماذج الدوال ونطاقها — C Academycoddykit.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد ويساعد استيعاب هذا المفهوم ومراعاته عند كتابة البرامج على تحديد المتغيرات التي يُمكن استخدامها داخل الدوال وفي أجزاء البرنامج الأخرى.44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

تنقسم نطاقات المتغيرات في البرمجة إلى نوعين رئيسيين:66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد44مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

global_var = "عام"

def printMessage():
    local_var = "محلي"
    print(global_var)

الاستدعاء الذاتي

يُقصد بمفهوم الاستدعاء الذاتي (Recursion) في البرمجة العملية التي تقوم من خلالها الدالة بطلب أو استدعاء نفسها بنفسها داخل تعريفها، وذلك لإعادة تنفيذ الشفرة البرمجية حتى إنجاز مهمة محددة، وقد ترجع الدالة قيمة لنفسها أثناء ذلك.1111الإستدعاء الذاتي في البرمجةharmash.comاذهب إلى المرجع ↓يُفتح في تبويب جديد1212الاستدعاء الذاتي (Recursion) في C: شرح وأمثلة على الدوال الاستدعائيةt10blogs.comاذهب إلى المرجع ↓يُفتح في تبويب جديد1313البرمجة باستخدام لغة C: العودية (الاستدعاء الذاتي للدالة) | KnowledgeCitywww-new.knowledgecity.comاذهب إلى المرجع ↓يُفتح في تبويب جديد ويُعد هذا الأسلوب تقنية قوية في البرمجة الوظيفية (Functional Programming) تُستخدم لحل المسائل البرمجية المتكررة والمعقدة.66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد1212الاستدعاء الذاتي (Recursion) في C: شرح وأمثلة على الدوال الاستدعائيةt10blogs.comاذهب إلى المرجع ↓يُفتح في تبويب جديد1414الاستدعاء الذاتي والدوال عالية الرتبة — Elixir وPhoenixcoddykit.comاذهب إلى المرجع ↓يُفتح في تبويب جديد يوفر الاستدعاء الذاتي حلولًا أكثر اختصارًا مقارنة بالطرق التكرارية العادية التي قد تكون مجهدة في بعض المشكلات، كما يُسهل التعامل مع البيانات المنظمة على شكل هيكل شجري (Tree) مقارنة بالأساليب البرمجية الأخرى.1212الاستدعاء الذاتي (Recursion) في C: شرح وأمثلة على الدوال الاستدعائيةt10blogs.comاذهب إلى المرجع ↓يُفتح في تبويب جديد1111الإستدعاء الذاتي في البرمجةharmash.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

من أشهر التطبيقات والمسائل التي يُعتمد فيها على الاستدعاء الذاتي:

يجب على المبرمجين الحذر عند كتابة الدوال ذاتية الاستدعاء وتحديد شرط توقف أو خروج واضح للدالة؛ إذ إن غيابه يؤدي إلى حدوث استدعاء ذاتي مدمر يتسبب في دخول البرنامج في حلقة غير منتهية وتوقفه عن الاستجابة.1212الاستدعاء الذاتي (Recursion) في C: شرح وأمثلة على الدوال الاستدعائيةt10blogs.comاذهب إلى المرجع ↓يُفتح في تبويب جديد1111الإستدعاء الذاتي في البرمجةharmash.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

int factorial(int n) {
    if (n <= 1)
        return 1;
    return n * factorial(n - 1);
}

أمثلة

تتعدد أمثلة الدوال في البرمجة وتتنوع تطبيقاتها العملياتية بين تنفيذ الحسابات الرياضية وتنظيم كود البرامج وتسهيل إعادة استخدامه.66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد11الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبرانيeltabarani.comاذهب إلى المرجع ↓يُفتح في تبويب جديد وتتضمن أبرز الأشكال والتطبيقات للدوال ما يلي:

  1. حساب المساحات والعمليات الرياضية: يُمكن في لغة Python كتابة دالة لحساب مساحة أية دائرة، حيث تُستدعى الدالة وتستقبل متغير نصف القطر المطلوب حسابه، وتطبق قانون المساحة باقتطاع مربع نصف القطر مضروبًا في القيمة الثابتة π التي تساوي 3.141592654، ثم تقوم بإرجاع الناتج المحسوب.1515مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوبacademy.hsoub.comاذهب إلى المرجع ↓يُفتح في تبويب جديد
  2. الاستدعاء الذاتي (Recursion): يُعد الاستدعاء الذاتي أداة قوية في البرمجة تُستخدم لحل المشكلات المعقدة بسهولة، ومن أمثلتها في لغة C كتابة دالة factorial() لحساب العامل المضروب، حيث تقوم الدالة الرئيسية main() بتمريض المتغير إليها لتخزين قيمته وتأدية الحساب استدعائيًا.1212الاستدعاء الذاتي (Recursion) في C: شرح وأمثلة على الدوال الاستدعائيةt10blogs.comاذهب إلى المرجع ↓يُفتح في تبويب جديد
  3. التعامل مع المصفوفات والكود المكرر: تُظهر الدوال مثل sumArray فائدتها المباشرة في جمع عناصر المصفوفات، وتفادي كتابة الشفرة نفسها مجددًا، مما يُسهل تنظيم الكود.11الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبرانيeltabarani.comاذهب إلى المرجع ↓يُفتح في تبويب جديد
  4. الدوال المجهزة وتعيين الدوال الجديدة: تشمل البرمجة دوالًا مبنية ومستخدمة سابقًا مثل write() وread() وarray()، كما يمكن في لغات مثل Java إنشاء دوال بسيطة جديدة تحل مسائل رياضية صغيرة وتعتمد على تمرير المعاملات والتمييز بين نطاق المتغيرات المحلية والعالمية.55تعريف دوال جديدة في البرمجةharmash.comاذهب إلى المرجع ↓يُفتح في تبويب جديد66حقيبة تدريبية دورة أساسيات برمجة الحاسب الآليdawliatraining.comاذهب إلى المرجع ↓يُفتح في تبويب جديد

توضح الشفرة البرمجية التالية مثالًا على دالة الاستدعاء الذاتي لحساب المضروب في لغة C:

#include <stdio.h>

int factorial(int i){
    if(i <= 1){
        return 1;
    }
    return i * factorial(i - 1);
}

int main(){
    int a = 5;
    int f = factorial(a);
    printf("Factorial of a: %d", f);
    return 0;
}

أنظر أيضاً

المصادر

  1. الدوال في البرمجة وأهميتها في تنظيم الكود - مدونة الطبراني. ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩

  2. فهم الدوال (Functions) وأهميتها في البرمجة - شركة Syntax Room. ↩ ↩ ↩ ↩

  3. الدوال في بايثون: المعاملات والقيم المرجعة بالأمثلة. ↩ ↩

  4. مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوب. ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩

  5. تعريف دوال جديدة في البرمجة. ↩ ↩ ↩

  6. حقيبة تدريبية دورة أساسيات برمجة الحاسب الآلي. ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩

  7. شرح أنواع الدوال في JavaScript مع تطبيقات عملية. ↩

  8. الدوال | PDF. ↩ ↩

  9. للمبتدئين Java دورة البرمجة بلغة. ↩

  10. نماذج الدوال ونطاقها — C Academy. ↩

  11. الإستدعاء الذاتي في البرمجة. ↩ ↩ ↩

  12. الاستدعاء الذاتي (Recursion) في C: شرح وأمثلة على الدوال الاستدعائية. ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩

  13. البرمجة باستخدام لغة C: العودية (الاستدعاء الذاتي للدالة) | KnowledgeCity. ↩

  14. الاستدعاء الذاتي والدوال عالية الرتبة — Elixir وPhoenix. ↩

  15. مفهوم الدوال Functions في البرمجة - بايثون - أكاديمية حسوب. ↩