Информатика и технология программирования

       

Структурное программирование


Как в любом виде деятельности в программировании имеется своя технология: это знания, правила, навыки и инструменты, позволяющие получать гарантированный качественный результат. Причем инструмент поставлен на последнее место вполне сознательно. Ибо широко распространено мнение, особенно среди начинающих, что "фирменный" инструмент, в данном случае это трансляторы, оболочки, отладчики, сам по себе определяет качество изделия. Для сравнения попытайтесь представить себе столяра или плотника, придерживающегося такого же мнения.

Итак, важно придерживаться какой-нибудь технологии программирования. Но само по себе соблюдение ряда правил не дает гарантию качества результата. Это объясняется спецификой программирования. Во-первых, это не наука, где знание какой-либо формулы позволяет однозначно решить задачу, подставив в нее исходные данные и получив результат. Во-вторых, эти правила необходимо соблюдать не столько на бумаге, сколько в голове. То есть технология программирования - это скорее способ организации процесса обдумывания программы, нежели ее записи.

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


Из сказанного следует, что если пишущий программу мыслит, то он уже придерживается какой-то технологии программирования, даже не подозревая об этом. Условно ее можно назвать - метод "северо-западного" угла ( имеется в виду лист бумаги или экран монитора). Метод заключается в написании программы сразу от начала до конца, без использования каких-либо общих принципов, то есть "как бог на душу положит".

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

Составные части образной модели могут иметь и "внешнее" выражение - оно заключается в неформальной или полуформальной словесной формулировке действий, производимых этой частью. Например, "найти минимальный элемент в массиве А и запомнить его индекс в n". Технология программирования задает правила, при помощи которых можно переходить от одной, более абстрактной, к другой, более конкретной формулировке, переводя ее по частям на формальный язык программирования.

Из всего сказанного вырисовывается такая последовательность действий, которая может быть положена в основу l процесса проектирования программы с разбиением ее на достаточное число мелких шагов :


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


Формулировка, само собой, производится на естественном языке.


2. . выполняется сбор фактов, касающихся любых характеристик алгоритма, и попытка их представления средствами языка;


3. . создается образная модель происходящего процесса, используются графические и какие угодно способы представления, образные " картинки" , позволяющие лучше понять выполнение алгоритма в динамике;


4. . в образной модели выделяется наиболее существенная часть, для которой подбирается наиболее точная словесная формулировка;


5. . производится определение переменных, необходимых для формального представления данного шага алгоритма;


6. . выбирается одна из конструкций - простая последовательность действий, условная конструкция или цикла. Составные части выбранной формальной конструкции (например, условие, заголовок цикла) оставаться в словесной формулировке.


7. . для оставшихся неформализованных частей алгоритма в словесной формулировке) - перечисленная последовательность действий повторяется.

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





















Наиболее существенные моменты, выражающие сущность такого процесса проектирования, объединяются общим терминам "
структурное программирование" (СП). СП в настоящий момент является общепринятой традиционной технологией разработки программ, выразителем и специально созданным инструментом для которой является язык Паскаль.Заметим, что основное внимание в ней уделяется разработке алгоритма, а данным в связке ПРОГРАММА=АЛГОРИТМ+ДАННЫЕ отводится если не второстепенная, то подчиненная роль. СП предполагает именно последовательную, шаг за шагом разработку алгоритма. Основные принципы СП находятся на уровне " здравого смысла" , но тем не менее их методическое использование в практической работе получается не сразу и требует некоторого опыта. Перечислим их :


1. . модульное проектирование ;


2. . нисходящее проектирование ;


3. . пошаговое проектирование ;


4. . структурное проектирование (программирование без goto) ;


5. . одновременное проектирование алгоритма и данных ;


6. . модульное, нисходящее, пошаговое тестирование.

Одной фразой это можно сформулировать так :

СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ - - модульное нисходящее пошаговое проектирование и отладка алгоритма и структур данных


Содержание раздела