עבור לתוכן

שאלה לגבי פונקציות בשפת C

Featured Replies

פורסם

שלום

תראו למדתי בקצרה פונקציות בשפת C אבל לא כלכך הבנתי

אתם יכולים לכתוב לי פה רק איך נראת תוכנית בסיסית שמשלבת פונקציה

תודה

פורסם

קח משהו מאוד בסיסי, אבל אתה אמור להבין מזה משהו...

#include <iostream.h>

int add(int a, int b)
{
int c;
c = a+b;
return c;
}

void main()
{
int x=5;
int y=10;
int z;
z = add(x,y);
cout<<z;
}

פורסם
  • מחבר

דבר ראשון תודה

שנית יש כמה דברים שלא הבנתי

מה זה אומר בשורה הזאת? int add(int a, int b) כלומר מזה INT ADD ובתוכו עוד INTים

בתוכנית הרגילה ולא בפונקציה אז כתוב 3 שורות של INT זה רק כדי להיות בטוח זה אומר שהגדרנו משתנה ואת הערך שלו ולכן זה אחד אחרי השני?

דבר נוסף אתם יכולים להביא לי גם תוכנית רגילה שבאמצע עוברת לפונקציה ואז חוזרת בסופה לתוכנית (יכול להיות שזה זה אבל פשוט איך שאני למדית לא נראה כך)

פורסם

הint הראשון זה הערך המוחזר.

הintים הפנימיים אלו הערכים הנשלחים לפונקציה.

ADD זה שם הפונקציה.

הintים במהלך התוכנית זה פשוט הגדרה של משתנים, והשמה של ערכים בתוכם.

התוכנית שכתבתי הולכת לפונקציה ואז חוזרת לתוכנית...

פורסם

פונקציות אלו קטעי קוד, שבמקום לרשום אותם שוב ושוב ושוב בMain, רושמים אותם בנפרד, ואז קוראים אליהם איפה שרוצים (א - פונקיציות יופיעו בד"כ במקום קטעי קוד שחוזרים על עצמם, אבל לא בהכרח. למשל אם אתה רוצה להסתיר קוד ממישהו שקורא את הקוד שלך. ב - הפעולה של הפעלת הפונקציה נקראת קריאה. אתה קורא לפונקציה שתבוא לעשות את הפעולה שהיא עושה.)

עכשיו, יש שני סוגים של פונקציות:

פרוצדורות - פונקציות שלא מחזירות ערך. הן שימושיות אם אתה רוצה למשל לעשות פונקציה שמדפיסה בצורה מסודרת. אולם, לפעמים כן משתמשים בפרוצדורות, כדי להחזיר מספר רב של ערכים, אבל זה יותר מתקדם.

פונקציות רגילות - פונקציות שמחזירות ערך. למשל חיבור של מספרים. הפונקציות האלה יכולות להחזיר ערך אחד בלבד!!!.

הפונקציות גם מתחלקות לפי הפרמטרים שהן מקבלות:

יש פונקציות שמקבלות פרמטרים, ויש כאלו שלא.

עד כאן תאוריה.... עכשיו לC..

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

int add(int a, int b)

מה אנחנו לומדים מהשורה הזאת?

שים לב למילה שמופיעה אחרי ה int הראשון. זה שם הפונקציה. כשאתה רוצה לקרוא לפונקציה הזאת, זה השם שלה.

אחרי זה, בסוגריים יש את הפרמטרים שהפונקציה הזאת מקבלת. אלו הם שני מספרים שלמים (int-ים) שכשאתה קורא לפונקציה, אתה כותב את זה ככה:

c=add(num1,num2)

שים לב, שקראתי לפונקציה, לא עם a ו b, אלא אם num1 ו num2. זה בא להראות שאתה יכול להשתמש בכל מה שאתה רוצה שהמשמעות שלו היא אינטג'ר (מספר רגיל, משתנה, ביטוי, או אפילו פונקציה אחרת).

למה רשמתי c= ?

זה בגלל שהפונקציה הזאת מחזירה ערך. אם תחזור לשורת הקוד הקודמת, תראה שכתוב בהתחלה int. זה כדי להצהיר על סוג המשתנה שיוחזר ע"י הפונקציה.

בקריאה לפונקציה, אתה חייב להכניס לאנשהו את הערך שחוזר מהפונקציה, אחרת תאבד אותו (לא חבל?)....

זאת הכותרת של הפונקצייה...

כדי להחזיר ערך מתוך הפונקציה, אתה משתמש בפקודת return. אחרי ה return יכולים לבוא מספר רגיל (לרוב לא הגיוני, אבל יש מקרים רבים שצריך את זה..), משתנה, ביטוי, או אפילו קריאה לפונקציה אחרת (שימושי בעתיד........).. יש רק פקודת return אחת הכל פונקציה, בגלל שחלק מפקודת ה return זה פשוט לצאת מהפונקציה, ולחזור למקום ממנו נקראה הפונקציה. בסוגים יותר מתקדמים של פונקציות, יש לפעמים כמה פקודות return, אבל זה מתקדם הרבה יותר.

לא משנה איפה בתוכנית מופיע הקוד של הפונקציה (כמובן לא בתוך קוד של פונקציה אחרת.....), חשוב שלפחות האיזכור של הפונקציה באמצעות הכותרת, יופיע לפני הפעם הראשונה שאתה קורא לה.

אתה פשוט רושם את הכותרת של הפונקציה עם ; בסוף, ואח"כ אתה פשוט רושם רגיל..... C היא לא שפה חכמה במיוחד (לא יודעת להסתכל קדימה... היא רק זוכרת אחורה...)..

זהו, פחות או יותר... מקווה שלא שכחתי כלום... ושזה לא ארוך מידי...

רק עוד דבר אחד. יש עוד הרבה סוגים של פונקציות, כאשר מה שהסברתי לך עליו זה הסבר כללי בלבד. הסוג המתקדם הנפוץ ביותר, הוא הפונקציות הרקורסיביות.

בגדול, פונקציות רקורסיביות זה פונקציות שקוראות לעצמן, עם שינוי קטן של הפרמטרים שיובילו לפתרון הבעייה, עד שנשלחים פרמטרים שהפונקציה יודעת לפתור אותם בקלות. זה מאד מאד בגדול.. רקורסיה זה נושא מתקדם במתמטיקה ומדעי המחשב, ונראה לי שאתה תלמד אותו בשנה הבאה אם תמשיך ללמוד.......

אז בהצלחה........

ד"א, ל RK, הוא ביקש ב C. אז בבקשה להשתמש בstdio.h וב printf במקום בiostream.h וב cout<< . אלו הם דברים של c++ולא של C. אז נא לא לערבב בשר וחלב.

פורסם

אחלה הסבר.

וצודק, זה היה מתוך הרגל.

פורסם
  • מחבר

תודה על ההסבר

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים