| # Редактор ограничений Синтаксис операторов ограничений Синтаксис операторов ограничений - это подмножество Синтаксиса инструментов LN. Операторы ограничений могут быть составлены при помощи следующих инструкций. Арифметические операторы: * (умножение) / (деление) + (сложение) - (вычитание) \ (остаток после деления) & (связь алфавитно-цифровых массивов) Логические операторы: or (или) and (и) not (не) Операторы отношения: = (равно) > (больше) >= (больше или равно) <> (не равно) < (меньше) <= (меньше или равно) Операторы доменов A равно {a1,a2,a3-a4,..} означает: (A=a1 or A=a2 or A >= a3 и A <= a4 и т.д.). Синтаксис операторов доменов заключается в использовании аббревиатур для логических операторов с учетом домена переменной. Приоритет операторов Арифметические операторы имеют более высокий приоритет, чем операторы связи. Операторы связи имеют более высокий приоритет, чем логические операторы. Последовательность приоритетов для арифметических операторов: * / \ + - Последовательность приоритетов для логических операторов: not, and, or Круглые скобки ('()') используются для изменения последовательности приоритетов для арифметических и логических операторов. Пример 3 + 4 * 5 = 23 (3 + 4) * 5 = 35 Булевы операторы Булевы операторы принимают значение истинный-ложный (1 или 0). Они применяются в ограничениях, в особенности в операторах с использованием условий. Пример If not e then ' означает: если e = ложный, то ' или если e = 0, то ' Конструкции if-then-else В ограничениях могут быть использованы длинные конструкции типа if-then-else. Разрешена вложенность операторов. Пример Пример If выражение 1 then выражение 2 else выражение 3 endif Конструкция if-then-else всегда оканчивается оператором endif. Оператор else не является обязательным. Операторы if, else и endif всегда начинаются с новой строки. Выражения условий могут быть записаны в несколько строк. Ограничение подтверждения можно задать без операторов if-then-else; это ограничение должно начинаться так: c:. Ограничения могут сопровождаться комментариями, отделенными символом |. В процессе конфигурации можно сгенерировать сообщения при помощи переменных сообщений (до 80x25 строк текста). Переменные ограничений В операторах ограничений могут быть использованы как глобальные, так и локальные переменные. Глобальные переменные - это свойства продукта и пользовательские переменные ограничений, определенные как глобальные. Локальными являются предопределенные переменные конфигуратора продукта, такие, как input, display, length, width и т.д. Глобальные переменные сохраняют свои значения в течение всего процесса конфигурации, если только это значение не изменяют. Переменные ограничений имеют следующие типы: string (буквенно-цифровая) (например: string machine global) long (Целые числа) (Например: long i) double (дробные) (например: double j) Пользовательские переменные ограничений должны всегда находиться в верхней части ограничений. Все локальные переменные инициализируются до выполнения ограничений: буквенно-цифровые переменные очищаются, численные получают нулевые значения. Глобальные переменные input и validating инициализируются значением "истинный" (true). Использование переменных ограничений Свойства продукта в операторах ограничений задаются при помощи открывающихся и закрывающихся квадратных скобок ([......]). Прочие переменные напрямую используются в операторах. Буквенно-цифровые переменные (строковые ряды) помечаются в соответствии с записью: startposition[;length]). Пример [color] = "красный" Проверка правильности = true Значения переменных могут быть буквенно-цифровыми или числовыми. Буквенно-цифровые записываются в кавычках ("...."). Численные значения вводятся напрямую. Десятичным разделителем служит точка ('.'). Пример механизм(1;2) = "A5" volume = 28,673 Константы true/false используются в булевых операторах. Арифметические функции round(X,Y,Z): округленное значение X; Y - число десятых долей, Z - метод округления (0 = в меньшую сторону, 1 = нормальный, 2 = в большую сторону) val(A) : численное значение строки A (val("8.7") = 8.7) abs(X) : расчет абсолютного значения X (abs(-10.3) = 10.3) int(X) : расчет целой части X (int(11.6) = 11) pow(X,Y) : raises X до the power of Y (pow(10.2) = 100) sqrt(X) : квадратный корень из X (sqrt(16) = 4) min(X,Y) : выбор наименьшего значения из X и Y (min(6,10) = 6) max(X,Y) : выбор наибольшего значения из X и Y (max(6,10) = 10) pi : константа со значением PI (3.1415926...) Тригометрические функции. sin(X), cos(X), tan(X) : синус, косинус или тангенс X (радиальн.) asin(X), acos(X), atan(X): арксинус, арккосинус или арктангенс X hsin(X), hcos(X), htan(X): гиперболический синус, косинус или тангенс X Логарифмические функции exp(X) : возведение e в степень Х log(X) : натуральный логарифм X по основанию e log10(X): логарифм X по основанию 10 Строковые функции edit(X,Y) : форматирование численного значения X в соответствии с форматом Y (edit(10.3,"ZZZ9V.99") = " 10.30" str(X) : помещение численного значения в строку (str(10.3) = "10.3") len(X) : определение длины строки X (len("abc") = 3) strip(X) :удаление пробела после последнего символа (strip("A ") "A") pos(X,Y) : : позиция Y в строке X слева rpos(X,Y) : позиция Y в строке X справа Функции даты date() : число дней от дня 0 до текущей даты date(y,m,d): число дней от даты 0 до введенной даты Пример date(1995,06,01) = 728445 |