Циклические конструкции

Оператор цикла с предусловием

Вычислительный процесс называется циклическим, если он содержит многократное повторение одних и тех же действий. Многократно повторяемые участки вычислений называются ЦИКЛАМИ.

Для программной реализации таких вычислений в Delphi имеется несколько типов операторов цикла.

Оператор цикла с предусловием

Оператор цикла с предусловием организует выполнение одного (возможно составного) оператора неизвестное число раз. Выход из цикла осуществляется, если некоторое логическое выражение окажется ложным. Так как истинность логического выражения проверяется вначале, то тело цикла может не выполниться ни разу.

Структура оператора

While <условие> do <оператор>;

В этой структуре:

<условие> — логическое выражение, истинность которого проверяется вначале выполнения циклического оператора;

<оператор> — любой выполняемый оператор языка (в том числе и составной, т.е. последовательность операторов, заключенная в операторные скобки Begin — End).

Порядок выполнения оператора

Пока условие истинно выполняется оператор, следующий за служебным словом do. Как только условие становится ложно выполнение оператора цикла прекращается.

Блок-схема оператора цикла с предусловием

Пример применения

Вычислить сумму S=1+1/2+1/3+…+1/50.

Procedure TForm1.Button1Click(Sender:TObject);

Var s:real

      i:Integer;

Begin

s:=0;

i:=1;

While i<=50 do

            Begin

            s:=s+1/n;

            n:=n+1;

            End;

Label1.Caption:='S='+FloatToStr(s);

End;

End;

Написать программу нахождения НОК и НОД двух чисел.

Procedure TForm1.Button1Click(Sender:TObject);

Var a,b,p,nok:Real;

Begin

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

p:=a*b;

While a<>b do

If a>b then a:=a-b

else b:=b-a;

nok:=p/a;

Label1.Caption:='НОД '+FloatToStr(a);

Label2.Caption:='НОК '+FloatToStr(nok);

End;

End;

Написать программу разложения целого числа на простые множители.

Procedure TForm1.Button1Click(Sender:TObject);

Var x,m:Integer;

      st:String;

Begin

x:=StrToInt(Edit1.Text);

m:=2;

st:=FloatToStr(x)+'=1';

While m<=x do

If (x mod m)=0 then

                         Begin

                         st:=st+'*'+FloatToStr(m);

                         x:=x div m;

                         End;

else m:=m+1;

End;

End;

Контрольные вопросы

1.  Какой вычислительный процесс называют циклическим?

2.  Сколько раз выполняется оператор цикла с предусловием?

3.  Как осуществляется выход из оператора цикла с предусловием?

4.  Объясните структуру оператора цикла с предусловием?

5.  Объясните порядок выполнения цикла с предусловием?

6.   Объясните блок-схему оператора цикла с предусловием?

7.  Приведите примеры применения оператора цикла с предусловием?

На главную.
Используются технологии uCoz