Menu
CoddyTech

ملفات المصدر

جزء من قسم البرمجة كائنية التوجه في رحلة C على Coddy. الدرس 3 من 61.

حتى الآن، وضعنا تصريحات الدوال في ملفات الترويسة، لكن كود الدوال الفعلي (التعريف) كان موجودًا في الملف الرئيسي. الخطوة التالية في البرمجة المعيارية هي نقل تلك التعريفات إلى ملفات المصدر (ملفات .c).

ينشئ هذا بنية واضحة من ثلاثة أجزاء: يعلن ملف الترويسة عن الدوال، ويعرّفها ملف مصدر منفصل، ويكتفي main باستخدامها. إليك شكلها:

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);

#endif
// math_utils.c
#include "math_utils.h"

int add(int a, int b) {
    return a + b;
}
// main.c
#include <stdio.h>
#include "math_utils.h"

int main() {
    printf("%d\n", add(5, 3));
    return 0;
}

لاحظ أن math_utils.c يتضمن ملف الترويسة الخاص به. وهذا يضمن تطابق تعريف الدالة مع التصريح عنها؛ فإذا لم يتطابقا، فسيكتشف المترجم الخطأ. لا يحتاج الملف الرئيسي إلا إلى تضمين ملف الترويسة لاستخدام الدالة؛ ولا يحتاج إلى معرفة كيفية عمل add داخليًا.

يُبقي هذا الفصل تفاصيل التنفيذ مخفية، ويتيح لك تعديل منطق الدوال دون المساس بالملفات التي تستخدم تلك الدوال.

challenge icon

التحدي

سهل

لنبنِ أداة رياضية بسيطة بتنظيم الكود في البنية المناسبة المكوّنة من ثلاثة ملفات: ملف ترويسة للتصريحات، وملف مصدر للتنفيذات، وملف رئيسي يستخدمها.

ستنشئ ثلاثة ملفات:

  • math_ops.h: ملف الترويسة الذي يحتوي على تصريحات الدالتين للعملتين: multiply وsubtract. تأخذ كلتا الدالتين عددين صحيحين وتعيدان عددًا صحيحًا. لا تنسَ إضافة حراس التضمين باستخدام الرمز MATH_OPS_H.
  • math_ops.c: ملف المصدر الذي يحتوي على التنفيذات الفعلية للدالتين multiply وsubtract. ينبغي أن يضمّن هذا الملف ملف الترويسة الخاص به لضمان تطابق التصريحات مع التعريفات.
  • main.c: الملف الرئيسي الذي يضمّن ملف الترويسة ويستخدم الدالتين لإجراء العمليات الحسابية.

ينبغي أن تعيد الدالة multiply حاصل ضرب عددين صحيحين، وأن تعيد الدالة subtract العدد الصحيح الأول مطروحًا منه العدد الثاني.

ستتلقى عددين صحيحين كمدخلات: a وb.

في الدالة الرئيسية، اطبع نتيجتي العمليتين في سطرين منفصلين:

Product: {result of multiply}
Difference: {result of subtract}

على سبيل المثال، مع المدخلين 8 و3، سيكون الناتج:

Product: 24
Difference: 5

جرّب بنفسك

#include <stdio.h>
#include "math_ops.h"

int main() {
    int a, b;
    scanf("%d", &a);
    scanf("%d", &b);
    
    // TODO: استدعِ الدالة multiply باستخدام a وb، وخزّن النتيجة
    
    // TODO: استدعِ الدالة subtract باستخدام a وb، وخزّن النتيجة
    
    // TODO: اطبع النتائج بالتنسيق التالي:
    // الناتج: {نتيجة multiply}
    // الفرق: {نتيجة subtract}
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم C عبر الإنترنت