На заметку


Синтаксис вызова условного оператора выглядит следующим образом: while условие do опрератор_1 ... оператор_Я end do. Если выполняется условие, то последовательно выполняются операторы, размещенные между ключевыми фразами do и end do, после чего снова проверяется условие, и если оно верно, то снова выполняются операторы, и т.д.

Перед вызовом этого условного оператора инициализируется переменная-счетчик R, с помощью которой можно корректно определить, когда следует закончить выполнение условного оператора. Переменная эта будет "помнить" длину фрагмента горизонтальной плоскости. Первоначальное значение этой переменной, как несложно догадаться, должно равняться Sft. Картинку будем создавать такой, чтобы размер по горизонтали (и, в принципе, по вертикали) был не менее 1, но не более 2. Поэтому процесс "дополнения" горизонтальной плоскости продолжается до тех пор, пока R<1. Именно это условие и указано в условном операторе while. В теле оператора размещено всего две команды. Первая "удлиняет" горизонтальную плоскость. Делается это следующим образом: переменной hWall в качестве значения присваивается последовательность, первый элемент которой — сама переменная hWall (т.е. ее прежнее значение), а второй элемент — результат выполнения процедуры translate(). У этой процедуры три параметра-аргумента: первый задает графическую структуру, которую следует "перенести", а два других определяют направление переноса. Так, в данном случае вторым параметром указана переменная Sft, а третьим — 0. Это значит, что графическую структуру следует перенести на расстояние Sft вдоль горизонтальной оси и на расстояние 0 по вертикали. Первый аргумент процедуры translate () — результат отражения вертикальной стенки относительно биссектрисы левого нижнего угла.

Вторая команда в цикле while нужна для изменения значения переменной-счетчика R — после описанной выше манипуляции длина горизонтальной плоскости становится больше на величину Sft.

На следующем этапе формируется полная картинка. Выполняется это с помощью процедуры display(), и результат присваивается в качестве значения переменной Wall.

Наконец, вся картинка переносится вверх на расстояние (1-Sft) и по горизонтали на расстояние длины штриха, т.е. на величину Sft/N. Такой перенос выполняется с очень простой целью — чтобы координаты по вертикали и горизонтали были положительными. Если картинку не смещать, принципи-[, ально ничего не изменится — внешний вид системы будет таким же, разница будет только в выборе начала отсчета.



Содержание раздела