Составление алгоритма решения
На основании изложенного выполним структурированную схему алгоритма решения (рис. 1). На первом шаге представлен алгоритм в общем виде, на втором – детализированы основные блоки. Блок 2 преобразован в последовательность блоков 2.1 (ввод) и 2.2 (вывод) конкретных исходных данных. Блок 3 детализирован последовательностью блока 3.1 (расчёт Mc) и совокупности блоков 3.2, 3.3, 3.4 (стандартной структуры ветвления). При этом блок 3.2 выполняет проверку заданного условия, а блоки 3.3 и 3.4 содержат основную (вычисление нагрузки F) и дополнительную (номер ветви n) расчётные зависимости. Блок 4 представлен блоком 4.1 с конкретными выводимыми значениями. Полученная на третьем шаге схема является классическим примером простого ветвящегося вычислительного процесса. При выполнении проверяемого условия, решение будет осуществляться по ветви 1 (блоки 1-2-3-4-5-6-8-9), при невыполнении – по ветви 2 (блоки 1-2-3-4-5-7-8-9). Полученный алгоритм нагляден, т.е. дружественен человеку-пользователю, ввиду параллельного расположения блоков вычислительных ветвей 6 и 7, но для программирования непригоден. Непосредственная программная реализация его невозможна потому, что операторы любого алгоритмического языка (в частности Си/Си++), выполняющие требования этих блоков, в программе параллельно располагаться не могут. Внимание! Базовые структуры ветвления напрямую для программирования непригодны. Предварительно они должны быть преобразованы – приведены к условно-линейному виду (полное ветвление) и конкретизированы (неполное ветвление). Преобразованные структуры представлены вариантами в табл. 1. Таблица 1
Поэтому классический ветвящийся алгоритм необходимо Шаг 1 Шаг 2 Шаг 3 Рис. 1. Структурированная схема алгоритма задачи преобразовать в условно-линейный, т.е. расположить блоки 6 и 7 последовательно, сохранив существующие связи с остальными. Два возможных варианта представлены на рис. 2. Полученные схемы с точки зрения решения абсолютно идентичны, т.к. при выполнении (не выполнении) проверяемого условия последовательность блоков, соответствующих каждой из ветвей, не нарушается. Так, выполнение условия предписывает решение по первой ветви – блоки 1-6, 8-9 (вариант 1) и 1-5, 7-9 (вариант 2), а невыполнение – по второй – блоки 1-5, 7-9 (вариант 1) и 1-6, 8-9 (вариант 2). Схемы отличаются тем, что в первой под блоком проверки расположена ветвь, соответствующая выполнению, а во второй – невыполнению условия. Особенность ветвящихся алгоритмов – нарушение естественного порядка выполнения некоторых блоков. Вариант 1 Вариант 2 Рис. 2. Условно-линейные схемы алгоритма Представленные схемы подтверждают это передачей управления от блока 6 (минуя блок 7) к блоку 8 без проверки каких-либо условий и от блока 5 к блокам 6 и 7 в зависимости от выполнения или невыполнения проверяемого условия. Внимание! Использование условно-линейных схем предписывает нарушение естественного порядка выполнения алгоритма.
|