Переключатель
Переключатель можно считать разновидностью условного выражения,
которая в некоторых случаях удобнее обычного условного выражения.
Чем они отличаются?
-
В переключателе проверяется только один объект, который сопоставляется с чем-то другим.
-
Производится проверка этого объекта на равенство (только равенство!) ещё какому-то объекту.
-
После заголовка переключателя перечисляются возможные значения, которые может принимать объект.
Т.е. переключатель — это условный оператор, который «специализируется» на проверке одного единственного объекта
(и только его) на равенство (и только равенство) некоторому набору значений.
Исключать его из арсенала инструментов будущего языка программирования не стоит.
Оператор «switch» в C/C++ выглядит примерно так:
switch (проверяемый на равенство объект)
{ case вариант значения 1:
операторы
break;
case вариант значения 2:
операторы
break;
case вариант значения 3:
case вариант значения 4:
операторы
break;
default:
операторы
}
Преписываем в своём скобочном стиле:
(switch проверяемый на равенство объект
case вариант значения 1
операторы
case вариант значения 2
операторы
case {вариант значения 3, вариант значения 4} // не одно значение, а множество
операторы
default
операторы)
IDE нарисует тот синтаксический сахар, который мы старательно удалили.
Внимательные читатели могут заметить, что код на Си может быть таким:
switch (проверяемый на равенство объект)
{ case вариант значения 1:
операторы
case вариант значения 2:
операторы
break;
case вариант значения 3:
операторы
}
Мы видим, что оператор «break» может отсутствать между ветвями «case».
Т.е. после выполнения одной ветви «case» выполняется идущая ниже.
Ничего хорошего в этом нет.
Это провоцирует появление «спагетти-кода».
Такую возможность следует исключить так же безжалостно, как и в случае с «goto».
Поэтому одна ветвь «case» должна заканчиваться, когда начинается следующая.
А теперь подводим итог, изобразив наши идеи в «симметричном скобочном» стиле.
(
|
switch проверяемый на равенство объект
|
|
|
|
case вариант значения 1
|
|
|
операторы
|
|
|
case вариант значения 2
|
|
|
операторы
|
|
|
case { вариант значения 3, вариант значения 4 }
|
|
|
операторы
|
|
|
|
|
default // Может «default» заменить на «else»? Экономия...
|
|
|
операторы для всех остальных случаев
|
)
|
Последняя правка: 2014-12-20 13:48
Отзывы
2014/12/22 13:20, Сергей
А как бы выбиратель (переключатель) выглядел бы с русскими служебными словами?
2014/12/23 03:32, Автор сайта
В языке «Эль-76» в этом случае писали «выбор» – «из».
2015/04/10 02:01, misha_shar53
Синтаксис переключателя взят от Си, а содержание от Паскаль. Это сбивает с толку. Надо тогда и синтаксис брать Паскаля. Он, по-моему, более лаконичный. Синтаксис Паскаля:case NUM of 1,2,3: writeln (‘Первый квартал’); 4,5,6: writeln (‘Второй квартал’); 7,8,9: writeln (‘Третий квартал’); 10,11,12: writeln (‘Четвертый квартал’) else writeln (‘Вы неправильно указали месяц’) end; Возможно end заменить на скобку).
Написать отзыв
Написать автору можно на электронную почту mail(аt)compiler.su
|