recent
أخبار ساخنة

الدوال Functions في لغة جافا JAVA الدرس |16|

الصفحة الرئيسية


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

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

 

تعريف الدالة

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


فوائد الدوال

1 - اختصار و تقليل الكود.

2 - تنظيم البرنامج.

3 - الحصول على نتائج بشكل اسرع.


انواع الدوال

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

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

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


الشكل العام لها

Type FunctionName(Parmetrs)

{

//body الكود التي نحتاجه

    Return type;

}

 

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


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

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


الشكل العام لها

Void FunctionName(Parmatrs)

{

//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);
    }

}


مثال 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 نقوم بإرجاعها إلى المصفوفة.

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

لأي إستفسار يمكنكم الدخول لقناتنا في تيليجرام و الولوج لمجموعة النقاشات و طرح إستفساراتكم

google-playkhamsatmostaqltradent