Лекция: END_CASE
Если значение выражения совпадает с заданной константой, то выполняется соответствующая группа выражений. Прочие условия не анализируются (<значение 1>: <выражения 1> ;).
Если несколько значений констант должны соответствовать одной группе выражений, их можно перечислить через запятую (<значение 2>, <значение 3>: <выражения 2> ;).
Диапазон значений можно определить через двоеточие <значение 4>..<значение 5>: <выражения 3> ;).
Группа выражений ELSE является необязательной. Она выполняется при несовпадении ни одного из условий (<выражения ELSE> ;).
Пример:
CASE byLeft/2 OF
0,127:
bReset := TRUE;
Var1 := 0;
16..24:
Var1 := 1;
ELSE
Varl := 2;
END_CASE
Значениями выбора CASE могут быть только целые константы, переменные использовать нельзя. Одинаковые значения в альтернативах выбора задавать нельзя, даже в диапазонах. Так, следующий пример обязан вызвать ошибку при трансляции:
CASE byLeft OF
20: Varl := 0;
16..24: Varl := 1;
END_CASE
Безусловно, оператор CASE «слабее» оператора IF, не имеющего подобных ограничений. Но формат CASE не только выразителен для программиста, но и более эффективен. Использование целочисленных констант позволяет транслятору выполнить оптимизацию кода, часто весьма существенную.