Инструкция repeat

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

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

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. Форма приложения Простое число

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

unit simple_;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton; // кнопка Проверить

Label1: TLabel;

Edit1: TEdit; // поле ввода числа

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

procedure ButtonlClickfSender: TObject); private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ButtonlClick(Sender: TObject) ;

var

n: integer; // проверяемое число d: integer; // делитель

r: integer; // остаток от деления п на d

begin

n:=StrToInt(Editl.text);

d := 2; // сначала будем делить на два

repeat

r := n mod d;

if r <> 0 // n не разделилось нацело на d

then d := d + 1;

until r = 0; // найдено число, на которое п разделилось без остатка

label2.caption:=Edit1.text;

if d = n

then Iabel2.caption:=label2.caption + ' — простое число.'

else label2.caption:=label2.caption + ' — обычное число.';

end;

end.