Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Оператор GOTO и метки





 

В языке "C" предусмотрен и оператор GOTO, которым беско-

нечно злоупотребляют, и метки для ветвления. С формальной

точки зрения оператор GOTO никогда не является необходимым,

и на практике почти всегда можно обойтись без него. Мы не

использовали GOTO в этой книге.

Тем не менее, мы укажем несколько ситуаций, где оператор

GOTO может найти свое место. Наиболее характерным является

его использование тогда, когда нужно прервать выполнение в

некоторой глубоко вложенной структуре, например, выйти сразу

из двух циклов. Здесь нельзя непосредственно использовать

оператор BRеак, так как он прерывает только самый внутренний

цикл. Поэтому:

 

FOR (...)

FOR (...) {

...

IF (DISASTER)

GOTO ERROR;

}

...

 

ERROR:

CLEAN UP THE MESS

 

Если программа обработки ошибок нетривиальна и ошибки могут

возникать в нескольких местах, то такая организация оказыва-

ется удобной. Метка имеет такую же форму, что и имя перемен-

ной, и за ней всегда следует двоеточие. Метка может быть

приписана к любому оператору той же функции, в которой нахо-

дится оператор GOTO.

В качестве другого примера рассмотрим задачу нахождения

первого отрицательного элемента в двумерном массиве. (Много-

мерные массивы рассматриваются в главе 5). Вот одна из воз-

можностей:

 

FOR (I = 0; I < N; I++)

FOR (J = 0; J < M; J++)

IF (V[I][J] < 0)

GOTO FOUND;

/* DIDN'T FIND */

...

FOUND:

/* FOUND ONE AT POSITION I, J */

...

 

Программа, использующая оператор GOTO, всегда может быть

написана без него, хотя, возможно, за счет повторения неко-

торых проверок и введения дополнительных переменных. Напри-

мер, программа поиска в массиве примет вид:

 

FOUND = 0;

FOR (I = 0; I < N &&!FOUND; I++)

FOR (J = 0; J < M &&!FOUND; J++)

FOUND = V[I][J] < 0;

IF (FOUND)

/* IT WAS AT I-1, J-1 */

...

ELSE

/* NOT FOUND */

...

Хотя мы не являемся в этом вопросе догматиками, нам все

же кажется, что если и нужно использовать оператор GOTO, то

весьма умеренно.

 

 

* 4. Функции и структура программ *

 

Функции разбивают большие вычислительные задачи на ма-

ленькие подзадачи и позволяют использовать в работе то, что

уже сделано другими, а не начинать каждый раз с пустого мес-

та. Соответствующие функции часто могут скрывать в себе де-

тали проводимых в разных частях программы операций, знать

которые нет необходимости, проясняя тем самым всю программу,

как целое, и облегчая мучения при внесении изменений.

Язык "C" разрабатывался со стремлением сделать функции

эффективными и удобными для использования; "C"-программы

обычно состоят из большого числа маленьких функций, а не из

нескольких больших. Программа может размещаться в одном или

нескольких исходных файлах любым удобным образом; исходные

файлы могут компилироваться отдельно и загружаться вместе

наряду со скомпилированными ранее функциями из библиотек. Мы

здесь не будем вдаваться в детали этого процесса, поскольку

они зависят от используемой системы.

Большинство программистов хорошо знакомы с "библиотечны-

ми" функциями для ввода и вывода /GETCHAR, PUTCHAR/ и для

численных расчетов /SIN, COS, SQRT/. В этой главе мы сообщим

больше о написании новых функций.

 

 

Date: 2015-09-17; view: 324; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию