recent
أخبار ساخنة

الدوال في لغة سي بلس بلس C++

AM VIIP
الصفحة الرئيسية
الدوال في لغة C++

الدوال function في C++

الدالة ( Function ) هي عبارة عن برنامج فرعي مهمته تنفيذ مهمة معينة حين يتم إستدعاءه (عبارة عن مجموعة أوامر مجمعة في مكان واحد و تتنفذ عندما نقوم بإستدعائها). و يحتوي كل برنامج C++ على برنامج واحد على الأقل وهو main() و يمكن لجميع البرامج البسيطة تحديد وظائف إضافية.0

 

مما يتألف البرنامج الفرعي؟

يتألف البرنامج الفرعي من ثلاث أقسام وهي كالتالي :

  1. التصريح عن البرنامج و ينتهي بفاصلة منقوطة و لكن إن كان التصريح خارج التعليمة أي قبلها void main() فإن البرنامج الفرعي يكون مشاع لكل البرامج المتاحة في البرنامج, أما إن كتبت داخل جسم void main() فإن البرنامج الفرعي يكون حكراً على هذه التعليمة.
  2. كود طلب البرنامج و ينتهي بفاصلة منقوطة.
  3. جسم البرنامج وهو يشابه طريقة كتابة البرنامج الرئيسي و بدون فاصلة منقوطة ويكتب جسم التابع بعد نهاية كتابة جسم البرنامج الرئيسي.


التصريح عن التابع في C++

هو أن نكتب إسم خرج التابع ثم إسم التابع و من ثم نكتب الباراميترات, أي نوع الخرج.

void positive (int);

حيث أن void خرج التابع و positive إسم التابع و int البارميترات.


بناء الدوال في C++

return_type function_name( parameter list ) {
body of the function
}

حيث أن:

  1. return_type: تعني تحديد النوع الذي سوف ترجّعهُ الدالة عندما تنتهي.
  2. function_name: تمثل الإسم الذي نعطيه للدالة ونستدعيها به عند حاجتها.
  3. Parameter list: الباراميترات (وضعها يكون إختياري).
  4. body of the function: جسم الدالة و هي الأوامر التي نضعها في الدالة.


كما لاحظنا أنها تتألف من رأس الدالة و جسم الوظائف و ثم أجزاء البرنامج.

نوع الإرجاع return_Type يمكن أن يكون أي نوع من أنواع البيانات ( int - double - bool - string إلخ..).

في حال كانت الدالة لا تقوم بإرجاع أي قيمة يجب وضع الكلمة void مكان الكلمة return_type.


مثال 1

#include <iostream>
using namespace std;
int max(int num1, int num2);
int main () {
int a = 100;
int b = 200;
int ret;
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}

أنشأنا دالتين من نوع int و هما int num1 و int num2 ثم قمنا بالدخول للبرنامج الرئيسي و أنشأنا متغيرات عددية وهي:

  • المتغير a و قيمته تساوي 100.
  • المتغير b و قيمته تساوي 200.
  • المتغير ret و قيمته معرفة الرقم الأكبرمن المتغيرين السابقات.

 ثم أنشأنا دالة طباعة و تطبع لنا Max value is ثم يقوم بطباعة الرقم الأكبر, ثم أنشأنا دالة max و بها المتغيرين.

و أنشأنا متغير result لتخزين النتيجة به ووضعنا شروط في حال كان num1 اكبر من num2 قم بطباعة قيمة num1 و غير ذلك قم بطباعة num2 و ارجع النتيجة لنا.

عند تشغيل الكود سوف تكون نتيجته هي 200.

مثال 2

#include <iostream>
using namespace std;
int sum(int a, int b = 20) {
int result;
result = a + b;
return (result);
}
int main () {
int a = 100;
int b = 200;
int result;
result = sum(a, b);
cout << "Total value is :" << result << endl;
result = sum(a);
cout << "Total value is :" << result << endl;
return 0;
}

قمنا بإنشاء دالتين int و هو sum و الدالتين هما int a و int b و قيمة b تساوي 20 و أنشأنا متغير آخر لتخزين النتيجة به وهو result و قيمة هذا المتغير هي ناتج جمع a+b و يقوم بإرجاع الناتج.

ثم في البرنامج الرئيسي عيننا قيمة للمتغير a و هي 100 و المتغير b و هي 200.

عند تشغيل البرنامج ستكون نتيجته هي

إعطاء قيمة إفتراضية للباراميترات في C++

لغة C++ تتيح وضع قيم إفتراضية للباراميترات مما يجعل المبرمج عند إستدعاء الدالة مُخيّر على تمرير قيم بمكان الباراميترات عوضاً عن أن تكون مجبراً على ذلك.

القيمة الإفتراضية للباراميتر إسمها Default Argument.

مثال

#include <iostream>
using namespace std;
void printAdmin(string admin="Muhammad")
{
cout << "Your admin is " << admin << endl;
}
int main()
{
printAdmin();
printAdmin("Saja");
return 0;
}

عرفنا دالة void و إسمها printAdmin و عند إستدعاءها يمكن تمرير قيمة بمكان الباراميتر admin و يمكن أيضاً عدم تمرير قيمة لأنه في الأساس يملك قيمة وهي Muhammad.

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

ثم قمنا بإستدعاء الدالة مرة أخرى و مررنا لها قيمة وهي Saja و بالتالي الباراميتر ستصبح قيمته Saja.

عند تشغيل الكود ستكون نتيجته

Your admin is Muhammad
Your admin is Saja

إذا كانت الدالة تمتلك أكثر من باراميتر في البرنامج و تٌريد وضع قيمة إفتراضية لأحد الباراميترات الموجودة التي تمكلها فقط, فيجب عليك وضع الباراميترات التي تملك قيم إفتراضية في النهاية.

دالة بسيطة تقوم بطباعة نص على الشاشة

#include <iostream>

void printMessage() {
    std::cout << "مرحباً! أهلاً بك في لغة C++." << std::endl;
}

int main() {
    printMessage();
    return 0;
}

دالة تقوم بإجراء عملية جمع بين عددين وإرجاع الناتج:

int addNumbers(int a, int b) {
    int sum = a + b;
    return sum;
}

int main() {
    int x = 5;
    int y = 3;
    int result = addNumbers(x, y);
    std::cout << "الناتج: " << result << std::endl;
    return 0;
}

دالة تقوم بإجراء عملية ضرب بين عددين وتطبع الناتج:

#include <iostream>

void multiplyNumbers(int a, int b) {
    int product = a * b;
    std::cout << "الناتج: " << product << std::endl;
}

int main() {
    int x = 4;
    int y = 2;
    multiplyNumbers(x, y);
    return 0;
}

دالة تستخدم المعامل الافتراضي (القيمة الافتراضية) لإعطاء قيمة افتراضية للمعاملات:

#include <iostream>

void printName(std::string name = "غير معروف") {
    std::cout << "الاسم: " << name << std::endl;
}

int main() {
    printName(); // ستطبع "الاسم: غير معروف"
    printName("أحمد"); // ستطبع "الاسم: أحمد"
    return 0;
}
google-playkhamsatmostaqltradent