فهرست عناوین

موضوع قبلی

9. قانون شمارهٔ ۳

موضوع بعدی

11. استفاده از کتابخانه

10. دور بزن

علاوه بر چرخیدن ریبرگ به سمت راست، شاید بخواهید چند باری بچرخد. منظورم این است که رویش را به طرف سمتی بکند که از آن داشت می‌آمد. برای این کار می‌توانیم یک تابع ()turn_around (دور زدن) را این طور برایش تعریف کنیم:

def turn_around():
    turn_left()
    turn_left()

امتحانش کنید!

10.1. برگردیم به ()turn_right

تابع ()turn_right را یادتان هست؟ این جا دوباره داریمش:

def turn_right():
    turn_left()
    turn_left()
    turn_left()

دقّت کنید که چطور دو تا دستور اوّل با تعریف تابع ()turn_around یکی هستند. وقتی که چنین اتّفاقی می‌افتد باید قانون شمارهٔ ۳ را یادمان بیارویم:

مهم

قانون شمارهٔ ۳

وقتی دارید برنامه‌های کامپیوتری می‌نویسید، کارها را تکرار نکنید. تکرار می‌کنم: تکرار نکنید!

خب، پس ما چند تا دستور تکراری داریم. با این که ()turn_right هنوز خیلی ساده است، ولی یک تمرین ‌برنامه‌نویسی خوب، جایگزین کردن قسمت‌هایی از کد هست که با یک تابع ساده تکرار می‌شود. بنابراین ما بهتر است ()turn_right را این طور بازنویسی کنیم:

def turn_right():
    turn_around()
    turn_left()

فلسفهٔ این کار این است که، هر چقدر تابع کوتاه‌تر باشد، کمتر احتمال دارد که در آن باگ داشته باشد. علاوه بر این، وقتی که ما یک تابع آزمایش‌شدهٔ خوب و بدون باگ را داشته باشیم، می‌توانیم با خیال راحت هر جا که خواستیم تابع‌های طولانی‌تر را بنویسیم، از آن استفاده کنیم. اعتراف می‌کنم که این مورد تقریباً یک مثال بچگانه بود... ولی در این مرحله برای تشریح این مفهوم مثال‌های پیچیده‌تری ندارم.

نوبت شما

یک تابع ()step_back (یه گام به عقب) تعریف کنید که حرکت تابع ()move را خنثی می‌کند. منظورم این است که با استفاده از این تابع شما کد شما باید این طور باشد:

# شروع از یه جایی با موقعیّت x و y
move()
step_back()
# برگشت به همان موقعیّت قبلی،
# رو به همون سمتی که از قبل بود

بادتان باشد تابعی که نوشتید را امتحانش کنید!

از راهنما استفاده نکنید؛ مگر موقعی که کاملاً حس کردید دیگر نمی‌توانید کاری از پیش ببرید.

راهنمایی

شاید بخواهید دو بار از تابع ()turn_around توی تعریف تابع ()step_back استفاده کنید.