بلوک در اسکرچ: ساختار پازلی کدنویسی بصری
در این مقاله با مفهوم بلوک در محیط اسکرچ1 آشنا میشوید. بلوکها قطعات کوچک و رنگی هستند که مانند پازل به یکدیگر متصل میشوند و کدهای برنامه را میسازند. هر دسته از بلوکها دارای رنگ خاص و شکل هندسی ویژه هستند که فقط به بلوکهای همخانواده متصل میشوند. یادگیری قوانین اتصال بلوکها، پایهی ساخت انیمیشن، بازی و برنامههای آموزشی در اسکرچ است.
دستهبندی رنگی بلوکها و کاربرد آنها
در اسکرچ، هر دستور بر اساس نوع عملیات دارای یک رنگ ثابت است. این رنگبندی به برنامهنویس کمک میکند تا سریعاً بلوک مورد نظر را پیدا کند. برای نمونه، بلوکهای حرکت (مانند ۱۰ قدم حرکت کن) به رنگ آبی، بلوکهای ظاهر (مانند سلام بگو) به رنگ بنفش و بلوکهای کنترل (مانند همیشه) به رنگ نارنجی هستند. این رنگبندی یکسان در همهی نسخههای اسکرچ حفظ میشود.
| دسته بلوک | رنگ | نمونه بلوک |
|---|---|---|
| حرکت | آبی | به سمت ماوس برو |
| ظاهر | بنفش | اندازه را 10 واحد تغییر بده |
| صدا | صورتی | صدای ضربه را پخش کن |
| رویدادها | زرد | وقتی کلیک شد |
| کنترل | نارنجی | 5 بار تکرار کن |
مثال علمی: اگر میخواهید یک گربه در صفحه 20 بار به چپ و راست حرکت کند، از بلوک آبی قدم 10 حرکت کن و بلوک نارنجی تکرار کن 20 بار استفاده میکنید. اتصال این دو بلوک مانند چفت شدن دو قطعه پازل است.
شکلهای هندسی بلوکها و قوانین اتصال
هر بلوک دارای یک شکل بیرونزدگی (در بالا) و یک شکل فرورفتگی (در پایین) است. همچنین بلوکهای حلقهها و شرطیها دارای حفرههای مخصوص به شکل لوزی برای قرار گرفتن بلوکهای ششضلعی (شرطها) هستند. سه نوع اصلی بلوک از نظر شکل عبارتند از:
- بلوکهای کلاهدار (رویدادها): مانند وقتی پرچم سبز کلیک شد که فقط در بالای زنجیره قرار میگیرند و برآمدگی بالایی ندارند.
- بلوکهای ساده (پشتهای): دارای هر دو برآمدگی و فرورفتگی برای اتصال پشتسرهم.
- بلوکهای گزارهای (ششضلعی و لوزی): فقط داخل حفرههای مخصوص قرار میگیرند و مقدار درست یا نادرست برمیگردانند.
برای اتصال دو بلوک، باید برآمدگی بالای بلوک پایینی دقیقاً درون فرورفتگی بلوک بالایی قفل شود. در غیر این صورت، بلوکها از هم جدا میشوند. این ویژگی از بروز خطاهای نحوی (Syntax error) در برنامه جلوگیری میکند، چون بلوکهای ناجور از نظر شکل به هم نمیچسبند.
محاسبات عددی با بلوکهای عملیاتی
برخی بلوکها به جای دستور، یک مقدار عددی یا رشته تولید میکنند. به اینها بلوکهای گزارهای2 میگویند. این بلوکها شکل بیضی یا لوزی دارند و داخل حفرههای بلوکهای دیگر قرار میگیرند. برای نمونه، بلوک سبز رنگ جمع ... و ... دو عدد را با هم جمع میکند. درون بلوک حلقهی تکرار کن تا که حفرهی شرط لوزیشکل دارد، میتوانید یک بلوک مقایسهای مانند x>10 قرار دهید.
$ \text{حاصل} = \text{عدد اول} + \text{عدد دوم} \times \text{عدد سوم} $
ترتیب عملیات در اسکرچ مانند ریاضیات است: ابتدا ضرب و تقسیم، سپس جمع و تفریق. برای تغییر ترتیب از بلوک (...) استفاده کنید.
ساخت یک برنامه کامل با اتصال بلوکها (مثال عملی)
فرض کنید میخواهیم برنامهای بسازیم که هر بار کلید فاصله فشرده شود، یک ستاره روی صحنه ظاهر شود و صدای دینگ پخش گردد. مراحل به ترتیب اتصال بلوکها:
- از دسته رویدادها (زرد): بلوک وقتی کلید فاصله فشرده شد را انتخاب کنید.
- زیر آن از دسته ظاهر (بنفش): بلوک ستاره را نشان بده را بچسبانید.
- در ادامه از دسته صدا (صورتی): بلوک صدای دینگ را پخش کن را به پایین اضافه کنید.
این سه بلوک مانند یک زنجیره به هم متصل شدهاند. با فشردن کلید فاصله، دستورات به ترتیب از بالا به پایین اجرا میشوند. این همان مفهوم جریان برنامه3 در علوم کامپیوتر است.
چالشهای مفهومی در کار با بلوکها
۱. چرا برخی بلوکها به هم نمیچسبند حتی اگر رنگهای متفاوتی داشته باشند؟
پاسخ: دلیل اصلی ناسازگاری شکل هندسی است. برای نمونه، بلوک لوزیشکل (مانند آیا لبه صحنه لمس شده؟) فقط درون حفره لوزی قرار میگیرد و نمیتوان آن را زیر یک بلوک پشتهای چسباند. این قانون از بروز خطاهای منطقی در برنامه جلوگیری میکند.
۲. آیا ترتیب رنگها در اتصال بلوکها اهمیت دارد؟
پاسخ: خیر، رنگ فقط نشانهی دستهبندی عملکردی است. میتوانید یک بلوک آبی (حرکت) را مستقیماً به یک بلوک بنفش (ظاهر) وصل کنید، به شرطی که شکل برآمدگی و فرورفتگی آنها با هم هماهنگ باشد. اما نمیتوان بلوک رویداد زردرنگ را در میانهی زنجیره قرار داد (چون کلاهدار است).
۳. چگونه میتوان یک متغیر را در میان چند بلوک به اشتراک گذاشت؟
پاسخ: از دسته متغیرها (نارنجی متمایل به قرمز) بلوک مقدار x را 0 قرار بده و بلوک x (بیضی شکل) استفاده کنید. بلوک مقدار متغیر را درون هر بلوکی که حفرهی عددی دارد مثل قدم ... حرکت کن قرار دهید.
هر بلوک در اسکرچ یک قطعه پازل است که با رنگ و شکل خود، نقشش را در برنامه مشخص میکند. بلوکهای کلاهدار شروعکننده، بلوکهای پشتهای اجرای پشتسرهم و بلوکهای گزارهای تأمینکنندهی مقادیر عددی یا شرطی هستند. با اتصال صحیح این قطعات رنگی، میتوان از انیمیشن ساده تا بازیهای پیچیده ساخت. درک قوانین اتصال بلوکها، اولین گام برای تبدیل شدن به یک برنامهنویس ماهر در اسکرچ است.
پاورقی
1. اسکرچ (Scratch): زبان برنامهنویسی بصری و رایگان که توسط گروه MIT مدیا لب ساخته شده و برای آموزش کدنویسی به کودکان و نوجوانان طراحی شده است.
2. بلوک گزارهای (Reporter block): نوعی بلوک در اسکرچ که به جای اجرای دستور، یک مقدار (عددی، رشته یا منطقی) را برمیگرداند. شکل این بلوکها معمولاً بیضی یا لوزی است.
3. جریان برنامه (Program flow): ترتیب اجرای دستورات در یک برنامه از ابتدا تا انتها. در اسکرچ، جریان از بالاییترین بلوک متصل شروع شده و خط به خط به سمت پایین حرکت میکند.