Необходимо помнить, что для правильной записи конструкции оператора переменные i, n, k могут быть только как называемого “порядкового типа”. Это тип, в котором каждое данное имеет свой номер, свое расположение среди других данных этого типа.
Если требуется повторить группу действий, то оператор выглядит следующим образом:
FOR i : = n TO k DO
BEGIN
оператор 1;
оператор 2;
…………..
оператор n;
END;
Пример: Вывести на экран все натуральные делители числа n. PROGRAM DELITEL;
VAR
n: integer;
i: integer;
t: real;BEGIN
writeln (‘введите натуральное число n’);
read (n) FOR i: =1 TO N DO BEGIN T : = n/i;IF T = INT (T) THEN writeln (T);
END; END.Конструкция
FOR i: =n DOWNTO k DO
оператор;
используются для того случая, когда счетчик уменьшается на 1 при каждом следующем шаге.
Пример: Вывести на экран все четные числа от 100 до 1
PROGRAM CHISLO;
VAR
i: integer;
BEGIN FOR i:= 100 DOWNTO 1 DO
IF I/2= INT (I/2) THEN writeln (i); END.
Если в данных конструкциях начальные значения совпадают с конечны значением, то операторы цикла выполняются один раз.
Конструкция цикла с предварительной проверкой условия
WHILE <условие> DO
оператор;
{или группа операторов в операторных скобках BEGIN-END}.
Эта фраза обозначает следующее: « До тех пор пока условие является истиной, выполняются операторы цикла».
При этом необходимо помнить, что:
1. если условие ложно, сразу же при первом обращении к циклу, то тело цикла выполняться не будет;
2. данная конструкция цикла может работать, как конструкция цикла со счетчиком, но при этом необходимо изменять переменную, являющуюся счетчиком, с помощью оператора присваивания. В конструкции WHILE можно выбирать любой необходимый шаг.
Пример.
Вычислить y= sin2x +2,5x при x [-1; 1] с шагом ∆x= 0,25.
PROGRAM ZIKL; VAR
x, y : real;
BEGIN
x: = -1;
WHILE x<= 1 DO
BEGIN Y: = sin(x)*sin(x)+ 2,5*x;
writeln (‘при x =’,x, ‘y= ‘,y);
x: = x + 0,25;END;
END.
Алгоритм вычисления суммы
Пример 1:
Вычислить
.
PROGRAM SUM;
VAR
X, S : real;
n : integer;
sl : real;
BEGIN
Write (‘введите значение x’);
Read (x);
S : = 0;
FOR N : = 1 TO 20 DO
BEGIN
SL : = (2*x)/N;
S : = S + SL;
END;
writeln (‘суммаряда =’, S);
END.
Пример 2. Найти количество чисел, сумма которых превысит 100.
PROGRAM PRIM;
VAR
K: integer;
S : integer;
BEGIN
S: =0;
K: =0; WHILE S<=100 DO
BEGIN K: = K+1;
S: = S+ K;
END;
writeln (‘кол-во слагаемых равно’, K);
END.
Конструкция цикла с последующей проверкой условия
Формат данного оператора следующий:
REPEAT
тело цикла
UNTIL <условие>;
Служебное слово REPEAT (повторять) открывает тело цикла, затем выполняются последовательно операторы тела цикла и проверяется условие выхода из него.
Переводится конструкция так: «Повторять до тех пор, пока условие не станет истиной».
Необходимо помнить, что:
1. тело цикла выполняется хотя бы один раз в любом случае;
2. в ходе выполнения цикла должны прийти к истинности условия.
Пример: Вычислить сумму квадратов натуральных чисел до тех пор, пока квадрат очередного числа не превысит 100.
PROGRAM ZIKL_DO;VAR
s: integer;
n: integer;
BEGIN
s: =0;
n: =1;
REPEAT
s: = s + n*n;
n: = n + 1;
UNTIL N*N>100;
writeln (‘s =’, s);
END. -+
Алгоритм вычисления произведения
Пример: Вычислить n!
PROGRAM PROIZW;
VAR
n: integer;
p, i: integer;
BEGIN
writeln (‘введите значение n’);
readln (n);
p: = 1;
FOR i: = 1 TO N DO
P: = P*I;
writeln (‘произведение =’,P);
END.
Однако при n= 8, в данной программе Р = -25216, хотя в действительности Р = 40320. P необходимо присвоить формат longint.