Листинг 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_;