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