الدّالّة (2)
مثال 1:
#include <iostream> using namespace std; double avg(int m1, int m2, int m3) { return double(m1 + m2 + m3) / 3; } int main() { int mm1, mm2, mm3; cout << "Enter your marks" << endl; cin >> mm1 >> mm2 >> mm3; cout << "avg = " << avg(mm1, mm2, mm3) << endl; return 0; }
يعرّف هذا البرنامج دالّة تسمى avg()
، والذي يأخذ ثلاث متغيرات عددية (m1
, m2
، و m3
) وإرجاع متوسط هذه المتغيرات الثلاث كقيمة عشريّة.
تعمل الدالة أولاً عن طريق تحويل متغيرات الأعداد الصحيحة إلى قيم عشريّة باستخدام الدالة double()
. يعد ذلك ضروريًا لأن متوسط ثلاثة أعداد صحيحة هو رقم كسري، ونريد أن تقوم الدالة بإرجاع قيمة عشريّة.
بعد ذلك، تحسب الدالة مجموع المتغيرات الثلاثة وتقسم هذا المجموع على 3. وهذا يعطينا متوسط المتغيرات الثلاثة.
وأخيرًا، تقوم الدالة بإرجاع المتوسط الحسابي للقيم.
يعمل البرنامج على النحو التالي:
- يعرّف البرنامج ثلاثة متغيرات صحيحة
mm1
,mm2
، وmm3
لتخزين العلامات التي أدخلها المستخدم. - يطلب البرنامج من المستخدم إدخال علاماته، ثم يقوم البرنامج بقراءة العلامات في المتغيرات الثلاثة.
- يستدعي البرنامج الدالّة
avg()
لحساب المتوسط الحسابي للعلامات الثلاث. - يقوم البرنامج بطباعة المتوسط الحسابي إلى شاشة المخرجات.
مثال 2:
#include <iostream> using namespace std; int max(int n1, int n2, int n3) { int mx = n1; if (mx < n2) mx = n2; if (mx < n3) mx = n3; return mx; } int min(int n1, int n2, int n3) { int mn = n1; if (mn > n2) mn = n2; if (mn > n3) mn = n3; return mn; } int main() { cout << "max = " << max(100, 200, 300) << endl; cout << "min = " << min(100, 200, 300) << endl; return 0; }
يعرّف هذا البرنامج دالّتين max()
و min()
وكلاهما يأخذان ثلاث متغيرات (n1
, n2
، و n3
) وإرجاع الأكبر والأصغر من تلك المتغيرات الثلاثة.
تعمل الدالّة الأولى عن طريق إعطاء متغير يسمى mx
قيمة المتغير الأولى، n1
ثم تتحقق الدالّة ما إذا كان mx
أقل من المتغير الثاني n2
. إذا كان كذلك، تعيّن الدالّة قيمة n2
إلى mx
. ثمّ تتحقق الدالّة ما إذا كان mx
أقل من المتغير الثالث n3
. إذا كان كذلك، تعيّن الدالّة قيمة n3
إلى mx
أخيرًا، ترجع الدالّة قيمة mx
وهو القيمة الأكبر بين المتغيرات الثلاث.
تعمل الدالّة الثانيّة عن طريق إعطاء متغير يسمى mn
قيمة المتغير الأولى، n1
ثم تتحقق الدالّة ما إذا كان mn
أكبر من المتغير الثاني n2
. إذا كان كذلك، تعيّن الدالّة قيمة n2
إلى mn
. ثمّ تتحقق الدالّة ما إذا كان mn
أكبر من المتغير الثالث n3
. إذا كان كذلك، تعيّن الدالّة قيمة n3
إلى mn
أخيرًا، ترجع الدالّة قيمة mn
وهو القيمة الأصغر بين المتغيرات الثلاث.
مخرجات البرنامج:
min = 100 max = 300
هناك طريقتان لتعريف دالة في برنامج C++:
- إعلان الدالّة: هذا نموذج أولي للدالّة التي تخبر المترجم عن اسم الدالّة ونوع الإرجاع والمتغيرات. يجب وضع إعلان الدالّة قبل الاستدعاء الأول لها.
- تعريف الدالّة: هذا هو الكود الفعلي الذي ينفذ الدالّة. يمكن وضع تعريف الدالة في أي مكان في البرنامج، ولكن بشكل عام يتم وضعه في نهاية البرنامج.
على سبيل المثال، إليك مثال يبيّن إعلان الدالّة function declaration وتعريف الدالة function definition:
// Function declaration int add(int a, int b); // Function definition int add(int a, int b) { return a + b; }
يخبر إعلان الدالّة المترجم أن هناك دالّة تسمى add()
وهي تأخذ متغيرين صحيحين وتعيد قيمة عددية. يوفر تعريف الدالّة الكود الفعلي الذي ينفذ وظيفة الدالّة.
يمكنك أيضًا ترتيب الدوالّ المعلنة والدوالّ المعرفّة بطرق مختلفة في التعليمات البرمجية الخاصة بك. على سبيل المثال، يمكنك:
- الإعلان عن جميع الدوالّ في بداية البرنامج ثم تعريفها في نهاية البرنامج.
- إعلان وتعريف الدوالّ بالترتيب الذي يتم استدعاؤها فيه في البرنامج.
- تعريف الدوالّ في ملف header وتعريفها في ملف المصدر source file.
يعتمد أفضل ترتيب للتعليمات البرمجية على الاحتياجات المحددة للبرنامج.
فيما يلي مثال لكيفية استخدام إعلان الدالّة وتعريفها في برنامج C++:
// Function declaration int add(int a, int b); int main() { // Function call int sum = add(1, 2); // Print the sum cout << "The sum is: " << sum << endl; return 0; } // Function definition int add(int a, int b) { return a + b; }
بالطبع يجب عليك أن تولي اهتماما كبيرا للترتيب التسلسلي لبرنامجك.
يعد الترتيب التسلسلي للدوالّ في برنامج C++ مهمًا لسببين رئيسيين:
- سهولة القراءة: البرنامج المنظم جيدًا أسهل في القراءة والفهم. من خلال ترتيب الوظائف بترتيب منطقي، يمكنك تسهيل الأمر على المبرمجين الآخرين لمتابعة تدفق التعليمات البرمجية الخاصة بك.
- قابلية الصيانة: من السهل تحديث البرنامج الذي يتم صيانته جيدًا وإصلاح الأخطاء فيه. ومن خلال ترتيب الدوالّ بترتيب منطقي، يمكنك تسهيل العثور على المشكلات وإصلاحها في التعليمات البرمجية الخاصة بالبرنامج.
ملحوظة !
الدالّة الرئيسية main هي نقطة الدخول لجميع برامج C++. وهي الدالّة الأولى التي يتم استدعاؤها عند تنفيذ البرنامج. الدالّة الرئيسية main مسؤولة عن إبتداء البرنامج واستدعاء الدوالّ الأخرى وإرجاع القيمة إلى نظام التشغيل.
الدالّة الرئيسية main مهمة لعدة أسباب:
- هي نقطة البداية لتنفيذ البرنامج.
- هي المسؤولة عن تهيئة البرنامج.
- تتحكم في تدفق البرنامج عن طريق استدعاء دوالّ أخرى.
- تقوم بإرجاع قيمة إلى نظام التشغيل عند إنهاء البرنامج.
بدون الدالّة الرئيسية main، لن يتمكن البرنامج من بدء التنفيذ.
فيما يلي مثال لدالّة رئيسية main بسيطة في لغة C++:
int main() { // Initialize the program // ... // Call other functions // ... // Return a value to the operating system return 0; }
تقوم الدالّة الرئيسية main بتهيئة البرنامج واستدعاء دوالّ أخرى وإرجاع القيمة 0 إلى نظام التشغيل.
يمكنك استخدام الدالّة الرئيسية main للتحكم في تدفق البرنامج الخاص بك عن طريق استدعاء دوالّ أخرى. على سبيل المثال، يمكنك كتابة دالة لحساب مجموع رقمين ثم استدعاء تلك الدالة من الدالة الرئيسية main.
يمكنك أيضًا استخدام الدالّة الرئيسية main لإرجاع قيمة إلى نظام التشغيل. يتم استخدام هذه القيمة للإشارة إلى ما إذا كان البرنامج قد تم إنهاؤه بنجاح أم لا.
تعد الدالّة الرئيسية main جزءًا مهمًا جدًا من أي برنامج C++. إنها نقطة البداية لتنفيذ البرنامج، وهي التي تتحكم في تدفق البرنامج.
مثال 3:
#include <iostream> using namespace std; int avg(int x, int y, int z) { return (x + y + z) / 3; } void print() { cout << "Hello" << endl; } void xy() { cout << 5 * 10 << endl; } int main() { cout << "Nothing" << endl; return 0; } int f2() { return 5; }
هذا البرنامج يقوم بتعريف أربع دوالّ avg()
, print()
, xy()
، و f2()
. الـ avg()
تأخذ ثلاث معلمات متغيرات وترجع المتوسط الحسابي لها. print()
تقوم بطباعة النص "Hello" إلى شاشة المخرجات. xy()
تقوم بطباعة ناتج ضرب 5 و10 على شاشة المخرجات. f2()
ترجع قيمة العدد الصحيح 5.
الدالّة الرئيسية main في الكود تقوم ببساطة بطباعة السلسلة "Nothing" إلى شاشة المخرجات ثم ترجع 0.
عندما تقوم بكتابة هذا البرنامج وتشغيله، ستتم طباعة الناتج التالي على شاشة المخرجات:
Nothing
وذلك لأن الدالّة الوحيدة التي يتم استدعاؤها من الدالّة الرئيسية main هي cout << "Nothing" << endl;
.
يمكنك استخدام الدوالّ الأخرى في الكود عن طريق استدعائها من الدالّة الرئيسية أو من دوالّ أخرى.