else Writeln(’Стойте!’);
until S=’’;
Writeln(’До встречи! Нажмите Enter’); Readln;
end.
Я расположил операторы с надлежащими отступами, выделяющими структуру программы. Проверьте, работает ли она?
С какой бы стороны придраться к нашему часовому? Ведь программа делает все, что положено. Но рассмотрим ещё один её вариант. Дело в том, что условные операторы внутри цикла порой загромождают и запутывают его. Это не относится к нашей теперешней программе, но мы ведь только в начале пути… Ждать ли, пока гром грянет? Или подготовиться к нему заранее? Познакомьтесь с процедурой по имени BREAK – «прервать» (боксерам знакомо это слово).
Условие завершения цикла, как вам известно, проверяется в точке UNTIL. Но порой это условие удобней проверить где-то в середине цикла, и тогда цикл лучше прервать досрочно, вызвав процедуру BREAK следующим образом:
if условие_выхода_из_цикла then Break;
Посмотрите, как изменится блок-схема с оператором BREAK (рис. 30), здесь оператор принятия решения я заменил пунктирным прямоугольником.
Согласно схеме, оператор BREAK передаст управление в точку, следующую за UNTIL. Применительно к нашей программе условие досрочного выхода из цикла будет таким.
if S=’’ then break;
Слегка изменив предыдущую версию программы, я получил вариант, показанный ниже.
{ P_12_3 – часовой с досрочным выходом из цикла }
var S : string;
begin
repeat
Writeln(’Пароль?’); Readln(S);
{ если строка пуста, то выход из цикла }
if S=’’ then
if S = ’pascal’
then Writeln(’Проходите!’)
else Writeln(’Стойте!’)
until S=’’;
Writeln(’До встречи! Нажмите Enter’); Readln;
end.
Досрочный выход из цикла упрощает программу, но пользоваться им надо аккуратно, с умом. Не забывайте, что после BREAK программа переходит к оператору, следующему за UNTIL.
• Оператор цикла REPEAT-UNTIL организует многократное повторение операторов, вставленных между этими ключевыми словами.
• Условие выхода из цикла следует за ключевым словом UNTIL, цикл повторяется до тех пор, пока условие НЕ соблюдается.
• Оператор BREAK выполняет досрочный выход из цикла с обходом условия в UNTIL.