Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_S.doc
Скачиваний:
24
Добавлен:
09.02.2015
Размер:
1.2 Mб
Скачать

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

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

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

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

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

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

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

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

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

…….

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

…….

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

goto M1;

…….

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]