Повторяем команды исполнителя Черепаха

Повороты

Полный оборот составляет 360° — вот главное, что нужно знать про повороты. Если Черепаха повернётся на 360°, то её нос будет смотреть точно в ту же сторону, что и до поворота. Впрочем, то же самое произойдёт не только с Черепахой, но и с человеком, лодкой, автомобилем.

Повороты направо и налево могут заменять друг друга. Вместо tortila.left(90) напишем tortila.right(270). Результат получим тот же самый. Аналогично вместо tortila.left(45) можно написать tortila.right(315).

Как мы узнали правильные числа?

Задания

1. Какой одной командой можно заменить следующие пары команд, если хвост Черепахи поднят?

73a
#ЗАМЕНИТЕ СЛЕДУЮЩУЮ ПАРУ КОМАНД ОДНОЙ КОМАНДОЙ
tortila.backward(-40)
tortila.forward(50)

73b
#ЗАМЕНИТЕ СЛЕДУЮЩУЮ ПАРУ КОМАНД ОДНОЙ КОМАНДОЙ
tortila.backward(70)
tortila.backward(-80)

73c
#ЗАМЕНИТЕ СЛЕДУЮЩУЮ ПАРУ КОМАНД ОДНОЙ КОМАНДОЙ
tortila.forward(-80)
tortila.forward(-30)

2. Какой одной командой можно заменить следующие четыре команды, если хвост Черепахи поднят?

77a
#ЗАМЕНИТЕ СЛЕДУЮЩИЕ ЧЕТЫРЕ КОМАНДЫ ОДНОЙ КОМАНДОЙ
tortila.right(30)
tortila.left(120)
tortila.left(50)
tortila.left(250)

77b
#ЗАМЕНИТЕ СЛЕДУЮЩИЕ ЧЕТЫРЕ КОМАНДЫ ОДНОЙ КОМАНДОЙ
tortila.left(140)
tortila.right(260)
tortila.right(-110)
tortila.right(-240)

Одно из достоинств компьютеров состоит в том, что они могут исполнять миллионы и миллиарды вычислительных операций за короткое время, в частности, миллионы раз повторять одну и ту же последовательность действий. Но было бы чудовищно, если бы программист был вынужден повторять в программе миллион раз одну и ту же последовательность команд.

На самом деле во всех языках программирования есть средства, позволяющие указывать, что какая-то последовательность команд должна быть выполнена несколько раз… Введём новую конструкцию.

for i in range(<число>):
    команды,
    которые,
    необходимо
    повторить

Вместо слова <число> мы подставляем какое-нибудь конкретное число. Смысл конструкции состоит в том, что все команды, записываемые с отступом, должны быть повторены конкретное число раз. Вот так!

3. Что нарисует Черепаха, выполнив следующую программу?

tortila.left(90)
for i in range(4):
    tortila.forward(80)
    tortila.right(90)
tortila.forward(80)
tortila.right(30)
for i in range(3):
    tortila.forward(80)
    tortila.right(120)
tortila.left(30)
tortila.backward(80)

Измените код так, чтобы Черепаха нарисовала объект

  • в 2 раза меньшего размера;
  • в 3 раза большего размера.

4. Черепаха нарисовала правильный треугольник и вернулась в первоначальное положение. Исправьте программу, вставив недостающие аргументы в команды.

#ВСТАВЬТЕ НЕДОСТАЮЩИЕ АРГУМЕНТЫ
tortila.forward(200)
tortila.left()
tortila.forward(200)
tortila.left()
tortila.forward(200)
tortila.left()

5. Нарисуйте в тетради след и положение Черепахи после выполнения программы.

tortila.forward(40)
tortila.left(60)
tortila.backward(40)
tortila.left(60)
tortila.forward(80)
tortila.left(150)
tortila.forward(80)
tortila.right(90)
tortila.backward(60)
tortila.left(180)

Как делать новые команды

Одна из основных частей Алгоритмического Мышления — искусство записи. Мы понимаем под этим искусство записывать сложный набор инструкций в простой и понятной форме. Для упрощения записи служат различные конструкции. Эти конструкции присущи большинству языков программирования. Они обеспечивают возможность:

  • создавать новые команды на основе имеющихся команд;
  • повторять некоторые команды по несколько раз;
  • проверять условия и действовать в зависимости от результатов.

А теперь познакомимся с первым элементом этого списка.

Всякую программу можно преобразовать в новую команду. Для этого к ней необходимо добавить очень простую вещь — имя. Действительно, если мы хотим исполнить команду, то её нужно как-то вызвать, то есть обратиться по имени…

Всякий акт наименования должен сопровождаться специальной церемонией. Для нас эта церемония будет заключаться в особом соглашении о том, как записывать… Мы пользуемся таким способом:

def имя_новой_команды():
    программа,
    описывающая,
    что делает
    новая функция

Выполняя следующие три задания, постарайся понять, как работает эта конструкция!

6. Черепаха опустила хвост, нарисовала правильный пятиугольник и вернулась в исходное положение. Исправьте программу, вставив недостающие аргументы в команды.

#процедура рисования правильного пятиугольника
def pentagon():
    tortila.pendown()
    for i in range(5):
        tortila.forward(100)
        #ВСТАВЬТЕ НЕДОСТАЮЩИЕ АРГУМЕНТЫ
        tortila.left()
    tortila.penup()

7. Черепаха опустила хвост, нарисовала правильный семиугольник и вернулась в исходное положение. Исправьте программу, вставив недостающие аргументы в команды.

#процедура рисования правильного семиугольника
def heptagon():
    tortila.pendown()
    for i in range(7):
        tortila.forward(100)
        #ВСТАВЬТЕ НЕДОСТАЮЩИЕ АРГУМЕНТЫ
        tortila.left()
    tortila.penup()

8. Напишите процедуры, выполняя которые Черепаха нарисует:

  • правильный шестиугольник (длина стороны 100);
  • правильный восьмиугольник (длина стороны 100);
  • правильный девятиугольник (длина стороны 100);
  • правильный 180-угольник (длина стороны 5)