Логические операции And, Or, Not, Xor в Pascal.
Над переменными логического типа можно производить логические операции. В языке программирования Pascal существуют следующие логические операции : And – логическое умножение, Or – логическое сложение, Not – логическое отрицание, Xor – исключающее или.
program number18; uses crt; var X:integer; BOL, MEN, REZ: boolean; begin clrscr; X:=4; BOL:=X>3; MEN:=XСтрока №8. Переменной «BOL» присваиваем значение «X>3», и оно будет истиной т.к. 4>3.
Строка №9. Переменной «MEN» присваиваем значение «X
В строке №10 выводим сообщение на экран. У нас выведется TRUE.
В строке №11 выводим сообщение на экран. У нас выведется FALSE.
Строка №12. Переменной «REZ» мы присваиваем переменные «BOL» и «MEN». Между этими переменными стоит «and» (и). Это операция, которая называется логическое умножение (конъюнкция). Согласно законам булевской алгебры, комбинация 2-х логических переменных, связанных между собой союзом «and» (и) является истиной только в том случае, если обе переменные истинны. В нашем случае переменная «BOL» – истина, а переменная «MEN» – ложь, значит общий результат «REZ:=BOL and MEN» будет ложным.
Строка №14. Переменной «REZ» мы присваиваем переменные «BOL» и «MEN». Между этими переменными стоит «or» (или). Это операция, которая называется логическое сложение (дизъюнкция). Согласно законам булевской алгебры, комбинация 2-х логических переменных, связанных между собой союзом «or» (или) является ложным только в том случае, если обе переменные ложны. В нашем случае переменная «MEN» – ложь, а переменная «BOL» – истина, значит общий результат «REZ:=BOL or MEN» будет истинным.
Строка №16. Переменной «REZ» мы присваиваем переменную «BOL». Перед ней стоит «not» (не). Это операция, которая называется логическое отрицание (инверсия). Согласно законам булевской алгебры, результат операции будет противоположен той переменной, над которой эта операция производится. В нашем случае переменная «BOL» – истина, значит «REZ:=not BOL» будет ложным.
Строка №18. Переменной «REZ» мы присваиваем переменные «BOL» и «MEN». Между этими переменными стоит «xor» (либо). Это операция, которая называется исключающее или. Согласно законам булевской алгебры, комбинация 2-х логических переменных, связанных между собой союзом «xor» (либо) является истинным только в том случае, если обе переменные разные (т.е. одна истинна, другая ложна). В нашем случае переменная «MEN» – ложь, а переменная «BOL» – истина. Они разные, значит общий результат «REZ:=BOL xor MEN» будет истинным.
Урок на тему «Логические операции. Дизъюнкция»
Следующая логическая операция, которую мы рассмотрим после конъюнкции — дизъюнкция. Часто можно встретить другие названия этой операции — логическое сложение, логическое ИЛИ или просто ИЛИ.
В естественном языке дизъюнкция заменяется союзом ИЛИ.
Дизъюнкция, как и конъюнкция — бинарная операция, т. е. для нее необходимо два операнда.
Для обозначения дизъюнкции применяют различные символы. Это может быть знаки ||, OR, +, . Но чаще всего для обозначения дизъюнкции используют символ
Рассмотрим пример. Пусть есть два высказывания: A = «Париж — столица Франции» и B = «Сегодня пасмурно«. Тогда дизъюнкция этих высказываний будет выглядеть так «Париж — столица Франции ИЛИ сегодня пасмурно «, а обозначаться так:
Так как на клавиатуре нет символа дизъюнкция, его можно набрать из бэкслэша ( \ ) и слэша ( / ) — получится \/ — похоже на обозначение дизъюнкции.
Таблица истинности для дизъюнкции выглядит так:
| A | B | A \/ B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Запомнить таблицу довольно просто — дизъюнкция ложна только в одном случае — когда оба исходных высказывания ложны. Так же можно запомнить таблицу истинности для дизъюнкции, если представить ее электрический аналог — два параллельно включенных выключателя:
Электрический аналог дизъюнкции
По схеме сразу понятно, что лампочка будет гореть когда замкнуты оба выключателя, либо хотя бы один из них — аналогично дизъюнкции.
Автор: Александр Чернышов
Условная дизъюнкция
![]()
Условная дизъюнкция — тернарная (имеющая 3 операнда) логическая операция, введенная Алонзо Чёрчем [1] . Результат условной дизъюнкции аналогичен результату более общей тернарной условной операции ( if o1 then o2 else o3 ), которая в том или ином виде используется в большинстве языков программирования как один из способов реализации ветвления в алгоритмах. Для операндов p, q и r, которые определяют истинность суждения, значение условной дизъюнкции [p, q, r] определяется по формуле:
[ p , q , r ] ↔ ( q → p ) ∧ ( ¬ q → r ) .
Quick facts: Условная дизъюнкция, Определение, Таблица ист. ▼| Условная дизъюнкция | |
|---|---|
| Диаграмма Венна | |
| Определение | ( q → p ) ∧ ( ¬ q → r ) |
| Таблица истинности | ( 01000111 ) |
| Нормальные формы | |
| Дизъюнктивная | p ¯ q ¯ r + p q ¯ r + p q r ¯ + p q r ><\overline >r+p<\overline>r+pq<\overline |
| Конъюнктивная | ( q ¯ + p ) ( q + r ) >+p)(q+r)> |
| Полином Жегалкина | p ⊕ q r ⊕ r |
| Принадлежность предполным классам | |
| Сохраняет 0 | Да |
| Сохраняет 1 | Да |
| Монотонна | Нет |
| Линейна | Нет |
| Самодвойственна | Нет |
Другими словами, запись [p, q, r] эквивалентна записи: «Если q, то p, иначе r», которую можно переписать как «p или r, в зависимости от q или не q». Таким образом, для любых значений p, q и r значение [p, q, r] равно p, если q истинно, и равно r в противном случае.
В сочетании с константами, обозначающими каждое истинное значение, условная дизъюнкция является функционально полной для классической логики. [2] Её таблица истинности выглядит следующим образом:
Table info: a ▼| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
Помимо условной дизъюнкции существуют и другие функционально полные тернарные операции.
Oops something went wrong:
Дизъюнкция
Дизъю́нкция — логическая операция, по своему применению максимально приближенная к союзу "или" в смысле "или то, или это, или оба сразу". Синонимы: логи́ческое "ИЛИ", включа́ющее "ИЛИ", логи́ческое сложе́ние, иногда просто "ИЛИ".
Это бинарная инфиксная операция, то есть, она имеет два операнда и ставится между ними. Чаще всего встречаются следующие варианты записи:
a || b , a | b , a ∨ b , a + b , a OR b >~b> .
- 1 Булева алгебра
- 2 Многозначная логика
- 3 Классическая логика
- 4 Программирование
- 5 Связь с естественным языком
Булева алгебра [ ]
В булевой алгебре дизъюнкция - это функция двух переменных (они же - операнды операции). Переменные могут принимать значения из множества < 0 , 1 >> . Результат также принадлежит множеству < 0 , 1 >> . Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений 0 , 1 может использоваться любая другая пара подходящих символов, например f a l s e , t r u e или F , T или "ложь", "истина".
Правило: результат равен 0 , если оба операнда равны 0 ; во всех остальных случаях результат равен 1 .
Многозначная логика [ ]
В многозначной логике операция дизъюнкции может определяться другими способами. Чаще всего применяется схема: a ∨ b = m a x ( a , b ) , где a , b ∈ [ 0 , 1 ] . Возможны и другие варианты. Как правило, стараются сохранить совместимость с булевой алгеброй для значений операндов 0 , 1 .
Классическая логика [ ]
В классическом исчислении высказываний свойства дизъюнкции определяются с помощью a → a ∨ b
b → a ∨ b
( a → c ) → ( ( b → c ) → ( ( a ∨ b ) → c ) )
С помощью этих аксиом можно доказать другие формулы, содержащие операцию дизъюнкции. Обратите внимание, что в классическом исчислении высказываний не происходит вычисления результата по значениям операндов (как в булевой алгебре), а требуется доказать формулу как единое целое на основе аксиом и правил вывода.
Программирование [ ]
В компьютерных языках используется два основных варианта дизъюнкции: логическое "ИЛИ" и побитовое "ИЛИ". Например, в языках C/C++ логическое "ИЛИ" обозначается символом "||", а побитовое - символом "|".
Логическое "ИЛИ" применяется в операторах условного перехода или в аналогичых случаях, когда требуется получение результата f a l s e или t r u e . Например:
if (a || b) /* какие-то действия */ >;
Результат будет равен f a l s e , если оба операнда равны f a l s e или 0 . В любом другом случае результат будет равен t r u e .
При этом применяется стандартное соглашение: если значение левого операнда равно t r u e , то значение правого операнда не вычисляется (вместо b может стоять сложная формула). Такое соглашение ускоряет исполнение программы и служит полезным приемом в некоторых случаях. Например, если левый операнд проверяет необходимость вычисления правого операнда:
if (a == NULL || a->x == 0) /* какие-то действия */ >;
В этом примере, благодаря проверке в левом операнде, в правом операнде никогда не произойдет разыменования нулевого указателя.
Побитовое "ИЛИ" выполняет обычную операцию булевой алгебры для всех битов левого и правого операнда попарно. Например,
| если | |
| a = | 01100101 2 > |
| b = | 00101001 2 > |
| то | |
| b = | 01101101 2 > |
Связь с естественным языком [ ]
Часто указывают на сходство между дизъюнкцией и союзом "или" в естественном языке, когда он употребляется в смысле "или то, или то, или оба сразу". В юридических документах часто пишут: "и/или", подразумевая "или то, или то, или оба сразу". Составное утверждение "A и/или B" считается ложным, когда ложны оба утверждения A и B, в противном случае составное утверждение истинно. Это в точности соответствует определению дизъюнкции в булевой алгебре, если "истину" обозначать как 1 , а "ложь" как 0 .
Неоднозначность естественного языка заключается в том, что союз "или" используется в двух значениях: то для обозначения дизъюнкции, то для другой операции - .
