אירועים: כשמשהו קורה

תכנות · לכיתות ג׳–ז׳

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

מה זה אירוע

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

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

אירועים בסקראץ׳

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

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

קלט ופלט

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

בפייתון אפשר לבקש קלט עם הפונקציה input: name = input("מה שמך? ") מציגה את השאלה, מחכה שהמשתמש יקליד ויקיש Enter, ושומרת את מה שהוקלד במשתנה name. אחר כך print("שלום " + name) מוציאה פלט. שימו לב: input מחזירה תמיד טקסט. אם ביקשנו גיל וצריך לחשב איתו, ממירים אותו למספר בעזרת int.

אירועים באתרים ובאפליקציות

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

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

✅ חידון: אירועים: כשמשהו קורה

1. מה זה אירוע בתכנות?

2. איזה בלוק בסקראץ׳ מתחיל תוכנית כשלוחצים על הדגל?

3. מה זה קלט?

4. איזה מהבאים הוא פלט?

5. מה עושה input בפייתון?

6. איך דמויות בסקראץ׳ ״מדברות״ ביניהן?

7. איזה מכשיר עובד כמו תוכנה מבוססת אירועים?

8. איזו שפה מפעילה את רוב האירועים באתרים?

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

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

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

💬 שאלות לשיחה

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

📖 קטע קריאה בנושא: 🥪 הרובוט שהכין כריך

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

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

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

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

שאלות נפוצות

מה ההבדל בין אירוע ללולאה?

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

למה input בפייתון מחזירה טקסט גם כשמקלידים מספר?

כי המקלדת שולחת תווים — גם הספרות 1 ו־2 הן תווים. התוכנה לא יודעת אם התכוונו למספר או לטקסט, ולכן ממירים בעצמנו: ⁦int(...)⁩ למספר שלם.

מה זה ״שדר הודעה״ בסקראץ׳?

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

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

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