main.gif (47332 bytes)

InterReklama
InterReklama Advertising

Р Е К Л А М А

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

TBN 100x100
TBN.ru

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      Мы уже напоминали о том, что использовать для многозадачного ветвления в программе вложенные операторы 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");
}
}
back.gif (1087 bytes)ind.gif (1892 bytes)next.gif (1100 bytes)
Hosted by uCoz