Управляющие конструкции языка

Оператор выбора

В системе программирования Delphi для организации алгоритмов с ветвлениями, наряду с условным оператором применяют оператор выбора.

Оператор "выбор"

Его часто используют для замены конструкций из вложенных условных операторов. Управляющая конструкция "выбор" является идеальным средством для обработки ситуаций с многими (более чем с двумя) исходами, т.е. в случае, когда условие может принимать более двух значений. Оператор "выбор" имеет следующую структуру:

Case <порядковая_переменная> of

<значение_1>:<оператор_1>;

<значение_2>:<оператор_2>;

. . .

<значение_N>:<оператор_N>;

[else <оператор_N+1>];

End;

В этой структуре:

<порядковая_переменная> — порядковая переменная значение которой проверяется;

<значение_*> — константы, с которыми сравнивается значение порядковой переменной;

<оператор_*>  — операторы, из которых выполняется тот, с константой которого совпадает значение порядковой переменной.

Ветвь оператора else является необязательной. Если она отсутствует и значение порядковой переменной не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличии от оператора If перед словом else точку с запятой ставить можно, но необязательно.

Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую сопроводив их одним оператором. Существует возможность указать диапазон возможных значений. Например, диапазон от 1 до 100 включительно указывается так:

1 . . 100

Пример

Case i of

0, 2, 4, 6, 8: LabelN.Caption:='Четная цифра';

1, 3, 5, 7, 9: LabelN.Caption:='Нечетная цифра';

10..100: LabelN.Caption:='Число от 10 до 100';

else

LabelN.Caption:='Отрицательное число или больше 100';

End;

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

Case <порядковая_переменная> of

<значение_1>:Begin

                        <оператор_1_1>;

                        . . .

                        <оператор_1_N>;

                        End;

<значение_2>:Begin

                        <оператор_2_1>;

                        . . .

                        <оператор_2_N>;

                        End;

<значение_N>:Begin

                        <оператор_N_1>;

                        . . .

                        <оператор_N_N>;

                        End;

else

                        Begin

                        <оператор_E_1>;

                        . . .

                        <оператор_E_N>;

                        End;

End;

Блок-схема оператора "выбор"

Важное замечание

Необходимо заметить, что из всех возможных ветвей операторов управляющей конструкции выбор, выполняется только одна ветвь, даже если значение порядковой переменной совпадает с несколькими возможными значениями, отвечающими за разные ветви операторов. Выполняется та ветвь, которая расположена раньше. Как видно из блок-схемы значение порядковой переменной сравнивается последовательно со всеми возможными значениями, и как только найдется значение, которому равна порядковая переменная, выполняется ветвь операторов, сравнения прекращаются и управляющая конструкция прекращает свою работу. поэтому при составлении программ с использованием управляющей конструкции "выбор", раньше необходимо располагать более "строгие" последовательности операторов.

Контрольные вопросы

1.  Для чего предназначен оператор выбора?

2.  Могут ли выполниться несколько ветвей оператора "выбор" за один раз?

3.  Сколько операторов можно написать после возможного значения переменной?

4.  Может ли сразу несколько констант фигурировать в качестве возможного значения переменной?

На главную.
Используются технологии uCoz