Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретная математика / Практика / Лабароторный практикум.doc
Скачиваний:
101
Добавлен:
03.05.2015
Размер:
1.07 Mб
Скачать

Технология выполнения работы.

Рассмотрим варианты заданий для работы.

  1. По таблице СДНФ булевой функции напечатать формулу этой нормальной формы и вычислить значение этой функции в

заданной точке.

  1. По таблице СКНФ булевой функции напечатать формулу этой нормальной формы и вычислить значение этой функции в заданной точке.

  2. По таблице булевой функции напечатать формулу её СДНФ.

  3. По таблице булевой функции напечатать формулу её СКНФ.

Исходные данные программы представляются в виде файла, содержащего таблицу булевой функции или таблицу одной из совершенных нормальных форм. Определение количества булевых переменных выполняется программно по первой строке таблицы. Далее при считывании производится контроль правильности заполнения файла: если число элементов в строке различно или неверное число строк (для вариантов задания 3, 4), то выдается сообщение об ошибке входных данных и выполнение программы прекращается.

При выводе формулы совершенной нормальной формы в заданиях вариантов 1 и 2 печать может выполняться параллельно со считыванием таблицы её совершенной нормальной формы. Пока не достигнут конец файла, выполняется чтение строки и печаль скобки полной элементарной конъюнкции для СДНФ (дизъюнкции для СКНФ). Если скобка не является первой в формуле, то перед ней печатается символ  (). Если переменная в строке не является первой, то перед ней печатается символ  (). Далее проверяется значение переменной для определения нужно ли перед названием переменной печатать символ отрицания. Название переменной включает символ ‘x’ и номер переменной.

Для печати неклавиатурных символов воспользоваться их кодами (см. таблицу кодов).

Символ

Шестнадцатеричный код

D8

D9

DA

Для выполнения вариантов задания 3 или 4 таблицу булевой функции нужно предварительно считать в двумерный массив, последний столбец этого массива содержит значения функции. Для построения совершенной нормальной формы из этого массива выбираются нужные строки.

Для определения значения булевой функции в заданной точке по таблице её совершенной нормальной формы нужно сравнить введенный с клавиатуры массив со строками таблицы нормальной формы. Если есть совпадение с одной из строк, то значение функции 0 для СКНФ и 1 для СДНФ. Если введённая точка не содержится в таблице, то значение функции противоположное. Вычисление значения булевой функции можно выполнять параллельно с печатью или оформить в виде отдельной функции, тогда при печати нормальной формы нужно сохранить таблицу нормальной формы в массиве.

Например, функция f переменных x1, x2, x3, заданная таблицей

x1

x2

x3

f

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

1

1

0

0

1

0

1

1

имеет следующее представление в виде СКНФ:

.

Преобразуем её к СДНФ.

EMBED Equation.3

= =

- СДН-форма.

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

Задание для лабораторной работы.

  1. Написать и отладить программу в соответствии с вариантом задания. Такая программа должна содержать:

  1. ввод данных из файла;

  2. выполнение индивидуального задания варианта и вывод его результатов.

  1. Продемонстрировать работу программы на контрольном примере.

  2. Преобразовать аналитическое представление совершенной нормальной формы, определённой заданием, во вторую совершенную нормальную форму.

  3. Текст программы, исходный файл контрольного примера, результаты работы программы на контрольном примере и преобразование совершенных нормальных форм оформить в отчет.