Операторы
Для каждой константы или переменной в SimInTech тип определяется своим значением и принадлежит к какому-либо типу данных.
С помощью операторов и круглых скобок из них можно составлять выражения, которые фактически представляют собой правила получения новых значений.
В общем случае выражение состоит из нескольких элементов (операндов) и знаков операций (операторов), а тип данных его значения определяется типом операндов и видом применяемых к ним операций.
Если операции имеют равный приоритет, то они будут выполняться последовательно, слева направо.
Если приоритет операции выше, то она будет выполнена в первую очередь, независимо от
расположения знака операции. В первую очередь вычисляются также выражения, заключенные в
скобки, после чего они рассматриваются как операнды. В выражении (x > 0) and (y >
0) скобки необходимы, поскольку операции отношения имеют самый низкий
приоритет.
Математические операторы
Операндами в арифметических операциях могут быть вещественные, комплексные и целые числа, массивы, матрицы, а также выражения соответствующих типов.
Операции над матрицами определены в соответствии с правилами линейной алгебры, а операции над массивами выполняются поэлементно (в последнем случае размеры массивов должны совпадать).
Массив воспринимается как вектор-строка. Вектор-столбец задается как матрица размером n x
1, например A=[[1],[3],[2]]; либо как транспонированный массив:
A=transp([1,3,2]);
| Оператор | Семантика | Назначение | Пример |
|---|---|---|---|
+ |
"слагаемое 1"+"слагаемое 2" | Сложение двух выражений. Матрицы и вектора складываются поэлементно. Для строк сложение соответствует конкатенации. |
|
- |
"уменьшаемое"-"вычитаемое" | Вычитание из первого выражения второго. Для строк не определено. Матрицы и вектора вычитаются поэлементно |
|
+= |
"базовое значение"+="значение инкремента" | Оператор инкремента. Выражение, сформированное с помощью оператора
+=
эквивалентно
выражениюОператор может быть использован для чисел, векторов, матриц и строк. |
|
-= |
"базовое значение"-="значение декремента" | Оператор декремента. Выражение, сформированное с помощью оператора
-=
эквивалентно
выражениюОператор может быть использован для чисел, векторов, матриц. |
|
* |
"множитель 1"*"множитель 2" | Умножение первого выражения на второе. Вектора умножаются поэлементно. Матрицы перемножаются по правилам умножения матриц |
|
.* |
"матрица 1".*"матрица 2" | Поэлементное перемножение действительных или комплексных матриц с использованием правил перемножения |
|
/ |
"делимое"/"делитель" | Прямое деление первого выражения на второе. Вектора делятся поэлементно. Для матриц производится умножение на обратную матрицу |
|
./ |
"матрица 1"./"матрица 2" | Поэлементное деление действительных или комплексных матриц |
|
\ |
"матрица A"\"матрица B" | Обратное деление матриц. Соответствует операции
A-1*B |
|
^ |
"базовое значение"^"степень" | Возведение первого выражение в степень второго. Вектора обрабатываются поэлементно. Матрицы возводятся в целую степень по правилам умножения матриц |
|
.^ |
"матрица 1".^"матрица 2" | Поэлементное возведение в степень двух матриц или матрицы в действительную степень |
|
! |
"целое число"! | Вычисление факториала целого числа |
|
.. |
A..B | Вычисление интервала чисел от A до B. Опционально при использовании оператора может быть задан шаг интервала. Шаг интервала указывается через символ ":", после которого указывается значение шага. Также опционально только при указании шага интервала оператор может быть использован при вычислении интервала вещественных чисел |
|
# |
A#B | Размножение числа B в вектор размерностью A |
|
& |
A&B | Объединение векторов A и B |
|
Целочисленные и логические операторы
| Оператор | Семантика | Назначение | Пример |
|---|---|---|---|
or |
"выражение 1" or "выражение 2" |
Побитовая логическая операция ИЛИ Данная
операция в SimInTech также представлена в виде блоков:
|
|
and |
"выражение 1" and "выражение 2" |
Побитовая логическая операция И Данная
операция также представлена в SimInTech в виде блоков:
|
|
xor |
"выражение 1" xor "выражение 2" |
Побитовая логическая операция ИСКЛЮЧАЮЩЕЕ
ИЛИ Данная операция также представлена в SimInTech в виде блоков: |
|
not |
"выражение 1" not "выражение 2" |
Побитовая логическая операция
НЕ Данная операция также представлена в SimInTech в виде блоков: |
|
div |
"делимое" div "делитель" | Целочисленное деление |
|
mod |
"делимое" mod "делитель" | Остаток от целочисленного деления |
|
shl |
"число" shl "количество сдвигов" | Побитовый сдвиг влево |
|
shr |
"число" shr "количество сдвигов" | Побитовый сдвиг вправо |
|
> |
"операнд 1" > "операнд 2" | Операция БОЛЬШЕ. Операция возвращает True, если операнд 1
больше чем операнд 2. Данная операция также представлена в SimInTech в виде
блоков:
|
|
< |
"операнд 1" < "операнд 2" | Операция МЕНЬШЕ. Операция возвращает True, если операнд 1
меньше чем операнд 2.Данная операция также представлена в SimInTech в виде
блоков: |
|
>= |
"операнд 1" >= "операнд 2" | Операция БОЛЬШЕ ЛИБО РАВНО. Операция возвращает True, если
операнд 1 больше либо равен операнду 2.Данная операция также представлена в
SimInTech в виде блоков: |
|
<= |
"операнд 1" <= "операнд 2" | Операция МЕНЬШЕ ЛИБО РАВНО. Операция возвращает True, если
операнд 1 меньше либо равен операнду 2.Данная операция также представлена в
SimInTech в виде блоков: |
|
= |
"операнд 1" = "операнд 2" | Операция РАВНО. Операция возвращает True, если операнд 1
равен операнду 2.Данная операция также представлена в SimInTech в виде
блоков: |
|
<> |
"операнд 1" <> "операнд 2" | Операция НЕ РАВНО. Операция возвращает True, если операнд 1
не равен операнду 2.Данная операция также представлена в SimInTech в виде блоков: |
|
Специальные операторы
| Оператор | Семантика | Назначение | Пример |
|---|---|---|---|
() |
("выражение") | Математические скобки. Выражение внутри скобок выполняется первым. |
|
() |
("действительная часть","мнимая часть") | Упаковка действительных чисел (векторов, матриц) в комплексное (комплексный вектор, матрицу). Допустимо написание частей комплексного числа через пробел или точку с запятой. |
|
[] |
["элемент 1"{,"элемент 2"}] | Упаковка элементов в массив:
Разделителем элементов вектора могут быть следующие символы:
Прим.: Если элемент вектора отрицательное число (например, -0.23), то
данный элемент в векторе должен отделяться от предыдущего
запятой. Векторы и матрицы можно присваивать, при этом способ расчета для данных векторов и матриц должны быть объявлены как "Переменные". |
|
[] |
"массив или матрица"["номер элемента или строки"{,"номер столбца"} ] | Возвращает значение элемента с указанным номером. Нумерация начинается с 1. Тип возвращаемого значения соответствует типу элементов массива. Если для матрицы указывается один индекс, то возвращается вектор-строка матрицы, если 2 – возвращается число. Этот оператор может быть присвоен. Разделителем элементов может быть запятая, точка с запятой или пробел. |
|
[ ] могут использоваться для декларации действительных
массивов и матриц аналогично блоку "Язык программирования" (см. описание ключевого слова
var) .