Использование условных операторов в Object Pascal. Семенов Н.М. - 4 стр.

UptoLike

Составители: 

4
Использование условных операторов в Object Pascal
Цель
работы: Настоящая лабораторная работа призвана познакомить студентов с
особенностями использования условных операторов в Object Pascal и развить навыки
работы со средой Delphi.
Возможности программы были бы весьма ограничены, если бы всё, что она
могла делать, сводилось лишь к монотонному выполнению её операторов одного за
другим. Обычно в программе требуется изменить ход выполнения в зависимости от
значения логического условного выражения, которое фактически действует как
переключатель, выбирающий различные пути выполнения программы.
В Object Pascal (и в Delphi) имеются две условные управляющие конструкции,
также называемые структурами принятия решений:
1) оператор if,
2) оператор case.
Выполнение обеих конструкций зависит от оценки входящих в них выражений.
1 Оператор if
Синтаксис оператора if соответствует языку Turbo Pascal. Поэтому ограничимся
лишь некоторыми замечаниями относительно вложенных операторов if.
Операторы if могут быть вложены друг в друга произвольное число раз. Однако
вложенный оператор if, подобный приведённому ниже, содержит потенциальную
неоднозначность:
if Condition1 then
if Condition2 then
Statement1
else
Statement2;
Из приведённого фрагмента кода не ясно (если не брать в расчёт отступы, которые не
имеют значения для транслятора), к какому из двух операторов if принадлежит
ключевое слово else. Когда будет выполняться операция Statement2 - всякий раз, когда
Condition1 равно False, или только в том случае, когда Condition1 равно True, а
Condition2 - False? Эта неоднозначность устраняется транслятором, который
обрабатывает предыдущий пример эквивалентно следующему:
if Condition1 then
begin
if Condition2 then
Statement1
else
Statement2;
end;
Другими словами, else всегда принадлежит последнемуоткрытому оператору if,
который ещё не имеет части else. Оператор Statement2 выполняется только при
условии, что Condition1 равно True, а Condition2 - False.