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

