Задача 2. Даны три произвольных числа А, В, С. Составить программу, которая анализирует их и, если сумма первых двух чисел не меньше третьего, а второе число больше первого – выдает сообщение ВЕРНО. Если хотя бы одно из условий не выполняется – то сообщение НЕВЕРНО. Иными словами
“ВЕРНО” если А+В>=C и В>A
“НЕВЕРНО” – в противном случае
На рис. 5 и 6 представлено решение (блок-схема и программа), полностью адекватное условию. Однако в некоторых случаях решение удобно искать, преобразовав условие на обратное, т.е.
“НЕВЕРНО” если А+В<C или В<=A
“ВЕРНО” – в противном случае
Это позволяет иногда упростить программирование (рис. 7).
При необходимости выполнять анализ одновременно нескольких условий удобно воспользоваться логическими функциями. Аргументами логических функций являются высказывания, в отношении которых всегда можно сказать, истинны они или ложны. К таким высказываниям относятся математические операции сравнения – равно, больше, меньше и т.д. Так, например, выражение вида Х=Y всегда может быть только истинным или только ложным. Рассмотрим важнейшие логические функции (см. таблицу ниже).
Функция одного аргумента НЕ истинна тогда и только тогда, когда ложен ее аргумент. То есть значение функции всегда обратно аргументу. Поведение функции полностью описывает таблица. В операторе IF функция И обозначается словом NOT. Например, следующие два оператора полностью идентичны
IF X<10 THEN Y=5 IF NOT X>=10 THEN Y=5
Аргумент
Функция
НЕ
Первый
аргумент
Второй
аргумент
Функция
И
Функция
ИЛИ
Ложь
Истина
Ложь
Ложь
Ложь
Ложь
Истина
Ложь
Ложь
Истина
Ложь
Истина
Истина
Ложь
Ложь
Истина
Истина
Истина
Истина
Истина
Из функций двух аргументов для нас важны функции И и ИЛИ. Функция И истинна тогда и только тогда, когда истинны все ее аргументы (в программах обозначается словом AND). Функция ИЛИ (OR) истинна тогда, когда истинен хотя бы один из ее аргументов. Если нет скобок, функции вычисляются в такой последовательности: НЕ, И, ИЛИ.
В качестве примера снова рассмотрим задачу 2 в исходной формулировке. Теперь ее решение сводится практически к одной строке и приведено ниже