Menu
Coddy logo textTech

קובצי מקור

חלק מהיחידה תכנות מונחה עצמים במסלול ה-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. שתי הפונקציות מקבלות שני מספרים שלמים ומחזירות מספר שלם. אל תשכחו להוסיף guards באמצעות הסמל 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: הדפיסו את התוצאות בפורמט הבא:
    // Product: {התוצאה של multiply}
    // Difference: {התוצאה של subtract}
    
    return 0;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C אונליין