Операторы if-then
Условные операторы
Локальные переменные
Переменные, объявленные (или определенные) в предыдущем упражнении, являются глобальными, поскольку находятся вне блока кода. Для ограничения области действия переменной ее достаточно объявить как локальную. Локальные переменные действительны в пределах блока кода, в котором они определены, или же во вложенных в него блоках. В этой связи блок кода иногда еще называется контекстом области действия. Примеры блоков кода будут представлены при рассмотрении циклов и условных операторов далее в этой главе.
Локальная переменная объявляется несколькими способами. Ниже приведены все действительные способы объявления локальной переменной b (напомним, что она должна быть внутри блока):
( local b )
( local b = 2 )
( b = 2 -- если переменная определена внутри блока )
Если переменная объявлена как локальная вне всех блоков кода, компилятор выдаст сообщение об ошибке "Nolocal declarations at top level:
. . . ." (Объявления локальных переменных на верхнем уровне отсутствуют).
Как только локальная переменная будет объявлена, она может быть использована в том же блоке кода, где она была определена, или же во вложенных в него блоках. Рассмотрим, например, следующий сценарий:
s = sphere()
for i = 1 to 5 do
(
a = instance s pos: [i*50, 0, 0]
if (s.pos.x > 150)then
( s.pos.y = 50
c = (30 + i)
)
)
Глава 1
b = c -- Переменная c не определена в этом блоке,
b = copy a -- Переменная a определена в этом же блоке,
-- поэтому она действительна.
)
В данном сценарии имеются два блока кода, вложенных один в другой. Переменная c объявлена внутри блока if-then, поэтому она действительна только внутри круглых скобок, обрамляющих данный блок кода. Переменная a объявлена внутри блока цикла for, поэтому она может быть использована в блоке данного цикла, а также в блоке if-then.
Если выполнить данный сценарий, включив в него оператор построчного вывода после строки кода b = c, значение переменной c будет выведено как неопределенное (undefined).
Локальные переменные из одного блока кода можно использовать повторно внутри другого блока кода в сценарии. В действительности многие программисты предпочитают пользоваться при каждой возможности переменными i, j и к для определения циклов. Это означает, что такие переменные используются многократно внутри одной и той же программы.
Само по себе понятие условного оператора несложное. Такой оператор позволяет управлять процессом выполнения программы. Условные операторы могут быть реализованы разными способами.
К первому типу условных операторов относится оператор if-then,
if s.pos.x == 10 then s.radius = 40
В приведенном выше примере оператор изменяет радиус сферы только в том случае, если значение координаты x ее положения равно 10. Двойным знаком равенства ( == ) обозначается операция логического сравнения, тогда как одиночным знаком равенства - операция присваивания.
В условном операторе непременно должны присутствовать слова if и then. Если вы забудете включить их в данный оператор, в MAXScript будет сформировано в ответ сообщение об ошибке.