بلوک «تکرار» در روبی: کار تکراری را به حلقه بسپار
بهجای پنج بار نوشتن «جلو»، یک بار «تکرار ۵» کافی است. حلقهی تکرار اولین قدم ربات روبی به سمت برنامههای کوتاه و هوشمند است.
تکرار چه کار میکند؟
بلوک تکرار دستورهای داخل خودش را به تعدادی که تعیین میکنید پشت سر هم اجرا میکند. اگر بنویسید repeat(4) و داخلش forward و right باشد، روبی چهار بار یک قدم میرود و میچرخد؛ یعنی یک مربع.
تعداد میتواند عدد ثابت، متغیر یا یک حساب ساده باشد، اما باید عدد باشد. اگر تعداد از ۱۰۰۰ بیشتر شود، روبی با پیام «حلقه خیلی طولانیه!» متوقف میشود. نوشتن repeat() با پرانتز خالی یعنی تکرار بینهایت که مثل while True کار میکند و وقتی روبی دیگر نتواند کاری انجام دهد، آرام تمام میشود.
شکل بلوکی و شکل کد
بلوک «⟳ تکرار» یک شمارنده دارد که از ۱ تا ۹۹ تنظیم میشود و دستورها داخل بدنهاش قرار میگیرند. در حالت کد، شکل پایتونی با دونقطه و تورفتگی است.
- ✅ پایتونی: repeat(5): و دستورها با تورفتگی در خطهای بعد
- ✅ بدون پرانتز: repeat 5:
- ✅ فارسی: تکرار 5:
- ✅ بینهایت: repeat():
یک مثال کوچک با ربات روبی
برای کشیدن یک مربع رنگی، start_paint("red") بنویسید و بعد repeat(4): با بدنهی forward(3) و right. هشت خط تکراری به سه خط تبدیل میشود. تکرار را میتوان تو در تو هم نوشت: یک تکرار ۳ که داخلش یک تکرار ۴ است، سه مربع پشت سر هم میکشد.
اشتباههای رایج
بیشترین خطا در حالت کد، تورفتگی است. هر چه با تورفتگی زیر repeat بیاید جزو بدنه است و هر چه تورفتگی نداشته باشد، بعد از حلقه اجرا میشود.
- ✅ گذاشتن دستوری که فقط یک بار لازم است داخل حلقه
- ✅ یک واحد کم یا زیاد شمردن تعداد تکرار
- ✅ فراموش کردن دونقطه یا تورفتگی در کد پایتونی
در کدام درسها و لیگها استفاده میشود؟
تکرار در درس ۱۲ «معرفی تکرار» وارد میشود و در درس ۱۳ «تکرارِ الگو» چند دستور را با هم تکرار میکند. در ردهی ۳، درس ۱۴ «حلقهی بزرگ» و درس ۱۵ «مربع کامل» آن را عمیقتر میکنند و در همهی لیگهای بعدی ابزار روزمره است.
نکته برای والدین و معلم
تکرار را با یک روال روزانه توضیح دهید: «هر روز صبح: بیدار شو، صبحانه بخور، برو مدرسه». بعد از کودک بخواهید در برنامهی قبلیاش دنبال بلوکهای تکراری بگردد و آنها را در یک حلقه جمع کند. برنامهی کوتاهتر در روبی امتیاز بیشتری دارد.
سوالهای پرتکرار
بیشترین عدد بلوک تکرار چند است؟
شمارندهی بلوک از ۱ تا ۹۹ است و در کد هم تکرار بیش از ۱۰۰۰ بار مجاز نیست.
repeat() بدون عدد چه میکند؟
تکرار بینهایت است و مثل while True کار میکند.
آیا میتوان تکرار را داخل تکرار گذاشت؟
بله، حلقههای تو در تو کاملا پشتیبانی میشوند.