البرمجة بلغة السى – الجزء الثالث – 2- الدوال المعرفة بمعرفة المستخدم User-defined functions

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

البرمجة بلغة السى – الجزء الثالث – 2- الدوال المعرفة بمعرفة المستخدم User-defined functions

مُساهمة من طرف Admin في السبت فبراير 01, 2014 11:47 am

البرمجة بلغة السى – الجزء الثالث – 2- الدوال المعرفة بمعرفة المستخدم User-defined functions

هذا الجزء تكملة لجزء مقدمة الدوال .

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

كتابة برنامج بلغة السى لجمع رقمين صحيحين ، بعمل دالة جمع لجمع الأعداد الصحيحة وعرض المجموع sum فى الدالة الرئيسية main() .

الكود:


/*Program to demonstrate the working of user defined function*/
#include <stdio.h>
int add(int a, int b);          //function prototype(declaration)
int main(){
    int num1,num2,sum;
    printf("Enters two number to add\n");
    scanf("%d %d",&num1,&num2);
    sum=add(num1,num2);        //function call
    printf("sum=%d",sum);
    return 0;
}
int add(int a,int b)            //function declarator
{           
/* Start of function definition. */
    int add;
    add=a+b;
    return add;                  //return statement of function
/* End of function definition. */ 
}                                 




نموذج الدالة (الإعلان ) :

فى البرمجة بلغة السى ، كل دالة يجب إعلانها قبل أن تستخدم . هذا النوع من الإعلان يسمى أيضا "نموذج الدالة" function prototype . نموذج الدالة يعطى المترجم المعلومات حول اسم الدالة ، ونوع الأدلة (البارامترت) المراد تمريرها ، ونوع العائد return .
صيغة نموذج الدالة :

الكود:

return_type function_name(type(1) argument(1),....,type(n) argument(n));

فى المثال أعلاه :

الكود:

 int add(int a, int b);

هو نموذج للدالة والذى يمد المترجم بالمعلومات التالية :
1- اسم الدالة وهو add() .
2- نوع البيانات التى تعود بها الدالة وهو int .
3- دليلين (بارامترين) من النوع int يتم تمريرهما للدالة .

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

استدعاء الدالة :

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

صيغة استدعاء الدالة :

الكود:


function_name(argument(1),....argument(n));

فى المثال أعلاه يتم عمل استدعاء للدالة باستخدام العبارة :

الكود:

 add(num1,num2);

من خلال الدالة الرئيسية main() . هذا يجعل التحكم فى البرنامج يقفز من هذه العبارة إلى "تعريف الدالة" وتنفيذ الأكواد داخل هذه الدالة .

تعريف الدالة :

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

صيغة تعريف الدالة :

الكود:


return_type function_name(type(1) argument(1),..,type(n) argument(n))
{
                //body of function
}



تعريف الدالة له مكونين أساسيين :

1- تفسير الدالة function declaratory .
تفسير الدالة هو أول سطر فى تعريف الدالة . عندما تنطلق الدالة نتيجة استدعاؤها ، يتم انتقال التحكم فى البرنامج إلى معلن الدالة .

صيفة تفسير الدالة :

الكود:


return_type function_name(type(1) argument(1),....,type(n) argument(n))

صيغة إعلان الدالة والتفسير غالبا نفس الشىء فيما عدا عدم وجود فاصلة منقوطة فى نهاية التفسير ، وأن تفسير متبوع بجسم الدالة .
فى المثال السابق :

الكود:

 int add(int a,int b);

فى السطر 12 هو تفسير الدالة .


2- جسم الدالة :


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

تمرير الأدلة (البارامترات) للدالة :

فى البرمجة ، الأدلة أو البارامترات هى قطعة من البيانات ( ثابت أو متغير) تمرر من البرنامج إلى الدالة .
فى المثال السابق يتم تمرير المتغيرين num1,num2 إلى الدالة خلال استدعاء الدالة وهذه الأدلة تكون مقبولة بالأدلة a و b فى تعريف الدالة .
الأدلة التى تمرر باستدعاء الدالة والأدلة التى تكون مقبولة فى تعريف الدالة يجب أن يكون لهما نفس نوع البيانات . على سبيل المثال : إذا كان الدليل num1 من نوع int وكان الدليل num2 من نوع float عندئذ متغير الدليل (a) يجب أن يكون من نوع int ومتغير الدليل (b) يجب أن يكون من نوع float بمعنى أن نوع الدليل خلال استدعاء الدالة و تعريف الدالة يجب أن يكون من نفس النوع .
يمكن استدعاء الدالة مع أدلة أو بدون أدلة .

عبارة الرجوع (الإعادة) :

تستخدم عبارة الرجوع لإعادة قيمة من تعريف الدالة إلى استدعاء الدلة .

صيغة عبارة الرجوع :

الكود:


return (expression);
          OR
    return;   


على سبيل المثال :

الكود:


return;
return a;
return (a+b);


فى المثال أعلاه ، قيمة المتغير add بالدالة add() يتم إعادته ويتم تخزين هذه القيمة فى المتغير sum بالدالة الرئيسية main() . نوع بيانات التعبير expression فى عبارة العودة يجب أيضا أن يطابق نوع العائد للدالة .



Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى