Логические операции
Логические операции применимы только в логических выражениях и служат для составления сложных условий, требующих более одной операции отношения. В Паскале определены логические операции, описанные в табл. 7.1.
Табл. 7.1. Логические операции языка Паскаль
Операция NOT применима к одному логическому выражению (является унарной). Ее результат равен true, если выражение ложно и наоборот. Например, выражение NOT (sin(x)>1) всегда даст значение true. Операция AND связывает не менее двух логических выражения (является бинарной). Ее результат равен true, если все выражения истинны или false, если хотя бы одно из выражений ложно. В качестве примера распишем выражение . Т. к. операции принадлежности в Паскале нет, используем операцию AND и операции отношения: (x>=a) and (x<=b). Математическое выражение a,b,c>0 (одновременно) будет иметь вид (a>0) and (b>0) and (c>0). Операция OR также связывает не менее двух логических выражений. Ее результат равен true, если хотя бы одно выражение истинно и false, если все выражения ложны. Распишем выражение . На Паскале оно будет иметь вид(x<a) or (x>b). Другой способ связан с применением операции NOT: not ((x>=a) and (x<=b)). Условие "хотя бы одно из значений a,b,c положительно" может быть записано в виде (a>0) or (b>0) or (c>0). Условие "только одно из значений a,b,c положительно" потребует объединения возможностей операций AND и OR: (a>0) and (b<=0) and (c<=0) or (a<=0) and (b>0) and (c<=0) or (a<=0) and (b<=0) and (c>0). Операция XOR, в отличие от OR, возвращает значение "ложь" (false) и в том случае, когда все связанные ей логические выражения истинны. Чтобы лучше уяснить это отличие, составим так называемую таблицу истинности двух логических операций (табл. 7.2). Для краткости значение false обозначим нулем, а true -- единицей. Для двух логических аргументов возможно всего 4 комбинации значений 0 и 1.
Табл. 7.2. Таблица истинности операций OR и XOR
В качестве примера использования операции XOR запишем условие "только одно из значений a,b положительно": (a>0) xor (b>0). К сожалению, записать условие "только одно из значений a,b,c положительно" в напрашивающемся виде (a>0) xor (b>0) xor (c>0) нельзя -- результат этого выражения будет равен true и в случае, когда все три значения положительны. Связано это с тем, что при последовательном расчете логических выражений слева направо (1 xor 1) xor 1 будет равно 0 xor 1 = 1. С помощью xor удобно организовывать различного рода переключатели, которые последовательно должны принимать одно из двух состояний: x:= x xor true; writeln ('x=', x); x:= x xor true; writeln ('x=', x); Независимо от начального значения логической переменной x, второе выведенное на экран значение будет логическим отрицанием первого. В реальной практике конструкции подобные x:= x xor true; не дублируются в коде многократно, а применяются внутри цикла (см. гл. 9). Приоритет логических операций следующий: самая старшая операция -- not, затем and, следующие по приоритету -- or и xor (равноправны между собой), самый низкий приоритет имеют операции отношения. Последнее служит причиной того, что в составных условиях отдельные отношения необходимо заключать в круглые скобки, как и сделано во всех примерах раздела.
Читайте также: I. Психологические и поведенческие техники, подготавливающие к увеличению продолжительности жизни. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|