البرمجة بلغة السى – الجزء الثالث – 2- الدوال المعرفة بمعرفة المستخدم User-defined functions
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الفئة الأولى :: منتدى البرمجة بلغة السى C Programming
صفحة 1 من اصل 1
البرمجة بلغة السى – الجزء الثالث – 2- الدوال المعرفة بمعرفة المستخدم User-defined functions
البرمجة بلغة السى – الجزء الثالث – 2- الدوال المعرفة بمعرفة المستخدم User-defined functions
هذا الجزء تكملة لجزء مقدمة الدوال .
مثال لدالة معرفة بمعرفة المستخدم :
كتابة برنامج بلغة السى لجمع رقمين صحيحين ، بعمل دالة جمع لجمع الأعداد الصحيحة وعرض المجموع sum فى الدالة الرئيسية main() .
نموذج الدالة (الإعلان ) :
فى البرمجة بلغة السى ، كل دالة يجب إعلانها قبل أن تستخدم . هذا النوع من الإعلان يسمى أيضا "نموذج الدالة" function prototype . نموذج الدالة يعطى المترجم المعلومات حول اسم الدالة ، ونوع الأدلة (البارامترت) المراد تمريرها ، ونوع العائد return .
صيغة نموذج الدالة :
فى المثال أعلاه :
هو نموذج للدالة والذى يمد المترجم بالمعلومات التالية :
1- اسم الدالة وهو add() .
2- نوع البيانات التى تعود بها الدالة وهو int .
3- دليلين (بارامترين) من النوع int يتم تمريرهما للدالة .
لا نحتاج لنموذج الدالة إذا تم كتابة الدالة المعرفة بمعرفة المستخدم قبل الدالة الرئيسية main() .
استدعاء الدالة :
لا يمكن تحويل التحكم فى البرنامج إلى الدالة المعرفة بمعرفة المستخدم إذا لم يتم استدعاؤها .
صيغة استدعاء الدالة :
فى المثال أعلاه يتم عمل استدعاء للدالة باستخدام العبارة :
من خلال الدالة الرئيسية main() . هذا يجعل التحكم فى البرنامج يقفز من هذه العبارة إلى "تعريف الدالة" وتنفيذ الأكواد داخل هذه الدالة .
تعريف الدالة :
تعريف الدالة يحتوى على أكواد برمجة لتنفيذ مهمة محددة .
صيغة تعريف الدالة :
تعريف الدالة له مكونين أساسيين :
1- تفسير الدالة function declaratory .
تفسير الدالة هو أول سطر فى تعريف الدالة . عندما تنطلق الدالة نتيجة استدعاؤها ، يتم انتقال التحكم فى البرنامج إلى معلن الدالة .
صيفة تفسير الدالة :
صيغة إعلان الدالة والتفسير غالبا نفس الشىء فيما عدا عدم وجود فاصلة منقوطة فى نهاية التفسير ، وأن تفسير متبوع بجسم الدالة .
فى المثال السابق :
فى السطر 12 هو تفسير الدالة .
2- جسم الدالة :
تفسير الدالة يتبعه جسم الدالة والذى يتكون من عبارات .
تمرير الأدلة (البارامترات) للدالة :
فى البرمجة ، الأدلة أو البارامترات هى قطعة من البيانات ( ثابت أو متغير) تمرر من البرنامج إلى الدالة .
فى المثال السابق يتم تمرير المتغيرين num1,num2 إلى الدالة خلال استدعاء الدالة وهذه الأدلة تكون مقبولة بالأدلة a و b فى تعريف الدالة .
الأدلة التى تمرر باستدعاء الدالة والأدلة التى تكون مقبولة فى تعريف الدالة يجب أن يكون لهما نفس نوع البيانات . على سبيل المثال : إذا كان الدليل num1 من نوع int وكان الدليل num2 من نوع float عندئذ متغير الدليل (a) يجب أن يكون من نوع int ومتغير الدليل (b) يجب أن يكون من نوع float بمعنى أن نوع الدليل خلال استدعاء الدالة و تعريف الدالة يجب أن يكون من نفس النوع .
يمكن استدعاء الدالة مع أدلة أو بدون أدلة .
عبارة الرجوع (الإعادة) :
تستخدم عبارة الرجوع لإعادة قيمة من تعريف الدالة إلى استدعاء الدلة .
صيغة عبارة الرجوع :
على سبيل المثال :
فى المثال أعلاه ، قيمة المتغير add بالدالة add() يتم إعادته ويتم تخزين هذه القيمة فى المتغير sum بالدالة الرئيسية main() . نوع بيانات التعبير expression فى عبارة العودة يجب أيضا أن يطابق نوع العائد للدالة .
هذا الجزء تكملة لجزء مقدمة الدوال .
مثال لدالة معرفة بمعرفة المستخدم :
كتابة برنامج بلغة السى لجمع رقمين صحيحين ، بعمل دالة جمع لجمع الأعداد الصحيحة وعرض المجموع 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 فى عبارة العودة يجب أيضا أن يطابق نوع العائد للدالة .
مواضيع مماثلة
» البرمجة بلغة السى – الجزء الثالث – 3- أنواع الدوال المعرفة بمعرفة المستخدم
» البرمجة بلغة السى – الجزء الثالث – 1- مقدمة الدوال Functions
» البرمجة بلغة السى – الجزء الثالث – 4- استدعاء الدالة لنفسها :
» البرمجة بلغة السى - أمثلة الجزء الأول - البرنامج الثانى : طباعة عدد صحيح يتم إدخاله بواسطة المستخدم.
» البرمجة بلغة السى - أمثلة الجزء الأول - البرنامج الثالث : جمع عددان صحيحان .
» البرمجة بلغة السى – الجزء الثالث – 1- مقدمة الدوال Functions
» البرمجة بلغة السى – الجزء الثالث – 4- استدعاء الدالة لنفسها :
» البرمجة بلغة السى - أمثلة الجزء الأول - البرنامج الثانى : طباعة عدد صحيح يتم إدخاله بواسطة المستخدم.
» البرمجة بلغة السى - أمثلة الجزء الأول - البرنامج الثالث : جمع عددان صحيحان .
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: الفئة الأولى :: منتدى البرمجة بلغة السى C Programming
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى