logo search
Шпора по информатике / 002

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).

    1. Структуры

В предыдущих лекциях рассматривали массивы. Массив – это последовательность

элементов одного типа. Обращение к конкретному элементу производится по его индексу. Но можно создавать группы из элементов разного типа. Такие группы

называются структурами и доступ к отдельным элементам выполняется по именам элементов. Это отличает структуру от массива, хотя массив можно считать простейшей структурой.

Структуру можно рассматривать как новый сложный тип, составленный из

других типов. Имя этого нового структурного типа указывается после

ключевого слова 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 определяет новый тип, но

не создаёт конкретного объекта, т.е. не выделяет память для него ( напомним, что

объект – это участок памяти). Создание объекта происходит при его описании,

т.е. когда определяется его имя и его структура по указанному в описании типу.