Алгоритм линейной структуры (следование) – алгоритм, в котором все действия выполняются последовательно друг за другом. Такой порядок выполнения действий называется естественным.
Рассмотрим несколько примеров.
Задача 1. Определить площадь треугольника по формуле Герона
где a, b, c – длины сторон;
p = (a + b + c)/2 – полупериметр треугольника.
Для того чтобы рассчитать S, необходимо иметь численные значения p, a, b, c. Мы можем рассчитать p по формуле, а вот значения a, b, c должны быть заданы заранее, иначе задачу решить невозможно.
Запишем словесный алгоритм.
1. Задать численные значения a, b, c.
2. Вычислить p по формуле:
p = (a + b + c)/2.
3. Вычислить S по формуле:
4. Зафиксировать результат.
Схема представляет собой последовательность блоков, соединенных линиями потоков. Направление потока задается стрелкой, но стрелка не ставится, если направление потока сверху вниз и слева направо. В левом верхнем углу в разрыве линий ставится номер блока.
Внутри блока ввода записывается слово “Ввод” и перечисляются исходные данные (имена переменных), которые задаются извне. Внутри блока вывода записывается слово “Вывод” и перечисляются переменные, которые являются результатом расчета.
Приведем еще один пример схемы алгоритма линейной структуры.
Задача 2. Вычислить значения функций Y и Z.
Разработка алгоритма (рис. 5).
Исходные данные: а, Ь, с. Y и Х должны быть определены раньше, чем Y и Z так как входят в расчетную формулу для Y и для Z.
Алгоритмы разветвляющейся структуры
На практике редко удается представить схему алгоритма решения задачи в виде линейной структуры. Часто в зависимости от каких–либо значений промежуточных результатов необходимо организовать вычисление либо по одним, либо по другим формулам. Ветвление – такая схема, в которой предусмотрено разветвление указанной последовательности действий на два направления в зависимости от итога проверки заданного условия. В схемах такой структуры используется логический блок (рис. 6).
Задача 2.
Рассчитать Y.
Разработка алгоритма. В этой задаче должно быть задано X. Далее анализируется X. Если X<0, то вычисления производятся по первой формуле, если это условие не выполняется, то выполняется второе условие X 0, так как условия X<0 и X 0 взаимоисключающие, и Y вычисляется по второй формуле.
Словесный алгоритм решения этой задачи будет выглядеть следующим образом.
1. Задать численное значение для X.
2. Проверить условие X<0:
если условие выполняется перейти к п. 5;
если условие не выполняется перейти к п. 3.
3. Вычислить Y по формуле Y = X2.
4. Перейти к пункту 6.
5. Вычислить Y по формуле Y = –X.
6. Зафиксировать вычисленное Y.
Схема данного алгоритма представлена на рис. 6.
Рекомендуется под словом “нет” записывать условие, противоположное проверяемому.
Задача 4. Вычислить значение функции Z = Х /Y, где Y = sin(nX) + 0.5.
Разработка алгоритма. Казалось бы решение этой задачи можно описать алгоритмом линейной структуры. Однако, для удовлетворения свойств массовости и результативности алгоритма необходимо, чтобы при любых исходных данных был получен результат или сообщение о том, что задача не может быть решена при заданных исходных данных. Действительно, если Y = 0, задача не может быть решена. Поэтому в алгоритме необходимо предусмотреть этот случай и выдать в качестве результата информацию о том, что Y 0. Рассматриваемый вычислительный процесс должен иметь две ветви: в одной, если Y 0, необходимо вычислить значение переменной Z, а в другой – дать информацию Y = О (рис. 7).
Если условие Y = О, выполняется, то работает блок 6, т.е. осуществляется вывод сообщения о равенстве Y нулю. После блока 6 сразу же выполняется блок 8 – решение заканчивается. Если условие Y = 0 не выполняется, это значит, что выполняется условие Y 0 и мы должны рассчитать Z и вывести его.