Концепции структурного программирования
Структурное программирование предполагает выполнение последовательности этапов разработки программ для решения задач с использованием ЭВМ.
1. Постановка задачи – формулирование задачи и целей ее решения на естественном языке и установление критериев решения задачи. Результат этапа – техническое задание на разработку программного обеспечения.
2. Формализация задачи с использованием математического аппарата и получение ее абстрактной математической модели в виде формул и уравнений.
3. Выбор численного метода из возможных вариантов с учетом требований по времени и точности решения и занимаемого объема памяти ЭВМ.
4. Алгоритмизация – построение общего плана решения, т. е. алгоритма задачи в виде логической последовательности этапов (шагов, действий, операций), приводящих от исходных данных к искомому результату за конечное время на языке понятном человеку.
5. Программирование – перевод алгоритма задачи на язык ЭВМ (систему команд), т.е. кодирование алгоритма. Процесс разработки программы делится на следующие этапы: 1) запись алгоритма на ЯВУ в виде исходного файла в памяти (например, prog1.c); 2) компиляция и редактирование связей (объектный файл – prog1.obj); 3) загрузка программы в оперативную память (исполняемый файл – prog1.exe); 4) исполнение программы; 5) получение результатов программы.
6. Отладка программы – поиск и исправление ошибок в программе. Этот процесс разбивается на два этапа: 1) синтаксическая отладка – исправление формальных ошибок, связанных с нарушением норм языка программирования, с помощью ЭВМ; 2) семантическая отладка – исправление логических (смысловых) ошибок с применением специальных тестовых данных.
7. Исполнение (эксплуатация) программы с любыми допустимыми данными и получение результатов решения задачи.
8. Интерпретация результатов и поддержка программы в процессе эксплуатации – изменение программы в соответствии с требованиями пользователей, а также исправление ошибок, выявленных в процессе ее эксплуатации.
Существование программы можно разделить на три периода:
1) разработка (этапы 1– 4); 2) реализация (этапы 5, 6); 3) сопровождение (этапы 7, 8).
Функциональная декомпозиция.
При решении сложной задачи разработка и реализация ее алгоритма потребует написания длинной программы, которую трудно отлаживать из-за возможного большого числа ошибок. Внесение изменений вызовет необходимость дополнительного выполнения этапов разработки и реализации программы в целом.
Целесообразно такую задачу разбить на легко решаемые подзадачи, которые в совокупности дают решение исходной задачи. Такой метод решения задач называется функциональной декомпозицией. Для применения этого метода на ЭВМ используется принцип модульного программирования. Каждая подзадача реализуется в виде отдельной подпрограммы (функции, процедуры). Для решения всей задачи создается главная функция, которая вызывает другие функции, передавая им исходные аргументы и получая промежуточные результаты.
Большую программу целесообразно разделить на несколько программных модулей (автономно компилируемых файлов), например, файл подпрограмм и файл главной функции, а для их соединения в общую программу создается файл проекта. При этом файл подпрограмм можно рассматривать как библиотеку готовых подпрограмм, которые можно использовать в других задачах, что сократит время их решения.
Для структурного программирования характерно то, что данные и методы их обработки (функции, процедуры) отделены друг от друга. Данные рассматриваются как пассивные элементы, обрабатываемые функциями.