Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 מבוא למדעי המחשב מבנה של תכנית. 2 מבנה של תכנית – חלוקה לקבצים  תכנית בשפת C הינה אוסף של הגדרות של:  משתנים (חיצוניים)  פונקציות  ניתן לפרוש תכנית.

Similar presentations


Presentation on theme: "1 מבוא למדעי המחשב מבנה של תכנית. 2 מבנה של תכנית – חלוקה לקבצים  תכנית בשפת C הינה אוסף של הגדרות של:  משתנים (חיצוניים)  פונקציות  ניתן לפרוש תכנית."— Presentation transcript:

1 1 מבוא למדעי המחשב מבנה של תכנית

2 2 מבנה של תכנית – חלוקה לקבצים  תכנית בשפת C הינה אוסף של הגדרות של:  משתנים (חיצוניים)  פונקציות  ניתן לפרוש תכנית אחת על פני מספר קבצים.  כל פונקציה חייבת להיות מוגדרת בשלמותה בקובץ אחד.  יתרונות: פיתוח מודולרי של תוכנה. ניתן לקמפל כל קובץ בנפרד.

3 3 חלוקה לקבצים - קומפילציה  נניח שתכנית כלשהיא מורכבת מן הקבצים, f2.c, f3.c f1.c.  ניתן לקמפל את כל הקבצים בפקודה אחת. למשל ב- unix: gcc f1.c f2.c f3.c ביצוע פקודה זאת יגרום ליצירת הקבצים:, f2.o, f3.o f1.o וכן לאיחודם בתכנית אחת a.out.  אם יש טעות קומפילציה, למשל ב- f2.c, ניתן לתקנה ואזי: gcc f1.o f2.c f3.o שימו לב שרק הקובץ f2.c יעבור קומפילציה מחדש ← חיסכון בזמן הקומפילציה!

4 4 חלוקה לקבצים הבעיה:  מה אם פונקציה מוגדרת בקובץ אחד אך משתמשים בה בקובץ אחר?  איך הקומפיילר ידע שאכן יש התאמה בין הטיפוס המוגדר של הפונקציה ובין הטיפוס שהסביבה הקוראת מניחה?  ניתן לקמפל כל קובץ בנפרד ללא בעיה, אך רק בזמן ריצה תתרחש הטעות!  למשל: ב- f1.c תוגדר הפונקציה double func (double x) { : } אך ב- f2.c תיקרא הפונקציה ע"י הפקודה int num=func(2);

5 5 חלוקה לקבצים  הבעיה: מה אם פונקציה מוגדרת בקובץ אחד אך משתמשים בה בקובץ אחר?  הפתרון: הצהרה על הפונקציה בסביבה בה משתמשים בה.  שימו לב: ראינו כי הצהרות על פונקציות אינן חובה, אך כאשר פונקציה מוגדרת בקובץ אחד ונקראת בקובץ אחר, כדאי מאד לקובץ בו הפונקציה נקראת להצהיר על כל פונקציה שהקובץ משתמש בה. הרעיון: לגלות כמה שיותר טעויות בזמן קומפילציה ולא בזמן ריצה!  בדר"כ מקובל לפרט הצהרות על פונקציות בקובץ כותרים (header file).

6 6 קובצי כותרים (header files)  קובץ כותרים הינו קובץ המכיל הצהרות על משתנים חיצוניים ועל פונקציות בהם משתמשת תכנית.  באופן מסורתי, שמו מסתיים ב-.h  דוגמא:  תכנית הבנויה משלושה קבצים f1.c, f2.c, f3.c  פונקציה בשם func מוגדרת בקובץ f1.c.  יש פונקציות בקבצים f2.c ו- f3.c המשמשות בפונקציה func.  ההצהרה על הפונקציה func תישמר בקובץ נפרד (למשל, f.h).  הקבצים f2.c ו- f3.c יטענו את הקובץ f.h (ובכך את ההצהרות בו) ע"י הפקודה: #include “f.h”

7 7 דוגמא  נרצה לבנות ספריה של פונקציות מתמטיות (כגון power ו- factorial).  נאגד את הפונקציות הללו בקובץ mathf.c.  בנוסף, נבנה קובץ בשם mathf.h שיכיל את ההצהרות ל הפונקציות והמשתנים החיצוניים המוגדרים ב- mathf.c : extern int max_faxtorial; extern double factorial (int n); extern int power (int base, int n);  בקובץ שבו נרצה להשתמש באחת מן הפונקציות המתמטיות הללו, נוסיף טעינה של קובץ הכותרים: #include “mathf.h”

8 8 קובצי כותרים (header files) משמעות ההנחיה #include “file_name.h”:  בזמן קומפילציה יתייחס הקומפיילר לקובץ בו מופיעה ההנחיה כאילו במקום בו הופיעה המילה include – מופיעות בו למעשה ההצהרות שהן תוכן קובץ הכותרים.  המרכאות הכפולות מציינות לקומפיילר שהקובץ אינו אחד מקבצי הכותרים הסטנדרטיים.  כאשר טוענים קובץ כותרים סטנדרטי יש להשתמש בסוגריים משולשים. למשל: #include

9 חלוקה לקבצים – דוגמא /* mathf-main.c */ /* This program uses the mathf library functions */ #include #include "mathf.h" /* test the power function */ int main() { int i; for (i=0; i<max_factorial; i++) { printf("i=%d, 2^i=%d, i!=%ld\n", i, power(2,i), factorial(i)); } return 0; } /* mathf.h */ extern int max_factorial; extern int power(int base, int n); extern long factorial(int n); /* mathf.c */ /* A small mathematical library */ /* containing power and factorial */ /* external variable defined here: */ int max_factorial=10; /* power: raise base to n-th power; n>=0 */ int power(int base, int n) { int i, p=1; for (i=1; i<=n; i++) p = p*base; return p; } /* factorial: compute n! */ long factorial(int n) { long result=1; if (n max_factorial) return -1; else { while (n>0) result *= n--; } return result; }


Download ppt "1 מבוא למדעי המחשב מבנה של תכנית. 2 מבנה של תכנית – חלוקה לקבצים  תכנית בשפת C הינה אוסף של הגדרות של:  משתנים (חיצוניים)  פונקציות  ניתן לפרוש תכנית."

Similar presentations


Ads by Google