Программный метод построения таблиц истинности

В большинстве языков высокого уровня имеются логические операции NOT, AND, OR, XOR, реализующие операции логического отрицания, логического умножения, логического сложения и сложение по модулю два.

В языке Паскаль логические операции применяются к величинам типа boolean, которые могут принимать только два значения: true- истина и false- ложь (false<true). Результат операции также будет иметь тип Boolean.

В языке Бейсик переменных логического типа нет, поэтому программирование логических операций имеет свои особенности: результат логической операции записывается в двух байтах («слове») памяти, причем логическому нулю соответствует слово &В0000000000000000, т.е. десятичный ноль, а логической единице соответствует слово &В1111111111111111, т.е. целое десятичное число -1.

Таким образом, имеем:

Значение истинности Запись значения
Паскаль Бейсик
Ложь false  
Истина true -1

Примечание: для того, чтобы на языке Бейсик получить таблицу истинности в привычном виде (0- ложь, 1- истина), при выводе значений выражений в операторе PRINT следует использовать знак «минус».

Программа построения таблиц истинности логических операций А&В, А v В, выглядит следующим образом:

 

Паскаль Бейсик
program log_op; var A, B: boolean; begin for A:= false to true do for B:= false to true do writeln(A:7, B:7, (A and B):7, (A or B):7, (not A):7); readln end. 10 for A=0 to -1 step -1 20 for B=0 to -1 step -1 30 print -A, -B, -(A and B), -(A or B, -(not A)) 40 next B 50 next A 60 end

Встречаются случаи, когда на конкретной ЭВМ среди машинных операций нет логических. Можно «научить» ЭВМ выполнять логические операции, моделируя их средствами арифметики.

Приведем формулы замены логических операций арифметическими (см. таб.3.1):

 

Таблица 3.1. Арифметические модели для некоторых логических операций

Операнды Логическая операция Арифметическая модель
Операции отрицания (инверсия)
А 1 - А
     
     

Продолжение таблицы 3.1.

Операнды Логическая операция Арифметическая модель
Операция конъюнкции (логическое умножение)
А В А&В А*В
       
       
       
       
Операция дизъюнкции (логическое сложение)
А В А v В А+В – А*В
       
       
       
       
Операция импликации (логическое следование)
А В А→В 1 - А + А*В
       
       
       
       
Операция равнозначности (эквивалентность)
А В А ≡ В 1 – (А - В)2
       
       
       
       

Продолжение таблицы 3.1.

Операнды Логическая операция Арифметическая модель
Операция неравнозначности (сложение по модулю 2)
А В А В (А - В)2
       
       
       
       
Функция Шеффера (отрицание конъюнкции)
А В А / В 1 – А*В
       
       
       
       
Функция Пирса (отрицание дизъюнкции)
А В А ↓ В (1 – А)*(1 – В)
       
       
       
       

 

Так, например, логическое выражение:

Х = (А→В) &(),

имеет арифметическую модель:

Y = (1 - A + A * B)*(1 - A * B).

 

 

Лабораторное задание:

 

Построить таблицы истинности заданных функций двумя способами:

1) с помощью Microsoft Excel;

2) составить программу либо на Паскале, либо на Бейсике, используя при необходимости замену логических операций арифметическими.

Логические функции выбрать из таблицы в соответствии со своим вариантом. Номер варианта согласуется с преподавателем.

 

№ варианта Логические функции
  →(В→С)
  ( →В) →( →С)
  &В→С
  &(В→С)
  ( →С) →( →В)
  ( →В) v (А→С)
  (А→В) & ( →С)
  А→(В→ &В)
 
 

 

Контрольные вопросы:

 

1. Для чего предназначена таблица истинности?

2. Каким образом можно построить таблицу истинности сложного выражения в табличном процессоре MicrosoftExcel?

3. К какому типу величин в Паскале могут быть применены логические операции?

4. Имеются ли в Бейсике переменные логического типа?

5. Какой арифметической операцией можно заменить инверсию, конъюнкцию; дизъюнкцию?


 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: