Запись логических выражений
Определение двух аргументных часто используемых логических операций.
А | B | A®B | A V B | A&B | AÅB | A≡B | A│B |
Логические операции языка ПАСКАЛЬ.
А | ┐А | & | V | Å | ┐ – not – не & – and – и V – or – или Å – xor | |||||||||
Одноаргументные выражения и их таблицы истинности
А | ┐┐A | AÅA | A→A | AÅ ┐A | A→┐A | A→1 | A→0 |
А | A&A | A&ùA | AVA | AVùA | A&0 | AV0 | A&1 | AV1 |
Отсюда следует, что
A=AVA=A&A=A&1=AV0=┐┐А=AÅ0
┐A= A→┐A= A→0= AÅ1
1=AV1=AVùA= A→1
0=A&ùA=A&0.
Двух аргументные выражения и их таблицы истинности
А | B | ùAVB =A®B | A&ùB | ùA&ùB=ù(AVB) | ùAVùB =ù(A&B) =A|B |
А | B | A&BVùA&ùB = A≡B | ùA&BVA&ùB = A≠B = AÅB |
А | B | A&BVùB | AVùB |
Трех аргументные выражения и их таблицы истинности
А | B | С | A&BVA&C = A&(BVC) | (AVB)&(AVC) = AVB&C | ||
Основные законы алгебры логики
Закон | Для ИЛИ | Для И |
Переместительный | x\/y=y\/x | x▪y=y▪x |
Сочетательный | x\/(y\/z)=(x\/y)\/z | x▪(y▪z)=(x▪y)▪z |
Распределительный | x▪(y\/z)=x▪y\/x▪z | x\/(y▪z)=(x\/y)▪(x\/z) |
Правила де Моргана | (x\/y)=x ▪y | (x▪y)= x\/y |
Идемпотенции | x\/x=x | x▪x=x |
Поглощения | x\/(x▪y)=x | x▪(x\/y) |
Склеивания | (x▪y)\/( x▪y)=y | (x\/y)▪( x\/y)=y |
Операции переменной с инверсией | x\/x=1 | x▪x=0 |
Операция с константами | x\/0=x, x\/1=1 | x▪0=0, x▪1=x |
Двойного отрицания | x=x |
ДНФ. Построение совершенной дизъюнктивно нормальной формы по таблице истинности (СДНФ).
А | B | С | F(A,B,C)= | A&B&C V A&B&C V A&B&C - СДНФ |
A&B&C V | ||||
A&B&C V | ||||
A&B&C |
Проведем преобразования СДНФ данной функции F(A,B,C).
A&B&C V A&B&C V A&B&C = A&B&C V A&B&C V A&B&C V A&B&C = (AVA)&B&C V A&B&(C V C) = 1&B&C V A&B&1 = B&C V A&B = B&(C V A)
F(A,B,C)= B&(C V A)
Примеры: запись логических выражений на языке ПАСКАЛЬ
А&В ® А and В ; ù А V B ® not А or В ; A Å B ® A xor B
Условия могут комбинироваться.1<a<3 выполняется, когда а >1 и а <3.
Можно использовать функции all() и any() на списках логических значений.
Например:
a = [True, True, True, False]if any(a): print(‘Есть True’)if all(a): print(‘Все True’)if any(a) and not all(a): print(‘Есть True и False’)Упражнения.
1. Трех аргументные функции F(a,b,c) заданы в виде таблиицы исстинности.
a | b | c | F1 | F2 | F3 | Написать формулу, нарисовать контактную схему и Эйлеровы множества для этих функций. |
2. Написать таблицу истинности и контактную схему для заштрихованной области, ДНФ–формулу, минимизировать и нарисовать контактную схему.
а) б) в) г) д)
3. Написать логическую формулу, принимающую значение true для точек, принадлежащих заштрихованной области и false для точек, не принадлежащих заштрихованной области.
4. Написать логическую формулу, принимающую значение true для точек, принадлежащих заштрихованной области, и значение false для точек, не принадлежащих заштрихованной области.
а)
б)
в) г) д)
5. Записать следующие логические выражения на языке ПАСКАЛЬ и построить их таблицы истинности:
А) ùA & B Б)A & ùB
В) ùA V ùB Г)A V ùB
Д) ù (A & B) Е) ù (ùA & ùB)
Ж) (A & B) V (ùA & ùB) З) ù (A & B) V C & ù B
И) ù (A & B) V ù C & ù B К) (ù A & B) V (A & ù B)
Л) В Å B Å B М) A Å B Å B
Н) A ® B ® B О) ùA ® (ùB & C V (A ® B))
П) ù(A ® ùB) & C V (A ® B) Р) ù(A ® ù(B & C) V (A ® B)
6. Какие из приведенных записей ошибочны и почему
а) NOT A; б) NOT_ABC; в) NOT NOT B; г) C NOT V;
д) A NOT OR B; е) NOT A XOR B; ж) A XOR B ANDC.
7. По заданным булевским выражениям на языке ПАСКАЛЬ написать соответствующие выражения математической логики:
А) not not A and (B xor C) Б) A or true and ùB
В) not A and not B or A and B Г) not (A or not (B or not C))
8. Чему равно значение выражения
А) (A<B) AND (C<=D) AND not E, где A=2, B=3, C=5, D=4, E=FALSE
Б) A DIV TRUNC(B/(2*C)), если A=9, B=26, C=3
В) (X*9)-A, где X=3.2, A=8.7
Г) B OR FALSE, где B=TRUE
Д) X MOD 10 + 1, если X=11
9. С помощью эквивалентных преобразований показать, что
B V A&ùB = B V A.
10. Какие из следущих выражений равны между собой?
А) A|A; A|A|A; A|A|A|A; A|A|A|A|A; A|B; B|A.
Б) A|B|C; A|(B|C); A|A|B|B|C|C.
В) (A ® B) ® С; A ® (B ® С); A ® B; B ® A;
11. Верны ли следующие равенства?
А) (A&ùB V C)&(ùA V B) = B V A ;
Б) (A V B V C)&(ùA V B) = B V A
12. Докажите эквивалентность
А) A&B V A&С = A&(B V C) ;
Б) (A V B)&(A V C) = A V B&C
B) (A → B)&(A → C) = A → B&C
Г) (A → B) V (A → C) = A → (B V C)
13. Написать следующие выражения на языке ПАСКАЛЬ, которые для точек с координатами (Х,Ү), находящихся в заштрихованной области,[1] принимают значение true, а за пределами этой области принимают значение false.
А) | Б) | В) | ||||||||
Г) Д)
Е) Ж)
14. Для каждого из заданных множеств А и В написать логическое выражение на языке ПАСКАЛЬ, принимающее для элемента Х принимает значение 1, тогда и только тогда, когда Х находится в заштрихованной области А[2], иначе принимает значение 0.
15. Написать логические выражения, принимающие значение true тогда и только тогда, когда точка (Х,Ү) находится в заштрихованной на рисунке области
16. Написать логические выражения, принимающие значение true, когда точка (Х,Ү) находится в заштрихованной на рисунке области, где окружность радиуса 1 и кривая соответствует Ү=X2.
1)
2)
3)
4)
17. Записать следующие высказывания в виде логических выражений.
А) Если А верно, то В верно;
В) Если из истинности А следует истинность В, то и С истинно
18. Записать функцию из трех переменных F(x1,x2,x3), которое принимает значение 1(истина) в следующих случаях:
А) Если среди значений аргументов есть значение 0(ложь);
Б) Если среди значений аргументов есть значение 1(истина);
В) Если среди значений аргументов значение 1(истина) больше;
Г) Если среди значений аргументов значение 0(ложь) больше;
Д) Если все значения аргументов 0(ложь);
Е) Если все значения аргументов 1(истина);
19. Написать логические выражения для следующих таблиц истинности.
A | B | С | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 |
20. Написать логические выражения двоичного сумматора на языке ПАСКАЛЬ.
C=A+B, где i-тый разряд суммы определяется следующей таблицей
Ai | Bi | Pi | Ci | Pi+1 |
21. Через таблицы истинности определить значения А и В после выполнения следующих трех операторов: A:=АÅB; B:=АÅB; A:=АÅB ?
Условвный оператор
По аналогии с языками программирования Паскаль, С++ можно использовать конструкции похожие на условный оператор или использовать конструкции, используемые только в PYTHON
if | If-else | If-elif | If-elif-else |
if <условие> : <инструкция> | if <условие> : <инструкция1> else : <инструкция2> | ||
if <условие1> : <инструкция1> else : if <условие2> : <инструкция2> | if <условие1> : <инструкция1> elif <условие2> : <инструкция2> | ||
if <условие1> : <инструкция1> else : if <условие2> : <инструкция2> else : <инструкция3> | if <условие1> : <инструкция1> elif <условие2> : <инструкция2> else : <инструкция3> |
Для вычисления c=max(a,b) можно применить следующие фрагменты программ:
if a>b then c:=a else c:=b; // – на языке Pascal
if (a>b) c=a; else c=b; // – на языке С++
Данная конструкция на языке Python может быть записана следующим образом:
if a>b : c=a
else : c=b
В виде условного выражения можно записать следующим образом:
с= (a if a>b else b)
Задача 1. Во входной строке записаны три натуральных числа через пробел. Каждое из чисел не превышает 10100. Нужно вывести максимальное целое число.
По аналогии с языком Паскаль было бы следующее решение[3]:
x,y,z=map(int,input().split()
if x>=y and y>=z : print(x)
elif y>=z : print(y)
else : print(z)
Используя условные выражения можно написать следующую программу:
x,y,z=map(int,input().split()
print(x if x>=y and y>=z else y if y>=z else z)
Используя потоковые функции, можно написать следующую программу:
print(max(map(int,input().split())))
Ввод-вывод
Дата добавления: 2022-04-12; просмотров: 142;