Следующие фрагменты кодов функционально эквивалентны. Одна-
ко, один является более эффективным, чем другой. Можете ли вы
сказать какой?
case ch of if ch='a' then f1(ch)
'a': f1(ch); else if ch='b' then f2(ch)
'b': f2(ch); else if ch='c' then f3(ch)
'c': f3(ch); else if ch='d' then f4(ch)
'd': f4(ch);
end;
Левый фрагмент кода гораздо более эффективен, чем первый,
так как в общем случае предложение case порождает более компакт-
ный и быстрый объектный код, нежели серия предложений
if/then/else.
Цепочка if/then/else важна, так как она позволяет вам выпол-
нить переходы по множеству ветвей с анализом данных различных ти-
пов, что не может быть сделано с помощью предложения case. Одна-
ко, если вы используете скалярные данные целые, действтительные
числа, символьные данные и перечисления, то следует применять
предложение case.