درس ۲۲ روبی: الگوریتم نقاش و الگوهای رنگی
در این درس ربات روبی نقاش میشود. کودک با حلقه، شرط و بلوک رنگ الگوریتمی مینویسد که الگوهای منظم را روی زمین بکشد، فارغ از اندازهی نقشه.
هدف درس الگوریتم نقاش
هدف درس ۲۲ روبی ترکیب مهارت رنگ کردن از ردهی ۲ با حلقهها و شرطهای ردهی ۳ است. کودک یاد میگیرد یک الگو، مثل خطچین یا رنگهای یکدرمیان، را به قانون تبدیل کند و آن قانون را با کد بیان کند.
در پایان، دانشآموز برنامهای مینویسد که الگو را روی هر طول مسیری درست بکشد، نه فقط روی یک نقشهی مشخص.
مفهوم برنامهنویسی: الگو، حالت و تعمیم
هر الگوی تکرارشونده یک «واحد» دارد؛ مثلاً در خطچین، یک خانهی رنگی و یک خانهی خالی. پیدا کردن این واحد و تکرار آن با حلقه، همان کاری است که در درس مربع هم کردیم. تفاوت اینجاست که حالا با while و حسگر، الگو تا انتهای مسیر ادامه پیدا میکند.
شرط هم وارد کار میشود: روبی میتواند با colorSensor ببیند خانه قبلاً رنگ شده یا نه و بر اساس آن تصمیم بگیرد. برای والدین: این درس نشان میدهد برنامهنویسی و هنر از هم جدا نیستند؛ خیلی از طرحهای گرافیکی کامپیوتری با همین منطق ساخته میشوند.
فعالیت قدمبهقدم با ربات روبی
در یک ماموریت نمونه، روبی باید یک ردیف را تا دیوار بهصورت خطچین رنگ کند. برنامه: while not frontIsWall: paint("red"), forward, if not frontIsWall: forward. روبی یک خانه را رنگ میکند، یک قدم میرود و اگر هنوز راه باشد یک قدم دیگر هم میرود تا خانهی بعدی خالی بماند.
در حالت بلوکی، داخل بلوک «♾️ تا وقتی» به ترتیب «🎨 رنگ کن»، «⬆️ جلو» و یک بلوک «❓ اگر» با شرط «نه frontIsWall» میگذاریم که داخلش یک «⬆️ جلو» دیگر است. در ماموریت دیگری، روبی خانههای رنگی اشتباه را اصلاح میکند: if colorSensor = "red": erasePaint else: paint("blue").
- ✅ واحد تکرارشوندهی الگو را پیدا کن
- ✅ آن را داخل حلقه بگذار
- ✅ با شرط مطمئن شو روبی به دیوار نمیخورد
- ✅ روی ردیفهای کوتاه و بلند آزمایش کن
اشتباههای رایج و راه رفعشان
اگر forward دوم بدون شرط باشد، روبی در ردیفهایی با طول فرد به دیوار میخورد. این مثال خوبی است که نشان میدهد چرا برنامه را باید روی چند اندازه آزمایش کرد. اشتباه دیگر این است که paint بعد از forward گذاشته شود و خانهی اول بیرنگ بماند.
راه رفع: کودک قبل از ساختن برنامه، الگوی مورد نظر را روی کاغذ شطرنجی برای طول ۴ و طول ۵ بکشد و برنامهاش را روی هر دو در ذهن اجرا کند.
گاهی هم رنگ اشتباهی در paint نوشته میشود یا شرط colorSensor رنگی را بررسی میکند که در نقشه وجود ندارد. قبل از اجرا، نام رنگها را با رنگهای ماموریت مقایسه کنید؛ یک خطای تایپی کوچک میتواند کل الگو را خراب کند.
فعالیت بدون کامپیوتر: نقاش دستوری
یک کودک دستورها را میخواند و کودک دیگر روی کاغذ شطرنجی خانهها را رنگ میکند؛ فقط همانطور که دستور گفته. بعد نقشها عوض شود و کودک دوم الگوی خودش، مثلاً پلهای یا یکدرمیان، را با حلقه و شرط بنویسد. نتیجهی کاغذی را با هدف مقایسه کنید.
نکته برای معلم و والدین: بعد از ماموریتهای اصلی، به کودک آزادی بدهید الگوی دلخواهش را طراحی کند و برنامهاش را در ربات روبی بنویسد. وقتی کودک الگوی خودش را تعریف میکند، باید قانون آن را دقیق بیان کند و همین دقت، مهارت اصلی تفکر الگوریتمی است. کارهای بچهها را کنار هم بگذارید و دربارهی کوتاهترین راهحلها گفتوگو کنید.
ارتباط با پایتون واقعی و مسیر پیشرفته
ساختارهایی که کودک در این درس مینویسد، یعنی while، if و فراخوانی دستورهایی مثل paint("red") با ورودی، دقیقاً همان شکل کد پایتون را دارند. ورودی رنگ داخل پرانتز، اولین آشنایی با مفهوم پارامتر است.
در مسیر پیشرفتهی آکادمی روبی، همین ایده با حلقههای تو در تو گسترش پیدا میکند: جارو کردن کل نقشه سطربهسطر و رسم الگوهای دوبعدی. بعد هم نوشتن تابع با پارامتر، مثلاً تابعی برای رسم یک ردیف که بارها صدا زده شود.
سوالهای پرتکرار
کودک باید ردهی ۲ و درسهای رنگ را دیده باشد؟
بهتر است. درس ۲۲ روبی فرض میکند کودک بلوکهای paint و erasePaint را میشناسد و حالا آنها را با حلقه و شرط ترکیب میکند.
چرا باید برنامه را روی چند طول امتحان کرد؟
چون الگوریتم خوب باید عمومی باشد. خیلی از خطاها فقط در طولهای فرد یا خیلی کوتاه دیده میشوند.
این درس به خلاقیت کمک میکند؟
بله، بعد از ماموریتها کودک میتواند الگوهای خودش را طراحی کند و برنامهاش را بنویسد؛ ترکیبی از هنر و منطق.