Реализация алгоритма

Как только алгоритм выражен, допустим, в виде последователь­ности шагов и мы убедились в его правильности, настает черед реали­зации алгоритма, т. е. написания программы для ЭВМ.

Написание программы зависит от многих качеств, как объективных, так и субъективных. Но среди всех аспектов целесообразно выделить такие, как выбор языка программирования, выбор структуры данных, типы оборудования, на которых будет эксплуатироваться программа, тип интерфейса, который необходим для работы этой программы и многое другое.

Реализация алгоритма - этот существенный шаг может быть трудным. Во-первых, трудность заключается в том, что очень часто отдельно взятый шаг алгоритма может быть выражен в форме, которую трудно перевести непосредственно в конструкции языка программирования. Например, один из шагов алгоритма может быть записан в виде, требующем це­лой подпрограммы для его реализации. Во-вторых, реализация может оказаться трудным процессом потому, что перед тем, как мы сможем начать писать программу, мы должны построить целую систему струк­тур данных для представления важных аспектов используемой мо­дели. Чтобы сделать это, необходимо ответить, например, на такие вопросы:

Каковы основные переменные?

Каких они типов?

Сколько нужно массивов и какой размерности?

Имеет ли смысл пользоваться связными списками?

Какие нужны подпрограммы (возможно, уже записанные и реализованные)?

Каким языком программирования пользоваться?

На каких типах оборудования будет использоваться данный программный продукт?

Каковы основные аспекты взаимодействия человек - ЭВМ?

На какого пользователя рассчитано программное обеспечение?

Для какого класса задач и продолжительности по времени разрабатывается данное программное обеспечение?

Как будет проводится верификация?

Конкретная реализация может существенно влиять на требования к памяти и на скорость алгоритма.

Другой аспект построения программной реализации — это про­граммирование сверху-вниз. Объяснение этого понятия будет дано в позднее, а пока укажем, что программирование сверху-вниз— это подход к разработке и реализации, который состоит в преобразо­вании алгоритма в такую последовательность все более конкретизи­рованных алгоритмов, что окончательный вариант представляет собой программу для ЭВМ.

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