Целью МП является: возможность независимого написания и отладки отдельного модуля; возможность замены модуля без изменения всей программы; облегчение тестирования (проверки) модулей программы.
Если соблюдается системный принцип проектирования задачи сверху вниз, то она разбивается на подзадачи, которые возможно отразить программными модулями. При этом преследуют две цели.
1. Нужно добиться, чтобы программный модуль был правильным и не зависел от контекста, в котором этот модуль будет использоваться.
2. Следует стремиться к тому, чтобы из модулей можно было формировать программу без каких-либо знаний о внутренней работе отдельно взятого модуля.
Для модуля должны быть известны: алгоритм решения задачи; область допустимых входных значений; область возможных выходных значений.
Каждый модуль должен решать одну задачу, то есть быть «кирпичиком», из которого строится программа. Как правило, использование модулей сокращает число глобальных переменных программы.
На рис. 5.4 в виде блок-схемы приведен проект будущей программы, имеющей линейную структуру.
Эта программа должна обеспечить ввод с клавиатуры двух матриц А и В, осуществить их умножение, результатом которого является матрица С, и вывести матрицу С на экран монитора. Тело программы содержит вызовы трех подпрограмм MOD1, MOD2, MOD3, имеющих один вход и один выход.
В таком представлении (рис. 5.4) процесс разработки программы сводится к последовательному программированию модулей, если разработчик один, или сразу всех, если разработчика три. Предположим, что MOD2 и MOD3 разработаны, а MOD1 — нет. В этом случае вместо MOD1 ставят «заглушку», то есть модуль имитирующий процесс работы MOD1.
Принципы модульного программирования реализуются в Паскале с помощью пользовательских процедур, представляющих собой оператор с уникальным идентификатором и списком формальных параметров, если они нужны.