گروه رویداد: نقطهٔ آغاز هر برنامه
۱. رویدادها: فرمان شروع در برنامهنویسی
در دنیای برنامهنویسی، کامپیوتر بدون دریافت دستور مشخص، نمیداند چه کاری انجام دهد. رویدادها همان محرکهایی هستند که به کامپیوتر میگویند: «از این جا شروع کن!». به عبارت دیگر، یک رویداد یک اتفاق خاص است (مانند کلیک ماوس، فشردن کلید یا ورود داده) که برنامه را وادار به اجرای یک مجموعه دستور از پیش تعیین شده میکند.
برای مثال، فرض کنید یک بازی طراحی کردهاید که با فشردن کلید «فاصله» شخصیت اصلی میپرد. در اینجا، «فشرده شدن کلید فاصله» یک رویداد است و دستور «بپر» همان بلوک کدی است که پس از آن رویداد اجرا میشود. بدون این رویداد، برنامه هرگز نمیداند چه زمانی باید عمل پرش را انجام دهد.
برخی از رایجترین رویدادهای شروع در برنامهنویسی مقدماتی عبارتند از:
- وقتی پرچم سبز کلیک شد (when green flag clicked): یک رویداد استاندارد در اسکرچ که اجرای اصلی برنامه را آغاز میکند.
- وقتی کلید فاصله فشرده شد (when space key pressed): رویدادی که با فشردن یک کلید مشخص فعال میشود.
- وقتی روی نقش کلیک شد (when this sprite clicked): مخصوص اشیاء (نقشها) در برنامههای گرافیکی.
- وقتی صدای بلندی شنیده شد (when loudness > threshold): رویداد مبتنی بر ورودی میکروفون.
| نام رویداد (فارسی) | محرک | کاربرد معمول |
|---|---|---|
| وقتی پرچم سبز کلیک شد | کلیک روی دکمهٔ پرچم سبز | شروع اصلی بازی یا انیمیشن |
| وقتی کلید فاصله فشرده شد | فشردن کلید Space | کنترل حرکت (مثل پرش یا شلیک) |
| وقتی نقش کلیک شد | کلیک روی یک شیء خاص | تعامل با دکمهها یا اشیاء بازی |
۲. تفاوت رویدادهای شروع با حلقه و شرط
مهم است که رویدادهای شروع را با ساختارهای دیگری مثل حلقه4 یا شرط5 اشتباه نگیرید. حلقه (مانند تکرار همیشه) باعث میشود یک مجموعه دستور بارها و بارها اجرا شود، اما برای شروع نیاز به یک رویداد دارد. شرط (مانند اگر) یک تصمیمگیری در میانهٔ برنامه است، نه نقطهٔ شروع.
به این مثال توجه کنید: شما برنامهای نوشتهاید که با کلیک روی پرچم سبز، یک گربه به راست حرکت میکند و هر بار که به لبه میرسد، صدایی پخش میکند. در اینجا:
- رویداد شروع:وقتی پرچم سبز کلیک شد
- حلقه:تکرار همیشه (برای حرکت مداوم گربه)
- شرط:اگر به لبه رسیدی (برای تشخیص برخورد به لبه)
همان طور که میبینید، رویداد شروع، حلقه و شرط هر کدام نقش جداگانهای دارند و با هم یک برنامهٔ کامل میسازند.
۳. کاربرد عملی: طراحی یک ماشین حساب ساده با رویدادها
فرض کنید میخواهید یک ماشین حساب بسازید که با فشردن کلیدهای +، -، * و / عملیات مربوطه را انجام دهد. در اینجا هر کلید یک رویداد جداگانه محسوب میشود. شبهکد این برنامه به صورت زیر است:
نتیجه = عدد۱ + عدد۲
نمایش نتیجه
وقتی کلید '-' فشرده شد:
نتیجه = عدد۱ - عدد۲
نمایش نتیجه
در این مثال، بدون رویدادهای فشردن کلید، برنامه هرگز نمیداند کاربر کدام عمل را درخواست کرده است. همچنین میتوانید از رویداد «وقتی پرچم سبز کلیک شد» برای مقداردهی اولیه (مثلاً قرار دادن اعداد پیشفرض 0 در حافظه) استفاده کنید.
یک نمونهٔ واقعی دیگر: در نرمافزارهای ارائه مطلب مانند پاورپوینت، با فشردن کلید F5 (رویداد) نمایش اسلایدها از ابتدا شروع میشود. این یعنی طراح نرمافزار از رویداد صفحه کلید برای تعیین نقطهٔ شروع استفاده کرده است.
۴. چالشهای مفهومی در درک رویدادها
پاسخ: بله، اغلب برنامهها چندین رویداد شروع دارند. برای نمونه، در یک بازی ممکن است هم با کلیک روی پرچم سبز (شروع عادی) و هم با فشردن کلید R (شروع مجدد) بازی آغاز شود. هر رویداد میتواند یک توالی متفاوت از دستورها را اجرا کند.
پاسخ: در محیطهای برنامهنویسی ساده مثل اسکرچ، دستورها به ترتیب (معمولاً بر اساس ترتیب قرارگیری بلوکها) اجرا میشوند. در محیطهای پیشرفتهتر ممکن است مدیریت همروندی6 (همزمانی) توسط سیستم عامل یا زمانبند زبان برنامهنویسی انجام شود. اما برای شروع، فرض میکنیم رویدادها یکی پس از دیگری پردازش میشوند.
پاسخ: بله، در بسیاری از زبانها، رویداد «بارگذاری صفحه»7 یا «آماده شدن سند»8 نقشی مشابه دارد. برای مثال در جاوااسکریپت، window.[removed] رویدادی است که وقتی تمام محتوای صفحه بارگذاری شد، اجرا میشود. در پایتون (با کتابخانهٔ تینتر9) نیز میتوان رویداد شروع را به دکمهها یا کلیدها وصل کرد.
۵. فرمولبندی منطق رویدادها
گاهی برای مدلسازی رویدادها در ریاضیات یا علوم کامپیوتر از فرمولهای منطقی استفاده میشود. اگر رویداد $E$ و شرط $C$ را در نظر بگیریم، میتوان نوشت:
به عنوان نمونه، رویداد «وقتی کلید فاصله فشرده شد» برای پرش شخصیت در بازی را در نظر بگیرید. اگر شرط «باز بودن چتر نجات» را هم اضافه کنیم، شخصیت فقط زمانی میپرد که چتر باز نباشد. فرمول منطقی آن به شکل زیر است:
این نمایش ریاضی به برنامهنویسان کمک میکند تا پیش از نوشتن کد، منطق رویدادها را طراحی کنند.
پاورقی
1رویداد – معادل انگلیسی: Event. به هر اتفاق قابل تشخیص توسط برنامه (مانند کلیک، فشردن کلید، ورود داده) که باعث اجرای یک تکه کد میشود، رویداد گویند.
2اسکرچ – معادل انگلیسی: Scratch. یک زبان برنامهنویسی دیداری و رایگان برای کودکان و نوجوانان که توسط دانشگاه امآیتی ساخته شده است.
3شنونده – معادل انگلیسی: Listener. تابعی که به طور مداوم منتظر وقوع یک رویداد خاص میماند و هنگام وقوع آن، اجرا میشود.
4حلقه – معادل انگلیسی: Loop. ساختاری در برنامهنویسی که یک بلوک دستوری را به تعداد معین یا تا زمانی که شرطی برقرار است، تکرار میکند.
5شرط – معادل انگلیسی: Condition. ساختاری تصمیمگیرنده (مانند اگر-آنگاه) که مسیر اجرای برنامه را بر اساس درست یا نادرست بودن یک گزاره تعیین میکند.
6همروندی – معادل انگلیسی: Concurrency. توانایی یک برنامه در اجرای چند کار به طور همزمان یا شبههمزمان.
7بارگذاری صفحه – معادل انگلیسی: Page Load. رویدادی که پس از بارگیری کامل یک صفحهٔ وب در مرورگر رخ میدهد.
8آماده شدن سند – معادل انگلیسی: Document Ready. رویدادی که نشان میدهد ساختار DOM صفحه برای دسترسی آماده است.
9تینتر – معادل انگلیسی: Tkinter. کتابخانه استاندارد پایتون برای ساخت رابطهای کاربری گرافیکی (GUI).