Let's learn C
פונקציות
פונקציות זו שיטה לחלק את הקוד שלנו לחלקים קטנים וקריאים יותר.
עיקרון ששווה ליישם בתור מתכנתים זה לנסות לדאוג שהקוד שלנו יהיה מחולק בצורה טובה לחתיכות קטנות יותר ובעצם לחבר את
הכל
בסוף.
פונקציות מאוד נוחות לעבודה משום שהן עוזרות לנו לכתוב פחות קוד מיותר.
נראה תוכנית שלוקחת חמישה תלמידים – בודקת מה הממוצע שלהם ולאחר מכן בודקת כמה תלמידים נמצאים מעל הממוצע, מתחת לממוצע ובדיוק על הממוצע: אז מה יש לנו פה ? הרבה קוד לא קריא ולא נוח לעבודה
דוגמה איך אפשר לעשות את זה קצת יותר פשוט לקריאה:
כמובן שמאחורי הקלעים נצטרך לרשום את הקוד עבור הפונקציות שהגדרנו.
אבל, החלוקה לפונקציות מאפשרת לנו להבין טוב יותר מה קורה בתוך ה main.
על ידי חלוקה נכונה לפונקציות ניתן לדבר את הקוד בצורה טובה ומהירה יותר
(אנו יכולים להריץ העזרת הדיבגר
ולהבין באיזה פונקציה התוצאה המתקבלת היא לא רצויה.
בצורה זו ניתן להבין איזה חלק בקוד יש לתקן).
יתרונות:
- כתבנו הרבה פחות קוד ב main והפכנו את הכל לנקי ומסודר יותר. רוב הפונקציות שכתבנו יכולות לעבוד ליותר מקרים מאשר אם היינו כותבים הכל ב main.
חסרונות:
- הפונקציה יכולה לחזיר רק ערך יחיד
דגשים שחשוב לדעת בעבודה עם פונקציות:
-
הצהרת הפונקציה צריכה להיות מעל פונקציית ה main.
הכוונה היא שאם אנחנו רוצים לרשום למשל פונקציה שמחשבת ממוצעים אז צריך להצהיר עליה לפני שהצהרנו על ה main שלנו ז"א לרשום למשל:
avg(int *arr , int sizeOfArr);
ניתן לרשום את כל הקוד של הפונקציה לפני הmain , אבל נהוג לרשום את כך.
למשל:
-
מתי נשתמש בפונקציות ?
אם יש לנו יותר מידי קוד ודברים הופכים להיות קצת לא קריאים.
אם יש לנו הרבה מידי קוד שחוזר על עצמו.
באופן כללי כדאי לנסות לרשום את כל הקוד בפונקציות ורק לאחר מכן לחבר דברים ב main. -
איך נראית הצהרת הפונקציה שלנו ?
nameOfTheFunction (What the function receives);
Variable/void= איזה משתנה הפונקציה שלנו מחזירה או void אם היא לא מחזירה כלום.
nameOfTheFunction = שם הפונקציה – רצוי שתהיה ברורה.
(What the function receives);= אילו משתנים הפונקציה מקבלת ?
למשל: