1. Используя материалы § 50 учебника, постройте модуль, описывающий иерархию классов логических элементов. Для проверки его работы напишите программу, которая строит таблицу истинности последовательного соединения логических элементов «И» и «НЕ».
2. Добавьте в иерархию классов элементы «исключающее ИЛИ», «И-НЕ» и «ИЛИ-НЕ». Вынесите всю построенную систему классов логических элементов в отдельный модуль LogElement.
3. «Соберите» в программе RS-триггер из двух логических элементов «ИЛИ-НЕ», постройте его таблицу истинности (обратите внимание на вариант, когда оба входа нулевые).
4. *Постройте новый класс TNOrTrigger, моделирующй RS-триггер на двух логических элементах «ИЛИ-НЕ». От какого класса лучше наследовать этот класс? Почему?
Ответ:
Как лучше включить в этот класс два элемента «ИЛИ-НЕ»? Будете ли вы использовать для этого наследование?
Ответ:
5. *Выполните задания 3-4 для RS-триггера на двух логических элементах «И-НЕ». Определите, при каких входах состояние сохраняется, а какие входные сигналы запрещены.
Ответ:
6. *Постройте логический элемент «шифратор», который выдает на выходы двоичное представление номера входа, на который подали сигнал. Обозначение и таблица истинности шифратора «4 в 2» показаны ниже:
Все комбинации входов, которые не перечислены в таблице истинности, считаются запрещенными. Выполните следующие задания:
а) по таблице истинности составьте логическую схему шифратора; постарайтесь использовать минимальное число логических элементов;
б) добавьте в программу новый класс – модель шифратора (англ. coder), в которой будут использованы уже имеющиеся классы логических элементов;
Будете ли вы использовать наследование? Почему?
Ответ:
в) напишите программу, которая строит таблицу истинности шифратора, используя построенную модель.
7. *Постройте модель логического элемента «дешифратор» (англ. decoder), который выполняет обратную операцию. Напишите программу, которая строит его таблицу истинности.