РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ В MS EXCEL Пчельник В.К., Ревчук И.Н. Государственный университет имени Я.Купалы, г. Гродно Рассмотрим решение стандартных задач из курса «Прикладная математика» на построение таблиц истинности, проверку равносильности логических функций, построение СДНФ и СКНФ в MS EXCEL. Реализация основных логических операций может быть осуществлена так, как на рисунке 1, если считать, что 1 соответствует значению «ИСТИНА», а 0 – значению «ЛОЖЬ». Такую таблицу можно получить, используя логические функции ИЛИ, И, НЕ. Операция в столбце Е заменена дизъюнкцией в соответствии с формулой x y x y. Рис. 1. Реализация основных логических операций Такая же таблица получится, если в ячейки С2, D2, E2, F2 и G2 ввести формулы без явного использования логических функций (рис. 2). Эти формулы затем распространяются на диапазон С3:G5. Рис. 2. Реализация основных логических операций без явного использования логических функций Для проверки равносильности выражений (x y) (z y) и (x z) y построим таблицы истинности для этих формул (рис. 3). В результате получится таблица, приведенная на рисунке 4. Из таблицы видно, что для функций (x y)/\(z y) и (x z) y значения на всех наборах переменных совпадают. Следовательно, эти формулы равносильны. Приведем алгоритм получения СДНФ и СКНФ по таблице истинности в MS EXCEL в соответствии с определениями СДНФ и СКНФ [1] . Рис. 3. Формулы для построения таблицы истинности Рис. 4. Полученная таблица истинности Пусть требуется __ x (y (x найти СДНФ и СКНФ для булевой функции z )) . В соответствии с определениями СДНФ и СКНФ воспользуемся таблицей истинности для этой функции. Введем в ячейки F636:I636 формулы (1) − (4) (рис. 5). Формулу (4) распространим на диапазон G636:K636. Формула (5) вводится в ячейку L636, (6) − в ячейку M636. Формула (6) распространяется на диапазон N636:O636. Формула (7) вводится в ячейку Р636. Выделяем диапазон F636:P636 и распространяем их на диапазон F637:Р643. Формулы (8) и (9), введенные в ячейки L644 и Р644, дают СДНФ и СКНФ соответственно. =(C636=E636)*1 =(F636>=D636)*1 =(G636-(1-C636)>=0)*1 =ЕСЛИ($H636=1;ЕСЛИ(C636=1;C$635;I$635);"") =ЕСЛИ(I636<>"";I636&J636&K636&"+";"") =ЕСЛИ($H636=0;ЕСЛИ(B636=0;C$635;$I635);"") =ЕСЛИ(M636<>"";"("&M636&"+"&N636&"+"&O636&")";"") =ЛЕВСИМВ(СЦЕПИТЬ(L636;L637;L638;L639;L640;L641;L642;L643);ДЛ СТР(СЦЕПИТЬ(L636;L637;L638;L639;L640;L641;L642;L643))-1) =СЦЕПИТЬ(P636;P637;P638;P639;P640;P641;P642;P643) (1) (2) (3) (4) (5) (6) (7) (8) (9) Рис. 5 Функция СЦЕПИТЬ не позволяет указать диапазон, в котором располагаются сцепляемые символы. С другой стороны, можно присвоить формуле (9) имя, выполнив команду ВСТАВКА/ИМЯ/ПРИСВОИТЬ. Тогда формулы (8) и (9) примут более компактный вид (8’) и (9’). =ЛЕВСИМВ(w;ДЛСТР(w)-1) =w (8’) (9’) Литература 1. Яблонский, С.В. Введение в дискретную математику / С.В. Яблонский. – М.: Наука, 1986. 384 с.