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

שיעור 4: פונקציות

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

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

לדוגמא:

int a;
a=random(5); //random is sometimes defined by the compiler
//Yes, it returns between 0 and the argument minus 1

אל תחשוב ש 'a' ישתנה ב random, הוא ייקבע לערך המוחזר כאשר הפונקציה נקראת, אבל לא ישתנה שוב.

המבנה הכללי של אב טיפוס הוא פשוט:

;(שם_משתנה טיפוס_משתנה)שם_הפונקציה טיפוס_החזרה

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

int mult(int x, int y);

אב הטיפוס מתאר שהפונקציה mult תקבל שני ארגומנטים, שניהם מספרים שלמים, ושהיא תחזיר מספר שלם. אל תשכח את הנקודה פסיק בסוף. בלי זה, קרוב לודאי שהמהדר יחשוב שאתה מנסה לכתוב את ההגדרה הממשית של הפונקציה.

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

בואו נתבונן בתכנית לדוגמא:

#include <iostream.h>

int mult(int x, int y);

int main()
{
  int x, y;
  cout<<"Please input two numbers to be multiplied: ";
  cin>>x>>y;
  cout<<"The product of your two numbers is "<<mult(x, y);
  return 0;

}

int mult(int x, int y)
{
  return x*y;
}

תוכנית זו פותחת בקובץ המוכלל היחיד ההכרחי. לאחר מכן יש אב טיפוס של הפונקציה. שים לב שיש לו נקודה פסיק בסוף! פונקצית ה main היא יחידה שצריכה תמיד להיות לך, כדי להתאים לתקן. לא צריכה להיות לך בעיה להבין את פונקציות הקלט והפלט. זה בסדר להשתמש ב cin כדי לקלוט את המשתנים כמו שהתוכנית עושה.

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

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

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

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

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




לדף הראשון

<< לדף הקודם

לדף הבא >>