Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 62

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 УправляющаяПеременнаяИлиВыражение