ليه نقسم البرنامج إلى دوال؟
الفكرة الأساسية
الدالة تعطي جزءًا من العمل اسمًا وطريقة واضحة للاستخدام. تستقبل قيمًا من خلال المعاملات وقد تعيد نتيجة. بذلك تستطيع فهم مهمة صغيرة دون تتبع البرنامج كله في نفس اللحظة.
ابدأ بتحديد اتفاق الاستخدام: ما المدخلات المقبولة؟ ما النتيجة؟ وهل توجد آثار أخرى؟ اسم الدالة وحده لا يجيب عن كل ذلك.
مثال كامل قابل للتجربة
#include <stdio.h>
int maximum(int a, int b) {
if (a > b) {
return a;
}
return b;
}
int main(void) {
printf("%d\n", maximum(-3, -8));
return 0;
}
الناتج -3. تستقبل الدالة عددين صحيحين وتعيد الأكبر. وعند التساوي، إعادة أي منهما تعطي نفس القيمة. المثال يستخدم مقارنة دون جمع أو ضرب، فلا يضيف خطر تجاوز حسابي أثناء اختيار الأكبر.
| القيمة الأولى | الثانية | النتيجة |
|---|---|---|
| 4 | 9 | 9 |
| -3 | -8 | -3 |
| 5 | 5 | 5 |
الدالة تحسب النتيجة، وmain تقرر عرضها. الفصل بين المهمتين يجعل إعادة استخدام الدالة أسهل.
المعاملات قيم محلية
في المثال، a وb قيمتان محليتان داخل الاستدعاء. تغيير a داخل الدالة لا يغير مباشرة متغير العدد الأصلي عند المستدعي؛ لغة C تمرر المعاملات بالقيمة.
عندما تحتاج للعمل على متغير من خلال عنوانه، يمكن تمرير قيمة مؤشر. لكن ذلك يضيف شروطًا عن صلاحية العنوان وعمر المتغير، لذلك لا تستخدمه بدل فهم القيمة المعادة.
ماذا تفعل return؟
نوع الدالة يحدد نوع النتيجة التي يحصل عليها المستدعي. تأكد أن المسارات المطلوبة في الدالة التي تعيد قيمة تنتهي بإعادة مناسبة.
return تنهي استدعاء الدالة الحالية. لا تعني بالضرورة نهاية البرنامج كله؛ يعود التنفيذ إلى المستدعي ليستخدم النتيجة.
اختر مسؤولية صغيرة
دالة تختار الأكبر بين قيمتين أسهل في المراجعة من دالة تقرأ المدخلات وتعرض قائمة وتعدل متغيرات كثيرة وتكتب ملفًا في نفس الوقت.
في التدريب الأول، اجمع حسابًا واضحًا في مكانه وافصل عنه الإدخال والعرض ما لم يكونا موضوع الدرس. اختر اسمًا يشرح المهمة، واكتب أي قيود على المدخلات.
تمرينك التالي
اكتب دالة تعيد الأصغر بين عددين. اختبر قيمًا موجبة مختلفة، وقيمًا سالبة، وقيمتين متساويتين، واشرح المقارنة التي تغيرت.
ثم استخدم دالة الأكبر مرتين لإيجاد أكبر ثلاث قيم ثابتة. هنا ترى كيف تركب حلًا من أجزاء صغيرة دون تكرار تفاصيل كل جزء، وهي مهارة تفيدك في C ثم C++.
مراجع وتفاصيل الكورسات
المراجع التالية تساعد على متابعة التعلم. الأمثلة والتمارين في هذا المقال تعليمية، وتفاصيل الكورسات تُراجع من الكتالوج.