logo search
Программирование в среде Delphy / Программирование в среде Delphi

7.1. Оператор цикла For

Этот оператор в общем случае имеет вид

For пер.цикла:= нач.знач. кон.знач. Do оператор1;

Его следует понимать следующим образом. Для переменной цикла от начального значения до конечного значения выполнять оператор1. В фигурных скобках показаны два варианта наращивания переменной цикла: To – соответствует шагу увеличения 1, а Downto – шагу -1. Переменная цикла, начальное и конечное значения обязательно должны быть целыми величинами. Переменная цикла должна быть внутренней переменной подпрограммы. Схему работы этого оператора можно изобразить следующим образом:

Правила использования оператора For:

1. Если начальное значение переменной цикла больше конечного, то цикл не выполняется ни разу.

2. Циклы можно вкладывать друг в друга, но не пересекать.

3. Можно передавать управление из цикла вовне его, но извне передать управление внутрь цикла нельзя.

4. Можно передать управление из цикла вовне его с последующим входом в этот же цикл.

5. Внутри цикла нельзя самим изменять значения переменной цикла.

6. После окончания цикла переменная цикла становится не определенной и ее значение уже нельзя использовать.

7. Если внутри цикла встречается оператор Break, то происходит принудительный выход из этого цикла.

8. Если внутри цикла встречается оператор Continue, то происходит переход к следующей итерации цикла.

Рассмотрим предыдущий пример программы, только внутренний цикл оформим с помощь оператора For. Эта часть программы теперь будет выглядеть следующим образом:

Пер.цикла=

нач. знач.

пер.цикла

<=кон.знач.

Да

Тело цикла

пер.цикла=

пер.цикла +1

Нет

h:=(b-a)/10; // Расчет шага по x

x:=a; // Подготовка цикла по x

M1:y:=0; // Подготовка цикла по i

For i:=1 to n Do if i<>j then y:=y+sin(i*x)/(i-j); // Расчет суммы

// Вывод результатов

Memo1.lines.Add(’x=’+floattostr(x)+’ y=’+floattostr(y));

x:=x+h; // Наращивание переменной цикла по x

if x<=b then goto M1; // Проверка окончания цикла по x

Как видим, число операторов программы уменьшилось на 3 и нет необходимости в метке M2.