Операндами логических операторов в простейшем случае являются скаляры (в общем случае массивы). Тогда логические операции выполняются по описанным выше правилам преобразования числовых и логических значений. Логические операторы перечислены в таблице 2.1.3. Заметим, что первые две операции, приведенные в таблице 2.3, являются двухоперандными (бинарными), а последняя операция является однооперандной (унарной). Соответственно знак ~ ставится перед операндом, а знаки & и | ставятся между операндами.
Таблица 2.3. Логические операторы (логические операции, логические связки) в MATLAB.
Символ (оператор) | Выполняемое действие (описание) |
& | Логическая операция «и» (логическое «и», логическое умножение). Результатом является истина (значение 1), если оба операнда истинны. В противном случае возвращается 0. |
| | Логическая операция «или» (логическое «или», логическое сложение). Результатом является истина (значение 1), если хотя бы один операнд истинен. В противном случае возвращается 0. |
~ | Логическая операция «не» (логическое «не», логическое отрицание). Для истинного операнда возвращается значение 0, а для ложного – значение 1. |
Функции, соответствующие операциям сравнения и логическим операторам, приведены в таблице 2.4. Соответствие функций операторам и командам в системе MATLAB является одним из основных положений программирования, позволяющим одновременно использовать элементы как операторного, так и функционального программирования.
|
|
Таблица 2.4. Функции, соответствующие логическим операциям.
Операция | Функция в системе MATLAB |
Логическое «и» | and |
Логическое «или» | or |
Логическое «не» | not |
Исключающее «или» | xor |
Более наглядное представление о работе логических операторов дает таблица 2.5, где в качестве операндов используются значения 0 и 1.
Таблица 2.5. Работа логических операторов и функций.
X | y | x&y and(x,y) | x|y or(x,y) | ~x (not x) | xor(x,y) |
Приоритет операций.
Если в программе, наряду с арифметическими операциями, используются операции отношения и логические операции, то приоритетность операций, сведения приведена в таблице 2.6.
Таблица 2.6. Приоритет операций в системе MATLAB.
Приоритетность (порядковый номер в порядке убывания приоритета) | Наименование операции | Обозначение в системе MATLAB |
Арифметические операции (согласно таблице 1.5) | Согласно таблице 1.5 | |
Операции отношения | <, <=, >, >=, ==, ~= | |
Логическое «не» | ~ | |
Логическое «и» | & | |
Логическое «или» | | |
Подобно арифметическим операторам, логические также могут быть изменены по желанию программиста. Благодаря использованию круглых скобок, сначала выполняется проверка внутри них, а затем за их пределами.
|
|
Приведем ниже пример вычислений в командном окне:
>> x=2; y=4; z=8; >> (x<y)+(y<=z) ans = |
Поясним, что в силу истинности выражений x<y и y<=z (т.е. равенства единице их значений), получаем, что сумма значений этих выражений оказывается равной двум. Операции отношения имеют более низкий приоритет по сравнению с арифметическими операциями, поэтому при вычислении последнего выражения в приведенном выше примере возникла необходимость заключения в скобки операций отношения x<y и y<=z. Исключительно важно не забывать про данное правило, так как отсутствие круглых скобок может привести к изменению результата, например:
>> a=1; b=2; c=4; >> (b>a)+c ans = >> b>a+c ans = |