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

7.2. Оператор цикла Repeat

Он имеет вид

Repeat тело цикла Until логическое выражение;

Выполнение цикла будет повторяться до тех пор, пока логическое выражение не примет значение «истина». Тело этого цикла в любом случае будет выполнено хотя бы один раз, так как проверка на окончание цикла здесь выполняется после выполнения операторов тела цикла. Внутри тела цикла обязательно должна изменяться какая–либо переменная, которая входит в логическое выражение и определяет условие выхода из цикла. В противном случае есть большая вероятность, что может получиться бесконечный цикл, т.е. программа зациклится. Давайте в предыдущем примере оформим внешний цикл по x с помощью оператора Repeat:

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

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

Repeat

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

Until x>b; // Проверка окончания цикла по x

Программа еще более упростилась и исчезла метка M1. В данном случае переменной цикла является x и она же входит в логическое выражение, определяющее условие выхода из цикла. В этом цикле переменная цикла может иметь любой тип в отличие от цикла For, где она должна иметь только целый тип.