Определение двух аргументных часто используемых логических операций – ике аргументлы еш кулланылган мантыйк гамәлләр.
А | 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 | ||
ДНФ. Построение совершенной дизъюнктивно нормальной формы по таблице истинности (СДНФ).
А | 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 & 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)
2. Какие из приведенных записей ошибочны и почему
а) NOT A; б) NOT_ABC; в) NOT NOT B; г) C NOT V;
д) A NOT OR B; е) NOT A XOR B; ж) A XOR B ANDC.
3. По заданным булевским выражениям на языке ПАСКАЛЬ написать соответствующие выражения математической логики:
А) 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))
4. Чему равно значение выражения
А) (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
5. С помощью эквивалентных преобразований показать, что
B V A&ùB = B V A.
6. Какие из следущих выражений равны между собой?
А) 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;
7. Верны ли следующие равенства?
А) (A&ùB V C)&(ùA V B) = B V A;
Б) (A V B V C)&(ùA V B) = B V A
8. Написать следующие выражения на языке ПАСКАЛЬ, которые для точек с координатами (Х,Ү), находящихся в заштрихованной области,[1] принимают значение true, а за пределами принимают значение false.
А) | Б) | В) | ||||||||
Г) Д)
Е) Ж)
9. Для заданных множеств А и В написать следующие логическое выражения на языке ПАСКАЛЬ, которое для эелемента Х принимает значение 1, если она находится в заштрихованной области А[2], иначе принимает значение 0.
10. Написать логические выражения, принимающие значение true, когда точка (Х,Ү) находится в заштрихованной на рисунке области
11. Написать логические выражения, принимающие значение true, когда точка (Х,Ү) находится в заштрихованной на рисунке области, где окружность радиуса 1 и кривая соответствует Ү=X2.
1)
2)
3)
4)
12. Записать следующие высказывания в виде логических выражений.
А) Если А верно, то В верно;
В) Если из истинности А следует истинность В, то и С истинно
13. Записать функцию из трех переменных F(x1,x2,x3), которое принимает значение 1(истина) в следующих случаях:
А) Если среди значений аргументов есть значение 0(ложь);
Б) Если среди значений аргументов есть значение 1(истина);
В) Если среди значений аргументов значение 1(истина) больше;
Г) Если среди значений аргументов значение 0(ложь) больше;
Д) Если все значения аргументов 0(ложь);
Е) Если все значения аргументов 1(истина);
14. Написать логические выражения для следующих таблиц истинности.
A | B | С | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 |
15. Написать логические выражения двоичного сумматора на языке ПАСКАЛЬ.
|
|
C=A+B, где i-тый разряд суммы определяется следующей таблицей
Ai | Bi | Pi | Ci | Pi+1 |
16. Через таблицы истинности определить значения А и В после выполнения следующих трех операторов: 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)
Задача. Во входной строке записаны три натуральных числа через пробел. Каждое из чисел не превышает 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())))
Ввод-вывод