Глава 9
В которой мы знакомимся с переменной, учимся присваивать ей значение и тем самым получаем мощный инструмент для решения непростых задач

А не задумался ли ты, внимательный и вдумчивый читатель, выполняя задания седьмой главы, о несовершенстве наших методов программирования? Для построения несложных фигур нам пришлось несколько раз вызывать одну и ту же процедуру, увеличивая параметр на заданную величину. Неужели нельзя нашей разумной Черепашке объяснить коротко и ясно алгоритм, который мы на самом деле выполняли в задании 4.1:

Задай длину стороны квадрата, равной 30.

Повтори 10 раз:

Построй квадрат с заданной длиной стороны.
Увеличь длину стороны на 2.
Конец повторения
Если бы мы сумели перевести этот алгоритм на язык Лого, то без труда построили бы и закручивающуюся спираль, состоящую из 100 звеньев, у которой длина первого звена составляет 104 шага, а каждое следующее меньше предыдущего на 1. На нашем языке этот алгоритм можно описать так:
Задай длину звена спирали, равной 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 используется выражение, то оно вычисляется и полученное значение записывается в указанную ячейку.



||  Начало главы || || Вопросы и задания || || Оглавление  ||