Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфа- ответы на теор.вопросы.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
760.25 Кб
Скачать

Одно из трех

Обратим внимание на некоторые особенности процесса, которые остались за пределами «заповедей» и которые касаются содержательной стороны проектирования.

Цель (результат) = действие + цель (результат). Каждый шаг проектирования программы заключается в том, что словесная формулировка алгоритма заменяется на одну из трех возможных конструкций языка, элементы которой продолжают оставаться в неформальной, словесной  формулировке. Если же с каждым фрагментом программы связать результат ее работы (или цель), то каждый шаг детализации должен сопровождаться преобразованием формулировок:цель (результат)  = выбранная конструкция + цель (результат) вложенной конструкции.

Последовательность действий,  связанных результатом. Многие почему–то считают, что основа логики сложной программы – у словные и циклические действия. Понятно, что они определяют лицо программы.  Но на самом деле наиболее часто используемой программной конструкцией является простая последовательность действий. Поэтому первое, что необходимо сделать на очередном шаге детализации алгоритма – проверить, нельзя ли его представить в виде последовательности шагов «делай раз, делай два…». Во-вторых, между различными шагами существуют связи через общие переменные: предыдущий шаг формирует значение переменной, придавая ей определенный «смысл», последующие шаги ее используют. Это является обязательным элементом проектирования, без него нельзя продвигаться дальше в детализации выделенных шагов.

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

 

//------------------------------------------------------------------------------

// Запоминание простого числа в виде

// последовательности действий, связанных признаком

int pr=0;

for (int n=2; n<v; n++)                             // Проверка - Установить признак делимости

            if (v%n==0) { pr=1; break; }

if (pr==0) A[i++]=v;                                 // Признак не установлен - запоминание

//-----------------------------------------------------------------------------

// Неструктурированный вариант – запись внутри цикла

n=2;

while (v%n!=0){

n++;

            if (n==v) { A[i++]=v; break; }

}

Модульное проектирование – наиболее очевидная вещь в технологии программирования. Тем более, что любая промышленная технология производства рано или поздно приходит к сборке сложных изделий из набора совместимых и взаимозаменяемых деталей. Никому не надо объяснять термин «интерфейс». Тем не менее, наиболее сложно соблюдать эту заповедь: разрабатывать модульные программы. Отчасти это происходит потому, что взаимодействие модулей в программе несколько отличается от взаимодействия между модулями в другой технической системе.