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

7.2.1 Оператор goto

Операторы программы выполняются в порядке их следования. Этот порядок при необходимости может быть нарушен с помощью операторов управления, одним из которых является оператор безусловного перехода goto.

В С# оператор безусловного перехода используется в одной из трех форм:

goto метка;

goto case константное_выражение;

goto default;

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

В первом случае оператор goto передает управление на помеченный оператор. Следовательно, для использования этой формы оператора необходимо тот оператор в данном блоке, которому должно быть передано управление, пометить.

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

В теле функции может присутствовать ровно одна конструкция вида:

метка: оператор;

При использовании goto следует учитывать следующие требования:

  • goto не должен передавать управление внутрь цикла;

  • вход в блок должен осуществляться через его заголовок.

Одной из концепций структурного программирования является отказ от бессистемного использования оператора goto, которое может существенно запутать логику программы. По возможности нужно стараться писать программы без оператора goto, так как его использование на­рушает принципы структурного и модульного программирования, по которым все блоки, образующие программу, должны иметь только один вход и один выход. Если же отказаться от него невозможно, то желательно использовать его так, чтобы управление передавалось вниз алгоритма, а программа легко читалась сверху вниз.

Например:

  • принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей;

  • переход из нескольких точек функции вниз по тексту в одну точку (например, если перед выходом из функции необходимо всегда выполнять какие-либо действия).

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

7.2.2 Специальные операторы управления

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

Оператор continue. Оператор перехода к следующей итерации текущего цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на нача­ло следующей итерации.

Оператор return. Оператор возврата из функции return завершает выполнение функции и переда­ет управление в точку ее вызова.