Оператор
"выбор" имеет следующую структуру: В системе программирования Turbo Pascal 7.0 для организации алгоритмов с ветвлениями, наряду с условным оператором применяют оператор
выбора. Его часто используют для замены конструкций из вложенных условных
операторов. Управляющая конструкция "выбор" является идеальным средством для обработки ситуаций с многими (более чем двумя) исходами, т.е.
в случае, когда условие может принимать более двух значений.
CASE <порядковая переменная> OF
<значение 1>: <оператор 1>;
<значение 2>: <оператор 2>;
. . .
<значение N>: <оператор N>;
[ELSE <оператор N+1>];
END; {CASE}
В этой структуре:
<порядковая переменная> - порядковая переменная значение которой проверяется;
<значение *> - константы, с которыми сравнивается значение порядковой
переменной;
<оператор *> - оперaторы, из которых выполняется тот, с константой котoрого совпадает значение порядковой переменной;
Ветвь оператора else является необязательной. Если она отсутствует и значение порядковой переменной не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличии от оператора IF перед словом else точку с запятой можно ставить.
Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую сопроводив их одним оператором.
Существует возможность указать диапазон значений.
Например диапазон от 1 до 100 включительно указывается так:
1 .. 100
Пример.
CASE i OF
0, 2, 4, 6, 8: Writeln('Чётная цифра');
1, 3, 5, 7, 9: Writeln('Нечётная цифра');
10 .. 100: Writeln('Число от 10 до 100');
ELSE
Writeln('Отрицательное число или больше 100');
END; {CASE}
В операторе выбор после после двоеточия может указываться только один оператор. Для того, чтобы выполнить несколько операторов, так же как и в условном операторе, применяют составной оператор.
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; {CASE}