Направо пойдёшь — коня потеряешь; налево пойдёшь — себя потеряешь; прямо пойдёшь — и себя, и коня потеряешь!
Сказочный выбор
Условный оператор IF обычно применяют, когда вариантов выбора не очень много (два-три), в противном случае гораздо удобнее использовать оператор CASE, который делает запись более компактной и понятной.
В общем случае оператор case имеет вид:
Case выражение of
Константа1: оператор1;
Константа2: оператор2;
Константа^ оператор^
Else оператор;
End;
Точку с запятой перед Else можно ставить (а можно и не ставить). Оператор Else может вообще отсутствовать в записи оператора case.
Константы 1-N называются константами выбора или метками случаев.
В пределах одного оператора case они не должны повторяться!
Выражение должно быть порядкового типа - целого, символьного, логического, перечисление или диапазон. Оно записывается между ключевыми словами case и of и называется также селектором или индексом выбора.
Иногда для нескольких констант следует выполнить одни и те же действия (оператор(ы)), тогда константы перечисляют через запятую:
2,3,5,7: print «Простые числа».
Точно так же можно указать и диапазон значений:
1..10: print «Первый десяток чисел».
Оператор должен быть составным, если для какой-либо константы выбора необходимо выполнить несколько операторов.
Закончим пример с простыми числами первого десятка.
Var number: 0..10;
Case number of
2,3,5,7: Application.MessageBox(’Простое число!’, ’’, MB_OK) else Application.MessageBox(’Составное число!’, ’’, MB_OK);
End;
Или без оператора Else:
Case number of
2,3,5,7: Application.MessageBox(’Простое число!’, ’’, MB_OK); 1,4,6,8,10: Application.MessageBox(’Составное число!’, ’’,
MB_OK);
End;
Эта же смысловая конструкция с оператором if выглядела бы так:
if (number = 2) or (number = 3) or (number = 5) or (number = 7) then Application.MessageBox(’Простое число!’, ’’, MB_OK) else Application.MessageBox(’Составное число!’, ’’, MB_OK);
Без оператора else она была бы ещё ужасней!
Оператор case действует так.
- Значение выражения последовательно сравнивается со всеми метками случаев.
- При равенстве выполняются операторы, соответствующие совпавшей константе, а затем управление передаётся оператору, следующему за словом End; оператора case.
- Если значение выражения не совпало ни с одной константой выбора, то выполняется оператор после слова else, а затем управление передаётся оператору, следующему за словом End; оператора case.
- Если ключевое слово else отсутствует, то ни один оператор в case вообще не выполняется.
- Для нашего примера.
- Если значение number равно 3, то мы получим сообщение «Простое число!».
Если значение number равно 6, то мы получим сообщение "Составное число"
Если значение number равно 0, то мы получим сообщение «Составное чис ло!» в первой записи (с оператором Else) и не получим никакого сообще ния во второй записи (без оператора Else).