
- •Лекция 8
- •3.6. Структурное программирование.
- •3.6.1. Конструкция следование.
- •3.6.2. Конструкция развилка.
- •3 .6.3. Конструкция выбор.
- •3.6.4. Конструкция повторение.
- •3.7 Элементарные алгоритмические приемы.
- •3.7.1. Последовательное суммирование.
- •3.7.2. Последовательное умножение.
- •3.7.4. Перестановка данных.
3.7 Элементарные алгоритмические приемы.
3.7.1. Последовательное суммирование.
В основе операции последовательного суммирования лежит правило выполнения операции присваивания, согласно которому при выполнении на ЭВМ выражения
S = S + A (1)
сначала вычисляется выражение записанное в правой части, а затем полученное значение заносится в ячейку памяти, отведенную для хранения переменной, записанной в левой части выражения (1). Поэтому если до выполнения выражения (1) имели S = 6 ; a = 8 , то после выполнения выражения (1) переменная S будет иметь значение 14.
Использование операции (1) позволяет построить эффективные алгоритмы в виде циклического процесса при решении многих задач:
вычисление сумм рядов;
суммировании элементов массивов;
численном расчете интегралов и т. п.
Рис.3.8.8
Пример.
Составить алгоритм вычисления суммы
15 элементов массива У. В данном случае
заранее известно сколько циклов надо
выполнять, поэтому можно использовать
любую модификацию цикла, в том числе и
цикл с постусловием. Очевидно, что для
применения формулы (1) до начала цикла
надо задать начальное значение переменной
S. Обычно начальное значение S задают
равным нулю или первому значению из
набора суммируемых переменных. Фрагмент
алгоритма решения задачи подобным
образом приведен на рис.3.8.8.
Более общей является задача, в которой необходимо суммировать различное число элементов массива, задаваемое, например, переменной N. Так как в общем случае N может быть равно нулю, алгоритм подобный приведенному на рис.3.8.8 может давать неправильный результат при N = 0. Поэтому для решения подобной задачи следует использовать цикл с предусловием и задавать начальное значение переменной S равным нулю как показано на рис.3.8.9.
Рис.3.8.9.
3.7.2. Последовательное умножение.
В основе операции последовательного умножения лежит выражение вида
Р = Р * В (2)
То есть после умножения переменной Р на некоторое значение В результат заносится в ячейку памяти, отведенную для хранения переменной Р. Например, если было Р = 5 и В = 3 , то после выполнения выражения (2) получим Р = 15.
Использование выражения (2) в циклическом процессе позволяет построить эффективные алгоритмы возведения переменной в степень, вычисления факториала, возведения ( - 1) в степень, вычисления произведений, вычисления полиномов и т.п.
Очевидно, что до цикла должно быть определено начальное значение умножаемой переменной ( Р ), причем оно не должно быть равно нулю.
Пример: вычисление R = X N . Так как в общем случае N может быть равно нулю, необходимо использовать цикл с предусловием и задать начальное значение переменной R равным единице. Фрагмент алгоритма решения этой задачи приведен на рис.3.8.10.
Рис.3.8.10.
Заметим, что для вычисления ( - 1 ) N * X N достаточно в алгоритме рис. 3.8.10 заменить
R = R * X на R = - R * X .