10. 4 Оператор мультиветвления switch
Рассмотреный в разделе 6.3 оператор if позволяет реализовать выполнение двух ветвей программы, но, используя вложение этих операторов, ветвление можно сделать очень сложным. Это было показано в примере (6.8). Но при сложном вложении трудно понимать текст программы и поэтому в этом случае удобнее использовать оператор множественного выбора switch, т.е. переключатель.
Пример.
char a, ss ; int m; / / (10.6)
cout <<" Варианты a, b, c ? "; cin>>ss;
switch ( ss ) {
case 'a' : m=11; break;
case 'b' : m=22; break;
case 'c' : m=33; break;
default : m=0;
} cout<<"m= "<<m ;
В общем случае переключатель имеет следующую форму:
switch ( ПВ ) { case c1 : гр1 ;
case c2 : гр2 ;
case cп : грп ;
default : грdef ; }
Здесь с1, c2, . . , cп - целые или символьные константы,
гр1, гр2, . . - различные группы операторов,
ПВ – переключающее выражение, значение которого определяет выполняемую ветвь по совпадению с меткой после слова case. При несовпадении выполняется группа грdef
Обычно каждая из указанных групп завершается оператором break ( см. раздел 10.4).
Структуры
В предыдущих лекциях рассматривали массивы. Массив – это последовательность
элементов одного типа. Обращение к конкретному элементу производится по его индексу. Но можно создавать группы из элементов разного типа. Такие группы
называются структурами и доступ к отдельным элементам выполняется по именам элементов. Это отличает структуру от массива, хотя массив можно считать простейшей структурой.
Структуру можно рассматривать как новый сложный тип, составленный из
других типов. Имя этого нового структурного типа указывается после
ключевого слова struct в виде: struct имя { . . . . } ;
где в фигурных скобках даются имена и типы его составляющих.
Пример :
struct stdnt { char Nm [20]; char Grup[5]; (10.8)
int godr; float srbal; float stip; } ;
Это опиcание структурного типа (tag в англ.). Типы элементов в описании разделяются знаками точка с запятой. Для выделения памяти структуре нужно
обычным образом описать одну или несколько структурных переменных, например,
stdnt s1, s2, s3;
Обычно работают с массивами структур: stdnt sts[60];
Такой массив можно рассматривать как таблицу, в которой строки
соответствуют индексам массива, а столбцы имеют имена и размеры,
указанные в описании типа stdnt в (10.11). Отметим, что в литературе
по базам данных строки называют записями, а столбцы полями.
Вызов конкретного элемента осуществляется через уточненное имя,
( есть и другие способы) :
имястp . имяэл
Здесь имястp – это имя структуры ( не имя типа!), а имяэл – это имя элемента.
Пример: s1.stip, s1. srbal, sts [13]. Nm, sts[7] . godr
Последнее значение в примере – это год рождения восьмого студента.
В заключение отметим ещё раз, что оператор struct определяет новый тип, но
не создаёт конкретного объекта, т.е. не выделяет память для него ( напомним, что
объект – это участок памяти). Создание объекта происходит при его описании,
т.е. когда определяется его имя и его структура по указанному в описании типу.
- 10.3 Операторы управления
- 10. 4 Оператор мультиветвления switch
- 10.6 Применение функции printf для форматирования
- 11.1 Графические программы
- 11.2 Построение символьного графика
- 11.4 Построение графика в графическом режиме
- 12.1 Передача данных для построения графика в MathCad
- 12.4 Указатели
- 12.5 Описание указателей
- 12.6 Указатели для массивов и строк
- 13.3 Оператор динамического выделения памяти new
- Void main ( ) {
- Void tab( ); };
- Void main ( ) {
- 15.1 Класс объектов, элементы класса
- 15.2 Доступ к элементам класса
- 15.3 Вызов элементов класса
- 15.4 Конструкторы классa
- 15.5 Пример класса Tkplk
- 16.1 Наследование
- 16.2 Полиморфизм
- 16.3 О перегрузке функций и операций
- 17. 1 Среда программирования и библиотека vcl
- 17.2 Консольное приложение в Builder
- При выполнении лабораторных работ в дисплейном классе используется
- 17.5 Вид экрана в builder
- 17.6 Работа с проектом в системе Builder
- 18.1 Редактор кода
- 18.4 Пример запроса, ввода, вывода для Win -программы