Операторы 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 будет сформировано в ответ сообщение об ошибке.