Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Оператор безусловного перехода goto



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

goto < метка >;

Он предназначен для передачи управления на оператор, помеченный меткой. Метка представляет собой идентификатор, оформленный по всем правилам идентификации переменных с символом «двоеточие» после него, например, пустой помеченный оператор:

m1:;

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

Наиболее характерный случай использования оператора goto - выполнение прерывания (выхода) во вложенной структуре при возникновении грубых неисправимых ошибок во входных данных. И в этом случае необходимо, выйти из двух (или более) циклов, где нельзя использовать непосредственно оператор break, т.к. он прерывает только самый внутренний цикл:

for (...)

for (...)

{...

if (ошибка) goto error;

}

...

error: - операторы для устранения ошибки;

Если программа обработки ошибок нетривиальна и ошибки могут возникать в нескольких местах, то такая организация оказывается удобной.

Пример нахождения первого отрицательного числа в двумерном массиве:

for (i=0; i<N; i++)

for(j=0; j<M; j++)

{

if (v[i][j]<0) goto found;

... // Не найден

}

found:... // Найден

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

found = 0;

for (i=0; i<N &&!found; i++)

for (j=0; j<M &&!found; j++)

found = v[i][j]<0;

if (found)... // Найден

else... // Не найден





Дата публикования: 2015-09-17; Прочитано: 192 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...