Здесь переменная j, называемая управляющей переменной цикла for, является произвольным идентификатором, который объявляется как переменная любого скалярного типа (к скалярным относятся целый, символьный, булев и перечислимые типы).
При выполнении оператора for сначала вычисляется значение выражения expression1, затем вычисляется значение выражения expression2, далее управляющая переменная цикла последовательно пробегает все значения от expression1 до expression2. В том случае, когда значение expression1 оказывается больше значения expression2, тело цикла не будет выполняться вовсе. Эти значения остаются неизменными в ходе выполнения всего цикла for. Рассматриваемый вариант цикла for эквивалентен следующей последовательности операторов:.
j := expression1;
k := expression2;
while j begin
statement;
inc(j);
end:
в предположении, что при каждом выполнении оператора statement не изменяются значения j и к.
Оператор for вида for j := expression1 to expression2 do statement; неэквивалентен последовательности операторов
Цикл FOR в Pascal
begin
j := expression1;
while j begin
statement;
j := j + 1;
end;
end;
потому что выражение expression2 может изменяться при каждом выполнении оператора statement в цикле while.
В теле цикла for следует избегать операторов, изменяющих значение управляющей переменной j. Несмотря на то что использование подобных конструкций не приводит к ошибкам компиляции, они потенциально опасны и могут приводить к неприятным последствиям. Рассмотрим пример:
sum := 0;
for k := 1 to 100 do
begin
sum := sum + Sqr(k);
k := k + 2;
end;
Этот фрагмент программы является попыткой просуммировать n2 по всем целым значениям вида n * (3*
for k := 0 to 33 do
sum := sum + Sqr(3*k + 1);
sum := 0;
k := 1;
repeat
sum := sum + Sqr(k);
k := k + 3;
until k > 100;
После выполнения цикла for значение управляющей переменной становится неопределенным.
Вариант for. downto. do. цикла for аналогичен циклу for. to. do. за исключением того, что в нем управляющая переменная на каждом шаге выполнения не увеличивается, а уменьшается на единицу:
for j := expression1 downto expression2 do statement;
Подводя итоги, для применения циклов можно сформулировать следующие ^рекомендации:
- Используйте цикл for в том случае, когда точно знаете, сколько раз должно быть выполнено тело цикла. В противном случае обратитесь к циклам repeat или while.
- Используйте repeat, если необходимо, чтобы тело цикла выполнялось по крайней мере один раз.
- Используйте while, если хотите, чтобы проверка была произведена прежде, чем будет выполняться тело цикла.
Иногда бывает удобно проводить проверку на возможный выход из цикла где-нибудь в его середине, а не в начале или конце. Такой выход из цикла обеспечивается процедурой Break модуля System, которая прерывает выполнение самого внутреннего вложенного цикла, будь то for, whilе или repeat. Указанный модуль подключается к программе автоматически, если в этом есть необходимость. Пример:
while true do
begin
statement1;
if expression then Break;
statement2;
end;
Следует также упомянуть процедуру Continue, которая прерывает выполнение тела самого внутреннего цикла for, while или repeat и передает управление на его заголовок, так что начинается выполнение очередной итерации цикла.
Источник: www.cyberguru.ru
Цикл с параметром For в Pascal
В сегодняшней статье разберем самый популярный вид цикла в языках программирования. Это цикл с параметром. У него есть и другие названия: цикл-для, цикл со счетчиком (оператор for to do, оператор цикла с параметром).
Особенность данного цикла заключается в том, что использовать его нужно когда заранее известно количество повторений команд.
Посмотрите на рисунок ниже. Там представлена блок схема for (блок-схема цикла с параметром) и его запись на языке программирования Паскаль.
Параметр это целая величина, которая обозначается любой латинской буквой. Чаще всего используют символ — i. Начальные и конечные значения параметра тоже целые числа. Счетчик цикла может работать в двух направлениях: увеличение или уменьшение значения параметра.
Как работает цикл с параметром ?
Разберемся, как работает for в паскале. Выполнение начинается с получения переменной i начального значения а. Затем проверяется это значение с конечным значением n. Выполнение операторов цикла происходит в случае, когда i меньше или равно n (при положительном шаге счетчика) или i больше или равно n (при отрицательном шаге счетчика).
Задачи на циклы For в паскале с решением
Задание 1. Напишите программу, которая выводит на экран 10 строк следующего содержания: «**++==++**»
Решение:
Источник: infouch.ru
Операторы управления
Операторы цикла с условием обладают значительной гибкостью, но не слишком удобны для организации «строгих» циклов, которые должны быть выполнены заданное число раз. Оператор цикла for..do используется именно в таких случаях:
for параметр_цикла:=начальное_значение to конечное_значение do оператор; for параметр_цикла:=конечное_значение downto начальное_значение do оператор;
где оператор — любой оператор языка, параметр_цикла — имя переменной целочисленного или перечислимого типов, начальное_значение и конечное_значение должны быть того же типа, что и параметр_цикла .
Шаг изменения цикла for всегда постоянен и равен интервалу между двумя ближайшими значениями типа параметра цикла (при целочисленном значении параметра цикла шаг равен 1).
В случае если тело цикла состоит более чем из одного оператора, необходимо использовать составной оператор:
увеличить изображение
Рис. 3.26. Алгоритм работы цикла for..do
увеличить изображение
Рис. 3.27. Представление цикла for. do с помощью блок-схемы
for параметр_цикла:=начальное_значение to конечное_значение do begin оператор_1; оператор_2; . оператор_N; end;
Опишем алгоритм работы цикла for..do (рис. 3.26).
- Параметру_цикла присваивается начальное_значение.
- Если значение параметра_цикла превосходит конечное_значение , то цикл завершает свою работу. В противном случае выполняется п. 3.
- Выполняется оператор .
- Значение параметра_цикла изменяется на соответствующий шаг и осуществляется переход к п. 2, и т. д.
Понятно, что этот алгоритм представляет собой цикл с предусловием.
В дальнейшем, чтобы избежать создания слишком громоздких алгоритмов, в блок-схемах цикл for будем изображать так, как показано на рис. 3.27 10 Если шаг изменения параметра цикла равен единице, его в блок-схемах можно не указавать. .
Фрагмент подпрограммы, приведённый далее, демонстрирует применение цикла for :
var i : integer; c : char; begin for i :=1 to 10 do writeln ( i ); for i :=10 downto -10 do writeln ( i ); for c := ’ a ’ to ’ r ’ do writeln ( c ); end.
Вернёмся к задаче вывода значений функции на отрезке
с шагом 0.1. Как видим, здесь количество повторений цикла явно не задано. Однако это значение, можно легко вычислить. Предположим, что параметр цикла
принимает значения в диапазоне от
до
, изменяясь с шагом
, тогда количество повторений тела цикла можно определить по формуле:
![]() |
( 3.6) |
округлив результат деления до целого числа. Следовательно, фрагмент программы вывода значений функции на отрезке
с шагом 0.1 будет иметь вид:
var i, n : integer; x, y : real; begin n:=round ( ( pi — 0)/0.1)+1; x : = 0; for i :=1 to n do begin y:=exp ( sin ( x ) ) * cos ( x ); writeln ( ’ x= ’, x, ’ y= ’, y ); x:=x + 0.1; end; end.
Источник: intuit.ru