Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект С++ (Часть 1).doc
Скачиваний:
17
Добавлен:
09.11.2019
Размер:
1.24 Mб
Скачать

Инструкции перехода

Использование инструкций break и continue было рассмотрено при изучении инструкции switch и циклических операторов. По поводу инструкции break следует напомнить, что при вложенных циклах она обеспечивает прекращение того цикла, в теле которого она непосредственно расположена.

Инструкция return, служащая для завершения выполнения функций и для возвращения из функций некоторых значений, будет подробно рассмотрена позже, при изучении функций.

В этом параграфе остается рассмотреть инструкцию безусловного перехода goto.

Характеризуя инструкции break (ее использование в циклах), continue и goto в целом, следует сказать, что их применение противоречит принципам структурного программирования и приводит к затруднению понимания алгоритмов программ, их отладки и дальнейшей модификации. Однако, несмотря на это, их использование в ряде случаев бывает оправдано. В принципе, как бы ни был сложен алгоритм программы, его всегда можно реализовать без использования этих инструкций. В основном это достигается за счет введения дополнительных логических переменных (флажков) и некоторого усложнения условий продолжения циклов. Однако в некоторых случаях эти “накладные расходы” оказываются чрезмерными и тогда выгоднее все-таки использовать эти инструкции перехода. Как поступать в тех или иных ситуациях во многом зависит от конкретного алгоритма и от внутренних предпочтений программиста. Но, все же, злоупотреблять использованием этих инструкций не следует.

Инструкция goto обеспечивает переход на выполнение инструкции отмеченной с помощью метки.

Формат записи: goto <Метка>;

Метка представляет собой некоторый идентификатор, за которым следует символ’:’. Меткой может быть помечена любая инструкция, находящаяся в той же функции, в которой находится оператор goto.

Пример использования:

…….

M1: <Инструкция>;

…….

if (<Условие>)

goto M1;

…….

Наиболее часто обоснованное использование инструкции goto связано с выходом из глубоко вложенных циклов:

Использование в этом случае инструкции break вместо оператора goto привело бы к прерыванию только внутреннего цикла. Для прерывания выполнения всех циклов с помощью инструкции break потребовались бы существенные усилия.

5. Приемы программирования циклов

Итерация как базисная вычислительная схема (рекуррентные вычисления). Рекуррентные вычисления с целочисленными типами. Рекуррентные вычисления с вещественными типами. Программирование циклов в языке С++. Вложенные циклы. Циклы со сложным условием продолжения (выхода). Пред- и постутверждения, инвариант цикла. Примеры.

Циклические алгоритмы, соответствующие многократному повторению одного и того же алгоритма и реализующиеся с помощью циклических инструкций, в том или ином виде присутствуют в подавляющем большинстве практически значимых программ. С алгоритмической точки зрения все циклы можно разделить на две группы: циклы с заранее определенным числом повторений тела цикла и циклы, в которых количество итераций (под итерацией понимается однократное выполнение тела цикла) заранее не известно. Вторую разновидность циклов иногда называют итерационными циклами.

Существует много различных типовых схем вычислений, основанных на использовании циклов. Одной из них является схема рекуррентных вычислений.