ПРИЛОЖЕНИЕ 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, -, *
При создании выражений и использовании тех или иных операций следует также учитывать типы операндов и тип значения, возвращаемого выражением. Т. к. тип может повлиять на результат расчета.
Монтаж и обслуживание систем спутникового мониторинга АвтоГРАФ GPS ГЛОНАСС
Copyright © 2006-2023
Все права защищены!
117405, г.Москва, ул.Дорожная, д.60Б, оф.415
пн-пт: с 9:00 до 18:00
сб-вс: выходной
+7 (985) 179-86-30