الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الجزء الثاني من شرح الدوال للمبتدئين

مغلق
بدأه السهم الناري في 5 مايو 2003 · 1 رد · 679 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله لرحمن الرحيم

السلام عليكم و رحمة الله وبركاته أما بعد:

أرجو أن يكون الدرس الماضي مفهوماً . وفي هذا الدرس سنكمل ما بدأناه في الدوال.

* بعض الملاحظات على الدرس السابق:

معظم البرامج المكتوية في الدرس السابق كانت عبارة عن دوال مدرجة والمقصود هو " أن الأعلان عن الدالة هو نفسه جسم الدالة " . و لكن يمكن الإعلان عن رأس الدالة و أيضاً كتابة جسمها في أي جزء من البرنامج و إليك المثال التالي :

#include

//Function sum 
float  sum( float a, float b );

int main( )
{
	 float  x,y;

cout<< “please enter Tow numbern”;
cin >> x >> y;

cout B)
{
	return   a+b;
}

* لاحظ أن الإعلان عن الدالة بكتابة المخرج منها و الوسائط "المدخلات" و ينتهي بفاصلة منقوطة، إذا لم يكن هنالك مخرج فضعvoid و إذا لم يكن هنالك مدخلات فترك بين القوسين فاضي.

•الآن نعود لدرس اليوم وهو استخدام الكلمة المحجوزة inline مع الدوال:

*فائدة inline التي تسمى بالدالة ذات السطر الواحد أن صح هذا التعبير :

هو أنها تعمل على كونها تلميح للمترجم أن هذه الدالة عبارة عن دالة مدرجة فلا يعمل لها استدعاء حقيقي ، و لكن يمكن أن يتجاهل المترجم التلميح و يعمل استدعاء حقيقي للدالة . والعمل هو كأنما قمت بكتابة تعليمات جسم الدالة داخل الدالة التي تقوم بعملية الاستدعاء أي كأنك قمت بعملية نسخ للأوامر من جسم الدالة وكتبتها في الدالة التي تستدعي، و الفائدة المهمة والله أعلم أنها سرعة في التنفيذ أفضل من استخدام دالة بسيطة بدون أن تضع inline .

*متى تستخدم inline :

استخدمها عندما تكون الدالة تقوم بعمل بسيط و واحد على الأقل ، أي عندما تكون ةهنالك تعليمة أو اثنتين فقط فستخدم inline كحل أفضل و ليس أجباري لأنه تعمل الدالة بشكل مناسب وتؤدي العمل بدون وجود inline فلا تقلق عند عدم فهمك لهذا الموضوع.

* مثال :

#include

//inline function max

 inline  float  max( float a,float B)
{
	return   (a >b ?a:B);
}
int main ( )
{
	float  x,y;

	cout<<”please enter Tow numbern”;
	cin>> x >> y;

cout << “ max  is : “ << max(x,y) <<”n”;

return 0;
}

" و أي دالة بسيطة أو تحتوي على أوامر بسيطة استخدم inline أفضل".

* موضوع جديد قدمته c++ وهو function over loading :

" ومعناه استخدام أكثر من دالة بنفس الاسم".

*فائدته :

" قد يكون عندك برنامج يحتوي على عدد من الدوال تقوم بجمع رقمين من أي نوع فبدلاً من أنك تقوم بتعريف دوال مختلفة في الأسماء ، ماعليك ألا أن تقوم بتعريف نفس الدوال بنفس الاسم".

*" وتوفر لك هذه الخاصية ما يلي :

1-أن يكون المخرج من الدوال مختلفاً من أي نوع .

2-أن تكون الوسائط " المدخلات " مختلفة الترتيب أو النوع أو العدد .

ملاحظة:

" لا تقم بتعريف دالة تحتوي على نفس المدخلات و نفس المخرجات مع اختلاف الاستخدام في جسم الدالة لأن المترجم لا يدري من يستدعي و ‘ذا استدعى فمن الارجح أن تكون الدالة المكتوبة أولاً " .

* مثال نختم به الدرس :

#include

//Function over loading max

int   max( int a,int B)
{
	return   (a>b?a:B);
}
float  max(float a,float B)
{
	return  (a>b?a:B);
}
float  max(float a,int B)
{
	return  (a>b?a:B);
}
double  max( float a,int b,float c)
{
	if( a>b  && a>c)
return  a;
else  if( b>c)
return b;
else 
return  c;
}

int main ( )
{
	float  x1,x2,x3;
	int   y1,y2;

	cout << “please enter Three number floatn”;
	cin >> x1 >> x2 >> x3;
	cout <<”please enter Tow number integern”;
	cin >> y1 >>y2;

cout  << “ max is : “ << max(x1,x2) <<”n”;
cout <<” max is :  “ << max(y1,y2) <<”n”;
cout << “max is :  “ << max(x2,y2,x3) <<”n”;
cout <<”max  is :  “ <
return 0;
}

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#2

في البرامج المكتوبة للتوضيح هنالك خطأ مطبعي وهو :

ظهور n السطر الجديد بدون العلامة وللتوضيح فقط فأي جملة طباعة بها هذا الخطأ تعدل إلى "n" ...........والله ولي التوفيق.........

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

هذا الموضوع مغلق.

مواضيع مشابهة