في عالم البرمجة، تعتبر الدوال من أهم الأدوات التي تساعد على تنظيم الكود، وتقسيمه إلى أجزاء صغيرة قابلة لإعادة الاستخدام. في لغة 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++ مع تنسيقات واضحة.
- يمكنك تحميل الملف من هنا: Examples_of_Functions_in_C++.pdf
أمثلة على المؤشرات في 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: الافتراضي والمخصص.