|
Перепишем программу вычисления суммы |
|
Перепишем программу вычисления суммы 1 -f- 1/2 + ... + 1/п, используя оператор цикла со списком цикла, состоящим из одного элемента вида арифметической прогрессии begin real s; integer i, n; ввод (n)\ s:=0; for i: = l step 1 until n do s: = s + l/l\ вывод (s) end Вот еще несколько примеров применения оператора цикла со списком цикла, состоящим из одного элемента вида арифметической прогрессии. Пусть задан массив array а [0 : п] коэффициентов многочлена а0хп + агхп1 + ... + ап и требуется вычислить значение у этого многочлена в точке х. Это можно сделать с помощью операторов: у: = а[0]; for i: = 1 step / until n do у :=yxx + a[i] Чтобы подсчитать число m неотрицательных элементов массива array и [1: п] можно воспользоваться операторами т:=0; for i: = 1 step 1 until п do if и [i]^0 then m:=m + l Здесь тело цикла образовано условным оператором. Чтобы среди элементов того же массива и найти наибольший и определить его номер k, следует написать операторы k: = l, у : = и [/]; for i: = 2 step / until n do if и [i] > у then begin k: = i; y: = u [i] end Пусть требуется вычислить сумму 5 = /Ш + /(Ш + ... +VL00 Для этого можно написать операторы s:=0; for i: = l step / until 100 do s :=s + sqrt (I/100) по лучше прибегнуть к операторам s: = 0; for x:=0.01 step 0.01 until 1.005 do s : = s + sqrt (x) позволяющим сэкономить 100 операций деления во время выполнения цикла. Во втором варианте параметр цикла х — вещественная переменная, значения которой вычисляются приближенно, поэтому верхний предел значений параметра задан с запасом в половину шага. Элемент списка цикла A while В называемый элементом итерационного вида, задает последовательность значений параметра, вырабатываемую в результате многократного вычисления выражения А. Если после присваивания параметру цикла очередного значения из этой последовательности выражение В принимает значение «истина», то выполняется тело цикла, в противном случае последовательность, предписанная данным элементом, обрывается. Иначе это можно описать с помощью операторов: /: V:=A; if В then begin S; go to / end
|