Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по С++.doc
Скачиваний:
27
Добавлен:
20.08.2019
Размер:
2.26 Mб
Скачать

Оператор выбора варианта.

На языке С++ можно расширить возможности последовательности вложенных условий с помощью оператора варианта switch, который позволяет легко обработать выбор альтернативы из их большого списка.

Формат:

switch (B)

{

case” метка 1 “:” [оператор 1 “;”] [“break” “;”]

… … … … … … … … … … … … … … … …

case” метка n “:” [оператор n “;”] [“break” “;”]

[“default” “:” операторы “;” ]

}

(B) – константное выражение (селектор) символьного или целого типа определяющее одну из меток стоящих после ключевого слова case.

метка 1 … метка n - константы целого и символьного типа, совпадающие по типу с селектором.

оператор 1 … оператор n – пустой, простой, структурированный, составной оператор, который выполняется при выборе соответствующей метки.

default – имеет значение иначе (else), операторы после default выполняются, если результат (B) не совпал ни с одной меткой.

Константное выражение - это выражение вычисляющееся во время компиляции.

Алгоритм выполнения:

  1. Вычисляется B;

  2. Это значение сравнивается с каждой из меток:

    1. если значение селектора равно метке, то выполняется соответствующие операторы. Далее возможны варианты:

      • если присутствует break, то действия переходят на оператор, стоящий за оператором switch;

      • если оператора breakнет, то выполняются все операторы, при всех метках, в порядке написания и после default;

б) если значение селектора не совпало с первой меткой, то действия переходят на распознание следующей метки, пропуская выполнение операторов нераспознанных меток;

в) если значение селектора не совпало ни с одной меткой, то выполняются операторы, стоящие после default.

Оператор switch действует как маршрутизатор, который сообщает компьютеру, какую строку кода использовать следует.

Обязательное условие для выполнения оператора:

При входе в оператор switch переменные, участвующие в селекторе, должны иметь конкретные значения

Селектор и альтернативы должны совпадать по типу. Тип возможен только целочисленный, символьный или перечисляемый.

Пример:

#include <iostream>

using namespace std;

void main()

{

int day;

cout<<"b abgycte mesace ";

cin>> day;

if ((day > 0) && (day < 31 ))

switch (day % 7 )

{

case 1: cout << " hiclo - patnica\n"; break;

case 2: cout << " hiclo - sybbota\n"; break;

case 3: cout << " hiclo - boskresenie\n";break;

case 4: cout << " hiclo - ponidelnik\n"; break;

case 5: cout << " hiclo - btopnik\n"; break;

case 6: cout << " hiclo - speda\n"; break;

case 0: cout << " hiclo - hetbepg\n"; break;

};

char c ;

cout << "bbedite simbol: Y, y, N, n = ";

cin >> c;

switch (c)

{

case 'Y':

case 'y': cout << " - YES "; break;

case 'N':

case 'n': cout << " - No "; break;

default : cout << "\n Bi ohiblisi!!! \n";

}

enum {red, orange, yellow, green, blue, violet, indigo};

cout << "bbedite cbet koda (0 -6)";

int code;

cin >> code;

if (code >= red && code <=indigo)

switch (code)

{

case red : cout << "kpasnii \n"; break;

case orange : cout << "opangebii"; break;

case yellow : cout << "geltie"; break;

case green : cout << "zelenii"; break;

case blue : cout << "cinii"; break;

case violet : cout << "fioletobii"; break;

case indigo : cout << "indigo"; break;

}

}