Логические операции
3 мин
Булевы операции
«Луна - спутник Земли» - это высказывание, о котором можно сказать, правда это или нет, т. е. истинно оно или ложно. Еще одно высказывание: «Земля вращается» - оно тоже истинно..
Объединив оба высказывания союзом «И», получим: «Луна - спутник Земли, И Земля вращается». Об этом высказывании тоже можно сказать, истинно оно или ложно. Союз «И» означает, что объединенное высказывание будет истинно, когда обе его части истинны. «Луна - спутник Земли, И Земля вращается» - истинно. Значит:
Истина И Истина = Истина
«Земля плоская» - это ложное высказывание. Если скажем «Луна - спутник Земли, и Земля плоская», то получим ложное высказывание.
Истина И Ложь = Ложь
НЕ «Земля плоска» - это уже истинное высказывание.
НЕ Ложь = Истина
Объединим высказывания союзом «ИЛИ»: «Луна - спутник Земли ИЛИ Земля вращается» - высказывание истинно.
Истина ИЛИ Истина = Истина
«Луна - спутник Земли ИЛИ Земля плоская» - истинно тогда, когда хотя бы одно высказывание истинно.
Истина ИЛИ Ложь = Истина
При этом неважно, какая последовательность высказывание при союзах И, ИЛИ, результат останется прежним.
Объединенное высказывание может состоять из большого количества высказываний. Для упрощения процесса вычислений, будем считать, что:
- Истина - 1
- Ложь - 0
- И - логическое умножение (конъюнкция)
- Или - логическое сложение (дизъюнкция)
- Не - отрицание (обратное значение)
Логическое умножение и сложение выполняется по математическим правилам, но результат не превышает 1.
«Не» меняет значение на обратное.
Порядок почти по математическим правилам, только добавляется «Не», т. е.
- Сначала выражения в скобках, затем
- Отрицание («Не»),
- Логическое умножение («И»),
- Логическое сложение («Или»).
Логическое выражение | Альтернативная запись |
---|---|
Истина И Истина = Истина | 1 * 1 = 1 |
Истина И Ложь = Ложь | 1 * 0 = 0 |
Ложь И Истина = Ложь | 0 * 1 = 0 |
Ложь И Ложь = Ложь | 0 * 0 = 0 |
Истина Или Истина = Истина | 1 + 1 = 1 |
Истина Или Ложь = Истина | 1 + 0 = 1 |
Ложь Или Истина = Истина | 0 + 1 = 1 |
Ложь Или Ложь = Ложь | 0 + 0 = 0 |
Не Истина | Не 1 = 0 |
Не Ложь | Не 0 = 1 |
Теперь можем решать логические выражения любой сложности, например: нужно выяснить истинно или ложно высказывание:
Не (Истина Или Ложь) И Истина
Не (1 + 0) * 1 = Не 1 * 1 = 0 * 1 = 0
- первое действие в скобках (1 + 0) = 1
- второе действие отрицание Не 1 = 0
- третье логическое умножение 0 * 1 = 0
Выражение ложно.
Операции сравнения
Во встроенном языке определены операции сравнения.
Операция | Выражение операции |
---|---|
Больше | Операнд1 > Операнд2 |
Больше или равно | Операнд1 >= Операнд2 |
Равно | Операнд1 = Операнд2 |
Меньше | Операнд1 < Операнд2 |
Меньше или равно | Операнд1 <= Операнд2 |
Не равно | Операнд1 <> Операнд2 |
Результат операции сравнения - либо истина, либо ложь.
5 > 3 - Истина
Булевы операции и операции сравнения используют совместно.
5 > 3 И 5 <= 5 - Истина И Истина = Истина
Операции сравнения определены для разных типов.
Операция | Выражение операции |
---|---|
Больше | Число > Число Число > Булево Строка > Строка Дата > Дата |
Больше или равно | Число >= Число Число >= Булево Строка >= Строка Дата >= Дата |
Меньше | Число < Число Число < Булево Строка < Строка Дата < Дата |
Меньше или равно | Число <= Число Число <= Булево Строка <= Строка Дата <= Дата |
Равно | Любой тип = Любой тип |
Не равно | Либой тип <> Либой тип |
- Строки сравниваются посимвольно по числам кодов,
- Булево преобразуется к типу число: Истина - 1, Ложь - 0,
- Дата по оси времени.
Результат логического выражения может быть присвоен переменной, например:
Результат = 2 > 1;
Сообщить(Результат); // Да
Результат = 1 = 1;
Сообщить(Результат); // Да