Глава 13
Логические операции
Краткое содержание: AND, OR, NOT
Бели мы взглянем на описанную в третьей главе форму оператора
IF: IF условие THEN то увидим, что нусловием описывается отноше-
ниями («, >, <, >■, <«, <>), связывающими два числа или строки.
Здесь можно также использовать логические операции AND (и), OR
(нли), NOT (иет).
Некоторое выражение ини, некоторое другое выражение истины,
если истинны оба этих выражения, например:
IF A*«MYES" AND Х>0 THEN PRINT X
"Xм будет напечатано только тогда, когда
A*«"YES" И Х> 0
Некоторое выражение "или", некоторое другое выражение истины,
если истинно хотя бы одно из этих выражений. "НЕ" выражений
истинно, если ложно само выражение и наоборот.
OR имеет низший приоритет, затем идет AND, за ним NOT.
Условие"<>" обратно в логическом смысле условию н«", то есть:
АО В ТО ЖЕ, ЧТО И NOT А«В
NOT А< >В ТО ЖЕ. ЧТО И А«В
тем, кто боится сложностей, следующие разделы можно опустить
1. Условия », >, <, <«, >*, <> дают числовой результат 1 для
нстниы и 0, если ложь. Например, оператор PRINT 1*2,1<>2 выведет
0 для "1«2", которое ложно и 1 для "1<>2", которое истинно.
2. В операторе "IF условие THEN... ", само условие может быть
числовым выражением, если его значение после вычисления равно 0,
то считается что это ложь, если другое значение (включая и 1), то
считается что это истина. таким образом IF оператор можно
представить:
IF условие <> 0 THEN... Операции AND, OR, NOT могут также
использоваться и в числовых выражениях:
X AND Y имеет значение х, если YA«0 и 0, если Y»0
X OR имеет значение 1, если YA*0 и х, если Y»0
NOT Y имеет значение 0, если YA«0 и 1, если Y»0 например:
10 INPUT А
20 INPUT В
30 PRINT (A AND А>В) + (В AND А<В)
40 GO ТО 10
В каждой итерации будет выводиться большее из двух чисел а или
в. Пример использования OR:
LET TOTAL PRICE-PRICE LESS TAX* (1.15 OR VS«"ZER0 RATED"
В условном выражении можно .также использовать символьные стро-
ки, ио только с операцией AND:
X* AND Y имеет значение Х*<» если YA»0, и и ", если Y«0, где
" "•- пустая строка.
Выполняйте следующую программу, которая вводит две строки, а
затем выводит их в алфавитном порядке:
10 INPUT " "TYPE IN TWO STRINGS """AS, B*
20 IF A*>B THEN LET CS-AS; LET A*«B*; LET B*«C*
30 PRINT AS; .......; (""<"" AND A*<B*) + (••"«"" AND A*«B*)
40 PRINT ........; B*
5 0 GO TO 10