حلقهی for در روبی: شمارش با متغیر
حلقهی for همان تکرار است با یک فرق بزرگ: ربات روبی میداند الان در دور چندم است و میتواند از آن عدد استفاده کند.
حلقهی for چه کار میکند؟
for i in range(5) بدنه را پنج بار اجرا میکند و در هر دور مقدار i را عوض میکند: ۰، ۱، ۲، ۳ و ۴. range میتواند شروع، پایان و گام هم بگیرد؛ range(1, 6) از ۱ تا ۵ میشمارد و range(10, 0, -2) از ۱۰ بهصورت دوتایی به عقب.
داخل range فقط عدد یا متغیر عددی قبول میشود و گام صفر خطاست. حلقهای که بیش از ۱۰۰۰ دور شود هم متوقف میشود. متغیر i را میتوانید در دستورهای حرکت استفاده کنید؛ forward(i) در دور اول که i صفر است، هیچ قدمی برنمیدارد.
شکل بلوکی و شکل کد
حلقهی for یک ساختار حالت کد است و در جعبهابزار بلوکی معادل جداگانه ندارد؛ برای شمارش ساده در حالت بلوکی از «⟳ تکرار» استفاده میشود. در کد، هم شکل انگلیسی پایتونی و هم شکل فارسی پذیرفته میشود.
- ✅ for i in range(5):
- ✅ for i in range(1, 6):
- ✅ for i in range(10, 0, -2):
- ✅ فارسی: برای i در بازه(1, 6):
یک مثال کوچک با ربات روبی
برای کشیدن یک مارپیچ که ضلعهایش هر بار بلندتر میشوند بنویسید: start_paint("green") و بعد for i in range(1, 6): با بدنهی forward(i) و right. روبی یک خانه، دو خانه، سه خانه و… جلو میرود و بعد از هر ضلع میچرخد.
متغیرهای معمولی هم کمک میکنند: n = 3 و بعد forward(n). با x = x + 1 هم میتوان شمارنده ساخت، به شرطی که اول x = 0 نوشته شده باشد.
اشتباههای رایج
range از صفر شروع میشود و عدد پایانی را شامل نمیشود؛ این قانون پایتون در روبی هم برقرار است.
- ✅ انتظار اینکه range(5) تا ۵ بشمارد
- ✅ استفاده از متغیر قبل از مقدار دادن به آن
- ✅ گذاشتن گام صفر در range
در کدام درسها و لیگها استفاده میشود؟
for در ادامهی حلقهی تکرار درس ۱۴ و برای پروژهی باز درس ۲۳ کاربرد دارد. در تمرینهای هفتگی لیگ ۲ و لیگ ۳ هم چند فصل به for و متغیرها اختصاص دارد و پلی است از بلوک به پایتون واقعی.
نکته برای والدین و معلم
از نوجوان بخواهید قبل از اجرا، مقدار i را در هر دور روی کاغذ بنویسد. جدول سادهی «دور، مقدار i، کار روبی» بهترین ابزار برای فهمیدن حلقههای شمارشی و آمادگی برای پایتون است.
سوالهای پرتکرار
for در روبی با پایتون واقعی یکی است؟
شکل for i in range(…) همان پایتون است و قانون شروع از صفر هم یکی است.
آیا for شکل فارسی دارد؟
بله: برای i در بازه(1, 6):
آیا for بلوک جداگانه دارد؟
نه، for در حالت کد نوشته میشود؛ در حالت بلوکی از تکرار استفاده کنید.