کد در برنامهنویسی: از دستورات متنی تا بلوکهای اسکرچ
تعریف کد و نقش آن در اجرای دستورالعملها
به مجموعۀ دستورالعملهایی که برای رایانه مینویسیم، کد1 گفته میشود. این دستورات باید کاملاً دقیق، گامبهگام و بدون ابهام باشند. برای نمونه، اگر به یک دوست بگویید «نزدیک درخت بایست»، او ممکن است معنای «نزدیک» را اشتباه متوجه شود. اما اگر بگویید «سه متر به سمت شمال درخت کاج قدم بردار»، دستور شما دقیق و قابل اجراست. رایانه نیز دقیقاً چنین رفتاری دارد: کدی که مینویسید باید با قواعد یک زبان برنامهنویسی خاص مطابقت داشته باشد.
در زبانهای متنی مثل پایتون، جاوا یا ++C، کدها به صورت حروف، اعداد و نمادها نوشته میشوند. اما در اسکرچ2، کد به شکل بلوکهای رنگی دیده میشود که مانند قطعات پازل به یکدیگر متصل میشوند. جالب است بدانید که هر بلوک اسکرچ در پشتصحنه به یک دستور متنی تبدیل میشود؛ بنابراین یادگیری اسکرچ شما را برای ورود به دنیای زبانهای متنی آماده میکند.
معادلسازی بلوکهای اسکرچ با دستورات متنی
در اسکرچ، دستهبندی بلوکها با رنگ مشخص میشود: بلوکهای حرکت (آبی)، ظاهر (بنفش)، صدا (صورتی)، رویدادها (زرد)، کنترل (نارنجی)، حسکردن (سبز آبی)، عملگرها (سبز) و متغیرها (نارنجی قرمز). هر بلوک معادل یک دستور در زبانهای متنی است. برای نمونه، بلوک move 10 steps در اسکرچ معادل x = x + 10*cos(direction) در یک زبان متنی نیست، اما مفهوم جابهجایی را منتقل میکند.
| عملیات | بلوک اسکرچ | کد متنی (پایتون) |
|---|---|---|
| شروع اجرا | وقتی پرچم سبز کلیک شد | if __name__ == "__main__": |
| حلقهٔ بیپایان | برای همیشه | while True: |
| شرط اگر-آنگاه | اگر آنگاه | if condition: |
الگوریتم و ترتیب اجرای کدها (توالی و کنترل جریان)
کدها همیشه به ترتیبی که نوشته میشوند، اجرا نمیشوند. ساختارهای توالی (اجرای خط به خط)، انتخاب (if/else) و تکرار (حلقه) جریان اجرا را کنترل میکنند. در اسکرچ، این ساختارها با بلوکهای کنترل (نارنجی) پیاده میشوند. برای نمونه بلوک تکرار 10 بار معادل حلقهٔ for i in range(10): در پایتون است.
پروژهٔ عملی: شبیهسازی یک دماسنج دیجیتال در اسکرچ
فرض کنید میخواهیم برنامهای بسازیم که دما را از کاربر بگیرد و اگر دما از 30 درجه بالاتر رفت، هشدار «گرما» را نشان دهد، در غیر این صورت «دمای معمولی» را نمایش دهد. در اسکرچ:
- از بلوک درخواست [دما] و منتظر بمان در دستۀ حسکردن استفاده میکنیم.
- جواب را در متغیر دما ذخیره میکنیم.
- با بلوک اگر آنگاه تصمیمگیری میکنیم.
- برای نمایش پیام از بلوک گفتن [گرما] به مدت 2 ثانیه استفاده میکنیم.
این پروژه دقیقاً همان منطقی را دارد که در کد متنی زیر مینویسیم:
if temp > 30:
print("گرما")
else:
print("دمای معمولی")
چالشهای مفهومی در تبدیل بلوک به کد متنی
۱- چرا در اسکرچ خبری از خطای «سمت راست» نیست اما در پایتون حساسیت به فاصله وجود دارد؟
پاسخ: اسکرچ با اتصال فیزیکی بلوکها، تو رفتگی (indentation) را اجباری میکند. در پایتون، فاصله از ابتدای سطر نشاندهندهٔ بلوک بودن کد است؛ بنابراین یک فاصلهٔ اضافی میتواند خطا ایجاد کند. این مفهوم در اسکرچ به صورت خودکار رعایت میشود.
۲- آیا همهٔ کدهای اسکرچ به کد متنی تبدیلشدنی هستند؟
پاسخ: بله، به دلیل تورینگ کامل بودن3 اسکرچ، هر الگوریتمی که با بلوکها نوشته شود، معادل متنی دارد. حتی بلوکهای موازی (چندین رشتهٔ اجرایی) را میتوان با کتابخانهٔ threading در پایتون شبیهسازی کرد.
۳- چرا در اسکرچ خطای نحوی4 نداریم اما در کد متنی رایج است؟
پاسخ: بلوکهای اسکرچ به گونهای طراحی شدهاند که فقط در جایگاه درست به یکدیگر متصل شوند؛ مثلاً نمیتوان یک بلوک شرط را داخل یک عدد چسباند. این ویژگی مانع از بروز خطاهای نحوی میشود. در کد متنی، ویرایشگر اختیار کامل به شما میدهد، بنابراین احتمال تایپ اشتباه (prnit به جای print) وجود دارد.
پاورقی
1کد (Code): به مجموعه دستورالعملهای نوشتهشده به یک زبان برنامهنویسی گفته میشود که پس از ترجمه (تفسیر یا کامپایل) توسط رایانه اجرا میشود.
2اسکرچ (Scratch): زبان برنامهنویسی بصری و رایگان که توسط گروه لایفلانگ کیندرگارتن در مؤسسهٔ فناوری ماساچوست (امآیتی) توسعه یافته است. هدف آن آموزش مفاهیم برنامهنویسی به کودکان و نوجوانان است.
3تورینگ کامل (Turing Complete): به زبانی گفته میشود که بتواند هر الگوریتم قابل محاسبهای را پیادهسازی کند. اسکرچ این ویژگی را دارد.
4خطای نحوی (Syntax Error): نوعی خطا در برنامهنویسی که به دلیل رعایت نکردن قواعد دستوری زبان (مانند فراموشی دو نقطه یا پرانتز) رخ میدهد و مانع اجرای برنامه میشود.