27.04.2017
Новые видео и статья 2 причины использовать Result.

24.04.2017
Новые видео и статья Унарные операторы.

23.04.2017
Новый подраздел Секреты программирования.

19.04.2017
Новые видео и статья Процедура Halt.

08.04.2017
Новые видео и статья Процедура Exit.

Раздел: Стандартные функции Паскаля

Процедура Break

Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...

Процедура Break в Паскале выполняет прерывание цикла. Синтаксис:

procedure Break;

Процедура Break выполняет переход к оператору, следующему после текущего блока цикла.

Код после вызова Break и окончанием блока цикла не выполняется. Состояние текущего цикла при этом прекращает отслеживаться.

Процедура Break может использоваться с циклами FOR и WHILE.

Учтите, что Break - это зарезервированное слово и оно не может быть переопределено.

Как прервать цикл в Паскале

Пример программы, которая использует процедуру Break для прерывания цикла, приведён ниже:

program breakproc;

{$mode objfpc}{$H+}

var i, j : byte;

//****************************************************************
// Так делать нельзя, потому что тогда прерывание цикла 
// с помощью Break не будет работать
//****************************************************************
{procedure Break;
begin
end;}

begin

  //Будут выведены 4 числа от 1 до 4
  for i := 1 to 10 do
    begin
      Write(i:3);
      if i = 4 then Break;
    end;

  WriteLn;

  //Будут выведены 3 числа от 1 до 3
  for i := 1 to 10 do
    begin
      if i = 4 then Break;
      Write(i:3);  //!!! Этот код после вызова Break 
                   //уже не будет выполнен !!!
    end;

  WriteLn;

  //Прерывание вложенного цикла
  for j := 11 to 15 do    //Цикл 1
    begin
      for i := 1 to 10 do //Вложенный цикл 2
        begin
          if i = 3 then
            Break;        //Прерывает вложенный цикл 2,
          Write(i:3);     //но цикл 1 будет выполнен до конца !!!
        end;
      Write(j:3);
    end;

  WriteLn;

  //Прерывание основного цикла
  for j := 11 to 15 do    //Цикл 1
    begin
      for i := 1 to 10 do //Вложенный цикл 2
        begin
          if i = 3 then
            Break;        //Прерывает вложенный цикл 2
          Write(i:3);
        end;
      if j = 13 then
        Break;            //Прерывает цикл 1
      Write(j:3);
    end;

  ReadLn;
end.

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

Также обратите внимание на то, как работает прерывание вложенного цикла: прерывается только вложенный цикл, а основной продолжает работать.

Также обратите внимание на нашу собственную процедуру Break в начале программы. Она закомментирована и не компилируется.

Однако, если вы её раскомментируете, то процедура Break будет переопределена. Ошибки компиляции это не вызовет - программа будет создана.

Но стандартная процедура Break не будет работать!!! То есть выйти из цикла с помощью процедуры Break вы не сможете, потому что вызываться будет уже не стандартная процедура из модуля SYSTEM, а ваша собственная процедура, объявленная в начале программы, которая не выполняет выход из цикла.


Директивы компилятора Директивы компилятора
Как это ни странно, но даже многие опытные программисты не используют директивы компилятора, считая их чем-то ненужным и бесполезным. А между тем, директивы компилятора - это очень классная штука. Если их умело применять в своих программах, то можно существенно сократить время на разработку и уменьшить количество рутинных операций. Подробнее...
Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика