Одновременное проектирование алгоритма и структур данных
Очевидно, что при нисходящей пошаговой детализации программы необходимые для работы структуры данных и переменные появляются по мере перехода от неформальных определений к конструкциям языка, то есть процессы детализации алгоритма и данных идут параллельно. Однако это касается прежде всего отдельных локальных переменных и внутренних параметров. С самой же общей точки зрения предмет (в нашем случае -данные) всегда первичен по отношению к выполняемым с ним действиям (в нашем случае -алгоритм). Поэтому на самом деле способ организации данных в программе более существенно влияет на ее структуру алгоритма, чем что-либо другое, и процесс проектирования структур данных должен опережать процесс проектирования алгоритма их обработки.
Сказанное справедливо и для первого шага разработки алгоритма. Любой логически завершенный алгоритм должен представлять собой модуль (функцию), в котором все входные данные и результат работы передаются через заголовок (программный интерфейс). Отсюда первым шагом в проектировании является выбор входных и выходных структур данных.