Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
119
Добавлен:
13.03.2016
Размер:
470.02 Кб
Скачать

1.4.4. Базовые структуры алгоритмов и их кодирование на Си.

Современная технология программирования предполагает, что алгоритм должен строиться из базовых структур. Таких структур три:следование, развилка, цикл.

1. Следование

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

2. Разветвление (развилка)

Разветвление, блок-схема которого приведена на рис. 4, применяется в том случае, когда выполнение алгоритма должно развиваться по двум альтернативным ветвям. Ветви обязательно должны соединяться в одной точке, т. е. дальнейшее выполнение алгоритма должно происходить по одному пути; кроме того, ветви алгоритма не должны пересекаться, т. е. не должны иметь общих блоков.

Разветвление предполагает проверку некоторого условия. Если на момент проверки условие истинно, то будет выполнен оператор 1, иначе оператор 2. В языке Си ветвление кодируется с помощью условного оператора:

If (условие)

оператор 1;

else

оператор 2;

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

Возможна ситуация, когда ветвь “Нет ” не содержит операторов (т. е. либо выполняются операторы ветви “Да”, либо сразу переходим к точке соединения ветвей блок-схемы). В этом случае в условном операторе Си слово else и оператор 2 отсутствуют.

Если операторы 1 или 2 состоят из нескольких операторов (являются составными), то входящие в них операторы окаймляются фигурными скобками:

If (условие)

{оператор 1;

оператор 2;

оператор N;

}

else

{оператор 1;

оператор 2;

оператор M;

}

Таким образом, фигурные скобки позволяют объединить несколько операторов в один составной.

3. Цикл

Ц

.

иклические структуры (или циклы) служат для организации повторения некоторых операторов. Две базовые циклические структуры приведены на рис. 5. Цикл, кроме стрелок идущих вниз обязательно содержит стрелки, указывающие вверх, – иначе не будет повторения. Следовательно, блок-схема циклического алгоритма обязательно содержит замкнутый путь (петлю). Цикл состоит изтела цикла, т. е. группы подлежащих повторению операторов, и условного оператора, осуществляющего анализ на продолжение цикла. При отсутствии такого анализа возникаетзацикливание(бесконечное повторение тела цикла). Зацикливание может также возникнуть из-за неправильного формулирования условия продолжения цикла. В зависимости от порядка выполнения тела цикла и анализа на продолжение цикла различают два вида базовых циклических структур: цикл с предусловием или цикл-пока (сначала анализ на продолжение цикла, а затем тело цикла) и цикл с постусловием или цикл-до (сначала выполнение тела, а затем анализ).

На Си циклы кодируются следующим образом:

цикл-пока

цикл-до

while (условие)

тело цикла;

Do

тело цикла;

while (условие)

Тело цикла должно представлять собой один оператор – простой или составной.

Замечания

  1. Каждая из трех рассмотренных базовых структур имеет один вход и один выход. Это очень важно, так как любой прямоугольник на рисунках 3 – 5, может быть базовой структурой. Значит, цикл может включать в свой состав базовые структуры: следование, разветвление, цикл. Это утверждение также относится и к двум другим базовым структурам – следование и разветвление.

  2. Втеории алгоритмов доказано, что для построения любого алгоритма достаточно иметь три базовых структуры: следование, ветвление, цикл. Это положение называется принципом Дейкстры. Причем безразлично, какую циклическую структуру – до или пока – выбрать в качестве базовой. Практика программирования, однако, сложилась так, что равноправно используются обе эти структуры.

Кроме того, в программировании широко используется еще одна базовая структура (избыточная), которая является частным случаем цикла-пока и называется параметрическим циклом (см. рис.6). Этот цикл управляется переменной (так называемым параметром, на блок-схеме для него выбрано имя i), которая меняется от начального значения до конечного с заданным шагом.

Для кодирования параметрического цикла в Си используется оператор:

for(i=нач_знач;i<=кон_знач; i=i+шаг)

тело цикла;

Как и для предыдущих операторов, тело цикла – один оператор, простой или составной. Заметим, что возможности оператора forв Си не ограничиваются параметрическим циклом, но их рассмотрение выходит за рамки этого пособия.