Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملفات المصدر

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

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

ينشئ هذا هيكلًا نظيفًا من ثلاثة أجزاء: يعلن header عن الدوال، ويعرّفها ملف مصدر منفصل، بينما يستخدم 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 يتضمن ملف الرأس الخاص به. يضمن هذا تطابق تعريف الدالة مع التصريح بها؛ وإذا لم يتطابقا، فسيكتشف المصرّف الخطأ. لا يحتاج الملف main إلا إلى تضمين ملف الرأس لاستخدام الدالة؛ وليس من الضروري أن يعرف كيف تعمل add داخليًا.

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

challenge icon

التحدي

سهل

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

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

  • math_ops.h: ملف header الخاص بك، ويحتوي على تصريحات function لعمليتين: multiply وsubtract. تأخذ كلتا function قيمتين من نوع integer وتعيدان قيمة من نوع integer. لا تنسَ تضمين include guards باستخدام الرمز MATH_OPS_H.
  • math_ops.c: ملف المصدر الخاص بك، ويحتوي على التنفيذات الفعلية لـ multiply وsubtract. يجب أن يتضمن هذا الملف ملف header الخاص به لضمان تطابق التصريحات مع التعريفات.
  • main.c: ملف main الخاص بك، الذي يتضمن ملف header ويستخدم كلتا function لإجراء الحسابات.

يجب أن تعيد multiply حاصل ضرب قيمتين من نوع integer، بينما يجب أن تعيد subtract قيمة first من نوع integer مطروحًا منها قيمة second.

ستتلقى مدخلين من نوع integer: a وb.

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

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: اطبع النتائج بالصيغة:
    // Product: {نتيجة multiply}
    // Difference: {نتيجة subtract}
    
    return 0;
}
quiz iconاختبر نفسك

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

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

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