Экстренные события в теле цикла
Иногда, при выполнении в теле цикла какого-либо условия, нужно экстренно прервать цикл, не доводя до конца очередной повтор. В таких случаях используется команда break.
Иногда, при выполнении в теле цикла какого-либо условия, нужно экстренно перейти к следующему повтору, не доводя до конца очередной повтор. В таких случаях используется команда continue. (Если это происходит в цикле FOR, то счётчик получает при этом следующее значение.)
Команды break и continue могут применяться в любом из видов циклов. Вне цикла их использование запрещено.
В некоторых задачах используется вложенный цикл (цикл в цикле). Например, каждый месяц в течение года больному нужно сделать десять уколов. Здесь внешний цикл (For) считает месяцы, а внутренний (тоже For) считает уколы в каждом месяце.
При выходе с помощью break из вложенного цикла мы попадаем во внешний (аналогично тому, как это происходит по окончании внутреннего цикла). А если нужно при каком-либо событии выйти сразу из двух или более вложенных циклов? Это можно сделать так:
1) В разделе описаний после слова Label указать метку (любое слово кроме служебных, составленное по тем же правилам, что и имена переменных).
2) В том месте (после конца последнего из циклов), куда нужно выскочить, поставить эту метку с левого края экрана и после неё поставить двоеточие.
3) В том месте (во внутреннем цикле), откуда нужно выскочить при выполнении какого-либо условия, поставить команду goto и после неё эту метку.
Многие специалисты (в том числе и автор Паскаля) не рекомендуют использовать команду goto, считая её потенциально опасной (источником логических ошибок). Поэтому в некоторых реализациях Паскаля (в том числе и Pascal ABC) эта команда отсутствует. Вместо неё можно завести специальную «флаговую» переменную, которая приобретает определённое значение перед прерыванием внутреннего цикла. Тогда во внешнем цикле можно проверить эту переменную, и если «флаг установлен», прервать и внешний цикл.
Дата добавления: 2014-12-18; просмотров: 1238;