Копие на уикитоогледало

Това е огледало на уикито в pascal.chat. Редактирането, историята и входът са там.

Basic Pascal Tutorial/Chapter 3/REPEAT..UNTIL/bg

English · Français · Български · 中文(中国) · 日本語

REPEAT...UNTIL

Конструкцията repeat .. until се нарича цикъл с постусловие защото контролното условие се проверява на края на изпълнението на цикъла.

Има следния синтаксис:

pascal
repeat
  statement1;
  // statement2;
  // further statements...
until BooleanExpression;

Цикълът repeat-until затваря операторите в тялото си, което означава, че няма нужда да се използва допълнителен блок begin ... end. Отбележете, че цикъла repeat продължава да се изпълнява докато условието му стане True; за разлика от цикъла while-do, който продължава докато условието му стане False.

Например, тялото на следния цикъл repeat ще се изпълни поне веднъж:

pascal
repeat
  WriteLn(Node.Text);
  Node := GetNextNode;
until not Assigned(Node);

Тук се предполага, че в самото начало променливата Node не е равна на Nil. Ако това на е така програмата ще се издъни.

Цикълът while-do е по-безопасен, понеже проверката се прави преди да се започне с изпълняване на операторите в тялото:

pascal
while Assigned(Node) do
  begin
    WriteLn(Node.Text);
    Node := GetNextNode;
  end;

Използвайте цикъл repeat-until когато операторите в тялото трябва да се изпълнят поне веднъж, независимо от началната стойност на контролното логическо условие.

Не е трудно по невнимание да се напише условие, контролиращо цикъл repeat-until, което никога не става True. Това поражда безкраен цикъл и кара програмата да увисне.

Един начин за програмиране е умишлено да се създаде безкраен цикъл и да се вмъкне оператор Break или Exit, контролиран от някакво условие по средата на цикъла, и по този начин да се излезе от иначе безкрайното повторение:

pascal
repeat
  statement1;
  if Condition then // Задължително трябва да стане True!
    Break;
  statement_that_might_affect_the_Condition;
until False;

Успешното използване на този подход зависи от условието, което в даден момент задължително трябва да стане вярно, без изключение. В противен случай сте вградили гарантирано безкраен цикъл.


From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 3/REPEAT..UNTIL/bg", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Версия 2, последно променена от WikiArchive .