Если вычислительный процесс содержит многократные вычисления по одним и тем же математическим зависимостям, но для различных входных данных, то его называют циклическим.
Многократно повторяемые участки вычислений называют циклами.
Если число повторений в цикле заранее известно, то в программах используется параметрический оператор цикла for.
Первый вариант оператора цикла имеет вид:
for параметр_цикла:=нач.знач. to кон.знач. do оператор;
параметр цикла – переменная типа integer или char;
нач.знач. кон.знач. –числа целого типа;
оператор–один простой или составной оператор;
Шаг изменения параметра цикла равен 1 и начальное значение параметра цикла всегда меньше конечного значения: нач.знач<кон.знач
Зная начальное и конечное значение всегда можно определить количество итераций цикла (сколько раз выполнится тело цикла).
К = |кон.знач. - нач.знач.|+1
Оператор цикла выполняется до тех пор, пока значение параметра цикла не превысит конечного значения.
Второй вариант оператора цикла имеет вид:
for параметр_цикла:=нач.знач. downto кон.знач. do оператор;
Шаг изменения параметра цикла равен -1 и начальное значение параметра цикла всегда больше конечного значения, т. е. нач.знач>кон.знач
Блок-схема оператора цикла представлена на рис.
Пример: Среди целых чисел, не превышающих 100 выбрать и напечатать те, которые кратны трем.
Var
i:integer;
begin
/* выбор всех целых чисел от 1 до 100 */
for i:=1 to 100 do
if i mod 3 = 0 /* если остаток от деления числа на 3 равен нулю */
then write (i:4); /*вывод числа, кратного 3 */
end.
Пример: Вычислить сумму площадей N прямоугольных треугольников, если длины оснований одинаковы и равны Х, а длины высот образуют последовательность: 1, 1.5, 2, 2.5, ...
Если в программе необходимо провести некоторые повторные вычисления, однако число повторов заранее неизвестно, то используют оператор цикла с предусловием:
WHILE условие DO оператор ;
Условие – логическое выражение;
Оператор – один простой или составной оператор;
Тело цикла выполняется до тех пор, пока условие истинно. Если условие заведомо ложно, то тело цикла не выполнится ни разу.
Пример:Протабулировать функцию y=2sinx×cos(x-1) и вычислить сумму её значений на отрезке [-2; 3] с шагом h=0,2.
Если в программе вычисляется сумма, то необходимо задавать начальное значение суммы равное нулю.
(*вычисление суммы значений функции *)
var
xn, xk, h, x, y, s : real ;
i : integer ;
begin
xn:=-2; xk:=3; h:=0.2; s:=0 ; x:=xn;
writeln(‘x y’); (*заголовки солбцов абсцисс и ординат*)