Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Переключатели



Читайте также:
  1. Переключатели кулачковые групповые ПКГ-4Б и ПКГ-6Г
  2. Реверсор РК-022Т и тормозные переключатели ТК-36Т, ТК-8Б

Если некоторое средство представляет собой плохую идею, то средства, построенные поверх его, оказываются еще хуже. Это правило можно продемонстрировать на переключателе, который, по существу, представляет собой массив меток. Например, в предположении наличия меток L1,: L5 объявление переключателя в языке Algol могло бы выглядеть следующим образом:

switch S:= L1, L2, if x < 5 then L3 else L4, L5

Тогда несомненно простой оператор goto S[i] является эквивалентным следующему:

if i = 1 then goto L1 else

if i = 2 then goto L2 else

if i = 3 then

if x < 5 then goto L3 else goto L4 else

if i = 4 then goto L5

Если goto стимулирует беспорядок в программировании, то переключатель делает его неизбежным.

В 1965 г. Хоар предложил наиболее подходящую замену переключателя - оператор case. Эта конструкция представляет собой правильную структуру, в которой операторы-компоненты выбираются в соответствии со значением i:

case i of

1: S1 | 2: S2 |........... | n: Sn

end

Однако разработчики современных языков программирования решили игнорировать это элегантное решение в пользу гибрида переключателя языка Algol и структурного оператора case:

case statement:

switch (i) {

case 1: S1; break;

case 2: S2; break;

:;

case n: Sn; break; }

Символ break либо обозначает разделитель между последовательными операторами Si, либо действует как goto на конец конструкции переключателя. В первом случае он является избыточным, а во втором - это замаскированный goto. Этот пример происходит из языка C - плохая концепция в плохой нотации,


Дата добавления: 2015-07-10; просмотров: 134 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.005 сек.)