ПРИМЕРЫ СОЗДАНИЯ ВЫРАЖЕНИЙ

ПРИЛОЖЕНИЕ 4: ПРИМЕРЫ СОЗДАНИЯ ВЫРАЖЕНИЙ

Для создания логических выражений в программе АвтоГРАФ 5 ПРО используется язык C#. Параметры и переменные, участвующие в выражениях называются операндами. В языке С# оператор – это элемент программы, который применяется для одного или нескольких операндов в выражении или инструкции. Операторы, в которых используется один операнд, например, Логическое отрицание (!), называются унарными. Операторы, в которых используются два операнда, например арифметические операторы (+,-,*,/), называются бинарными. Для одного оператора – условного (?:), используются три операнда, и такой оператор является единственным троичным оператором в C#.

Операнд может представлять собой код любой длины и содержать любое число вложенных операций. Каждый оператор в выражении имеет определенный приоритет. В выражении, содержащем несколько операторов с разными уровнями приоритета, порядок вычисления операторов определяется их приоритетом. Например, в следующем выражении параметру присваивается значение 3: 11 - 2 * 4; сначала выполняется умножение, так как оно имеет приоритет над вычитанием.

Ниже будут рассмотрены примеры использования основных операторов языка C#. Оператор перечислены в порядке убывания приоритета.

ОСНОВНЫЕ ОПЕРАТОРЫ

Выражение Описание
x.y Доступ к членам класса

Пример использования данного оператора является применение префиксов для считывания различных значений параметра. Префиксы, используемые в программе АвтоГРАФ 5 ПРО, описаны в Приложение 1, в разделе Префиксы.

Пример:

• u.FuelLevel                          // доступ к пользовательскому параметру FuelLevel

• level.TankFuelLevel              // вычисление изменения уровня топлива по параметру

TankFuelLevel – сливов и заправок.

• frst.duration.Move              // вычисление длительности первого отрезка, когда параметр

Move находился во включенном состоянии.

Выражение

Описание

f(x)

Вызов метода

Примером данного оператора является использование, например, методов считывания свойств из реестра свойств. Методы, используемые в программе АвтоГРАФ 5 ПРО, приведены в Приложение 1.

Пример:

•  PrmInt(«SpeedMax»)              // считывание значения свойства SpeedMax из реестра свойств.

•  TotalSquare(frst.u.Field)       // вычисление общей площади поля

•  sqrt(mean.Speed)                  // вычисление квадратного корня средней скорости.

УНАРНЫЕ ОПЕРАЦИИ

Выражение

Описание

+x

Удостоверение

–x

Отрицание

!x

Логическое отрицание. Используется для логических параметров.

~x

Поразрядное отрицание

(T)x

Явное преобразование x в тип Т

Пример:

•  +PrmInt(«MaxTemp»)            // считывание значения свойства MaxTemp из реестра

свойств и изменение значения на положительное.

•  –PrmInt(«MaxTemp»)            // считывание значения свойства MaxTemp из реестра

свойств и изменение значения на отрицательное.

•  !I1                                          // параметру присваивается выключенное состояние датчика I1.

•  ~u.Flags                                 // инверсия флагов ТС.

•  (int)u.Dist                              // преобразование параметра Dist в тип int. Приведение

типа может потребоваться для вывода значения параметра в формате, который не поддерживает тип этого параметра.

МУЛЬТИПЛИКАТИВНЫЕ ОПЕРАТОРЫ

Выражение

Описание

*

Умножение

/

Деление

%

Вычисление остатка от деления

Пример:

•  LLS5 * 2                                               // умножение показаний датчика LLS5 на коэффициент 2;

•  (Distance - frst.Distance) / 100          // деление переменной (Distance – frst.Distance) на 100;

•  (DT.Minute % 2) == 1                         // проверка параметра DT.Minute на нечетность.

Если остаток от деления DT.Minute на 2 равно 1, то параметр является нечетным.

АДДИТИВНЫЕ ОПЕРАТОРЫ

Выражение

Описание

х+у

Сложение, объединение строк и объединение

х-у

Вычитание и удаление

Пример:

• (LLS1+LLS2) / 2                    // вычисление среднего значения показаний датчиков LLS1 и LLS2.

• UDT - frst.UDT                    // вычитание из общей длительности (параметр UDT) за период

значения длительности в начале периода. Такое выражение может              использоваться              для              вычисления

продолжительности рейса – из последнего значения параметра UDT за рейс вычитается первое значение.

ОПЕРАТОРЫ СДВИГА

Операторы сдвига используются для поразрядного сдвига на определенное количество бит, например, для выделения определенного бита параметра.

Выражение

Описание

х«у

Сдвиг влево на y бит

| х»у

Сдвиг вправо на y бит

Пример:

• (Temper1 <<1) // сдвигает параметр Temper1 на 1 бит влево, что эквивалентно умножению значения Temper1 на 2.

• (Temper1 >>1) // сдвигает параметр Temper1 на 1 бит вправо, что эквивалентно

делению значения Temper1 на 2.

ОПЕРАТОРЫ ОТНОШЕНИЯ

Операторы отношения предназначены для сравнения двух чисел. Результат выполнения оператора – логическая переменная, значение которой равно true – если неравенство верно, false – если неравенство неверно.

Выражение

Описание

х<у

Меньше

х>у

Больше

х<=у

Меньше или равно

х>=у

Больше или равно

Пример:

• f.MoveTime > hours(8) // если итоговое время движения больше 8 часов, то возвращается значение true.

ОПЕРАТОРЫ РАВЕНСТВА

Результатом операции является логическое выражение, значение которой равно true – если равенство верно, false – если неверно.

Выражение

Описание

х==у

Равно

х!=у

Не равно

Пример:

• (DT.Minute % 2) == 1 // если остаток от деления параметра DT.Minute на 2 равно 1, то возвращается значение true, иначе false.

ЛОГИЧЕСКИЕ, УСЛОВНЫЕ ОПЕРАТОРЫ

Выражение

Описание

х&у

Логическое И. Поразрядное И для операндов целочисленного типа, логическое И для операндов логического типа

х

Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ. Поразрядное исключающее ИЛИ для операндов целочисленного типа, логическое исключающее ИЛИ для операндов логического типа

х |у

Логическое ИЛИ. Поразрядное ИЛИ для операндов целочисленного типа, логическое ИЛИ для операндов логического типа

х&&у

Условное И. Равно y, только если x имеет значение true

х ||у

Условное ИЛИ. Равно y, только если x имеет значение false

х?у : z

Условный оператор. Равно y, если x имеет значение true, и z, если x имеет значение false

Пример:

• (B?1:0) | (R?2:0) // в первой скобке – если флаг В установлен, то возвращается

1, иначе 0, во второй скобке – если флаг R установлен, то возвращается 2, иначе 0. Результатом вычисления является логическое или значений двух скобках.

• (u.EngineFuelConsum > 0 ? u.EngineFuelConsum : 0) * 100 / ((u.TotalDuration.TotalHours > 0.1 && u.TotalDistance > 1) ? u.TotalDistance : 0)

//делимое равно u.EngineFuelConsum (значение расхода), умноженное на 100, если параметр u.EngineFuelConsum больше нуля, иначе равно 0; делитель равен u.TotalDistance (общий пробег за время TotalDuration), если u.TotalDuration.

TotalHours (общая продолжительность в часах) больше 0.1 и u.TotalDistance (общий пробег за время TotalDuration) больше 1.

результат вычисления выражения – отношение делимого и делителя (расход топлива на 100 км)

Особенности расчет выражений.

• Операнды каждого выражения вычисляются слева направо. В следующих примерах иллюстрируется порядок вычисления операторов и операндов.

Пример 1: b + c        порядок вычисления: b, c, +

Пример 2: b + c * d   порядок вычисления: b, c, d, *, +

Пример 3: b * c + d   порядок вычисления: b, c, *, d, +

Пример 4: b - c + d    порядок вычисления: b, c, -, d, +

• Порядок, определяемый приоритетом операторов, можно изменить с помощью скобок. Например, выражение 2 + 3 * 2 в обычном случае будет иметь значение 8, поскольку операторы умножения выполняются раньше операторов сложения. Однако если выражение записано в форме (2 + 3) * 2, сложение выполняется перед умножением и в результате получается 10. В следующих примерах иллюстрируется порядок вычисления выражений в скобках.

Пример 1: (b + c) * d        порядок вычисления: b, c, +, d, *

Пример 2: b - (c + d)         порядок вычисления: b, c, d, +, -

Пример 3: (b + c) *(d - е)  порядок вычисления: b, c, +, d, e, -, *

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


Системы мониторинга © Пользовательское соглашение.