Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
2.27 Mб
Скачать

4.4. Логические операторы

Операндами для них являются логические значения, результат вычисления выражения также логическое значение.

Basic C

not Не, логическое отрицание !

and, AndAlso И, логическое умножение, конъюнкция &&

or, OrElse Или, логическое сложение, дизъюнкция ||

xor исключающее Или (не эквивалентность) !=

eqv эквивалентность ==

imp импликация (включение) нет

Замечание 1. В нашей версии языка Basic операторы eqv и imp не поддерживаются. Новые операторы AndAlso и OrElse отличаются от операторов and и or соответственно тем, что, если значение результата уже определено значением операнда 1, то значение операнда 2 не вычисляется, для последних значение операнда 2 вычисляется всегда. То есть, если А в выражении А AndAlso В принимает значение false, то значение В не вычисляется, и наоборот, если А в выражении А OrElse В принимает значение true, то значение В не вычисляется. В языке C операторы && и || работают, как операторы AndAlso и OrElse соответственно. Эти свойства операторов позволяют программировать выражения, в которых вычисления 2-го операнда приводит к ошибке.

Пример.

i<n AndAlso x(i)<>0

Если массив x содержит n-1 элемент, то при i=n значение x(n) лежит за пределами отведенной под массив x памяти. В этом случае использовать оператор and для вычисления выражения нельзя!

Замечание 2. Операторы != и == имеют равный приоритет. Они имеют как бы двойное назначение: если операнды – арифметические выражения, то они трактуются как операторы сравнения, если операнды – логические выражения, то – как логические операторы.

Результат выполнения каждого оператора пояснен в таблице. Здесь A и B – выражения, которые могут принимать одно из двух значений: true|false. Любое выражение, не равное 0, трактуется как имеющее значение true, равное 0 – как false.

A

B

Not A

A And B

A Or B

A Xor B

A Eqv B

A Imp B

false

false

true

false

false

false

true

true

false

true

true

false

true

true

false

true

true

false

false

false

true

true

false

false

true

true

false

true

true

false

true

true

Примеры. Верхнее выражение – на языке Basic, нижнее – на языке C.

1 ) условие попадания т.M(x,y) 2)условие непопадания т.M(x,y) в 1 и 3 квадрант

в треугольник круга радиуса 1 с центром в начале координат

y y

x>0 and y>0 and y<1-x 1 not(x*x+y*y<1 and x*y>0)

1 x>0 && y>0 && y<1-x !(x*x+y*y<1 && x*y>0)

F 1

T 0 x

x F

0 1

3 )условие попадания т.M(x,y) в заштрихованную область

x*x+y*y<=1 and x<=0 and y<=0 or y=x and x>0

x*x+y*y<=1 && x<=0 && y<=0 || y==x && x>0

4)условие кратности целых значений

m mod n = 0

m%n == 0