Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операторы if-then-else




Логические операторы НЕ, И, ИЛИ

В одном условном операторе может быть указано несколько условий. Для этой цели служат логические операторы НЕ (not), И (and) и ИЛИ (or). Нижеприведенрядсоответствующихпримеров.

if (not s.radius == 10) then messagebox "Radius is not 10."

if (x == 5 and y == 6) then z = 0

if (x == 5 or y == 6) then z = 0


Основы MAXScript

Если оператор not окажется не совсем удобным, условие "не равно" можно проверить и по-другому, используя синтаксис if!=, например:

if s.radius!= 10 then messagebox "Radius is not 10."

При проверке нескольких условий, как правило, требуются круглые скобки для группирования условий в логическом порядке, что особенно важно для сложных выражений. Выражения в круглых скобках всегда вычисляются в первую очередь. Каждый из операторов в следующем примере дает разные результаты:

if (x == 5 or y == 6) and z == 10 then w = 0

if x == 5 or (y == 6 and z == 10) then w = 0

Если в сложном выражении опущены круглые скобки, порядок его вычисления может быть определен с помощью правил предшествования логических операторов. Такие правила определяют старшинство одних логических операторов над другими при вычислении выражения. Наивысшим приоритетом обладает оператор НЕ, который вычисляется в первую очередь. Операторы И и ИЛИ вычисляются слева направо, причем оператор И имеет больший приоритет: x and y or z

В соответствии с правилами предшествования приведенное выше выражение без круглых скобок эквивалентно следующему выражению: (x and y) or z

То же самое имеет место и в следующем выражении: not x or y and z

Оно эквивалентно выражению (not x) or (y and z)

Напомним, что новые операторы сценария вводятся в MAXScript с новой строки, а для продолжения оператора на следующей строке служит обратная косая черта (\). Но из этого правила имеется исключение для конструкции if-then: части if и then условного оператора могут указываться в отдельных строках. Ведь после выражения if непременно должно следовать выражение then, поэтому его можно поместить в следующей строке:

b = box()

if b.height!= 10.0

then b.length = 40.0

Приведенная выше конструкция дает такой же результат, как и следующая:

b = box()

if b.height!= 10.0 then

b.length = 40.0

Оператор b.length указан с отступом для обозначения того факта, что он яв­ляется частью условия if-then. Это делается только ради повышения удобочи­таемости кода сценария.


Глава 1

Если ввести фрагмент кода из предыдущего примера в приемнике команд, то ничего особенного при этом не произойдет. Объясняется это особенностями управляющей структуры if-then-else. Простую конструкцию if-then можно расширить, дополнив ее выражением else, причем каждая из частей if, then и else условного оператора может быть указана в отдельной строке, например:

if b.pos == 10

then b.height = 40

else b.height = 80

Выражение else дает возможность указать альтернативное действие, если ус­ловие внутри выражения if не выполняется. Напомним, что операторы выполняются в приемнике команд построчно по мере их ввода. В следующем выражении будет показано, каким образом приемник команд реагирует на ввод оператора if-then-else.

1. Введите в приемнике команд следующее выражение:
b = box()

2. Введите следующее выражение:

if b.pos.x == 0 then b.height = 40

После ввода данного выражения объект не изменился, а приемник команд никак не отреагировал на это выражение — ни положительным результатом, ни сообщением об ошибке.

 

 

 


Ведь приемнику команд неизвестно, собираетесь ли вы ввести далее оператор else. Ему требуется завершенная структура if-then-else, прежде чем выполнять код сценария MAXScript. Если в следующей строке вы введете выражение else, приемник команд будет знать, что делать дальше. Если же выражения else не окажется в следующей строке, приемник команд предположит, что его и не следует ожидаь.

3. Введите в приемнике команд следующее выражение: elseb.height = 10.0

Теперь приемник команд отреагирует, и высота параллелепипеда изменится до величины 40,0 единиц.


Основы MAXScript

 

 

 


4. Введите следующий фрагмент кода и нажмите комбинацию клавиш <Shift+Enter> после каждой введенной строки:

if b.pos.x == 0 then b.height = 40

messagebox "Done"

Несмотря на отсутствие в этом фрагменте кода выражения else, приемник команд будет знать, что ввод этого кода завершен, и в итоге появится окно сообщения.

Примечание. Если сценарии выполняются в окне редактора сценариев по команде EvaluateAll (Вычислить все), то приведенная выше процедура ввода и вычисления конструкции if-then-else не действует, поскольку в этом случае просто выполняется весь сценарий.

 




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 769; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.