Технология выполнения работы.
Рассмотрим варианты заданий для работы.
1. По таблице СДНФ булевой функции напечатать формулу этой нормальной формы и вычислить значение этой функции в
заданной точке.
2. По таблице СКНФ булевой функции напечатать формулу этой нормальной формы и вычислить значение этой функции в заданной точке.
3. По таблице булевой функции напечатать формулу её СДНФ.
4. По таблице булевой функции напечатать формулу её СКНФ.
Исходные данные программы представляются в виде файла, содержащего таблицу булевой функции или таблицу одной из совершенных нормальных форм. Определение количества булевых переменных выполняется программно по первой строке таблицы. Далее при считывании производится контроль правильности заполнения файла: если число элементов в строке различно или неверное число строк (для вариантов задания 3, 4), то выдается сообщение об ошибке входных данных и выполнение программы прекращается.
При выводе формулы совершенной нормальной формы в заданиях вариантов 1 и 2 печать может выполняться параллельно со считыванием таблицы её совершенной нормальной формы. Пока не достигнут конец файла, выполняется чтение строки и печаль скобки полной элементарной конъюнкции для СДНФ (дизъюнкции для СКНФ). Если скобка не является первой в формуле, то перед ней печатается символ Ú (Ù). Если переменная в строке не является первой, то перед ней печатается символ Ù (Ú). Далее проверяется значение переменной для определения нужно ли перед названием переменной печатать символ отрицания. Название переменной включает символ ‘x’ и номер переменной.
Для выполнения вариантов задания 3 или 4 таблицу булевой функции нужно предварительно считать в двумерный массив, последний столбец этого массива содержит значения функции. Для построения совершенной нормальной формы из этого массива выбираются нужные строки.
Для определения значения булевой функции в заданной точке по таблице её совершенной нормальной формы нужно сравнить введенный с клавиатуры массив со строками таблицы нормальной формы. Если есть совпадение с одной из строк, то значение функции 0 для СКНФ и 1 для СДНФ. Если введённая точка не содержится в таблице, то значение функции противоположное. Вычисление значения булевой функции можно выполнять параллельно с печатью или оформить в виде отдельной функции, тогда при печати нормальной формы нужно сохранить таблицу нормальной формы в массиве.
Например, функция f переменных x1, x2, x3, заданная таблицей
x1 | x2 | x3 | f |
имеет следующее представление в виде СКНФ:
.
Преобразуем её к СДНФ.
= =
- СДН-форма.
Контрольные вопросы
1. Что называется совершенными нормальными формами булевых функций?
2. Как построить СКНФ и СДНФ для булевой функции, заданной таблично?
3. Что называется таблицей совершенной нормальной формы и как она строится?
4. Как определить значение булевой функции на заданном наборе по таблице совершенной нормальной формы?
Дата добавления: 2017-02-20; просмотров: 279;