c programming tutorial - בקלות C++
מדריכי תכנות

שיעור 13: עוד על פונקציות

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

לדוגמא:

#include <iostream.h>

void function(void)  
{      //Normally this would be the prototype. Do not include a semicolon
	 //Only prototypes have semicolons
  cout<<"HA!  NO PROTOTYPE!";
}



int main()

{
  function();
 //It works like a normal function now.
 return 0;
}

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

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

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

לדוגמא:

#include <iostream.h>

inline void hello(void)
{		//Just use the inline keyword before the function    
   cout<<"hello";
}

int main()
{
 hello();
   //Call it like a normal function...
  return 0;
}

בכל אופן, לאחר שהתוכנית עוברת הידור, הקריאה ל hello(); תוחלף בקוד שמרכיב את הפונקציה.

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

בעתיד, נדון בפונקציות inline במונחים של מחלקות ++C. אולם, כעת משהבנת את הרעיון אני ארגיש נוח להשתמש בפונקציות inline בשיעורים מאוחרים יותר.




לדף הראשון

<< לדף הקודם

לדף הבא >>