Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_лекция_Основы_языка_С.doc
Скачиваний:
16
Добавлен:
05.06.2015
Размер:
395.78 Кб
Скачать

Оператор выбора - switch

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

Общая форма оператора switchследующая:

switch (выражение)

{

case постоянная1:

последовательность операторов

break;

case постоянная2:

последовательность операторов

break;

case постоянная3:

последовательность операторов

break;

default:

последовательность операторов;

}

Значение выражения оператора switch должно быть таким, чтобы его можно было выразить целым числом. Это означает, что в управляющем выражении можно использовать переменные целого или символьного типа, но только не с плавающей точкой.

Значение управляющего выражения по очереди сравнивается с постоянными в операторах case.

Если значение управляющего выражения совпадет с какой-то из постоянных, управление передается на соответствующую метку case и выполняется последовательность операторов до оператора break. Если оператор break отсутствует, выполнение последовательности операторов продолжается до тех пор, пока не встретится break (в другой метке) или не кончится тело оператора switch (т.е. блок, следующий за switch).

Оператор default выполняется в том случае, когда значение управляющего выражения не совпало ни с одной постоянной. Оператор default также может отсутствовать. В этом случае при отсутствии совпадений не выполняется ни один оператор.

Оператор case — это метка, однако он не может быть использован сам по себе, вне оператораswitch.

Оператор break — это один из операторов безусловного перехода. Он может применяться не только в оператореswitch,но и в циклах, (см. раздел "Операторы цикла"). Когда в теле оператораswitchвстречается операторbreak, программа выходит из оператораswitchи выполняет оператор, следующий за фигурной скобкой}оператораswitch.

Об операторе switchочень важно помнить следующее:

  • Оператор switchотличается отifтем, что в нем управляющее выражение проверяется только на равенство с постоянными, в то время как вifпроверяется любой вид отношения или логического выражения.

  • В одном и том же операторе switchникакие два оператораcase не могут иметь равных постоянных. Конечно, если одинswitchвложен в другой, в их операторахcaseмогут быть совпадающие постоянные.

  • Если в управляющем выражении оператора switch встречаются символьные константы, они автоматически преобразуются к целому типу по принятым в языке С правилам приведения типов.

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

В примере программа выводит на экран меню проверки правописания и вызывает соответствующую процедуру:

void menu(void)

{

char ch;

printf("1. Проверка правописания\n");

printf("2. Коррекция ошибок\n");

printf("3. Вывод ошибок\n");

printf("Для пропуска нажмите любую клавишу\n");

printf(" Введите Ваш выбор: ");

ch = getchar(); /* чтение клавиш */

switch(ch) {

case '1':

check_spelling();

break;

case '2':

correct_errors();

break;

case '3':

display_errors();

break;

default :

printf("Ни выбрана ни одна опция");

}

}

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

Если оператор break отсутствует, то выполняется следующий оператор case, пока не встретится очередной break, или не будет достигнут конец тела оператора switch.

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