Логические операции (логические связки) и функции

Операндами логических операторов в простейшем случае являются скаляры (в общем случае массивы). Тогда логические операции выполняются по описанным выше правилам преобразования числовых и логических значений. Логические операторы перечислены в таблице 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 =

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: