загрузка...

1.1. Методология процедурно-ориентированного программирования


Появление первых электронных вычислительных машин или компьютеров ознаменовало новый этап в развитии техники вычислений. Казалось, достаточно разработать последовательность элементарных действий, каждое из которых преобразовать в понятные компьютеру инструкции, и любая вычислительная задача может быть решена. Эта идея оказалась настолько жизнеспособной, что долгое время доминировала над всем процессом разработки программ. Появились специальные языки программирования, которые позволили преобразовывать отдельные вычислительные операции в соответствующий программный код.
Основой данной методологии разработки программ являлась процедурная или алгоритмическая организация структуры программного кода. Это было настолько естественно для решения вычислительных задач, что ни у кого не вызывала сомнений целесообразность такого подхода. Исходным понятием этой методологии являлось понятие алгоритма, под которым, в общем случае, понимается некоторое предписание выполнить точно определенную последовательность действий, направленных на достижение заданной цели или решение поставленной задачи. Примерами алгоритмов являются хорошо известные правила нахождения корней квадратного уравнения или корней линейной системы уравнений.
Примечание 1
С этой точки зрения вся история математики тесно связана с разработкой тех или иных алгоритмов решения актуальных для своей эпохи задач. Более того, само понятие алгоритма стало предметом соответствующей теории – теории алгоритмов, которая занимается изучением общих свойств алгоритмов. Со временем содержание этой теории стало настолько абстрактным, что соответствующие результаты понимали только специалисты. Как дань этой традиции какой-то период времени языки программирования назывались алгоритмическими, а первое графическое средство документирования программ получило название блок-схемы алгоритма. Соответствующая система графических обозначений была зафиксирована в ГОСТ 19.701-90, который регламентировал использование условных обозначений в схемах алгоритмов, программ, данных и систем.
Однако потребности практики не всегда требовали установления вычислимости конкретных функций или разрешимости отдельных задач. В языках программирования возникло и закрепилось новое понятие процедуры, которое конкретизировало общее понятие алгоритма применительно к решению задач на компьютерах. Так же, как и алгоритм, процедура представляет собой законченную последовательность действий или операций, направленных на решение отдельной задачи. В языках программирования появилась специальная синтаксическая конструкция, которая получила название процедуры.
Со временем разработка больших программ превратилась в серьезную проблему и потребовала их разбиения на более мелкие фрагменты. Основой для такого разбиения как раз и стала процедурная декомпозиция, при которой отдельные части программы или модули представляли собой совокупность процедур для решения некоторой совокупности задач. Главная особенность процедурного программирования заключается в том, что программа' всегда имеет начало во времени или начальную процедуру (начальный блок) и окончание (конечный блок). При этом вся программа может быть представлена визуально в виде направленной последовательности графических примитивов или блоков (рис. 1.1).
Важным свойством таких программ является необходимость завершения всех действий предшествующей процедуры для начала действий последующей процедуры.
Изменение порядка выполнения этих действий даже в пределах одной процедуры потребовало включения в языки программирования специальных условных операторов типа if-then-eise и Goto для реализации ветвления вычислительного процесса в зависимости от промежуточных результатов решения задачи.
Рис. 1.1.Графическое представление программы в виде последовательности процедур
Примечание 2
Рассмотренные идеи способствовали становлению некоторой системы взглядов на процесс разработки программ и написания программных кодов, которая Получила название методологии структурного программирования. Основой данной методологии является процедурная декомпозиция программной системы и организация отдельных модулей в виде совокупности выполняемых процедур. В рамках данной методологии получило развитие нисходящее проектирование программ или программирование «сверху-вниз». Период наибольшей популярности идей структурного программирования приходится на конец 70-х-начало 80-х годов.
Как вспомогательное средство структуризации программного кода было рекомендовано использование отступов в начале каждой строки, которые должны выделять вложенные циклы и условные операторы. Все это призвано способствовать пониманию или читабельности самой программы. Данное правило со временем было реализовано в современных инструментариях разработки программ. Ниже приводится пример листинга программы на языке Pascal, который иллюстрирует эту особенность написания программ.
Листинг 1.1. Пример фрагмента программы на Pascal, разработанной с использованием правил структурного программирования
Procedure FirstOpt;
Begin
FuncRaz(Free, Rn);
for i:=l to N do
RvarRec[i]:= Rn[i];
FvarRec:= Freс;
Numlt:=0;
Repeat
NumIt:=NumIt+l;
V:= Freс;
for j:=1 to К do
for 1:=1 to M do
begin
S:=0.0;
T:=0.0;
for i:=l to N do
begin
T:=T+sqr(Wl[i,j])*Xpr[i,l];
S:=S+sqr(Wl[i,j])
end;
Zentr[j,l]:=T/S
end;
for j:=1 to К do
for i:=l to N do
begin
S:=0.0;
P:=0.0;
Q:=0.0;
for l:=1 to M do
S:=S+sqr(Xpr[i,l]-Zentr[j,l]);
P:=1.0/S;
end;
Q:=0.0;
D:=0;
for i:=1 to N do
for j:=1 to К do
if Abs(Wl[i,j]-W2[i,j]) >= Eps then D:=l;
for i:=l to N do
for j:=1 to К do
W1[i,j]:=W2[i,j]
Until (D=0)or(NumIt=NumMax)
End;
В этот период основным показателем сложности разработки программ считали ее размер. Вполне серьезно обсуждались такие оценки сложности программ, как количество строк программного кода. Правда, при этом делались некоторые предположения относительно синтаксиса самих строк, которые должны были удовлетворять определенным правилам. Общая трудоемкость разработки программ оценивалась специальной единицей измерения – «человеко-месяц» или «человеко-год». А профессионализм программиста напрямую связывался с количеством строк программного кода, который он мог написать и отладить в течение, скажем, месяца.
Примечание 3
<< | >>
Источник: Александр Леоненков. Самоучитель UML. 2007

Еще по теме 1.1. Методология процедурно-ориентированного программирования:

  1. 1.2. Методология объектно-ориентированного программирования
  2. 1.3. Методология объектно-ориентированного анализа и проектирования
  3. ГЛАВА 2. Исторический обзор развития методологии объектно-ориентированного анализа и проектирования сложных систем
  4. Раздел IIМАКРОЭКОНОМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
  5. ПРОГРАММИРОВАНИЕ БЮДЖЕТНОГО СЕКТОРА
  6. ПРОГРАММИРОВАНИЕ ДЕНЕЖНОГО СЕКТОРА
  7. ПРОГРАММИРОВАНИЕ ВНЕШНЕГО СЕКТОРА
  8. Исследование, ориентированное на практику
  9. ПРОГРАММИРОВАНИЕ
  10. ПРОГРАММИРОВАНИЕ
  11. Культура программирования
  12. Проектирование, ориентированное на цели