10.2 Метки операторов
Любой оператор программы может быть помечен. Метки нужны, например,
для переходов к этому оператору или для описаний алгоритма или программы.
Пример:
metk1: xx = .5; alg1: cout << xx; m1: int d; mmm: ;
От оператора метка отделяется двоеточием. Последним в примере помечен
пустой оператор. Меткой может быть любое уникальное имя, аналогичное имени переменной. Метки можно ставить перед любым оператором, заканчивающимся
точкой с запятой, в частности, перед оператором описания переменных или перед
пустым оператором. Можно пометить каждый оператор, как в Бейсике,
но в С++ это не принято, т.к. они усложняют чтение программы.
10.3 Операторы управления
Oбычно операторами передачи управления называют операторы
goto, break, return, continue.
Оператор return был рассмотрен в разделе 8.1.
Оператор безусловного перехода имеет вид
goto метка;
и служит для безусловной передачи управления оператору с указанной после
goto меткой, т.е. переходу к нему. В современном программировании
рекомендуется использовать данный оператор только в случае крайней
необходимости, т.е. когда невозможны другие реализации переходов с помощью оператора цикла или операторов выбора. Это связано с тем, что
оператор goto легко может стать причиной зацикливания программы, т.е. её бесконечного выполнения. Кроме того, он затрудняет чтение программ.
Его частое применение характерно только для начинающих программистов.
Пример:
goto m25 ; / / (10.5)
...
...
m25: cout <<” произошел переход на метку m25”<< endl;
Оператор break используется для принудительного выхода из цикла или
переключателя. Он безусловно передает управление тому оператору, который
следует за циклом или переключателем (о переключателе см. ниже).
Оператор continue используется только в операторах цикла для прерывания
по какому-то условию текущей итерации и перехода к следующей
( см. Ишкова Э.А., с. 47-48).
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 ( ПВ ) { / / (10.7)
case c1 : гр1 ;
case c2 : гр2 ;
. . . . . .
case cп : грп ;
default : грdef ; }
Здесь с1, c2, . . , cп - целые или символьные константы,
гр1, гр2, . . - различные группы операторов,
ПВ – переключающее выражение, значение которого определяет
выполняемую ветвь по совпадению с меткой после слова case.
При несовпадении значения ПВ со всеми метками выполняется
группа грdef с меткой default.
Обычно каждая из указанных групп завершается оператором break ( см. раздел 10.4).
Для изучения оператора switch можно обратиться
к учебнику, например, Ишковой Э.А., 2001г., с. 41-43.
