اهم الدوال في سي بلس بلس C++
هناك العديد منا الذين درسوا جميع التعريفات المختلفة في لغة C++، بما في ذلك طرق دراسة المتغيرات ووحدات التخزين والعوامل والبيانات والسلاسل وغيرها من الدراسات الأخرى، بالإضافة إلى الإجراءات وأنواع تلك الدوال والأمثلة على كل نوع.
كيفية تحديد الدالة
الدالة هي مجموعة محددة من البيانات والعبارات التي تم جمعها وتعديلها لأداء مهمة معينة. يمكن أن تكون هذه الدالة عبارة عن أجزاء تنفيذية أو وظائف متكررة أو مسؤوليات خاصة مثل الطباعة وغيرها. الدوال لها استخدامات متعددة
- يمكن تبسيط الشفرة أو تسهيلها عن طريق تقسيمها أو تجزئتها إلى وحدات أصغر تسمى الدوال.
- تستخدم هذه الدوال للحفاظ على عدم الحاجة إلى كتابة رمز واحد متكررا في مختلف مستويات لغات البرمجة، حيث يتم هذا من خلال كتابة دالة واحدة ثم اللجوء إليها أو استدعائها عند الحاجة دون الحاجة إلى كتابة العبارات نفسها مرارا وتكرارا .
اهم أنواع الدوال في C ++
يوجد هناك نوعين من الدوال :
الدوال المدمجة built in functions
تُطلق على هذه الدوال اسم `دوال المكتبة` أو `الدوال المضمنة`، حيث تكون هذه الدوال التي يتم توفيرها بواسطة لغة البرمجة C++، ولا نحتاج إلى كتابة هذه الدوال بأنفسنا، بل يمكننا استخدامها مباشرةً من خلال الرجوع إليها في الكود الذي نعمل عليه .
يتم حفظ الدوال في ملفات رأس C++، وتتضمن هذه الملفات رؤوسًا تحتوي على الدوال الرياضية المضمنة ودوال السلسلة المتتالية. ويمكن استخدام الدوال المضمنة في البرنامج، وسنذكر مثالًا على ذلك.
المثال:-
{ #include <iostream>
#include <string>
using namespace std;
int main ()
{string name;
cout << “Enter the input string:”;
getline (std :: cin, name);
cout << “String entered:” << name << “! n”;
int size = name.size ();
cout << “Size of string:” << size << endl; }
الناتج
يتم استخدام الرؤوس هنا وتعريف أنواع البيانات ووظائف الإدخال / الإخراج الأخرى في مكتبة، وتتضمن وظائف السلسلة المستخدمة مثل getline والحجم جزءًا من الرأس .
دوال معرفة من قبل المستخدم User defined functions
يتيح استخدام C++ لكل مستخدم تحديد الدوال الخاصة به، وهي الدوال التي يتم تعريفها بواسطة المستخدم نفسه، ويتمكن المستخدم من تحديد هذه الدوال في أي وقت ومن أي مكان في البرنامج .
تتم طلب أو استدعاء هذه الدوال من أي مستوى من مستويات لغات البرمجة التعليمية، كما يمكن العثور عليها في المتغيرات .
من المهم أن يتم الإعلان عن هذه الدوال قبل استخدامها، ويتم أيضًا الإعلان عن تلك الدوال قبل البدء في عملية الاستدعاء أو الطلب عليها .
عادةً ما تكون الصيغة المعروفة لهذا النوع من الدوال (الدوال التي يتم تحديدها من قبل المستخدم) كما يلي:
return_type functionName (param1, param2, … .param3
{ ;Function body }
كل واحدة من هذه الدوال المذكورة لها عدة أساسيات، وهي كالتالي
- نوع الإرجاع: ويتمثل في القيمة التي يتم الحصول عليها من الدوال عند استدعاء الدالة بعد الانتهاء من القيام بالمهمة المحددة
- تعريف function Name : وهو المعرف المستخدم للقيام بتسمية الدالة .
- قائمة المعلمات: تُعَدُّ المعلومات param1، param2، … paramn الوسيطات التي يتم الاستدلال على الدالة من خلالها أثناء استدعاء أو طلب هذه الدالة .
- قائمة المعلمات الاختيارية : بمعنى أن لدينا وظائف لا يوجد لدينا معلومات عنها.
- نص الدالة: يتضمن هذا الجانب عددًا من العبارات التي تستخدم لتحقيق مهمة محددة في سياق معين .
كيفية تعريف الدالة
تتضمنتعريف الدالة كل ما هو موجود في إعلان الدالة، بما في ذلك نص الدالة الموجود بين الأقواس الزوجية ({}).
ومع كل هذا لابد أن يحتوي التعريف على معلمات تكون مسماة ، وأثناء مرحلة استدعاء الدالة ، يتم انتقال عملية التحكم التي تكن في البرنامج إلى تعريف الدال، لكي يتم القيام بعمل رمز الدالة ، وأثناء الانتهاء من أمر تنفيذ الدالة يقوم عنصر التحكم بالرجوع إلى نفس النقطة التي قد استدعت الدالة إليها .
void swap (int a, int b) {
b = a + b;
a = b – a;
b = b – a;}
يمكن للإعلان عن الدالة وتعريفها أن يتم السير معًا في اتجاه واحد، إذا تم تحديد الدالة قبل الانتقال إلى تلك الدالة، فليس من الضروري الإعلان عنهما بشكل منفصل .
هذا مثال على برمجة كاملة يتم من خلاله إثبات الدالة.
#include <iostream>
using namespace std;
void swap (int a, int b) {// here a and b are formal parameters
b = a + b;
a = b – a;
b = b – a;
cout << “ nAfter swapping:”;
cout << “a =” << a;
cout << “ tb =” << b;
return;
}
int main ()
{
int a, b;
cout << “Enter the two numbers to be swapped:”; cin >> a >> b;
cout << “a =” << a;
cout << “ tb =” << b;
swap (a, b); // here a and b are actual parameters
}
الناتج :
أدخل الرقميين المطلوب تبديلهما:
5 / 3
a = 5 . b = 3
بعد التبديل
: a = 3 b = 5
من خلال هذا المثال، نلاحظ وجود تبادل لدالة يتم استدعاؤها بواسطة معلمتين من نوع int دون تحديد أي شيء، ويكون نوع الإرجاع باطلاً عندما يتم تعريف هذه الدالة قبل الدالة الأصلية، وهي تعتبر دالة استدعاء لم يتم الإعلان عنها بطريقة منفصلة .
يمكننا في الدالة الأساسية main قراءة رقمين صحيحين، ثم يتم استدعاء دالة المبادلة من خلال تمرير الرقمين الصحيحين المحددين إلى تلك الدالة.
في دالة المبادلة، يتم استخدام المنطق القياسي لتبادل الأرقام الصحيحة السابقة، ويتم طباعة أو تدوين القيم المتبادلة في هذه الحالة .
قيم الإرجاع
عندما تتمكن الدالة من الانتهاء من القيام بعملية تنفيذ المهمة المطلوبة منها ، من الواجب أن تقوم بارجاع النتيجة إلى دالة الاستدعاء ، لذلك الشئ، هناك ضرورة إلى وجود نوع الإرجاع للدالة ، بحيث يمكن أن يتم رجوع الدالة قيمة واحدة إلى دالة الاستدعاء ، كما أن عملية الإعلان تكون عن نوع الإرجاع للدالة مع هذا النموذج الأولى للدالة .
يتم شرح أنواع الإرجاع عن طريق إضافة رقمين كمثال
#include <iostream>
using namespace std;
int sum (int a, int b) {
return (a + b);
}
int main ()
{
int a, b, result;
cout << “Enter the two numbers to be added:”; cin >> a >> b;
result = sum (a, b);
cout << “ nSum of the two numbers:” << result;
}
الناتج :
أدخل الرقميين المطلوب إضافتهما: 11 11 ، مجموع الرقمين: 22