Перед прочтением данной статьи, ознакомьтесь с общей теорией о циклах в Паскале.
Синтаксис
Конструкция оператора цикла с параметром следующая:
for <имя-параметра> := <выражение_1> to <выражение_2> do
<один_оператор>
Либо:
for <имя-параметра> := <выражение_1> downto <выражение_2> do
<один_оператор>
<Оператор> выполняется в цикле for для каждого значения параметра <имя_параметра> начиная со значения <выражение_1>, которое задаёт начальное значение параметра цикла, до значения <выражение_2>, задающего конечно значение параметра цикла, включительно.
Алгоритм
При использовании ключевого слова to значение параметра цикла увеличивается, при использовании downto - уменьшается.
Шаг изменения значения параметра цикла зависит от типа этой переменной, для целого типа - равен единице
Правила использования цикла for
- Параметр цикла, начальное и конечное значения должны быть одного типа (простого, кроме вещественного).
- Запрещено изменять в теле цикла значения параметра <имя_параметра>, <выражение_1> и <выражение_2>.
- Запрещено передавать управление в тело цикла извне минуя заголовок for, так как начальное и конечное значение вычисляется один раз при первоначальном входе в цикл.
- Тело цикла не выполняется, если начальное значение при to больше (при downto меньше), чем конечное.
- После выхода из цикла for значение <имя_параметра> не определено и не может быть использовано в дальнейших вычислениях.
- После служебного слова do может быть записан только один оператор, поэтому в случае, когда в теле цикла содержится несколько операндов их необходимо заключить в операторные скобки begin ... end;, организуя составной оператор
Пример
Определение значения факториала n!=1*2*...*n
program faktorial;
var
i, N, F: integer;
begin
write('Введите число: ');
readln(N);
writeln('Факториал числа ', N, ' : ');
F := 1;
for i := 1 to N do
F := F * i;
writeln('N, '! = ', F);
end.
Разбор кода
Объясним непосредственно сам цикл (подсвечен в коде).
- Параметру цикла i присваивается значение единица;
- Выполняется выражение F := F * i, в данном случае единица умножается на единицу;
- К параметру цикла i прибавляется единица, то есть i=2
- Выполняется выражение F := F * i, только теперь единица умножается на два, так как изменился параметр цикла;
- К параметру цикла i прибавляется единица, то есть i=3
- Выполняется выражение F := F * i, только теперь двойка умножается на три, так как переменная F изменилась на предыдущем этапе;
- Итак просходит до тех пор, пока параметр цикла не станет равен переменной N включительно, то есть когда i=N произойдет последняя итерация и управление перейдет к следующему за циклом for оператору.
Задание для практики будет прикреплено к одной из следующих статей, там вы сможете на одном задание использовать сразу три вида цикла и посмотрите наглядно, чем они отличаются.