Переключатель
Мы уже напоминали о
том, что использовать для многозадачного
ветвления в программе вложенные операторы if-then-else
Если глубина вложенности этих операторов
свыше трех, то конструкция теряет ясность. Более
наглядным и понятным в данной ситуации выглядит
оператор switch (переключатель),
специально предназначенный для принятия одного
из многих решений. Чаще всего этот оператор
выглядит следующим образом:
switch(целое выражение)
{
case константа1: оператор1;
case константа2: оператор2;
...
...
...
case константаn: операторn;
default : оператор;
}
|
При
выполнении этого оператора вычисляется
выражение, стоящее в скобках после ключевого
слова switch, которое должно быть целым.
Оно, в частности, может быть и символьным
значением (в языке Си символьные значения
автоматически расширяются до целых значений).
Эта целая величина используется в качестве
критерия для выбора одного из возможных
вариантов. Ее значение сравнивается с константой
операторов case. Вместо целой или
литерной константы в операторе case может
стоять дае некоторое константное выражение.
Значения таких констант (выражений) должны быть
различными в разных операторах case. При
несовпадении выполняется переход к следующему case
и сравнивается его константа. В случае
совпадения "константы_i"
выполняется "оператор_i", а также
все последующие операторы case и default.
Если не было ни одного совпадения и имеется
оператор default, то выполняется
стоящий за ним оператор. Если же оператора default
не было, выполнение программы продолжится с
оператора, следующего за структурой switch. Таким
образом, при каждом выполнении оператора
просматриваются все метки case. Рассмотрим
следующую программу (пример 5.2)
Пример 5.2
/*проверка switch*/
#include <stdio.h>
main()
{
int k=2;
switch(k)
{
case 0; printf("выбор 0\n");
case 1; printf("выбор 1\n");
case 2; printf("выбор 2\n");
case 3; printf("выбор 3\n");
default: printf("default\n");
}
} |
Как
видите, происходит то, о чем мы говорили:
выполняется альтернатива, соответствующая k=2
и все последующие операторы case, а
также выриант default. Чтобы обеспечить
выбор одного из многих вариантов (что и требуется
чаще всего), используют обычно оператор braek, который
вызывает немедленный выход из оператора switch
(пример 5.3) Для этой цели можно применять и
оператор return, а continue можно
применять лишь в случае, когда сам оператор switch
находится внутри цикла. Тогда continue
вызывает немедленный переход к следующей
интеракции, без рассмотрения оставшихся case.
Пример 5.3
/*проверка switch*/
#include <stdio.h>
main()
{
int k=2;
switch(k)
{
case 0; printf("выбор 0\n");
break;
case 1; printf("выбор 1\n");
break;
case 2; printf("выбор 2\n");
break;
case 3; printf("выбор 3\n");
break;
default: printf("default\n");
}
}
|
< Дальше >
|