На стадии эскизного проектирования при использовании процедурного подхода сложные задачи разбиваются на подзадачи, для которых может строиться своя модель и выбираться свой метод решения. При этом результаты одной подзадачи могут использоваться как исходные данные в другой.
Целесообразно проверить правильность выбранных моделей и методов, выполнив их вручную для некоторых значений исходных данных.
При определении типов исходных данных необходимо также продумать, для каких сочетаний этих данных результат не существует или не может быть получен данным методом, что также надо учитывать при разработке программы.
Одновременно с написанием алгоритма, необходимо точно определить тип и структуру обработанных данных. В одних случаях данными могут быть несколько обычных чисел, в других организация данных будет более сложной.
При определении структуры данных с каждым объектом данных должно быть связано осмысленное имя или идентификатор. При разработке программы идентификаторы будут связаны с расположением данных в памяти.
На данной стадии разрабатываются и оцениваются алгоритмы подпрограмм.
Алгоритмом называют формально описанную последовательность действий, которые необходимо выполнить для получения требуемого результата.
Разработка алгоритма состоит в пошаговом описании предлагаемого решения задачи. Каждый шаг должен быть описан в виде кратких и точных операторов с использованием структурированного языка или псевдокода.
Каждой процедуре должно быть дано содержательное имя или идентификатор, для того, чтобы ее можно было вызвать по имени как модуль из другой процедуры:
Пример 1
find_area (Найти площадь),
calc_balance (Вычислить_баланс)
prepare_fit (Подготовить_декларацию)
В операторах разработчик алгоритма должен использовать идентификаторы предварительно определенных данных. Данные, определенные вне модуля (при постановке задачи или ее анализе), рассматриваются как внешние данные и должны быть включены в разработанное определение структуры данных. Внешние данные могут совместно использоваться несколькими процедурами. Данные, принадлежащие одному модулю, являются внутренними или временными и могут быть определены внутри самого модуля. Использование внутренних (или локальных) данных повышает модульность программы.
Алгоритм должен быть детализирован до такой степени, когда каждый оператор выполняет простую операцию или вызов другой процедуры. Этого можно достичь путем использования повелительных и условных операторов (предложений). Разработка алгоритма завершается, когда каждый из операторов может быть записан непосредственно на языке программирования.
Сравните два алгоритма.
Пример 2
  • Алгоритм 1
  • Quad_roots_1 (квадр_корни_1)
    • Ввести три коэффициента квадратного уравнения
    • Вывести корни
Пример 3
  • Алгоритм 2
  • Quad_roots_ 2 (квадр_корни_2)
  • Замечание – для случая комплексных корней алгоритм не применим.
    • Ввести три коэффициента квадратного уравнения a, b, c.
    • Вычислить

    • Вычислить

    • Напечатать значения корень1, корень2
Какой из алгоритмов лучше? Алгоритм 1 очень "грубо" описывает требуемую последовательность, алгоритм 2 представляет частный случай решения задачи. Для решения задачи в общем виде необходимо добавить в алгоритм расчет мнимых корней.
На изображение схем алгоритмов существуют ГОСТ 19.701-90, согласно которому каждой группе действий ставится в соответствие блок особой формы.