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


Полезное:

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


Категории:

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






Переключатель





 

Оператор SWITCH дает специальный способ выбора одного из

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

значения данного выражения с одной из заданных констант и

соответствующем ветвлении. В главе 1 мы привели программу

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

межутков и всех остальных символов, использующую последова-

тельность IF...ELSE IF...ELSE. Вот та же самая программа с

переключателем.

 

MAIN() /* COUNT DIGITS,WHITE SPACE, OTHERS */

{

INT C, I, NWHITE, NOTHER, NDIGIT[10];

 

NWHITE = NOTHER = 0;

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

NDIGIT[I] = 0;

 

WHILE ((C = GETCHAR())!= EOF)

SWITCH (C) {

CASE '0':

CASE '1':

CASE '2':

CASE '3':

CASE '4':

CASE '5':

CASE '6':

CASE '7':

CASE '8':

CASE '9':

NDIGIT[C-'0']++;

BREAK;

CASE ' ':

CASE '\N':

CASE '\T':

NWHITE++;

BREAK;

DEFAULT:

NOTHER++;

BREAK;

}

PRINTF("DIGITS =");

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

PRINTF(" %D", NDIGIT[I]);

PRINTF("\NWHITE SPACE = %D, OTHER = %D\N",

NWHITE, NOTHER);

 

 

Переключатель вычисляет целое выражение в круглых скоб-

ках (в данной программе - значение символа с) и сравнивает

его значение со всеми случаями (CASE). Каждый случай должен

быть помечен либо целым, либо символьной константой, либо

константным выражением. Если значение константного выраже-

ния, стоящего после вариантного префикса CASE, совпадает со

значением целого выражения, то выполнение начинается с этого

случая. Если ни один из случаев не подходит, то выполняется

оператор после префикса DEFAULT. Префикс DEFAULT является

необязательным,если его нет, и ни один из случаев не подхо-

дит, то вообще никакие действия не выполняются. Случаи и вы-

бор по умолчанию могут располагаться в любом порядке. Все

случаи должны быть различными.

 

Оператор BREAK приводит к немедленному выходу из перек-

лючателя. Поскольку случаи служат только в качестве меток,

то если вы не предпримите явных действий после выполнения

операторов, соответствующих одному случаю, вы провалитесь на

следующий случай. Операторы BREAK и RETURN являются самым

обычным способом выхода из переключателя. Как мы обсудим

позже в этой главе, оператор BREAк можно использовать и для

немедленного выхода из операторов цикла WHILE, FOR и DO.

Проваливание сквозь случаи имеет как свои достоинства,

так и недостатки. К положительным качествам можно отнести

то, что оно позволяет связать несколько случаев с одним дей-

ствием, как было с пробелом, табуляцией и новой строкой в

нашем примере. Но в то же время оно обычно приводит к необ-

ходимости заканчивать каждый случай оператором BREAK, чтобы

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

случая на другой обычно бывает неустойчивым, так как оно

склонно к расщеплению при модификации программы. За исключе-

нием, когда одному вычислению соответствуют несколько меток,

проваливание следует использовать умеренно.

Заведите привычку ставить оператор BREAK после последне-

го случая (в данном примере после DEFAULT), даже если это не

является логически необходимым. В один прекрасный день, ког-

да вы добавите в конец еще один случай, эта маленькая мера

предосторожности избавит вас от неприятностей.

 

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



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