Правила применения оператора цикла For

1. Тело цикла – всегда один оператор. Если нужно, чтобы тело цикла состояло из нескольких операторов, то их объединяют в один составной оператор с помощью операторных скобок begin, end.

For i:=l to n do

Begin

S:=S+sin(x)/cos(x);

x=x+0.01;

writeln('S=',S)

end.

Операторы, взятые в операторные скобки begin – end, считаются одним составным оператором.

2. Начальное и конечное значения параметра цикла в общем случае являются выражениями. Тип этих выражений и тип параметра цикла должны совпадать. Здесь допускается применение любых типов, которые упорядочены с каким-либо фиксированным шагом (порядковые типы), это может быть любой скалярный тип, кроме вещественного, т.е. байтовый, целый, символьный, перечисляемый, интервальный, булевский. На практике чаще всего применяют целочисленный тип.

3. В теле цикла параметр цикла не должен изменяться.

4. Нельзя с помощью оператора перехода goto войти в тело цикла, минуя заголовок.

5. Выйти из тела цикла в программу можно по if..goto, не дожидаясь полного перебора параметров цикла.

Оператор Repeat

Repeat – оператор цикла с постусловием.

Общий вид. В отличие от for, оператор repeat (а также while) применяют тогда, когда неизвестно точно, сколько раз будет выполняться тело цикла. Общий вид оператора:

Repeat

оператор1;

оператор2;

– – – – – – – –

until <булевское выражение>;

Работа оператора. Сначала выполняются операторы, составляющие тело цикла, затем выполняется булевское выражение, и если оно ложно, вновь выполняется тело цикла. Выход из цикла происходит, когда булевское выражение станет истинным.

Явного перебора параметров в Repeat не предусмотрено, поэтому изменение параметров осуществляется в теле цикла. Здесь же необходимо позаботиться, чтобы рано или поздно булевское выражение стало истиной.

Замечания:

1. Тело оператора repeat выполняется по меньшей мере один раз. Оператор repeat еще называют циклом с постусловием.

2. Перед until ';' не ставится.

Пример: найти сумму четных чисел в интервале от 0 до 100.

Program Prim;

Var i,s:integer;

BEGIN i:=0; s:=0;

Repeat

i:=i+2; s:=s+i

until i>100;

writeln('s=',s);

END.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: