В.3. Базовые алгоритмические структуры

 

Базовыми алгоритмическими структурами принято называть подмножество алгоритмических структур, которые позволяют составить алгоритм решения сколь угодно сложной задачи (структурное программирование). Эти структуры могут быть вы­браны разработчиком программы в зависимости от специфики решаемой задачи. К простейшим базовым алгоритмическим структурам относятся: последовательные структуры; разветв­ляющиеся структуры; циклические структуры регулярного типа; циклические структуры итеративного типа.

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

Последовательными называются такие алгоритмические струк­туры, в которых функциональные элементарные блоки вы­полняются в том порядке, в котором они записаны или изо­бражены на схеме алгоритма. Такая структура может быть составлена из совокупности блоков «Пуск/останов», «Ввод/вывод», а также блоков «Процесс», используемых для проведения вычислений (рис.В.3-1).

 

Рис. В.3-1. Алгоритмическая Рис.В.3-2. Алоритмическая

структура структура

– прследовательность – стандартное разветвление

 

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

 

 

Рис. В.3-3. Алгоритмическая Рис.В.3-4. Алгоритмическая

структура – усеченное разветвление структура – усеченное разветвление

 

В процессе работы алгоритма в первую очередь вычисляются логиче­ские выражения. Если логическое выражение принимает значение «Истина», то выполняется часть алгоритма, расположенная по ветви «Да», если принимает значение «Ложь», то – часть алгоритма по ветви «Нет».

Анализ разветвляющихся алгоритмов, применяемых в практиче­ских задачах, показывает, что наиболее часто используются три типа разветвлений:

Стандартное разветвлениесодержит функциональные блоки как в ветви «Да», так и в ветви «Нет» (рис.В.3-2).

Усеченное разветвление содержит функциональные блоки только в ветви «Да» или только в ветви «Нет» (рис.В.3-3, В.3-4).

 

Вложенное разветвлениесодержит одно или несколько дополнительных разветвлений (рис.В.3-5).

 

Рис. В.3-5. Алгоритмическая Рис.В.3-6. Алгоритмическая

структура – вложенное разветвление структура – регулярный цикл

В соответствии с основным принципом структурного программиро­вания, все разветвляющиеся структуры, как и все другие алгоритмические структуры, должны иметь один вход и один выход.

Циклическими называются структуры, в которых предусмотрена возможность многократного повторения выполнения фрагмента алгоритма. Этот участок называется телом цикла. Различают циклические структуры двух видов: с заранее известным и с неизвестным числом повторений цикла.

Циклические структуры, в которых число повторений цикла заранее известно или может быть определено до начала цикла, называются регулярными циклическими структурами (рис.В.3-6).

В блоке организации цикла используется специальная пере­менная, которая предназначена для определения условия останова цикла (i). Эта переменная называется параметром цикла. Блоки, следующие за заголовком цикла, составляют тело цикла. Тело цикла выполняется для всех значений параметра цикла i, начинаю­щегося со значения m1 и изменяющегося с шагом m3 до значения m2.

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

Циклическая структура, в которой число повторений цикла заранее неизвестно, а определяется только в процессе выполнения алгоритма, называется итеративной циклической структурой.

В зависимости от места расположения условия продолжения цикла (или выхода из цикла) итеративные циклические структуры подразделяются на два вида: с предусловием и с постусловием.

Рис. В.3-7. Алгоритмическая Рис.В.3-8. Алгоритмическая

структура – итеративный цикл структура – итеративный цикл

 

При организации цикла с предусловием (рис.В.3-7) блоки тела цикла, следующие за блоком, в котором проверяется условие выхода из цикла, выполняются всякий раз, когда условие L принимает значение «Истина». При первом невыполнении этого условия происходит выход из цикла. Таким образом, возможен случай, когда тело цикла не будет выполнено ни разу. Поэтому циклические структуры с известным числом повторений (регулярные циклы) относятся к числу циклических алгоритмов с предусловием.

При организации циклов с постусловием, для которых условие выхода из цикла (или повторения тела цикла) проверяется после выполнения цикла
(рис.В.3-8), цикл всегда выпол­няется хотя бы один раз, независимо от значения L, и только после его выполнения принимается решение – продолжать выполнение цикла или выйти из него.