- •Декомпозиция задачи ввода данных в озу
- •Структуры данных
- •Разработка структуры данных программы для ввода данных в озу
- •Алгоритмизация программы
- •Подходы к алгоритмизации
- •Иерархическая организация алгоритма
- •Алгоритмизация программы для ввода данных в озу
- •1. Модуль "Тестовый контроль озу по шд" (dTstContr)
- •2. Модуль "Тестовый контроль озу по ша" (aTstContr)
- •3. Модуль "Вывод сообщений об ошибках" (ErMesOut)
- •4. Модуль "Ввод режимов" (ModeInput)
- •5. Модуль "Вывод сообщения о типе ввода" (InTpMesOut)
- •6. Модуль "Ввод с клавиатуры" (KbdInput)
- •7. Модуль "Контроль ввода с клавиатуры" (KbdInContr)
- •8. Модуль "Преобразование очередной цифры" (NxtDigTrf)
- •9. Модуль "Формирование информации" (InfoForm)
- •10. Модуль "Формирование массивов отображения" (DispForm)
- •11. Модуль "Вывод числовой информации" (NumInfOut)
- •12. Модуль "Функциональная подготовка" (FuncPrep)
- •3.4.4. Кодирование программы
- •Реализация логических конструкций структурного программирования
- •Кодирование программы для ввода данных в озу
- •3.4.5. Тестирование и отладка программы
- •3.4.6. Занесение программы на рабочий носитель
- •3.4.7. Оформление документации на программу
- •3.5. Проектирование аппаратных средств
- •3.5.1. Схемотехническое проектирование процессора
- •3.5.2. Схемотехническое проектирование памяти
- •Банкирование памяти
- •Организация банков памяти
- •Проектирование запоминающих устройств
- •3.5.3. Схемотехническое проектирование интерфейса
- •Организация ввода/вывода данных
- •3.5.4. Тестирование и настройка аппаратных средств
- •Тестирование статическими сигналами
- •Свободный прогон микропроцессора
- •3.6. Комплексная отладка микропроцессорной системы
- •Заключение
- •Список рекомендуемых источников
Иерархическая организация алгоритма
Полный алгоритм программы представляет собой общий алгоритм, раскрывающий взаимодействие ее исполнителей как неделимых модулей, а также множество алгоритмов, описывающих внутреннюю организацию этих модулей.
При проектировании сложной программы целесообразно организовывать ее алгоритм в виде иерархической многоуровневой структуры, приведенной на рис. 3.23.
Рис. 3.23. Иерархическая многоуровневая структура алгоритма
Общий алгоритм располагается на верхнем уровне этой структуры, называемом макроуровнем программы. Макроуровень обеспечивает взаимодействие программных исполнителей путем их своевременного вызова.
Программные исполнители (модули) оформляются в виде подпрограмм и располагаются на нижеследующих уровнях управления. После вызова программный исполнитель некоторого уровня выполняет возложенные на него функции и возвращает управление в точку вызова. Затем вызывается следующий программный исполнитель и т. д. При этом реальные функции выполняют лишь исполнители самого нижнего уровня, а все остальные занимаются организацией их работы.
В этом случае структура полного алгоритма программы документируется некоторой совокупностью страниц. При этом первая страница представляет общий алгоритм программы, а все последующие отражают структуры алгоритмов каждого из программных модулей и не связаны между собой. Такая организация алгоритма обеспечивает максимальную степень сопровождаемости программы. Подобная структура программной документации справедлива и для исходного текста программы, получаемого на этапе кодирования.
Считая, что на одной странице помещается 50 строк текста, легко определить количество необходимых уровней управления для реализации программы, сложность которой ориентировочно оценивается в NS строк. Очевидно, что условие размещения текста длиной NS строк в m уровнях управления имеет вид 50m > = NS. Отсюда m = ent(lgNS/lg50) + 1. Значения m = f(NS), полученные по этой формуле, приведены в табл. 3.2.
Таблица 3.2
Зависимость m = f(NS)
NS |
m |
не более 50 |
1 |
50 . . . 2500 |
2 |
2500 . . . 125000 |
3 |
Из этой таблицы следует, что использование рассмотренного подхода при двух уровнях управления обеспечивает реализацию программы длиной до 2500 строк, а при трех уровнях до 125000 строк, что достаточно для всех случаев применения МПС. При этом программная документация всегда имеет четко структурированную форму, и степень сопровождаемости программы не зависит от ее сложности.
Таким образом, алгоритмизация программы сводится к разработке алгоритмов ее макроуровня и программных модулей нижнего уровня. При алгоритмизации макроуровня целесообразно использовать логическую конструкцию СЛЕДОВАНИЕ структурного подхода. При этом на нем могут находиться лишь команды, осуществляющие вызов программных модулей или передачу параметров в них.
При алгоритмизации модулей нижнего уровня может использоваться BS-подход и любые логические конструкции.
Алгоритмизация макроуровня программы носит полуформальный характер и сводится к обеспечению вызова программных исполнителей, входящих в ее статическую модель, в нужной последовательности.
Разработка алгоритмов программных исполнителей самого нижнего уровня носит творческий характер. Однако, в подавляющем большинстве случаев это не вызывает никакого труда в связи с ограниченностью выполняемых ими функций, а также известностью алгоритмов решения многих задач.