Листинг 2.7. Простоечисло

Repeat

Инструкция repeat

End.

Begin

Begin

Var

Implementation

Var

Public

Type

Uses

Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls;

TForm1 = class(TForm)

Edit1: TEdit; // точностьвычисления

Button1: TButton; // кнопкаВычислить

Label1: TLabel;

Label2: TLabel; // поле вывода результата

procedureButtonlClick(Sender: TObject); private

{ Private declarations }

{ Public declarations )

end;

Form1: TForm1;

{$R *.DFM}

procedureTForm1.Button1Click(Sender: TObject);

pi:real; // вычисляемое значение ПИ

t:real; // точность вычисления

n:integer; // номер члена ряда

elem:real; // значение члена ряда

pi := 0;

n := 1;

t := StrToFloat(editl.text) ;

elem := 1; // чтобыначатьцикл

whileelem >= t do

elem := 1 / (2*n - 1) ; if n MOD 2=0

thenpi :=pi — elem elsepi := pi + elem; n := n + 1;

end;

pi: = pi * 4; labell.caption:= 'ПИравно '+ FloatToStr(pi) + #13

+ 'Просуммировано '+IntTostr(n)+' членов ряда.'; end;

 

Инструкция repeat, как и инструкция while, используется в программе в том случае, если необходимо выполнить повторные вычисления (организовать цикл), но число повторений во время разработки программы неизвестно и может быть определено только во время работы программы, т. е. определяется ходом вычислений.

В общем виде инструкция repeat записывается следующим образом:

// инструкции unti1условие

где условие — выражение логического типа, определяющее условие завершения цикла.

Инструкция repeat выполняется следующим образом:

1. Сначала выполняются находящиеся между repeat и until инструкции тела цикла.

2. Затем вычисляется значение выражения условие. Если условие ложно (значение выражения условие равно False), то инструкции тела цикла выполняются еще раз.

3. Если условие истинно (значение выражения условие равно True), то выполнение цикла прекращается.

Таким образом, инструкции цикла, находящиеся между repeat и unti1, выполняются до тех пор, пока условие ложно (значение выражения условие
равноFalse).

Алгоритм, соответствующий инструкции repeat, представлен на рис. 2.16.

Рис. 2.16.Алгоритм, соответствующий инструкции repeat

Внимание!

Инструкции цикла, находящиеся между repeat и until, выполняются как минимум один раз. Для того чтобы цикл завершился, необходимо, чтобы инструкции цикла, располагающиеся между repeat и until, изменяли значения переменных, входящих в выражение условие.

В качестве примера использования инструкции repeat рассмотрим программу, которая проверяет, является ли введенное пользователем число простым (как известно, число называется простым, если оно делится только на единицу и само на себя). Например, число 21 — обычное (делится на 3), а число 17 — простое (делится только на 1 и на 17).

Проверить, является ли число п простым, можно делением числа п на два, на три и т. д. до п и проверкой остатка после каждого деления. Если после очередного деления остаток равен нулю, то это означает, что найдено число, на которое п делится без остатка. Сравнив п и число, на которое п разделилось без остатка, можно определить, является ли п простым числом.

Форма приложения Простое числоизображена на рис. 2.17, программа приведена в листинге 2.7.

Рис. 2.17.Форма приложения Простое число

unitsimple_;