




السمعة:
- إنضم2 سبتمبر 2023
- المشاركات 142
- مستوى التفاعل 244
- النقاط 43
الدالة ( Function ) عبارة عن مجموعة أوامر مجمعة في مكان واحد و تتنفذ عندما نقوم باستدعائها
حيث يوجد دوال جاهزة ودوال التي يقوم المبرمج بتعريفه (سوف يتم الشرح بشكل مفصل
)
الدوال الجاهزة في C++ يقال لها Built-in Functions
الدوال التي يقوم المبرمج بتعريفها يقال لها User-defined Functions.
. Parameter المقصود بها الباراميتر ( وضع الباراميترات إختياري ) "سامحوني على الجمع العربي
( string - bool - double - int إلخ...)
و في حال كانت الدالة لا ترجع أي قيمة, يجب وضع الكلمة void مكان returnType
في المثال التالي قمنا بتعريف دالة إسمها myFunction نوعها void حيث تحتوي على أمر طباعة فقط
بعدها قمنا باستدعائها في الدالة () main حتى يتم تنفيذ أمر الطباعة الموضوع فيها
سنحصل على النتيجة التالية عند التشغيل
المثال الثاني
في هذا المثال قمنا بتعريف دالة إسمها greeting ,عند إستدعاءها نمرر لها إسم فتطبع رسالة ترحيب للإسم الذي تم تمريره لها( محمد)
سنحصل على النتيجة التالية عند التشغيل
سنحصل على ناتج جمع العددين فسيكون الناتج هو
نستطيع عند وضع(Parameter) في ال (Functions) أن نمرر له قيمة إفتراضية
حيث أن اللغة البرمجية ++c تتيح لك وضع قيم إفتراضية للبراميترات مما يجعلك عند إستدعاء الدالة مخيّر على تمرير قيم مكان البراميترات بدل أن تكون مجبراً على ذلك
القيمة الإفتراضية التي نضعها للبراميتر يقال لها Default Argument
في المثال التالي قمنا بتعريف دالة إسمهاprintLanguage
هذه الدالة فيها باراميتر واحد إسمه language يملك النص"English" كقيمة إفتراضية
حيث أن كل ما تفعله هذه الدالة عند إستدعاءها هو طباعة قيمة الباراميتر language
ملاحظة: وبما أننا قمنا بتمرير قيمة إفتراضية , فهذا يعني أننا لم نعد مجبرين على تمرير قيمة له عند إستدعاء الدالة لأنه اصلا يمتلك قيمة
سنحصل على النتيجة التالية عند تشغيل البرنامج
أريد أن أنبه على أنه
إذا كانت الدالة تملك أكثر من باراميتر و تريد وضع قيمة إفتراضية لأحد الباراميترات التي تمكلها فقط فيجب وضع الباراميترات التي تملك قيم إفتراضية في الآخر.
إن لم ترد ذلك ستكون مجبر على وضع قيم إفتراضية لجميع الباراميترات الموجودة بعد أول باراميتر وضعت له قيمة إفتراضية.
يعطيكم العافية
حيث يوجد دوال جاهزة ودوال التي يقوم المبرمج بتعريفه (سوف يتم الشرح بشكل مفصل

الدوال الجاهزة في C++ يقال لها Built-in Functions
الدوال التي يقوم المبرمج بتعريفها يقال لها User-defined Functions.
بناء الدوال في ++c
لتعريف إي دالة في ++c علينا أن نتبع الشكل التالي :-
كود:
returnType functionName(Parameter)
{
// Function Body
}
. returnType يقوم بتحديد النوع الذي سترجعه الدالة عندما تنتهي أو إذا كانت لن ترجع أي قيمة
.functionName يمثل الإسم الذي نعطيه للدالة, و الذي من خلاله يمكننا استدعاءها
. Parameter المقصود بها الباراميتر ( وضع الباراميترات إختياري ) "سامحوني على الجمع العربي
"
. function body تعني جسم الدالة, و المقصود بها الأوامر التي نضعها في الدالة
ونوع الإرجاع ( returnType ) في الدالة يمكن أن يكون أي نوع من أنواع البيانات الموجودة في C++( string - bool - double - int إلخ...)
و في حال كانت الدالة لا ترجع أي قيمة, يجب وضع الكلمة void مكان returnType
الأن سوف أقوم بإعطاء بعض الأمثلة (لتوضيح بشكل كافي بإذن الله )
المثال الأول
كود:
#include <iostream>
using namespace std;
// عند استدعاءها تقوم بطباعة جملة myFunction هنا قمنا بتعريف دالة إسمها
void myFunction() {
cout << "My first function is called";
}
int main()
{
// حتى يتنفذ الأمر الموضوع فيها myFunction() هنا قمنا باستدعاء الدالة
myFunction();
return 0;
}
في المثال التالي قمنا بتعريف دالة إسمها myFunction نوعها void حيث تحتوي على أمر طباعة فقط
بعدها قمنا باستدعائها في الدالة () main حتى يتم تنفيذ أمر الطباعة الموضوع فيها
سنحصل على النتيجة التالية عند التشغيل
كود:
My first function is called
المثال الثاني
كود:
#include <iostream>
using namespace std;
// عند استدعاءها تقوم بطباعة جملة greeting هنا قمنا بتعريف دالة إسمها
// (Parameter)قمنا بوضع براميتر
(void greeting( string name
{
cout << "Hello " << name << ", welcome to our company.";
}
int main()
{
// حتى يتنفذ الأمر الموضوع فيها greeting() هنا قمنا باستدعاء الدالة
greeting("Mhamad");
return 0;
}
في هذا المثال قمنا بتعريف دالة إسمها greeting ,عند إستدعاءها نمرر لها إسم فتطبع رسالة ترحيب للإسم الذي تم تمريره لها( محمد)
سنحصل على النتيجة التالية عند التشغيل
كود:
Hello Mhamad, welcome to our company
كود:
Hello Mhamad, welcome to our company
المثال الثالث
كود:
#include <iostream>
using namespace std;
// عند إستدعاءها نمرر لها عددين فتقوم بإرجاع ناتج جمعهما get_sum هنا قمنا بتعريف دالة إسمها
int getSum(int a, int b)
{
return a + b;
}
int main()
{
// x في المتغير get_sum() هنا قمنا بتخزين ناتج العددين 3 و 5 الذي سترجعه الدالة
int result = getSum(3, 7);
// و التي ستساوي 10 result هنا قمنا بعرض قيمة المتغير
cout << "Result = " << result;
return 0;
}
كود:
Result = 10
نستطيع عند وضع(Parameter) في ال (Functions) أن نمرر له قيمة إفتراضية
حيث أن اللغة البرمجية ++c تتيح لك وضع قيم إفتراضية للبراميترات مما يجعلك عند إستدعاء الدالة مخيّر على تمرير قيم مكان البراميترات بدل أن تكون مجبراً على ذلك
القيمة الإفتراضية التي نضعها للبراميتر يقال لها Default Argument
مثال على ذلك
كود:
#include <iostream>
using namespace std;
// و يمكنك عدم تمرير قيمة لأنه أصلاً يملك قيمة language عند إستدعاءها يمكنك تمرير قيمة لها مكان الباراميتر .printLanguage هنا قمنا بتعريف دالة إسمها
void printLanguage(string language="English")
{
cout << "Your language is " << language << endl;
}
int main()
{
// "English" و بالتالي ستظل قيمته language بدون تمرير قيمة مكان الباراميتر printLanguage() هنا قمنا باستدعاء الدالة
printLanguage();
// "Arabic" و بالتالي ستصبح قيمته language للباراميتر 'Arabic' مع تمرير القيمة printLanguage() هنا قمنا باستدعاء الدالة
printLanguage("Arabic");
return 0;
}
في المثال التالي قمنا بتعريف دالة إسمهاprintLanguage
هذه الدالة فيها باراميتر واحد إسمه language يملك النص"English" كقيمة إفتراضية
حيث أن كل ما تفعله هذه الدالة عند إستدعاءها هو طباعة قيمة الباراميتر language
ملاحظة: وبما أننا قمنا بتمرير قيمة إفتراضية , فهذا يعني أننا لم نعد مجبرين على تمرير قيمة له عند إستدعاء الدالة لأنه اصلا يمتلك قيمة
سنحصل على النتيجة التالية عند تشغيل البرنامج
كود:
Your language is English
Your language is Arabic
أريد أن أنبه على أنه
إذا كانت الدالة تملك أكثر من باراميتر و تريد وضع قيمة إفتراضية لأحد الباراميترات التي تمكلها فقط فيجب وضع الباراميترات التي تملك قيم إفتراضية في الآخر.
إن لم ترد ذلك ستكون مجبر على وضع قيم إفتراضية لجميع الباراميترات الموجودة بعد أول باراميتر وضعت له قيمة إفتراضية.


فهرس الدروس
-
-
-
-
-
-
-
-
-
-
-
دروس البرمجة الكائنية
التعديل الأخير بواسطة المشرف: