Примеры комбинации основных алгоритмических структур

Способы комбинации базовых управляющих структур (основных алгоритмических конструкций)

 

Структуры можно комбинировать одну с другой двумя путями:

следованияструктур друг за другом (рис. 9.19):

− создания суперпозиций – вложение одной структуры в другую (рис. 9.20).

 

Рис. 9.19. Последовательный способ соединения базовых управляющих структур алгоритмов: S1 и S2 − базовые управляющие структуры алгоритмов Рис. 9.20. Вложенный способ соединения базовых управляющих структур алгоритмов

 

Ветвящийся процесс, включающий в себя две ветви, называется простым (рис. 9.3). Если ветвь S1 либо S2 тоже представляет собой структуру «ВЕТВЛЕНИЕ»,товетвящийся процесс называют сложным. Сложный ветвящийся процесс содержит более двух ветвей.

 

Пример. Рассмотрим пример сложного ветвящегося вычислительного процесса.

Вычислить значение функции:

a x, если x < 1

Y(x)= x2, если 1 ≤ x ≤ 3

, если x > 3

для x = 0,1, x = 2,5, x = 16, a = 1.

Схема алгоритма решения представлена на рисунке 9.21.

 

 

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

 

Как видно из схемы алгоритма, здесь одна структура «Ветвление» вложена внутрь другой. При x < 1 блоки выполняются в следующей последовательности: 1, 2, 3, 7, 8, 9. Таким образом, если x < 1, в блоке 7 вычисляется . При 1 ≤ x ≤ 3 последовательность выполнения блоков: 1, 2, 3, 4, 6, 8, 9. Следовательно, если 1 ≤ x ≤ 3 в блоке 6 будет вычислено . Если x>3, блоки выполняются в следующей последовательности: 1,2, 3, 4, 5, 8, 9, т.е. при x > 3, в блоке 5 будет вычислено . Полученные результаты соответствуют условию задачи.

 

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

 

Пример. Фрагмент блок-схемы алгоритма, описывающий процесс «цикл в цикле», представлен на рисунке 9.23. Данный фрагмент описывает алгоритм вычисления таблицы Пифагора.

Таблица Пифагора.

1*1 1*2 1*3 1*4 1*5 1*6 1*7 1*8 1*9 1*10

2*1 2*2 2*3 2*4 2*5 2*6 2*7 2*8 2*9 2*10

3*1 3*2 3*3 3*4 3*5 3*6 3*7 3*8 3*9 3*10

4*1 4*2 4*3 4*4 4*5 4*6 4*7 4*8 4*9 4*10

5*1……………………………………………………………

6*1……………………………………………………………

7*1…………………………………………………………….

8*1…………………………………………………………….

9*1…………………………………………………………….

10*1 10*2 10*3 10*4 10*5 10*6 10*7 10*8 10*9 10*10

 

Обозначим строку – i, а столбец – j. Внутри внутреннего цикла элемент таблицы Пифагора равен i * j.

Чтобы вывести на экран монитора 1-ю строку, следует составить простой цикл, представленный на рисунке 9.22.

 

 

Рис. 9.22. Визуальное представление алгоритма, выводящего на экран 1-ю строку таблицы Пифагора

 

Выполним алгоритм последовательно.

  Блок 1. j=1.
цикл Блок 2. Вывод i*j=1*1. Блок 3. j=j+1=1+1=2. Блок 4. j ≤ 10?, 2≤ 10? Да, следовательно, после блока 4 выполняется блок 2.
цикл Блок 2. Вывод i*j=1*2. Блок 3. j=j+1=2+1=3. Блок 4. j ≤ 10?, 3≤ 10? Да, следовательно, после блока 4 выполняется блок 2.

Таким же образом последовательность блоков 2, 3 и 4 будет повторяться для j=3, 4, 5, 6, 7, 8, 9.

…………………………………………….

цикл Блок 2. Вывод i*j=1*10. Блок 3. j=j+1=10+1=11. Блок 4. j ≤ 10?, 11 ≤ 10? Нет, следовательно, после блока 4 произойдёт окончание простого цикла.

Чтобы вычислить все 10 строк, нужно менять строку i. Для этого данный простой цикл по параметру j (столбец) нужно вставить внутрь внешнего цикла по параметру i (строка) (рис. 9.23).

 

Рис. 9.23. Визуальное представление алгоритма сложного цикла

с количеством вложений, равным двум

 

Представим последовательное выполнение алгоритма в следующем наглядном виде:

i = 1 j=1 вывод i*j=1*1;

j=2 вывод i*j=1*2;

j=3 вывод i*j=1*3;

………………………..

j=10 вывод i*j =1*10.

j = j+1=10+1=11 11 ≤ 10? Нет, следовательно, после блока 5 выполняется блок 6, который увеличивает параметр i = i+1=1+1=2, переходим ко второй строке. Внутренний цикл по параметру j (столбец) повторяется для параметра i = 2, т.е. для второй строки.

i = 2 j = 1 вывод i*j = 2*1;

j=2 вывод i*j = 2*2;

J = 3 вывод i*j = 2*3;

…………………………

J = 10 вывод i*j = 2*10.

Таким же образом повторяется выполнение цикла для 3, 4, 5, 6, 7, 8, 9 и 10 строки.

После этого i принимает значение 11, проверяется условие 1 ≤ 10, условие не выполняется, и происходит окончание циклического процесса.

Визуальное представление алгоритма сложного цикла с количеством вложений, равным двум, можно представить с использованием символа «Подготовка» (рис. 9.24).

 

 

Рис. 9.24. Визуальное представление алгоритма сложного цикла с количеством вложений, равным двум, с использованием символа «Подготовка»