Урок 10.
Вычисления с циклами
Циклы можно использовать не только для рисования, но и для вычислений.
Вот программа, которая вычисляет и выводит на экран степени числа два.
PRINT "Степени двойки"
INPUT "введите максимальную степень ->", N
FOR K=l TO N
PRINT 2^К
NEXT К
END
Замечание.
Возведение в степень — довольно трудоемкая операция, она выполняется
гораздо дольше умножения. Для простых программ эта разница быть может
и не заметна, но для сложных вычислительных задач может оказаться значительной.
Поэтому программисты всегда программируют возведение в целую степень с
помощью нескольких операций умножения. В задаче про степень числа 2 вообще
можно обойтись только одной операцией умножения на каждый шаг цикла.
PRINT "Степени числа 2"
INPUT "введите максимальную степень ->",N
Р=2
FOR K=l TO N
PRINT P
Р=2*Р
NEXT К
END
В этой задаче программа должна вычислять элементы числовой последовательности
аk , которые определяются по заданным правилам. Один из способов задания
элементов числовой последовательности — это формула, зависящая от некоторого
параметра. В первой программе используется именно такой способ. В ней
параметр k изменяется в цикле от 1 до N, а элементы последовательности
вычисляются по формуле аk = 2k.
Другой способ — найти правило, выражающее очередной
элемент числовой последовательности аk через предыдущий аk-1 (или несколько
предыдущих). Такое правило называется рекуррентным, соотношением. Задав
значение первого элемента последовательности, далее с помощью рекуррентного
соотношения можно вычислить все последующие. Для степеней числа 2 рекуррентное
соотношение очень простое — каждый следующий элемент в два раза больше
предыдущего: аk = 2(аk-1).
Во второй программе как раз и используется вычисление
степеней числа 2 с помощью этого рекуррентного соотношения. Переменная
р отводится для хранения очередного элемента последовательности, ее начальное
значение а1=2. После вывода на экран очередного элемента последовательности
оператором PRINT P старое значение заменяется на новое по рекуррентной
формуле с помощью оператора Р = 2*Р.
Задания для практической работы.
Напишите программу, которая вводит целое число
и с использованием цикла печатает таблицу умножения (от 1 до 10) для этого
числа. Например, если было введено число 5, то на экране должно появиться:
5*1=5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 *10= 50
Суммирование рядов чисел
Еще одна часто встречающаяся задача обработки данных — суммирование числовых
последовательностей. Задача ставится так: найти сумму первых N членов
числовой последовательности аk , определяемой явной формулой или рекуррентным
соотношением. Программа для решения этой задачи очень просто получается
из программы для вычисления элементов последовательности. Возьмем для
примера последовательность степеней числа 2 и чуть-чуть “подправим” две
уже знакомые программы:
PRINT "Сумма степеней двойки"
INPUT "введите количество слагаемых ->", N
S=0
FOR K=l TO N
S=S+2^K
NEXT К
PRINT "сумма = "; S
END
PRINT "Сумма степеней двойки"
INPUT "введите количество слагаемых ->",N
S=0: Р=2
FOR K=l TO N
S=S+P
Р=2*Р
NEXT К
PRINT "сумма = ";S
END
В этих программах переменная S введена для накопления
суммы. В самом начале мы записываем в эту переменную 0, ведь пока слагаемых
нет, значит, и сумма равна нулю. Далее, в цикле, где раньше стоял оператор
PRINT, выводящий значение очередного члена последовательности,
мы ставим оператор S=S+2^K (или S=S+P), смысл которого увеличить S на
2k (или Р). Таким образом, при каждом выполнении цикла значение S увеличивается
на величину очередного члена последовательности, и когда цикл кончится,
в S будет находиться сумма N членов.
|