في عالم البرمجة، تعتبر الدوال من أهم الأدوات التي تساعد على تنظيم الكود، وتقسيمه إلى أجزاء صغيرة قابلة لإعادة الاستخدام. في لغة C++، تلعب الدوال دورًا أساسيًا في بناء البرامج القوية والمرنة، حيث تتيح للمبرمج كتابة الكود بشكل أكثر ترتيبًا ووضوحًا ، و في هذه المقالة سنستعرض مجموعة امثلة عن الدوال في c++ ، مع شرح مفصل لكل مثال، وذلك لتوضيح كيفية تعريف الدوال واستدعائها واستخدامها بشكل فعّال داخل البرنامج.

امثلة عن الدوال في c++

امثلة عن الدوال في c++
امثلة عن الدوال في c++

مثال 1: دالة بسيطة لطباعة رسالة ترحيب

using namespace std;
// Function to print a welcome message
void printWelcome() {
cout << “Welcome to C++ programming!” << endl;
}
int main() {
printWelcome(); // Call the function
return 0;
}

الوصف:

  • تقوم الدالة printWelcome() بطباعة رسالة ترحيبية عند استدعائها. هذا النوع من الدوال يُستخدم كثيرًا لعرض رسائل ثابتة للمستخدم.

مثال 2: دالة لجمع رقمين وإرجاع الناتج

using namespace std;
// Function that adds two numbers and returns the result
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(5, 7);
cout << “The sum is: ” << result << endl;
return 0;

الوصف:

  • الدالة add() تستقبل رقمين وتُرجع الناتج. هذا مثال على دوال تُستخدم لإجراء العمليات الحسابية.

مثال 3: دالة للتحقق من كون الرقم زوجيًا أو فرديًا

using namespace std;
// Function to check if a number is even or odd
void checkEvenOdd(int number) {
if (number % 2 == 0)
cout << number << ” is even.” << endl;
else
cout << number << ” is odd.” << endl;
}
int main() {
checkEvenOdd(10);
checkEvenOdd(13);
return 0;
}

الوصف:

  • دالة checkEvenOdd() تتحقق مما إذا كان الرقم زوجيًا أم فرديًا باستخدام القسمة على 2.

مثال 4: دالة تحسب المضروب (Factorial) باستخدام التكرار

using namespace std;
// Function to calculate factorial of a number
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; ++i)
result *= i;
return result;}
int main() {
cout << “Factorial of 5 is: ” << factorial(5) << endl;
return 0;}

الوصف:

  • دالة factorial() تُستخدم لحساب مضروب عدد صحيح موجب باستخدام حلقة تكرارية.

مثال 5: دالة تستخدم القيمة الافتراضية للمعاملات (Default Parameters)

using namespace std;
// Function with default parameter
void greet(string name = “Guest”) {
cout << “Hello, ” << name << “!” << endl;}
int main() {
greet(“Ali”);
greet(); // Uses default value
return 0;

قد يهمك :

أنواع الدوال في لغة c++

في لغة C++، تُعتبر الدوال (Functions) جزءًا أساسيًا من البرمجة الهيكلية. تُستخدم لتنظيم الكود، وتقسيمه إلى وحدات صغيرة قابلة لإعادة الاستخدام. وتنقسم الدوال في C++ إلى أنواع متعددة بحسب الغرض والاستخدام.

الدوال بدون معاملات وبدون قيمة مرجعة (Void Function Without Parameters)

هذه الدالة لا تستقبل أي مدخلات ولا تُرجع أي ناتج.

cppCopierModifiervoid greet() {
    cout << "Hello!" << endl;
}

الاستخدام: لعرض رسالة أو تنفيذ مهمة ثابتة.

الدوال بمعاملات وبدون قيمة مرجعة (Void Function With Parameters)

تستقبل مدخلات لكنها لا تُرجع قيمة.

cppCopierModifiervoid printName(string name) {
    cout << "Your name is: " << name << endl;
}

الاستخدام: عند الحاجة لمعالجة بيانات دون إرجاع نتيجة.

الدوال بدون معاملات وتُرجع قيمة (Return Function Without Parameters)

لا تستقبل مدخلات لكنها تُرجع قيمة.

cppCopierModifierint getNumber() {
    return 10;
}

الاستخدام: لإرجاع بيانات ثابتة أو قيم تم حسابها داخليًا.

الدوال بمعاملات وتُرجع قيمة (Return Function With Parameters)

الدالة الأكثر استخدامًا؛ تستقبل معاملات وتُرجع ناتجًا.

cppCopierModifierint add(int a, int b) {
    return a + b;
}

الاستخدام: للحسابات والمنطق البرمجي الديناميكي.

الدوال مع معاملات افتراضية (Default Parameters)

يمكنك تمرير بعض المعاملات وترك الأخرى.

cppCopierModifiervoid welcome(string name = "Guest") {
    cout << "Welcome, " << name << endl;
}

الاستخدام: لتوفير مرونة في استدعاء الدالة.

الدوال المُفرطة (Function Overloading)

نفس اسم الدالة يُستخدم لأكثر من نسخة، بشرط اختلاف نوع أو عدد المعاملات.

cppCopierModifierint sum(int a, int b) {
    return a + b;
}
double sum(double a, double b) {
    return a + b;
}

الاستخدام: لتنفيذ عمليات متعددة بنفس الاسم ولكن بأنواع مختلفة.

الدوال التكرارية (Recursive Functions)

تستدعي نفسها بداخلها.

cppCopierModifierint factorial(int n) {
    if (n == 0) return 1;
    return n * factorial(n - 1);
}

الاستخدام: في الحالات التي تتطلب الرجوع التدريجي مثل الحسابات الرياضية أو شجرة القرارات.

الدوال الصديقة (Friend Functions)

ليست عضوًا في الكلاس ولكن يمكنها الوصول إلى بياناته الخاصة.

cppCopierModifierclass MyClass {
    friend void show(MyClass obj);
    int secret = 42;
};

الاستخدام: للوصول إلى الخصائص الخاصة من خارج الكلاس.

الدوال العضوية (Member Functions)

دوال تُكتب داخل الكلاس وتعمل على أعضائه.

cppCopierModifierclass Person {
public:
    void sayHello() {
        cout << "Hello from class!" << endl;
    }
};

الاستخدام: في البرمجة الكائنية OOP.

امثلة على الدوال في C PDF

تم إنشاء ملف PDF يحتوي على أمثلة منوّعة للدوال في لغة C++ مع تنسيقات واضحة.

أمثلة على المؤشرات في C++

أمثلة على المؤشرات في C++ (C++ Pointer Examples)

مثال 1: تعريف مؤشر وعرض عنوان متغير

cppCopierModifier#include <iostream>
using namespace std;

int main() {
    int x = 10;
    int* ptr = &x;

    cout << "Value of x: " << x << endl;
    cout << "Address of x: " << &x << endl;
    cout << "Pointer (ptr): " << ptr << endl;
    cout << "Value pointed by ptr: " << *ptr << endl;

    return 0;
}

الشرح:

  • int* ptr يُعرّف مؤشراً إلى عدد صحيح.
  • &x ترجع عنوان المتغير x.
  • *ptr تعرض القيمة الموجودة في العنوان الذي يشير إليه المؤشر.

مثال 2: تعديل قيمة متغير باستخدام المؤشر

cppCopierModifier#include <iostream>
using namespace std;

int main() {
    int number = 5;
    int* p = &number;

    *p = 20;  // تغيير قيمة number عبر المؤشر

    cout << "New value of number: " << number << endl;

    return 0;
}

الشرح:

  • عند استخدام *p = 20; يتم تعديل القيمة الأصلية في المتغير number لأن p تشير إليه مباشرةً.

مثال 3: مؤشر يشير إلى مؤشر (Pointer to Pointer)

cppCopierModifier#include <iostream>
using namespace std;

int main() {
    int x = 100;
    int* p = &x;
    int** pp = &p;

    cout << "Value of x: " << x << endl;
    cout << "Value via *p: " << *p << endl;
    cout << "Value via **pp: " << **pp << endl;

    return 0;
}

الشرح:

  • int** pp هو مؤشر لمؤشر، ويُستخدم للوصول إلى القيمة النهائية عبر عدة مستويات.

مثال 4: تمرير متغير إلى دالة باستخدام المؤشر

cppCopierModifier#include <iostream>
using namespace std;

void doubleValue(int* ptr) {
    *ptr = (*ptr) * 2;
}

int main() {
    int value = 15;
    doubleValue(&value);
    cout << "Value after doubling: " << value << endl;

    return 0;
}

الشرح:

  • يتم تمرير عنوان المتغير value إلى الدالة، فتقوم بتعديل القيمة مباشرة باستخدام المؤشر.

مثال 5: استخدام المؤشرات مع المصفوفات

cppCopierModifier#include <iostream>
using namespace std;

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int* ptr = arr;

    for (int i = 0; i < 5; i++) {
        cout << "Element " << i << ": " << *(ptr + i) << endl;
    }

    return 0;
}

أمثلة على class في C++

أمثلة على class في C++ :

مثال 1: تعريف كلاس بسيط وطباعته

cppCopierModifier#include <iostream>
using namespace std;

class Person {
public:
    string name;
    int age;

    void introduce() {
        cout << "My name is " << name << " and I am " << age << " years old." << endl;
    }
};

int main() {
    Person p1;
    p1.name = "Ali";
    p1.age = 25;
    p1.introduce();

    return 0;
}

الشرح:

  • الكلاس Person يحتوي على متغيرين (name, age) ودالة عضو introduce() لعرض البيانات.

مثال 2: كلاس يحتوي على Constructor (منشئ)

cppCopierModifier#include <iostream>
using namespace std;

class Car {
public:
    string model;
    int year;

    // Constructor
    Car(string m, int y) {
        model = m;
        year = y;
    }

    void display() {
        cout << "Model: " << model << ", Year: " << year << endl;
    }
};

int main() {
    Car car1("Toyota", 2020);
    car1.display();

    return 0;
}

الشرح:

  • عند إنشاء الكائن car1، يتم تمرير القيم مباشرة إلى الـ constructor.

مثال 3: كلاس يستخدم الدوال Getters و Setters

cppCopierModifier#include <iostream>
using namespace std;

class Student {
private:
    int grade;

public:
    void setGrade(int g) {
        if (g >= 0 && g <= 100)
            grade = g;
        else
            cout << "Invalid grade!" << endl;
    }

    int getGrade() {
        return grade;
    }
};

int main() {
    Student s1;
    s1.setGrade(85);
    cout << "Grade: " << s1.getGrade() << endl;

    return 0;
}

الشرح:

  • تم إخفاء المتغير grade باستخدام private، وتم التعامل معه فقط من خلال دوال setGrade() و getGrade().

مثال 4: كلاس يحتوي على دالة تُعيد قيمة محسوبة

cppCopierModifier#include <iostream>
using namespace std;

class Rectangle {
public:
    int width;
    int height;

    int area() {
        return width * height;
    }
};

int main() {
    Rectangle r1;
    r1.width = 5;
    r1.height = 4;

    cout << "Area of rectangle: " << r1.area() << endl;

    return 0;
}

الشرح:

  • تم حساب مساحة المستطيل باستخدام دالة area() داخل الكلاس.

مثال 5: كلاس يحتوي على Constructor افتراضي وConstructor مخصص

cppCopierModifier#include <iostream>
using namespace std;

class Book {
public:
    string title;
    string author;

    // Default constructor
    Book() {
        title = "Untitled";
        author = "Unknown";
    }

    // Parameterized constructor
    Book(string t, string a) {
        title = t;
        author = a;
    }

    void info() {
        cout << "Title: " << title << ", Author: " << author << endl;
    }
};

int main() {
    Book b1;
    Book b2("1984", "George Orwell");

    b1.info();
    b2.info();

    return 0;
}

الشرح:

  • المثال يحتوي على نوعين من الـ constructor: الافتراضي والمخصص.