-
Notifications
You must be signed in to change notification settings - Fork 0
ООП1. Структурное программирование. Нисходящая разработка, использование базовых логических структур, сквозной структурный контроль.
В основе структурного подхода лежит декомпозиция сложных систем с целью последующей реализации в виде отдельных небольших подпрограмм. С появлением других принципов декомпозиции (объектного, логического и т. д.) данный способ получил название процедурной декомпозиции (разбиение по действию). [x]
Три основные части технологии:
- Нисходящая разработка;
- Сквозной структурный контроль;
- Использование базовых логических структур.
Нисходящий подход предполагает, что проектирование и последующая реализация компонентов выполняется «сверху-вниз», т. е. вначале проектируют компоненты верхних уровней иерархии, затем следующих и так далее до самых нижних уровней. В той же последовательности выполняют и реализацию компонентов. При этом в процессе программирования компоненты нижних, еще не реализованных уровней заменяют специально разработанными отладочными модулями - «заглушками», что позволяет тестировать и отлаживать уже реализованную часть. [x]
Происходит разбивка на подзадачи.
Задача Разработка Данные Логика
/ | \ 🠗 🠗 ^
Подзадача Подзадача Подзадача 🠗 🠗 🠕
/|\ /|\ /|\ 🠗 🠗 🠕
[] [] [] [] [] [] [] [] [] v v 🠕
Разработка: сверху-вниз
Данные: сверху-вниз
Логика: снизу-вверх
- Анализ (оценка задачи, переработка ТЗ)
- Проектирование
- Кодирование
- Тестирование
- Сопровождение
- Модификация
2-4 используют нисходящий подход. Используются алгоритмы декомпозиции – разбиение задачи на подзадачи, выделенные подзадачи разбиваются дальше на подзадачи, формируется иерархическая структура (данные нисходящие, логика восходящая, разработка нисходящая). Логика поднимается на более высокий уровень. Данные на низком уровне, на высшем логика. Для каждой полученной подзадачи создаем отладочный модуль. Готовятся тестирующие пакеты (до этапа кодирования). Подзадача не принимает решения за модуль уровнем выше (функция отработала, вернула результат, а потом анализируется).
- Все данные должны передаваться явно.
- Блок, функция, файл – уровни абстракции.
- Ограничения глубины вложенности – 3, если больше то выделить подфункции
Алгоритм любой сложности можно реализовать с использованием трёх базовых логических структур:
-
условие (развилка)
- if - выбор между двумя
- switch - множественный выбор
- следование
-
цикл (повторение)
- цикл с постусловием: do .. while();
- цикл с предусловием: while();
- цикл со счетчиком: for();
- безусловный цикл loop (выход из тела цикла)