פונקציות: מתכון עם שם

תכנות · לכיתות ה׳–ט׳

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

שם לקבוצת הוראות

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

כבר השתמשתם בפונקציות בלי לדעת: 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 מחזירה מספר, ופונקציה שבודקת אם מספר זוגי יכולה להחזיר אמת או שקר. אפשר לחשוב על פונקציה כעל מכונה: מכניסים משהו מצד אחד (פרמטרים), היא עושה עבודה, ומשהו יוצא מהצד השני (ערך החזרה). מטחנת מיץ היא ״פונקציה״: נכנסים תפוזים, יוצא מיץ.

למה מתכנתים אוהבים פונקציות

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

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

✅ חידון: פונקציות: מתכון עם שם

1. מה זו פונקציה?

2. באיזו מילה מגדירים פונקציה בפייתון?

3. אם ⁦def double(n): return n * 2⁩, מה יחזיר ⁦double(5)⁩?

4. מה זה פרמטר?

5. מה עושה המילה return?

6. איך יוצרים פונקציה בסקראץ׳?

7. מה היתרון בתיקון באג בתוך פונקציה?

8. מה זו ספרייה בתכנות?

🖨️ דף עבודה להדפסה

8 שאלות, שאלות לחשיבה ודף תשובות עם הסברים.

📘 מושגים מהשיעור

💬 שאלות לשיחה

  1. אילו ״פונקציות״ יש בבוקר שלכם? תנו שם לשלוש קבוצות של פעולות.
  2. הציעו פונקציה למשחק, עם שם, פרמטר וערך החזרה.
  3. למה לדעתכם טוב לחלק תוכנית גדולה לפונקציות קטנות?

📖 קטע קריאה בנושא: 🦋 העש שנכנס להיסטוריה

טוענים את הקטע…

עוד שיעורים בתכנות

לכל 16 השיעורים בתכנות ←

חוברת ומבחן לדוגמה לכיתה

שאלות נפוצות

מה ההבדל בין פונקציה לתוכנית?

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

האם כל פונקציה חייבת להחזיר ערך?

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

מה ההבדל בין פרמטר לארגומנט?

פרמטר הוא השם שבהגדרת הפונקציה (n ב־double). ארגומנט הוא הערך האמיתי שנותנים כשקוראים לה (5 ב־double(5)). ביום־יום משתמשים בשתי המילים כמעט באותה משמעות.

שווה להסתכל גם על תכנות לילדים, ולומדים.

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