بلوک «اگر / وگرنه» در روبی: ربات تصمیم میگیرد
با شرط، ربات روبی دیگر کورکورانه دستور اجرا نمیکند؛ اول از حسگرهایش میپرسد و بعد تصمیم میگیرد.
شرط اگر چه کار میکند؟
بلوک اگر یک پرسش بله یا خیر میپرسد، مثل «جلوی من مانع است؟». اگر جواب بله باشد، دستورهای بدنهی اگر اجرا میشوند و اگر خیر باشد، بخش وگرنه، در صورت وجود، اجرا میشود. با elif میتوان چند پرسش را پشت سر هم چید.
شرط میتواند یک حسگر، یک متغیر یا یک مقایسه باشد، مثل Front < 2 یا colorSensor = "red". با not پاسخ را برعکس میکنید و با and و or دو شرط را ترکیب میکنید. اگر اسم حسگر را اشتباه بنویسید، پیام «حسگر یا متغیر … شناخته نشده» نشان داده میشود و برنامه متوقف میشود.
شکل بلوکی و شکل کد
بلوک «❓ اگر» یک فهرست کشویی برای انتخاب حسگر دارد که پیشفرض آن جلو_مانع است، یک گزینهی «نه» برای برعکس کردن شرط، و دو جای خالی برای بخش «اگر» و «وگرنه». در کد، همهی کلمهها فارسی هم دارند.
- ✅ if frontIsWall: و بدنه با تورفتگی
- ✅ elif frontIsBeacon: برای پرسش دوم
- ✅ else: برای حالت باقیمانده
- ✅ فارسی: اگر یا اگه، وگرنه_اگر، وگرنه؛ نه، و، یا
یک مثال کوچک با ربات روبی
این برنامه روبی را در یک راهروی پیچدار جلو میبرد: repeat(8): و داخلش if frontIsWall: right و else: forward. هر بار روبی میپرسد جلویش دیوار است یا نه؛ اگر بود میچرخد، وگرنه قدم برمیدارد. یک نسخهی کاملتر: if frontIsWall: right، elif frontIsBeacon: pickUp، else: forward.
اشتباههای رایج
شرط فقط یک بار، در همان لحظه، بررسی میشود. اگر بخواهید روبی مدام بپرسد، شرط را داخل حلقه بگذارید.
- ✅ انتظار تکرار شدن خودکار شرط بدون حلقه
- ✅ گذاشتن دستور در بخش اشتباه، اگر بهجای وگرنه
- ✅ غلط املایی در اسم حسگر
- ✅ فراموش کردن not وقتی منظور «اگر دیوار نیست» است
در کدام درسها و لیگها استفاده میشود؟
شرط در درس ۱۶ «اولین تصمیم» با حسگر frontIsWall معرفی میشود و درس ۱۷ «اگر... وگرنه» دو مسیر متفاوت را آموزش میدهد. در درس ۲۱ «هزارتو» و درس ۲۲ همراه حلقهها و حسگرهای رنگ، الگوریتمهای کامل میسازد. شرطهای تو در تو و ترکیب با and و or در لیگهای بالاتر تمرین میشوند.
نکته برای والدین و معلم
شرط را با جملههای روزمره تمرین کنید: «اگر باران آمد، چتر بردار؛ وگرنه کلاه بگذار». بعد از کودک بخواهید برای روبی جملهی مشابه بسازد. وقتی کودک بتواند شرط را به زبان خودش بگوید، نوشتنش آسان است.
سوالهای پرتکرار
آیا میتوان شرط را به فارسی نوشت؟
بله. اگر، اگه، وگرنه، وگرنه_اگر و نه، و، یا همگی پشتیبانی میشوند.
elif در روبی کار میکند؟
بله، elif یا وگرنه_اگر برای چیدن چند شرط پشت سر هم است.
چرا روبی فقط یک بار پرسید؟
شرط یک بار بررسی میشود؛ برای بررسی مداوم آن را داخل repeat یا while بگذارید.