В Pascal есть два способа принятия решения: условный оператор if и оператор выбора case.
Оператор if
Условный оператор if (если) очень похож на сослагательное наклонение в естественном языке. Рассмотрим следующее предложение с ключевым словом "если":
В Pascal, как и в большинстве других языков высокого уровня, оператор if составляет основу структур принятия решений. Синтаксис простой формы оператора if, называемой if-then, имеет вид
if выражение then операторы;
Все оператор после слова then выполняется, только если значение выражения равно True. Выражение -условие должно иметь булев тип. На рис. 1 показана блок-схема оператора if-then.
Рисунок 1 - Блок-схема оператора if-then
Оператор if-then, не содержащий операторов, выполняющихся при истинности условия, называется пустым оператором if. Такие операторы бесполезны и должны быть удалены из кода.
Если оператор if-then содержит более одного выполняемого оператора, то необходимо заключить его в блок с помощью ключевых слов begin и end.
В некоторых случаях необходима более сложная структура принятия решения if-then-else, синтаксис которого имеет вид.
if выражение then begin
[ операторы 1;]
end
else begin
[ операторы 2;]
end;
На рис. 2 показана блок-схема простой формы оператора if-then-else. Группа операторов операторы 1 выполняется, только когда выражение условие имеет значение True. Операторы операторы 2 выполняются, только если выражение условие имеет значение False.
Рисунок 2 - Блок-схема простой формы оператора if-then-else
Перед ключевым словом else точка с запятой (;) не ставится. В операторе if между предложением then и ключевым словом if точки с запятой не должно быть никогда. Точка с запятой ставится после всего оператора if, чтобы отделить его от следующего оператора, а между предложениями then и else ставятся только пробелы или символ перехода на следующую строку. Внутри составного оператора, ограниченного ключевыми словами begin и end и входящего в состав оператора if, точки с запятой ставятся, естественно, после каждого оператора.
Операторы if, содержащие предложения else-if, могут быть записаны как последовательные операторы вида if-then. В этом случае последовательность условий не менее важна и тоже должна быть записана логически правильно. Применение конструкций проиллюстрировано следующими примерами. Программа, которая по введенному значению аргумента вычисляет значение функции, заданной в виде:
.
Конструкция else-if:
program calc_function_1;
var х, у: real;
Begin
writeln(' Введите значение аргумента'); readln(x);
if x < -2 then у:= 0 else
if x < -1 then у:= -x - 2 else
if x < 1 then у:= x else
if x < 2 then у:= -x + 2 else
у:= 0;
writeln(' Для х= ', x:6:2, ' значение функции у = ', y:6:2);
end.
Конструкция if-then:
program calc_function_2;
var х, y: real;
Begin
writeln(' Введите значение аргумента'); readln(x);
if x < -2 then у:= 0;
if (x >= -2) and (x < -1) then у:= -x - 2;
if (x >= -1) and (x < 1) then у:= x;
if (x >= 1) and (x < 2) then у:= -x + 2;
if x >= 2 then у:= 0;
writeln(' Для х= ', x:6:2, ' значение функции у = ', y:6:2);
end.
В программировании часто используются вложенные операторы if, т.е. расположенные внутри других операторов if, например:
if выражение 1 then begin
if выражение 2 then begin
[ операторы 1;]
end
else begin
[ операторы 2;]
end;
end;
При этом else ассоциируется с ближайшим доступным ключевым словом if. Для того чтобы заставить компилятор прочитать наш пример другим способом, нужно "закрыть" для предложения else второй оператор if:
if выражение 1 then begin
if выражение 2 then begin
[ операторы 1;]
end;
end
else begin
[ операторы 2;]
end;
Использование вложенных операторов if определяется главным образом стилем программирования. Используйте метод, который кажется вам более простым и удобным.