Операторы передачи управления присутствуют в каждом языке программирования. В зависимости от языка, может быть 3-5 операторов. Их миссия — в момент работы программного кода при соблюдении определенного условия направить работу программы в определенное место к определенному оператору.
Например:
вам нужно, чтобы после получения какого-то программного результата программа завершила свою работу;
вам нужно, чтобы после получения какого-то результата программа начала свою работу заново;
вам нужно, чтобы после получения какого-то результата программа пропустила часть операторов и ее исполнение перешло ниже или выше по коду;
вы запустили какой-либо длинный цикл и, чтобы он не был бесконечным, добавляете оператор выхода из цикла;
и др.
Операторы передачи управления
Во многих языках программирования присутствует 4 формальных оператора передачи управления:
«goto» — гарантирует безусловный переход по заданному идентификатору;
«continue» — обеспечивает переход между итерациями цикла;
«break» — обеспечивает выход из цикла;
«return» — обеспечивает возврат из функции.
Операторы передачи управления: оператор «goto»
Во-первых, нужно сказать, что оператор «goto» поддерживают не все языки программирования. Строгие языки его не используют, например, в Java вы такого оператора не найдете.
Шаблон оператора «goto»:
goto <идентификатор>;
Этот оператор предназначен для одной простой цели — передать управление программой другому оператору, указанному в «идентификаторе». Вся «прелесть» этого оператора в том, что он не следует ни одному принципу структурного или модульного программирования, он может «разрушить» любую программную структуру. Условно вы можете разместить его в любом месте своей программы, и он обязательно выполнится, так как ничто не может повлиять на его выполнение.
«Вседозволенность» этого оператора может помочь:
когда нужно принудительно выйти из нескольких вложенных циклов программы, другие операторы здесь просто не справятся;
когда нужно гарантировать переход из функции в определенное место программы, независимо от полученного результата.
В общем, когда вам нужно, чтобы с определенного места программа выполнилась именно так, а не иначе, используется оператор «goto». Но в этом-то и его главная проблема. Один такой оператор в программе ничего плохого не сделает, но если их несколько, тогда программная структура ломается, а отладка становится затруднительной. Чем чаще используется оператор «goto», тем выше риск возникновения критических ошибок, которые напрочь «сломают», и вы ничего не сможете с эти поделать, так как просто не сможете отследить, где возникает проблема.
Поэтому оператор «goto» не рекомендован к использованию, а строгие языки программирования и вовсе не добавляют его поддержку. Если есть возможность не использовать «goto», тогда не упустите эту возможность.
Операторы передачи управления: оператор «continue»
Оператор «continue» используется во многих языках программирования. Если язык программирования поддерживает цикл, значит, он поддерживает и оператор «continue». Как вы правильно поняли, оператор «continue» используется в циклах.
Оператор «continue» еще называют «оператором перехода по итерации». Его основная задача — перевести выполнение кода к следующей итерации в цикле, когда будет достигнут необходимый результат. По факту получается, что, когда программа доводит исполнение до оператора «continue», все операторы цикла, которые идут «ниже него», пропускаются, и начинается следующая итерация цикла.
Операторы передачи управления: оператор «break»
Оператор «break» своей «строгостью» напоминает оператор «goto». Разница лишь в том, что «goto» работает по всей программе, а «break» — только в цикле. Оператор «break» — это способ принудительно завершить работу цикла и выйти из него.
То есть, когда программное исполнение в цикле достигает оператора «break», работа цикла завершается, а управление программой передается следующему оператору, который первым идет после «завершенного» цикла. От «goto» его отличает то, что «break» не имеет идентификатора оператора, которому передается управление. Он всегда передает управление программой оператору, следующему сразу после него. А оператор «goto» может передать управление программой из цикла любому другому оператору в любую точку программы.
Операторы передачи управления: оператор «return»
Оператор «return» служит для одной простой задачи — передать управление из функции обратно в вызывающую программу. Обычно как происходит? Вы пишите программу. В коде программы вы задействуете какую-то функцию, от которой хотите получить какой-то результат. То есть в каком-то месте программного кода вы вызываете работу какой-то функции, которой временно передается управление программной.
Эта функция работает до того времени, пока не получает нужный вам результат. Как только она его получила, она возвращает этот результат в то программное место, откуда поступил запрос. Однако эта функция должна передать не только получившийся результат, но и дальнейшее управление исполнением программы. Поэтому в конце этой функции присутствует оператор «return», который, по сути, «говорит» основной программе: «Функция закончила свои исполнение, вот результат. Возьми результат и дальнейшее управление программой».
Заключение
Сегодня мы в теории обсудили, как выглядят основные операторы передачи управления. В следующих статьях мы подробнее остановимся на каждом отдельном операторе. Это важно, потому что один и тот же оператор может вести себя по-разному в зависимости от ситуации, в которой он применяется.
Другое