#10.2 break Досрочный выход из цикла в Паскаль

Для выхода из цикла используется оператор:

 break;

Как только исполнение программы доходит до строки, содержащей этот оператор, выполнение кода прекращается.

Пример №1

Рассмотрим код:

var i:integer;
begin
  for i:=1 to 10 do
  begin
     break;
     writeln(777);
  end;

  readln();
end.   

- в данном случае тело цикла for выполнится только 1 раз, но не полностью (число 777 не будет выведено), так как оператор break встречается в начале первого же витка цикла -- перед вызовом writeln('777') (запустите код, чтобы проверить).

Отметим, что та часть очередного витка цикла, что находится перед вызовом break выполняется как обычно, т.е. если написать:

var i:integer;
begin
  for i:=1 to 10 do
  begin
     writeln(777);
     break;
  end;

  readln();
end.     

-- то сначала на экран будет выведено число 777, а после цикл завершится.

Пример №2 -- Угадываем число

Задача

Написать программу, где пользователь угадывает число (можно задать литералом) из диапазона от 1 до 10 за 3 попытки

Возможное решение:

var a, b, i:integer;
begin
  a := 5;
  writeln('Угадайте число от 1 до 10 с трех попыток');
  for i:=1 to 3 do
  begin
    writeln('Попытка №', i, ' выше число:' );
    readln(b);
    if (b = a) then
    begin
       writeln('Победа!');
       break
    end else
       writeln('Не угадали!');
  end;

  writeln('Игра окончена!');
  readln();
end. 

-- для лучшего понимания см. видео-разбор данного решения

Видео-пояснения

Для этого урока есть следующие видео:

Самостоятельная работа

  1. Модицифируйте код:
    var i:integer;
    begin
      for i:=1 to 10 do
      begin
         writeln(777);
         break;
      end;
    
      readln();
    end.     
    

    -- таким образом, чтобы на 4-ом витке на экран было выведено число 777, а на 5-ом произошел выход из цикла (при этом строчку for i:=1 to 10 оставьте без изменений).

  2. В примере №2 есть код, который описывает программу угадывания числа с трех попыток. Перепишите этот код так, чтобы:
    1. Можно было бы задать угадываемое число (пусть его вводит пользователь)
    2. Если пользователь все же угадал число - напишите в сообщении о победе с какой именно попытки ему это удалось.
  3. В примере №2 есть код, перепишите его таким образом, чтобы сообщение "Игра окончена" выводилась, только если пользователь не угадал загаданное число.

    Подсказка: используйте значение логического типа.

(страница посвящается участнику @JimATI, рекомендовавшему сделать её более подробной и добавить в список уроков, до раздела с циклом while)

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

теперь эта страница сделана отдельным, пока небольшим, но уроком в списке других)

_____________
матфак вгу и остальная классика =)