الدوال في السي شارب.png

الدوال في السي شارب|تقابل التوابع في اللغات الأخرى[2023]

الدوال في السي شارب شبيهة بالتوابع في اللغات البرمجية الأخرى من حيث البنية وآلية العمل والخواص، ويمكن القول انها التوابع في لغة السي شارب ولكن بإسم الدوال(Methods).

الدالة أو التابع هي عبارة عن مجموعة من التعليمات التي تقوم بتنفيذ مهمة محددة.تخيل أننا نريد أن نكتب برنامج يقوم بإنشاء دائرة وتلوينها. يمكننا أن ننشأ دالتين لحل هذه المشكلة:

  • دالة لرسم الدائرة.
  • دالة لتلوين الدائرة

تجزئة المشكلة إلى أجزاء أصغر يجعل البرنامج الخاص بك أبسط وأسهل للفهم وإعادة الإستخدام من قبل المطورين الآخرين.

تعريف الدوال في السي شارب C#

القاعدة الخاص بالتصريح عن الدوال أو (syntax) هو التالي:

returnType methodName() {
  // method body
}

هنا،

  • returnType (نوع الإعادة): يحدد ما هو نوع القيمة التي تعيدها الدالة أو التابع، فمثلاً اذا كان للدالة نوع إعادة (int) فهذا يعني أنها تعيد قيمة من النوع (int) حصراً. واذا لم تكن الدالة تعيد أي قيمة يكون نوع الإعادة لها (void).
  • methodName (اسم الدالة): هو معرف يشير إلى الدالة في البرنامج ويلزمنا لإتمام عملية استدعاء الدالة.
  • method body (جسم الدالة): يحتوي على العبارات البرمجية التي ستستخدم لتنفيذ مهام محددة، ويوضع جسم الدالة ضمن قوسين معقوفين { }.

المثال

void display() {
// code
}

في المثال أعلاه، اسم الدالة هو (display) ونوع الإعادة هو (void)، أي لا تعيد هذه الدالة شيئاً.

استدعاء الدوال في لغة السي شارب C#

في المثال الموجود في الفقرة السابقة، قمنا بتعريق دالة اسمها ()display، واذا أردنا استخدام هذه الدالة يجب أن نقوم بإستدعاءها ويتم ذلك بالطريقة التالية:

// calls the method
display();
الدوال في السي شارب

مثال لتعريف الدوال في السي شارب ثم استدعاءها

using System;

namespace Method {

  class Program {  
 
    // تعريف الدالة
    public void display() {
      Console.WriteLine("Hello World");   
    }

    static void Main(string[] args) {

      // إنشاء كائن من الصف 
      Program p1 = new Program();

      //استدعاء الدالة
      p1.display();   
  
      Console.ReadLine();
     
    }
  }
}

خرج المثال

Hello World

في المثال أعلاه، قمنا بتعريف دالة بإسم ()display، وعرفنا الكائن p1 من الصف Program. لاحظ أننا استدعينا الدالة بإستخدام الكائن p1.

انتبه إلى السطر التالي:

p1.display();

إقرأ أيضاً: الصفوف والكائنات في لغة السي شارب|ما هي وما أهميتها؟

نوع الإعادة في الدوال في لغة السي شارب

في لغة C# الدالة من الممكن أن تعيد قيمة ومن الممكن ألا تعيد، وفي حال لم تعد قيمة يكون نوع الإعادة Void، وأما اذا كانت تعيد قيمة، فعندها نستخدم العبارة return. كمثال،

int addNumbers() {
  ...
  return sum;
}

في المثال أعلاه، نعيد المتغير sum.شيء واحد يجب أن تبقه في بالك، وهو أن نوع الإعادة الخاص بالدالة والقيمة المعادة يجب أن يكونان من نفس النوع.

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

مثال على نوع الإعادة في دوال لغة C#

using System;

namespace Method {

  class Program {   

    // تعريف الدالة
    static int addNumbers() {
      int sum = 5 + 14;
      return sum;
      
    }

    static void Main(string[] args) {

      // استدعاء الدالة
      int sum = addNumbers();

      Console.WriteLine(sum);
  
      Console.ReadLine();
     
    }
  }
}

الخرج

19

في المثال أعلاه، عرفنا دالة تدعى ()addNumbers، ونوع الإعادة لها هو int.

int sum = addNumbers();

هنا، خزنا القيمة المعادة من الدالة ()addNumbers في المتغير sum.بالطبع نوع المتغير sum هو int، لأنة نوع الإعادة الخاصة بالدالة هو int.

ملاحظة: الدالة أعلاه من نوع static لذلك لا داعي لإنشاء كائن من الصف. الدالة التي من النوع static تنتمي للصف وليس لكائن من الصف.

معاملات الدوال في لغة السي شارب

في لغة السي شارب، يمكننا إنشاء دوال مع بعض القيم، وتسمى هذه القيم، معاملات الدالة.

مثال

int addNumber(int a, int b) {
//code
}

هنا، a و b هما معاملان تم تمريرهما إلى الدالة ()addNumber.اذا تم إنشاء الدالة مع معاملات، نحتاج إلى أن نمرر القيم المقابلة لهذه المعاملات عند استدعاء الدالة (مناداة الدالة| calling the method).

مثال

// استدعاء الدالة
addNumber(100, 100);
معاملات الدوال في لغة السي شارب

هنا، مررنا وسيطين إلى الدالة وهما (100, 100).

مثال: دالة لها معاملات

using System;

namespace Method {

  class Program {   
    int addNumber (int a, int b) {
      
      int sum = a + b;

      return sum;
      
    }

    static void Main(string[] args) {

      // إنشاء كائن من صف 
      Program p1 = new Program();

      //استدعاء الدالة 
      int sum = p1.addNumber(100,100);   

      Console.WriteLine("Sum: " + sum);
  
      Console.ReadLine();
     
    }
  }
}

الخرج

Sum: 200

دوال لغة السي شارب مع معامل واحد

في لغة C#، يمكننا أيضاً إنشاء دالة مع معامل واحد فقط.

مثال

using System;

namespace Method {

  class Program {   

    string work(string work) {
     return work;
      
    }

    static void Main(string[] args) {

      // إنشاء كائن 
      Program p1 = new Program();

      //استدعاء الدالة
      string work = p1.work("Cleaning"); ;   

      Console.WriteLine("Work: " + work);
  
      Console.ReadLine();
     
    }
  }
}

الخرج

Work: Cleaning

هنا، الدالة ()work لها معامل واحد هو work.

الدوال المبنية مسبقاً في لغة C#

في الأمثلة السابقة، عرفنا دوالنا الخاصة والتي تعرف بالدوال أو التوابع المعرفة من قبل المستخدم user-defined methods.

في لغة السي شارب، يوجد العديد من الدوال المتنوعة والتي يمكننا استخدامها في برامجنا مباشرةً وتسمى الدوال المبنية مسبقاً built-in methods. مثال،

()Sqrt: يحسب الجذر التربيعي للعدد الذي يمرر له.

()ToUpper: يحول سلسلة (String) إلى حالة الأحرف الكبيرة uppercase.

مثال: دالة ()Math.Sqrt

using System;

namespace Method {

  class Program {   
    static void Main(string[] args) {
     
      // دالة مبنية مسبقاً
      double a = Math.Sqrt(9);
      Console.WriteLine("Square root of 9: " + a);
    }
  }
}

الخرج

Square root of 9: 3

في المثال أعلاه، استخدمنا

double a = Math.Sqrt(9);

هنا، حسبنا الجذر التربيعي للرقم 9 بإستخدام الدالة ()Sqrt، وهي دالة معرفة داخل الصف (Class) Math.

التحميل الزائد للدوال (Method Overloading) في لغة السي شارب

في لغة السي شارب، يمكننا أن نعرف دالتين أو أكثر بنفس الإسم، وهذا ما يسمى overloading.

المثال

using System;

namespace MethodOverload {

  class Program {  

    // دالة مع معامل واحد
    void display(int a) {
      Console.WriteLine("Arguments: " + a);
    }
 
    // دالة بمعاملين
    void display(int a, int b) {
      Console.WriteLine("Arguments: " + a + " and " + b);
    } 
    static void Main(string[] args) {

      Program p1 = new Program();
      p1.display(100);
      p1.display(100, 200);
      Console.ReadLine();
    }
  }
}

الخرج

Arguments: 100
Arguments: 100 and 200

في المثال أعلاه، قمنا بالتحميل الزائد للدالة ()display، وهذا ممكن بسبب أن :

  • إحدى الدوال لها معامل واحد.
  • الدالة الأخرى لها معاملين.

التصويت

[poll id=”15″]

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *