فهرست عناوین

موضوع قبلی

22. برای مدّتی...

موضوع بعدی

24. پالایش‌ها: بخش ۲

23. پالایش‌ها: بخش ۱

در این درس چند بخشی می‌خواهیم برنامهٔ کاملی را بنویسیم تا یک سری از مسائلی -که به تدریج پیچیدگی‌یشان بیشتر می‌شود- را حل کنیم. برای هر درس یک راه حلّ پیشنهادی ارائه می‌دهم که هر کدام یک اشتباه دارد. سعی کنید قبل از این که به درس بعدی برویم آن را پیدا کنید.

23.1. یک مسئلهٔ ساده

بیاید با یک مسئلهٔ ساده شروع کنیم: کاری کنیم که ریبرگ محیطش را یک دور بزند و وقتی به نقطهٔ شروعش برمی‌گردد بایستد. برای تجسّم موضوع، محیط همین دور و بر ۱ را انتخاب کنید. این کار را قبلاً وقتی تابع آزمون ()front_is_clear را معرفی کردیم، انجام داده‌ایم. طرح کلّی راه حل را - با این فرض که ریبرگ موقع شروع دست کم یک نشانه به همراه دارد - را این جا آورده‌ام:

  1. نشانه را زمین بگذار تا نقطهٔ شروع (و پایان) را مشخّص کنی.

  2. آن قدر برو جلو تا به یک دیوار برسی.

  3. وقتی به دیوار رسیدی بپیچ به چپ؛

  4. گام‌های ۲ و ۳ را آن قدر تکرار کن تا نشانه‌ای که گذاشتی را پیدا کنی.

کمی وقت بگذارید و دربارهٔ الگوریتم بالا فکر کنید. بعد، این راه حل کدنویسی‌شده را در نظر بگیرید:

put()

while  not  object_here():
    if   front_is_clear():
        move()

    else :
        turn_left()

نوبت شما!

قبل از این که بخواهید کد بالا را اجرا کنید؛ کمی وقت بگذارید و دربارهٔ کاری که برنامهٔ بالا به ریبرگ دستور انجامش را می‌دهد، فکر کنید. آیا می‌توانید یک مشکل در راه‌حلّ پیشنهاد شده پیدا کنید؟