IF LogicFunc(x) THEN ;
Он полезен в случаях, когда условием является возвращаемое значение какой-либо логической функции, имеющей побочный эффект. Например, известны библиотеки подпрограмм (Turbo Power Toolbox), где для создания окна на экране дисплея имеются функции, собственно строящие окно и возвращающие логическое значение в зависимости от результата построения. Приведенная выше конструкция позволяет проявиться побочному эффекту, игнорируя возвращаемое значение.
Условные операторы могут быть вложенными друг в друга:
IF Условие
THEN { Условие выполняется }
if ПодУсловие { ПодУсловие выполняется }
then
BEGIN
...
end
else { ПодУсловие не выполняется }
BEGIN
...
end
ELSE { Условие не выполняется }
BEGIN
...
end;
- 96 -
Еще раз обращаем внимание на отсутствие точки с запятой между ключевыми словами до самого внешнего слова END.
При вложениях условных операторов самое главное — не запутаться в вариантах сочетаний условий (отчасти этому может помочь ступенчатая форма записи операторов). Всегда действует правило: альтернатива ELSE считается принадлежащей ближайшему условному оператору IF, не имеющему ветви ELSE. Именно это правило заложено в компилятор, и, как следствие этого, есть риск создать неправильно понимаемые условия. Например:
IF Условие1
THEN
if Условие2
then ОператорА
ELSE
ОператорБ;
По записи похоже, что ОператорБ будет выполняться только при невыполнении Условия1. Но в действительности он будет отнесен к Условию2 и выполнится лишь при выполнении Условия1 и невыполнении Условия2. Попытка закрыть вложенный условный оператор установкой «;» после ОператораА лишь ухудшит положение. Выход здесь таков: нужно представить вложенное условие как составной оператор
IF Условие1
THEN
BEGIN
if Условие2
then ОператорА
end
ELSE
ОператорБ;
и для ветви ELSE ближайшим «незакрытым» оператором IF окажется оператор с Условием1.
В условии оператора IF может стоять достаточно сложное логическое выражение. В нем придется учитывать приоритет различных логических и математических операций, а также текущую схему компиляции логических выражений в Турбо Паскале. (Подробнее об этом см. разд. 9.3 «Логические вычисления и операции отношения».)
6.3. Оператор варианта (CASE)
Оператор варианта необходим в тех случаях, когда в зависимости от значений какой-либо переменной надо выполнить те или иные
- 97 -
операторы (простые или составные). Если вариантов всего два, то можно обойтись и оператором IF. Но если их, например, десять? В этом случае оптимален оператор варианта CASE. Структура оператора CASE имеет вид
CASE УправляющаяПеременнаяИлиВыражение