А не задумался ли ты, внимательный и вдумчивый читатель, выполняя задания седьмой главы, о несовершенстве наших методов программирования? Для построения несложных фигур нам пришлось несколько раз вызывать одну и ту же процедуру, увеличивая параметр на заданную величину. Неужели нельзя нашей разумной Черепашке объяснить коротко и ясно алгоритм, который мы на самом деле выполняли в задании 4.1:
Если бы мы сумели перевести этот алгоритм на язык Лого, то без труда построили бы и закручивающуюся спираль, состоящую из 100 звеньев, у которой длина первого звена составляет 104 шага, а каждое следующее меньше предыдущего на 1. На нашем языке этот алгоритм можно описать так:
Задай длину стороны квадрата, равной 30. Повтори 10 раз:
Построй квадрат с заданной длиной стороны.Конец повторения
Увеличь длину стороны на 2.![]()
Всмотримся в эти алгоритмы. Основа их одинакова есть некоторый параметр (в первом случае длина строны квадрата, во втором длина звена спирали) и значения этого параметра меняются с заданным шагом, то есть, параметр является переменной величиной. Перед выполнением циклических повторений требуется задать этой переменной начальное значение.
Задай длину звена спирали, равной 104. Повтори 100 раз:
Пройди вперед на заданную длину.Конец повторения
Повернись направо на 90 градусов.
Уменьши длину звена на 1.
Для выполнения таких инструкций в языке Лого используется команда make. Говорят, команда make присваивает значение переменной, при этом переменная должна иметь имя; имя в Лого начинается с кавычек (которые не закрываются!). Значение переменной, в отличие от имени, начинается с двоеточия, но это нам уже знакомо.
Обозначим переменный параметр в обоих алгоритмах именем "size и перепишем наши алгоритмы в новых обозначениях.
Присвой переменной "size значение 30 Повтори 10 раз [ построй квадрат с длиной стороны :size увеличь значение переменной "size на 2] |
Присвой переменной "size значение 104 Повтори 100 раз [ пройди вперед на :size повeрнись направо на 90 уменьши значение переменной "size на 1] |
Переведем алгоритмы на язык Лого:
make "size 30 repeat 10 [ repeat 4[fd :size rt 90] make "size :size + 2] |
make "size 104 repeat 100 [ fd :size rt 90 make "size :size - 1] |
Формат (самый общий вид записи) команды присваивания make:
Таким образом команда make состоит из трех частей имени команды, имени переменной и выражения.make имя переменной выражение
С точки зрения компьютера имя переменной это имя некоторой ячейки памяти, ее символический адрес. Эта ячейка памяти может хранить данные значение переменной. Значения записываются с помощью команды make. В каждый момент времени значение может быть только одно, при записи нового значения старое теряется. Если в команде make используется выражение, то оно вычисляется и полученное значение записывается в указанную ячейку.