Операторы
Для каждой константы или переменной в 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) .