recent
أخبار ساخنة

الدوال في لغة جافا 8

AM VIIP
الصفحة الرئيسية
الدوال في لغة جافا

مفهوم الدوال في لغة جافا

الدالة ( function ) هي مجموعة من الأوامر تقوم بمهمة معينة يتم إستدعائها عند الحاجة إليها من أي مكان في البرنامج. يعني إذا كان لدينا كود ونريد كتابته اكثر من مرة على سبيل المثال كود يجمع عددين و نحتاج لكتابته اكثر من. مرة أو عشر مرات و بهذه الحالة سوف نقابل مشكلة تكرار الكود و إهدار الجهد و الزمن. فبدلاً من تكرار الكود نقوم بوضع الكود بداخل دالة function و ثم إستدعاء الدالة function عند الحاجة. لهذا الكود فبذلك نكون قد إختصرنا الجهد والوقت. والزمن وجعلنا برنامجنا مختصر ومنظّم وبشكل جميل. وتُبنى الدالة function قبل البرنامج الرئيسي أي في جسم الكلاس أو في اسفل البرنامج الرئيسي. و الكثير يفضل كتابتها اسفل إسم الكلاس فوق البرنامج الرئيسي.

هذا الدرس مهم جداً لأي مبتدأ أو مُقدم على البرمجة أن يكون مُلمّاً بهذا الموضوع وبدون معرفة كيفية. بناء الدوال function لا يطلق على الشخص بأنه مبرمج أو يفهم في البرمجة بدون هذا الموضوع الذي هو بناء الدوال function.

 

فوائد إستخدام الدوال في جافا

  1. اختصار و تقليل الكود.
  2. تنظيم البرنامج.
  3. الحصول على نتائج بشكل اسرع.

 

أنواع الدوال function في لغة جافا

يوجد لدينا نوعين من الدوال function و هما

 

دوال تعيد قيمة في جافا

الدوال التي تعيد قيمة ( Return type ) مثلاً دالة function نستدعيها ونرسل إليها بأعداد تقوم بجمع هذه الأعداد ثم تُعيد لنا ناتج الجمع. أو نعطي لها إسم وتقوم بالبحث عن الحرف المعيّن و تقوم بإرجاع الحرف الذي نريده. نحن نقوم ببناء هذه الدوال function بهدف القيام بعمل معين و العمل المعين هي القيمة المرتجعة.

الشكل العام للدوال التي تعيد قيمة في جافا

Type FunctionName(Parmetrs)
{
body الكود الذي نحتاجه
    Return type;
}

حيث أن type هي نوع القيمة المرتجعة إذا كانت نَص نكتب لها string و إذا كانت عدد نكتب لها int.

و FunctionName هو إسم الدالة و هو إسم اختياري و يفضَّل أن يكون إسم الدالة يشير إلى عمل الدالة.

و Parmetrs ايضاً شيئ إختياري بإستطاعتنا أن نكتب بارميترات أو ندعها بدون بارميترات. حسب حاجة البرنامج يعني إذا كنا نريد دالة نرسل إليها مثلاً أعداد حتى تقوم بجمع أو قسمة. نقوم بكتابة عدد البارميترات التي سنستقبلها و من ثم نقوم بمعالجتها داخل الدالة و إرجاع القيمة النهائية عبر return.

 

دوال لا تعيد قيمة في جافا

الدوال التي لا تعيد قيمة ( Return not type ) نستخدمها كثيراً مثل الدوال السابقة, مثلاً إذا اردنا من دالة تقوم بطباعة جملة معينة لا تعيد. قيمة, فقط تطبع جملة أو نرسل لها باراميترات تقوم بمعالجتهم و خزنهم بقاعدة البيانات.

الشكل العام للدوال التي لا تعيد قيمة في جافا

void FunctionName(Parmetrs)
{
body الكود الذي نحتاجه
}

حيث أن void يعني لا تعيد قيمة ثم إسم الدالة و الباراميترات شيئ إختياري ذكرناه قبل قليل.

مثال 1

قم بكتابة دالة نرسل إليها عددين ثم تقوم بجمع العددين و من ثم طباعة الناتج داخل البرنامج الرئيسي.

package funlesson;
public class FunLesson {
    int add(int x, int y)
    {
        int z=x+y;
        return z;
    }     
    public static void main(String[] args) {
        FunLesson s=new FunLesson();
        System.out.println(s.add(5, 2));
    }
}

أسمينا الدالة add وسيكون لدينا عددين parameters و القيمة التي ترجّعها الدالة عدد صحيح int, العدد. المرتجع الأول سيخزن في x والعدد الثاني سيخزن في y. و أنشانا كائن مشتق من إسم الكلاس لأنه بدون إنشاء كائن لا يمكن الوصول إلى محتويات الكلاس. لإستدعاء الدالة add وضعنا القيمتين المُرسلات 4 ستخزّن في x و 2 سوف تخزن في y. و من ثم إستدعينا الدالة و ارسلنا لها قيمتين ستقوم بجمع القيمتين. و إرجاع الناتج و تخزينه في المتغير result و طباعة الناتج.

مثال 2

package fun;
public class Fun {
    int add(int x, int y)
    {
        int z=x+y;
        return z;
    }     
    public static void main(String[] args) {
        Fun ob=new Fun(); 
        int result=ob.add(4, 2);    
        System.out.println(result);
    }
}

ونستطيع مباشرتاً الطباعة بدون تعريف المتغير بأن نقول له return x+y; و سيطبع الناتج, و نستطيع ايضاً كتابته البرنامج بشكل مختصر كما بالشكل.

package fun;
public class Fun {
    int add(int x, int y)
    {
        return x+y;
    }
    public static void main(String[] args) {
        Fun ob=new Fun();
        System.out.println(ob.add(4, 2));
    }
}

هذه ايضاً من فوائد الدوال و هي إختصار البرنامج.

مثال 3

package fun;
public class Fun {
    void add(int x, int y)
    {
        System.out.println(x+y);
    }    
    public static void main(String[] args) {
        Fun ob=new Fun();
        ob.add(4, 2);
    }

}

هذه الدالة Return not type لا تعيد قمية.

مثال 4

قم ببناء دالتين الأولى تقوم بقراءة القيم من لوحة المفاتيح و تخزينها داخل مصفوفة و الدالة الثانية تقوم بجمع عناصر المصفوفة.

package fun;
public class Fun {
    Scanner n=new Scanner(System.in);
    void read(int a[])
    {
        for(int i=0;i<a.length;i++)
            a[i]=n.nextInt();
    }
    int addArray(int a[])
    {
        int sum=0;
        for(int i=0;i<a.length;i++)
            sum+=a[i];
        return sum;
    }  
    public static void main(String[] args) {
        Fun ob=new Fun();
        int []a=new int[6];
        ob.read(a);
        System.out.println(ob.addArray(a));
    }  
}

أنشأنا مصفوفة int []a=new int[6] ذات بُعد واحد إسمها a و حجمها 6 ثم وضعنا كائن الإدخال في الكلاس حتى تستطيع الدوال التعرف على الكائن. ثم بدأنا ببناء الدالتين, الأولى أسميناها read سوف تستقبل معامل من نوع مصفوفة ثم عملنا لوب للمصفوفة. و من ثم نقوم بتخزين القيم الداخلة من لوحه المفاتيح في المصفوفة nextInt و عمل هذه الدالة هي قراءة القيم من لوحة المفاتيح ثم تخزين القيم في المصفوفة. ثم بنينا الدالة الثانية وعملها هو جمع عناصر المصفوفة و إرجاع الناتج و إسمها addArray سوف. تستقبل نفس المصفوفة و ادخلناها في حلقة لوب مثل اللوب في الدالة الأولى. أي عندما يصل إلى حجم المصفوفة يتوقف. و عرّفنا متغير إسمه sum في هذا المتغير سيتم جمع عناصر المصفوفة و تخزينها في هذا المتغير و أعطيناه قيمة إبتدائية 0. بعد أن قُمنا بجمع عناصر المصفوفة نأتي إلى إعادة القيمة المخزّنة بداخل sum نقوم بإرجاعها إلى المصفوفة.

ثم نزلنا إلى البرنامج الرئيسي main program بعدما بنينا الدوال و إستدعينا الدالة الأولى. عبر ob.read ثم نقوم بإرسال المصفوفة a و بعدها إستدعينا الدالة الثانية بطباعة قيمتها داخل امر الطباعة ob.addArray. نحن قُلنا في بداية الدرس بأن الدالة التي تعيد قيمة إما أن نقوم بإسناد القيمة المرتجعه إلى متغير أو نقوم بوضعها داخل دالة الطباعة.

google-playkhamsatmostaqltradent