📚 الدوال في C++
المفاهيم الأساسية
الدالة (Function): تجميع لتعليمات برمجية تؤدي مهمة محددة، يمكن استدعاؤها عدة مرات في البرنامج. يمكن أن تقبل متغيرات كمدخلات، وتنفذ تعليمات، وترجع قيمة.
خريطة المفاهيم
```markmap
برمجة إنترنت الأشياء باستخدام C++
أساسيات لغة C++
التعليقات (Comments)
#### التعليق في سطر واحد
- يستخدم الرمزين: //
- مثال: // this is a comment
#### التعليق متعدد الأسطر
- يستخدم الرمزين: / /
- مثال: / ... /
#### استخدامات التعليقات
- تحسين قابلية قراءة البرنامج
- تسهيل فهم وظائف البرنامج للمبرمجين والمراجعين
- جعل أجزاء من الكود غير نشطة أثناء الاختبار
المعاملات الأساسية
#### المعاملات الرياضية
- الجمع (+)
- الطرح (-)
- الضرب (*)
- القسمة (/)
- باقي القسمة (%)
##### ملاحظة
- في الأعداد الصحيحة (int): "/" لحاصل القسمة، "%" لباقي القسمة
- في الأعداد العشرية (float/double): "/" فقط لحاصل القسمة
#### معاملات الإسناد
- الإسناد (=)
- الجمع والإسناد (+=)
- الطرح والإسناد (-=)
- الضرب والإسناد (*=)
- القسمة والإسناد (/=)
- باقي القسمة والإسناد (%=)
#### المعاملات العلائقية
- يساوي (==)
- لا يساوي (!=)
- أكبر من (>)
- أصغر من (<)
- أكبر أو يساوي (>=)
- أصغر أو يساوي (<=)
#### المعاملات المنطقية
- AND المنطقية (&&)
- OR المنطقية (||)
- NOT المنطقية (!)
الطباعة والإخراج
العبارات الشرطية
#### أنواع العبارات الشرطية
- عبارة `if`
- عبارة `if... else if... else`
- عبارة `if... else if... else if...`
#### عبارة `if` البسيطة
- الصيغة: `if (condition) { // body }`
- آلية العمل:
- يتم فحص الشرط بين القوسين.
- إذا كان الشرط صائباً (True)، تُنفَّذ التعليمات داخل الأقواس `{}`.
- إذا كان الشرط خاطئاً (False)، تُتخطَّى التعليمات داخل الأقواس.
#### عبارة `if...else`
##### التركيب
if (condition) {
// block of code 1 if condition is true
}
else {
// block of code 2 if condition is false
}
##### آلية العمل
- يتم أولاً تقييم الشرط.
- إذا كان الشرط صائباً (True)، تُنفَّذ التعليمات داخل `if` وتُتخطَّى التعليمات داخل `else`.
- إذا كان الشرط خاطئاً (False)، تُتخطَّى التعليمات داخل `if` وتُنفَّذ التعليمات داخل `else`.
#### عبارة `if..else if..else`
##### التركيب
if (condition1) {
// code block 1
}
else if (condition2) {
// code block 2
}
else {
// code block 3
}
##### آلية العمل (مخطط التدفق)
- إذا كان
صواب: تنفيذ
تعليمات برمجية 1 ثم الخروج.
- إذا كان خطأ: الانتقال لفحص الشرط الثاني.
- إذا كان صواب: تنفيذ تعليمات برمجية 2 ثم الخروج.
- إذا كان خطأ: تنفيذ تعليمات برمجية 3 ثم الخروج.
##### حالات التنفيذ
###### إذا كان الشرط الأول صائباً
- تُنفَّذ مجموعة التعليمات البرمجية الأولى.
- تُتخطَّى مجموعتي التعليمات الثانية والثالثة.
###### إذا كان الشرط الأول خطأ والثاني صائباً
- تُنفَّذ مجموعة التعليمات البرمجية الثانية.
- تُتخطَّى مجموعة التعليمات البرمجية الثالثة.
###### إذا كانت كافة الشروط خطأ
- تُنفَّذ مجموعة التعليمات البرمجية الثالثة (الخاصة بـ `else`).
##### العبارات الشرطية المتداخلة
- يمكن تضمين عبارة `if` داخل مجموعة تعليمات برمجية لعبارة `if` أخرى.
- لا يُشترط أن تكون من نفس النوع.
التكرارات (Loops)
#### أنواع التكرارات
##### تكرار `for`
- الصيغة: `for (تهيئة المتغير; الشرط; معامل الزيادة) { // loop statements; }`
- آلية العمل:
1.
التهيئة: تنفذ مرة واحدة فقط قبل بدء التكرار.
2. فحص الشرط: إذا كان صواب، تُنفَّذ جمل التكرار.
3. الزيادة: تحديث قيم المتغيرات بعد تنفيذ الجمل.
4. التكرار: يستمر حتى يصبح الشرط خطأ.
##### تكرار `while`
- الصيغة: `while (condition) { // loop statements; }`
- آلية العمل:
1.
فحص الشرط أولاً.
2. إذا كان صواباً، تُنفَّذ عبارات التكرار.
3. إذا كان خطأ، يتوقف التكرار وتُتخطَّى العبارات.
##### تكرار `do...while`
- الصيغة: `do { // statement execution; } while (condition);`
- آلية العمل:
1.
تنفيذ التعليمات أولاً مرة واحدة على الأقل.
2. فحص الشرط بعد التنفيذ.
3. إذا كان الشرط صواباً، يعود لتنفيذ التعليمات مرة أخرى.
4. إذا كان خطأ، يتوقف التكرار.
#### عبارات التحكم في التكرار
##### عبارة `break`
- الوظيفة: تنهي التكرار حيث تكون موجودة.
- آلية العمل:
- عند استيفاء شرط معين داخل التكرار، يتم تنفيذ `break`.
- يخرج البرنامج فوراً من التكرار الحالي وينتقل إلى التعليمات التي تلي الحلقة.
for (init; condition; update) {
// code block 1
if (condition to break) {
break
}
// code block 2
}
// code after loop
while (condition) {
// code block 1
if (condition to break) {
break
}
// code block 2
}
// code after loop
- في التكرارات المتداخلة: إذا وُضعت داخل تكرار متداخل، فإنها تنهي التكرار الداخلي فقط.
##### عبارة `continue`
- الوظيفة: تتخطى بقية التعليمات البرمجية داخل التكرار وتنتقل إلى التكرار التالي.
- الاستخدام في `for`:
for (init; condition; update) {
// code block 1
if (condition to continue) {
continue
}
// code block 2
}
// code after loop
while (condition) {
// code block 1
if (condition to continue) {
continue
}
// code block 2
}
// code after loop
- في التكرارات المتداخلة: إذا وجدت داخل تكرار متداخل، يتم تخطي التكرار الحالي في التكرار الداخلي فقط.
الدوال (Functions)
#### تعريف الدالة
- تجميع تعليمات برمجية تؤدي مهمة محددة.
- يمكن استدعاؤها عدة مرات.
- توجد دوال قياسية ودوال خاصة بالمبرمج.
#### تركيب الدالة
return\_type\ functionName\ ( parameter1,\ parameter2,\ ...\ )\ \{ \ //\ function\ body \ \}
##### أجزاء التركيب
- return type: نوع البيانات التي ترجعها الدالة.
- functionName: اسم الدالة.
- parameter1, parameter2: وسيطات الإدخال (إن وجدت).
#### مثال
// function declaration
int adding (int a, int b) {
s = a+b;
return s
}
```
نقاط مهمة
- الغرض من الدوال هو تجنب تكرار كتابة نفس التعليمات البرمجية.
- يمكن للدوال أن تقبل وسيطات (مدخلات) وتنفذ تعليمات داخل الأقواس `{ }`.
- تنتهي الدالة بعبارة `return` لترجع قيمة.
- بناء الدالة يتكون من: نوع الإرجاع، اسم الدالة، قائمة الوسائط، جسم الدالة.