Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Запись логических выражений



Определение двух аргументных часто используемых логических операций – ике аргументлы еш кулланылган мантыйк гамәлләр.

А B A®B A V B A&B AÅB A≡B A│B
0 0 1 0 0 0 1 1
0 1 1 1 0 1 0 1
1 0 0 1 0 1 0 1
1 1 1 1 1 0 1 0

Логические операции языка ПАСКАЛЬ.

А ┐А   & 0 1   V 0 1   Å 0 1

┐ – not – не

& – and – и

V – or – или

Å – xor

0 1   0 0 0   0 0 1   0 0 1
1 0   1 0 1   1 1 1   1 1 0

Одноаргументные выражения и их таблицы истинности

А ┐┐A AÅA A→A AÅ ┐A A→┐A A→1 A→0
0 0 0 1 1 1 1 1
1 1 0 1 1 0 1 0

 

А A&A A&ùA AVA AVùA A&0 AV0 A&1 AV1
0 0 0 0 1 0 0 0 1
1 1 0 1 1 0 1 1 1

Отсюда следует, что

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
0 0 1 0 1 1
0 1 1 0 1 1
1 0 0 1 0 1
1 1 1 0 1 0

 

А B A&BVùA&ùB = A≡B ùA&BVA&ùB = A≠B = AÅB
0 0 1 0
0 1 0 1
1 0 0 1
1 1 1 0

 

А B A&BVùB AVùB
0 0 1 1
0 1 0 0
1 0 1 1
1 1 1 1

Трех аргументные выражения и их таблицы истинности

А B С

A&BVA&C = A&(BVC)

(AVB)&(AVC) = AVB&C

0 0 0 0 0 0 0
0 0 1 0 0 0 0
0 1 0 0 0 0 0
0 1 1 0 0 1 1
1 0 0 0 0 1 1
1 0 1 1 1 1 1
1 1 0 1 1 1 1
1 1 1 1 1 1 1

Основные законы алгебры логики

Закон Для ИЛИ Для И
Переместительный 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 - СДНФ
0 0 0 0  
0 0 1 0  
0 1 0 1 A&B&C V
0 1 1 0  
1 0 0 0  
1 0 1 0  
1 1 0 1 A&B&C V
1 1 1 1 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.

Упражнения.

1. Трех аргументная функция F(a,b,c) имеет следующий вид

a b c F1 F2 F3

Написать формулу, контактную схему и Эйлеровы множества для этих функций.

0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 1 1 1
0 1 1 1 1 1
1 0 0 0 0 0
1 0 1 1 0 0
1 1 0 1 0 0
1 1 1 1 1 1

 

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.

А)       Б)       В)    
2       2       2    
1       1       1    
0 1 2   0 1 2   0 1 2

Г)                    Д)

4         4        
3         3        
2         2        
1         1        
0 1 2 3 4 0 1 2 3 4

 

Е)                    Ж)

4         4        
3         3        
2         2        
1         1        
0 1 2 3 4 0 1 2 3 4

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
0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 1 0 1 1 1
0 1 0 1 1 1 0 1 1 0 0
0 1 1 0 0 1 0 0 0 0 0
1 0 0 0 1 1 1 0 1 1 0
1 0 1 0 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 0 0 1

20. Написать логические выражения двоичного сумматора на языке ПАСКАЛЬ.

C=A+B, где i-тый разряд суммы определяется следующей таблицей

Ai Bi Pi Ci Pi+1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 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())))



Ввод-вывод


Поделиться:



Последнее изменение этой страницы: 2019-03-21; Просмотров: 249; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.043 с.)
Главная | Случайная страница | Обратная связь