де умова - вираз логічного типа, що визначає умову завершення циклу.
Інструкція repeat виконується таким чином:
1. Спочатку виконуються тіла циклу, що знаходяться між repeat і until інструкції.
2. Потім обчислюється значення виразу умова. Якщо умова помилково (значення виразу умова рівне False), то інструкції тіла циклу виконуються ще раз.
3. Якщо умова істинно (значення виразу умова рівне True), то виконання циклу припиняється.
Таким чином, інструкції циклу, що знаходяться між repeat і unti1, виконуються до тих пір, поки умова помилково (значення виразу умова рівне False).
Алгоритм, відповідний інструкції repeat, представлений на мал. 4.

Рисунок 4 Алгоритм, відповідний інструкції repeat
Інструкції циклу, що знаходяться між repeat і until, виконуються як мінімум один раз. Для того, щоб цикл завершився, необхідно, щоб інструкції циклу, розташовані між repeat і until, змінювали значення змінних, що входять у вираз умова.
Як приклад використання інструкції repeat розглянемо програму, яка перевіряє, чи є введене користувачем число простим (як відомо, число називається простим, якщо воно ділиться тільки на одиницю і саме на себе). Наприклад, число 21 — звичайне (ділиться на 3), а число 17 — простої (ділиться тільки на 1 і на 17).
Перевірити, чи є число n простим, можна діленням числа n на два, на три і т.д. до n і перевірки залишку після кожного ділення. Якщо після чергового ділення залишок рівний нулю, то це означає, що знайдено число, на якому n ділиться без залишку. Порівнявши n і число, на якому n розділилося без залишку, можна визначити, чи є n простим числом.
Форма застосування Просте число зображена на мал. 5.

Рисунок 5 Форма застосування Просте число
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; // залишок від ділення n на 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.