ناحیه برنامهنویسی در اسکرچ: قلب سفید ساخت برنامه
نقش ناحیه سفید در معماری محیط اسکرچ
اسکرچ یک زبان برنامهنویسی دیداری (تصویری) است که در آن به جای نوشتن خطوط کد متنی، از بلوکهای رنگی استفاده میشود. محیط اسکرچ از چند بخش اصلی تشکیل شده است: ناحیه دستورات1 (شامل دستهبندیهایی مثل حرکت، ظاهر، صدا، رویدادها، کنترل، حسگرها و غیره)، ناحیه برنامهنویسی2 (فضای سفید خالی)، صحنه نمایش3، و ناحیه اشیاء و پسزمینه4. در میان این بخشها، ناحیه برنامهنویسی که به رنگ سفید (یا طوسی روشن در برخی نسخهها) دیده میشود، نقش «بوم ساخت برنامه» را دارد.
برای ساخت یک برنامه، کاربر یک بلوک از ناحیه دستورات را با ماوس گرفته و به سمت ناحیه سفید میکشد. بلوکها مانند قطعات پازل در کنار یکدیگر قفل میشوند. ترتیب قرارگیری بلوکها، ترتیب اجرای دستورات را تعیین میکند. به این ترتیب، الگوریتم برنامه شکل میگیرد.
| ویژگی | ناحیه دستورات (جعبه بلوکها) | ناحیه برنامهنویسی (فضای سفید) |
|---|---|---|
| کارکرد اصلی | ذخیره و دستهبندی بلوکهای فرمان | سرهمبندی بلوکها و ساخت برنامه |
| رنگ پسزمینه | خاکستری روشن یا رنگی (وابسته به نسخه) | سفید یا طوسی بسیار روشن |
| امکان اجرا | خیر – فقط مخزن بلوکهاست | بله – با کلیک روی پرچم سبز یا بلوک رویداد |
| قابلیت حذف بلوک | امکان حذف بلوک وجود ندارد (فقط کپی) | بله – با کشیدن به ناحیه دستورات یا راستکلیک |
چیدمان بلوکها: از دستور ساده تا الگوریتم پیچیده
در ناحیه سفید برنامهنویسی، بلوکها بر اساس شکل ظاهری خود به یکدیگر متصل میشوند. بلوکهای بالایی دارای برجستگی پایینی و بلوکهای پایینی دارای فرورفتگی بالایی هستند. برای نمونه، بلوک حرکت 10 گام را در نظر بگیرید. اگر آن را به ناحیه سفید بکشید و سپس بلوک چرخش 15 درجه را در زیر آن قفل کنید، یک برنامه دوخطی خواهید داشت: ابتدا حرکت، سپس چرخش.
برای ساخت برنامههای شرطی و حلقهها، از بلوکهای کنترل استفاده میشود. بلوک همیشه5 یک حلقه بینهایت میسازد. بلوک اگر آنگاه6 امکان تصمیمگیری با شرط را فراهم میکند. تمام این بلوکها باید درون ناحیه سفید چیده شوند تا اجرا شوند.
برای رسم یک مربع به ضلع 100 پیکسل در اسکرچ، کافی است در ناحیه برنامهنویسی بلوکهای زیر را به ترتیب کنار هم بچینیم:
زمانی که پرچم سبز کلیک شد
همیشه
تکرار 4 بار
حرکت 100 گام
چرخش به راست 90 درجه
کاربرد عملی: ساخت یک ماشین حساب ساده در ناحیه سفید
فرض کنید میخواهیم برنامهای بسازیم که دو عدد را از کاربر دریافت کند و حاصل جمع آنها را نمایش دهد. در ناحیه برنامهنویسی باید بلوکهای زیر را بیاوریم و بچینیم:
- بلوک زمانی که پرچم سبز کلیک شد از دسته رویدادها.
- بلوک بپرس [عدد اول را وارد کن] و صبر کن از دسته حسگرها.
- متغیر عدد۱ را مقداردهی کنید با پاسخ.
- مرحله مشابه برای عدد دوم.
- بلوک بگو (عدد۱ + عدد۲) را از دسته ظاهر.
در این مثال، ناحیه سفید برنامهنویسی بستری را فراهم میکند که بتوان متغیرها، عملگرهای ریاضی و ورودی/خروجی را در کنار هم به صورت دیداری سازماندهی کرد. این روش، درک مفهوم دنباله7 در الگوریتم را برای دانشآموزان سادهتر میکند.
چالشهای مفهومی
پاسخ: بلوکها فقط در صورتی به یکدیگر متصل میشوند که شکل فرورفتگی و برجستگی آنها با هم هماهنگ باشد. مثلاً بلوکهای حلقه مانند «تکرار» دهانهای دارند که بلوکهای درون حلقه در آن جای میگیرند. بلوک «زمانی که پرچم سبز کلیک شد» برجستگی بالایی ندارد (رویدادی است) و نمیتوان چیزی بالای آن چسباند.
پاسخ: اسکرچ امکان ذخیره پروژه به فرمت .sb3 را دارد که شامل تمام چیدمان بلوکها در ناحیه سفید است. همچنین میتوان با راستکلیک روی بلوکها، تصویر آنها را کپی کرد یا با استفاده از گزینه «برونبری کد» در برخی نسخهها، متن سادهای از بلوکها دریافت کرد، اما خروجی مستقیم کد متنی مانند پایتون ندارد.
پاسخ: در نسخه آنلاین (وباسکرچ)، ناحیه سفید ممکن است کمی کوچکتر باشد و نوار اسکرول عمودی بیشتری نیاز داشته باشد. در نسخه آفلاین (اسکرچ دسکتاپ)، ناحیه برنامهنویسی فضای کشسانی بیشتری دارد و گاهی ویژگی کپی/پیست بلوکها با سرعت بیشتری انجام میشود. اما از نظر مفهوم اصلی و نحوه چیدن بلوکها، تفاوتی ندارند.
فرمولها و مفاهیم ریاضی در ناحیه برنامهنویسی
در ناحیه سفید میتوان از بلوکهای عملگرهای ریاضی برای انجام محاسبات استفاده کرد. برای نمونه، اگر بخواهیم معادله درجه دوم $ax^2 + bx + c = 0$ را حل کنیم، میتوانیم بلوکهای شرط و محاسبه ریشه را کنار هم بچینیم. فرمول تفکیککننده (دلتا) به صورت زیر است:
سپس با استفاده از بلوک اگر آنگاه در ناحیه برنامهنویسی، شرط $\Delta \ge 0$ را بررسی کرده و ریشهها را محاسبه میکنیم:
بلوک جذر در دسته عملگرها این امکان را فراهم میکند.
اشتباهات رایج در کار با ناحیه سفید
- جابجا نکردن بلوکهای تو در تو: برای قرار دادن بلوک درون یک حلقه یا شرط، باید بلوک داخلی را دقیقاً روی دهانه باز بلوک شرط رها کرد.
- فراموش کردن بلوک آغازگر: بدون بلوک «زمانی که پرچم سبز کلیک شد» یا «زمانی که کلید فاصله فشرده شد»، برنامه پس از کلیک روی پرچم اجرا نمیشود.
- اضافه کردن بلوکهای بیربط به یکدیگر: بلوک «صداگذاری» اگر بیرون از بلوک رویداد قرار گیرد، هیچگاه اجرا نخواهد شد.
پاورقی
1ناحیه دستورات (Blocks Palette): بخشی از محیط اسکرچ که شامل تمام بلوکهای دستهبندی شده (حرکت، ظاهر، صدا، رویدادها، کنترل، حسگرها، عملگرها و متغیرها) است.
2ناحیه برنامهنویسی (Scripts Area / Coding Area): فضای سفید اصلی که بلوکها در آن کشیده و چیده میشوند و برنامه ساخته میشود.
3صحنه نمایش (Stage): ناحیه سمت راست بالا که خروجی برنامه (حرکت اشیاء، گفتگوها، نقاشیها) نشان داده میشود.
4ناحیه اشیاء و پسزمینه (Sprites & Backdrop Pane): جایی که شیءهای برنامه (شخصیتها) و تصویر زمینه مدیریت میشوند.
5همیشه (Forever): بلوکی از دسته کنترل که یک حلقه بینهایت ایجاد میکند و دستورات درون آن را تکرار میکند.
6اگر ... آنگاه (If ... Then): بلوک شرطی که در صورت درستی شرط، دستورات درون خود را اجرا میکند.
7دنباله (Sequence): یکی از ساختارهای بنیادین الگوریتم به معنی اجرای گامها یکی پس از دیگری.