ramainen писал(а):Оо, я еще не знаю, что за xor(исключающие или)
Булевы операции OR, AND, NOT рассмотрены в 13-й главе. Кстати, некоторых читателей почему-то затрудняла эта 13-я «песня», номер тому виной, что ли? И это при том, что там сознательно не сказано об операции XOR. Во-первых, она не так часто употребляется в булевых выражениях, а во-вторых – не хотелось усложнять повествование. Но при обработке битовых массивов она весьма полезна, и потому в 48-й главе упомянута.
Пусть объявлены три булевых переменных:
- Код: Выделить всё
Var A, B, C : Boolean;
Тогда выражение:
- Код: Выделить всё
A:= B xor C;
Равносильно выражению:
- Код: Выделить всё
A:= B <> C;
Иначе говоря, операция XOR даёт TRUE, если операнды не совпадают.
То же самое эквивалентно следующему громоздкому выражению (скобки тут необязательны):
- Код: Выделить всё
A:= (B and not C) or (not B and C);
В этой связи для лучшего понимания темы предлагаю следующее упражнение. Написать эквивалентные выражения (и программу для проверки), пользуясь только операциями OR, AND, NOT для следующих выражений:
- Код: Выделить всё
1) A:= B = C;
2) A:= B <> C;
3) A:= B > C;
4) A:= B >= C;
5) A:= B < C;
6) A:= B <= C;
Здесь все переменные булевы.
Тут надо учесть, что TRUE > FALSE.