Язык программирования Форт



         

Глава 7. Операторы сравнения и ветвления - часть 4


Прежде чем продолжить рассмотрение применения операторов сравнения, познакомимся с логическими операторами AND, OR и XOR. Они позволяют комбинировать несколько условий. Пусть, например, вы хотите выполнить какую-то операцию только в том случае, если для переменных А, В и С выполняются условия А=С и В=С. А @ С @ = В @ С @ = AND IF ...

Если обе пары переменных (первая и вторая) равны, то оператор AND, обнаружив в стеке 1 1 (или -1 -1), возвратит в стек 1 (или -1). Если одна или обе пары не равны, в стеке будет по крайней мере один 0, тогда оператор AND возвратит 0. Аналогично используется логический оператор OR. Допустим, что вы хотите выполнить какое-то действие, если или А=С, или В=С, или А=В=C. Это можно сделать следующим образом: A @ C @ = B @ C @ = OR IF ...

Если либо одно, либо другое равенство (либо оба) истинны, тогда по крайней мере одно условие истинно, поэтому оператор OR обнаружит в стеке хотя бы одну 1 (или -1, т.е. число со всеми разрядами, равными 1) и выдаст в стек значение истина. Если оба равенства ложны, то оператор OR, увидев в стеке два нуля, возвратит в стек значение ложь (нуль). Наконец, пусть необходимо, чтобы какое-либо действие выполнялось только в том случае, если одно равенство выполняется, а другое нет. Это можно сделать так : A @ C @ = B @ C @ = XOR IF ...

Оператор XOR возвращает в стек значение истина, если в стеке есть флаги истина и ложь (разряды в одном числе установлены в 1, а в другом не установлены). Комбинируя операторы сравнения с логическими операторами AND, OR и XOR, можно выполнять всевозможные комбинации сравнений. Если вы знакомы с булевой алгеброй и диаграммами Венна, то представляете, как изображать на них всевозможные сочетания условий для облегчения реализации большого разнообразия условного исполнения программ в комбинации с конструкцией IF...ELSE...THEN.

Упражнения

1. Пусть в версии языка, с которой вы работаете, есть только один оператор сравнения . Определите 0=. Определите =. Определите <>. Определите 0-.


Содержание  Назад  Вперед