Одним из свойств алгоритма является дискретность — возможность расчленения процесса вычислений, предписанного алгоритмом, на отдельные этапы, возможность выделения участков программы с определенной структурой. Простейшие алгоритмические структуры можно наглядно представить графически. Таких структур три.
1. Последовательность двух или более операций. Выполняемые операции независимы от условий и последовательно располагаются на схеме, одна за другой. Эта структура имеет место на том участке, где отображается вычисление простых арифметических выражений (рис. 4.17).
2. Выбор направления. Решение задачи зависит от результата проверки некоторого заранее определенного условия, признак которого указывается, как правило, внутри символа «решение». В зависимости оттого, выполняется ли это условие, выбирается одно из предусмотренных направлений процесса вычислений, так называемых ветвей. При этом могут быть два варианта.
Первый вариант. Вычислительный процесс организован по двум ветвям. Направление вычислений выбирается путем проверки выполнения определенных условий. Результаты проверки зависят от свойств исходных данных или от промежуточных результатов. Например, необходимо определить количество положительных и количество отрицательных элементов вектора A. Обозначим их соответственно K1 и K2. Если элемент положительный, т. е. аi>0, то вычисление идет по правой ветви, К1 увеличивается на 1. Если аi<0, выбирается другая ветвь, количество отрицательных элементов К2 увеличивается на 1. Вычисление предусмотрено по одной и другой ветви (рис. 4.18, а).
Второй вариант. Вычислительный процесс может быть организован только по одной ветви. Например, требуется определить количество элементов вектора В, значение каждого из которых равно 5, т. е. подсчитать количество пятерок.
|
Если элемент равен 5, К увеличивается на 1; если условие не соблюдается, вычисление не выполняется, а линия потока направлена к операции изменения значения индекса, что обозначает переход к следующему элементу (рис. 4.18, б).
3. Повторение. Операция может повторяться при соблюдении определенного условия. Обратимся к примеру, представленному на рис. 4.19. Операция S: = S + ai будет повторяться до тех пор, пока индекс i не достигнет максимального значения, т. е. 20 раз. После каждого шага проверяется значение индекса i. На рис. 4.19, а проверка осуществляется после операции сложения, а затем уже, при условии если i <20, индекс i увеличивается на 1 и вновь повторяется операция сложения.
На рис. 4.19, б взаимное положение символов несколько изменено. Проверка осуществляется после изменения значения индекса: при условии i< или i =20 прибавляется новый элемент.
И первое и второе взаимное положение символов допустимо. Когда внутри символа «решение» поставлено условие, нужно быть внимательным при выборе ветви (да, нет), чтобы выбор был логически оправдан.
Каждая из трех представленных выше структур должна иметь единственную точку входа в структуру и единственную точку выхода из нее и перехода к следующему шагу программы или к следующей алгоритмической структуре.
Любой вычислительный процесс может быть представлен как комбинация из элементарных, алгоритмических структур. Умение расчленить схему на такого рода структуры облегчает чтение программы.
Вычислительные процессы, выполняемые ЭВМ по заданной: программе, подразделяют на три основных вида: линейные, ветвящиеся и циклические.