שם לקבוצת הוראות
פונקציה היא קבוצה של הוראות שנותנים לה שם. אחרי שהגדרנו אותה פעם אחת, אפשר ״לקרוא״ לה — כלומר להפעיל אותה — בכל מקום בתוכנית, כמה פעמים שרוצים, רק בכתיבת השם שלה. במקום להעתיק את אותן עשר שורות לחמישה מקומות שונים, כותבים אותן פעם אחת בתוך פונקציה וקוראים לה חמש פעמים.
כבר השתמשתם בפונקציות בלי לדעת: print בפייתון היא פונקציה שמישהו אחר כתב. כשכותבים print("שלום"), קוראים לפונקציה print ונותנים לה את הטקסט. מאחורי הקלעים היא עושה עבודה רבה כדי שהמילה תופיע על המסך — ואנחנו לא צריכים לדעת איך. זה כוחה של פונקציה: היא מסתירה פרטים ומשאירה רק שם ברור.
בונים פונקציה
בפייתון מגדירים פונקציה במילה def (קיצור של definition — הגדרה). למשל: def double(n): return n * 2. כאן double הוא השם, n הוא הקלט שהפונקציה מקבלת, ו־return אומר מה היא מחזירה: n כפול 2. אחרי ההגדרה, print(double(5)) יציג 10, ו־double(21) יחזיר 42. בדרך כלל כותבים את גוף הפונקציה בשורה נפרדת, עם רווחים בתחילתה.
בסקראץ׳ בונים פונקציה בקטגוריה ״הבלוקים שלי״: יוצרים בלוק חדש, נותנים לו שם — למשל ״צייר ריבוע״ — ומחברים מתחתיו את ההוראות. מעכשיו מופיע בלוק ורוד חדש בשם ״צייר ריבוע״, ואפשר לגרור אותו לתוכנית כמו כל בלוק אחר. אפשר אפילו להשתמש בו בתוך לולאה ולצייר עשרה ריבועים.
מה נכנס ומה יוצא
הרבה פונקציות מקבלות מידע מבחוץ. המידע הזה נקרא פרמטר או ארגומנט. בפונקציה double, הפרמטר הוא n: הוא מקום ריק שמתמלא בכל קריאה בערך אחר. פונקציה ״צייר ריבוע״ יכולה לקבל פרמטר ״גודל״, וכך אותה פונקציה תצייר ריבוע קטן או גדול. פרמטרים הופכים פונקציה אחת לכלי גמיש.
חלק מהפונקציות גם מחזירות תשובה — ערך החזרה. double מחזירה מספר, ופונקציה שבודקת אם מספר זוגי יכולה להחזיר אמת או שקר. אפשר לחשוב על פונקציה כעל מכונה: מכניסים משהו מצד אחד (פרמטרים), היא עושה עבודה, ומשהו יוצא מהצד השני (ערך החזרה). מטחנת מיץ היא ״פונקציה״: נכנסים תפוזים, יוצא מיץ.
למה מתכנתים אוהבים פונקציות
פונקציות עושות סדר. במקום תוכנית אחת ארוכה ומבלבלת, מקבלים חלקים קטנים עם שמות ברורים: ״התחל משחק״, ״הזז שחקן״, ״בדוק התנגשות״, ״הצג ניקוד״. כל חלק אפשר לבדוק לבד, לתקן לבד, ולהעביר לחבר שיעבוד עליו. כשמוצאים באג בפונקציה ומתקנים אותו, הוא מתוקן בכל המקומות שבהם משתמשים בה.
יש גם אוספים גדולים של פונקציות מוכנות, שנקראים ספריות. בפייתון יש ספרייה לחישובים, ספרייה למספרים אקראיים, ספרייה לציור ועוד. מתכנתים לא ממציאים כל דבר מחדש — הם משתמשים בפונקציות שאחרים כתבו ובדקו, ובונים מעליהן. כך נבנות תוכנות ענקיות: פונקציות קטנות שמשתמשות בפונקציות אחרות, שכבה על שכבה.

