где н_зн, к_зн – начальное и конечное значения параметра цикла i или выражения для подсчета этих значений;
оп-р – оператор, называемый в программировании телом цикла.
Первый вариант оператора цикла For выполняется по шагам следующим образом:
· на первом шаге параметру цикла i присваивается значение н_зн и проверяется условие i<=к_зн;
· если условие i <= к_зн принимает значение true (истина), то выполняются действия, записанные в теле циклаоп-р, иначепрограмма выходитза пределы цикла(программа переходит на выполнение следующего оператора, располагающегося после знака «;»);
· после выполнения действий оп-р программа переходит к следующему шагу, на котором параметру цикла i присваивается следующее по порядку значение(если параметр iв разделе объявлений описан как целое число, то он увеличивается на 1, если параметр i – символьный, то он принимает значение следующего символа в соответствии с кодами символов от 0 до 255, а если параметр i имеет перечислимый тип, то принимает следующее значение в списке объявленных значений) и снова проверяется условие i<=к_зн (см.предыдущий пункт).
Таким образом, на каждом шаге параметр i последовательно принимает значения от н_зн до к_зн и тело цикла оп-р выполняется (к_зн - н_зн +1) раз.
Очевидно, что для корректности работы данного варианта оператора цикла с параметром должно выполняться условие н_зн < к_зн. Если же начальное и конечное значения параметра цикла вычисляются по некоторому алгоритму и окажется, что н_зн > к_зн, то оператор цикла эквивалентен пустому оператору.
Вариант 2: FOR i:= н_зн DOWNТО к_зн DO оп-р;
Во втором варианте оператора Forпараметру i, принимающему первоначально значение н_зн, на каждом следующем шаге присваивается предыдущее значение, определяемое порядковым типом параметра (для целого числа это значение на 1 меньше, для символьного типа это предыдущий символ по отношению к символу, выбранному на данном шаге).
Для корректности работы второго варианта оператора цикла с параметром должно выполняться условие н_зн > к_зн. Если же начальное и конечное значения параметра цикла вычисляются по некоторому алгоритму и окажется, что н_зн > к_зн, то оператор цикла эквивалентен пустому оператору.
Примечания:
1. Параметр цикла i и, соответственно, н_зн, к_зн могут быть любого порядкового типа (целые – byte, shortint, integer, символьный, булевский, перечислимый,…).
2. Тело цикла, обозначенное здесь как оп-р, может состоять из одного оператора, то естьбыть простым оператором, или из некоторой последовательности операторов, то есть быть составным оператором. Если тело цикла оп-р состоит из двух и более операторов, то они должны быть оформлены как составной оператор, то есть заключаться в алгоритмические скобки BEGIN…END и после слова END, естественно, ставится знак «;». Следовательно, в любом случае оператор цикла заканчивается знаком «точка с запятой».
3. Параметр цикла i меняет свои значения только автоматически, при переходе к следующему шагу цикла. Изменения параметра цикла i в теле цикла запрещены.
4. Значение параметра цикла i при выходе из оператора цикла становится неопределенным. Поэтому переменная i, объявленная в программе, может использоваться в качестве параметров цикла в различныхнезависимыхоператорах цикла, а вне этих операторов - как простая переменная. Например, будет корректным такой фрагмент программы:
Var i, sum_int:integer; sum_r:real;
Begin …
sum_r:=0;sum_int:=0;
For i:=1 to 5 do
sum_r:=sum_r+1/i;{i – параметр цикла }
For i:=1 to 10 do
sum_int:=sum_int+sqr(i);{ i – параметр цикла }
i:=35;{i - переменная}
…
Еnd;
Рекомендации по применению. Оператор цикла с параметром следует применять в тех случаях, когда количество выполнений оператора оп-р известно или может быть вычислено до начала выполнения оператора цикла.
Ниже приводятся программы, иллюстрирующие применение оператора цикла с параметром.
Пример1. Вычислить сумму N элементов арифметической прогрессии а1,а2,а3,…,аN при заданных значениях начального элементе а1 и разности d, позволяющих определить следующий элемент аi+1 из предыдущего ai по формуле аi+1 := ai + d, где i=1,2,…,N:
Program sum_ap;
var i,N:byte;
ai,d,sum: real;
begin
sum:=0;write(‘Задайте целое N и любые аi,d,: ’);
readln(ai,d,N);
for i:=1 to N do
begin sum:=sum + ai;
write(‘Сумма на ’,i,’-м шаге равна ’, sum);
ai:=ai+d
end;
writeln(‘Для выхода из программы нажми Enter’);readln;
end.
Пример 2.
Вычислить при заданном значении аргумента Х значение функции