Условный оператор if позволяет выбрать один из двух возможных вариантов развития программы. Выбор осуществляется в зависимости от выполнения условия.
В общем виде оператор ifзаписывается так:
ifусловие then
{оператор, который надо выполнить, если условие истинно
при необходимости выполнить ряд операторов используют составной оператор begin … end}
Else
{оператор, который надо выполнить, если условие ложно
при необходимости выполнить ряд операторов используют составной оператор begin … end}
Выполняется оператор if следующим образом:
1. Вычисляется значение условия (условие – выражение логического типа, значение которого может быть равно True или False).
2. Если условие истинно (значение выражения условие равно True), то выполняется оператор, следующий за словомthen. На этом выполнение операции if заканчивается, то есть оператор, следующий за else, не будет выполнен.
Если условие ложно (значение выражения условие равно False), то выполняется оператор, следующий за словом else.
На рис. 3.2 представлен алгоритм, соответствующий оператору if-tnen-else.
Рис. 3.2.Алгоритм условного оператора
Пример:
Var
a:integer;
s:string;
Begin
a:=2; {задание начального значения a}
if(a<5) then
begin{выполняется, если a меньше 5}
a:=a*a*a;
s:=’a^3=’;
End
Else
begin{выполняется, если a больше или равно 5}
a:=a*a;
s:=’a^2=’;
End
writeln(s, a:4); {вывести на экран}
End.
На экран будет выведено: a^2=8
Если же в начале программы в строке {задание начального значения a} указать a:=6;, то на экран будет выведено
a^3=216
В ряде случаев бывает необходимым выполнить какое-либо действие только при выполнении определенного условия, и пропустить его, если это условие не выполняется. Тогда условный оператор ifможет быть неполным (без части else):
ifусловие then
{оператор, который надо выполнить, если условие истинно
при необходимости выполнить ряд операторов используют составной оператор begin … end}
На рис. 3.3 представлен алгоритм, соответствующий оператору if-then.
Пример:
Var
a:integer;
Begin
read(a); {ввести значение a}
if(a<0) then{если a меньше нуля,}
a:=a*a; {то возвести a в квадрат}
writeln(a:4); {вывести на экран значение a}
End.
Рис. 3.3.Алгоритм неполного условного оператора
Логические выражения чаще всего получаются при сравнении переменных с помощью операций отношения =, <>, >, >=, <, <=. Сложные логические выражения составляются с использованием логических операций and (логическое И), or (логическое ИЛИ) и not (логическое НЕ). Например:
if(а > b) and(b <>0) then ...
Примечание
В отличие от других языков программирования в Object Pascal приоритет операций отношения меньше, чем у логических операций, поэтому отдельные составные части сложного логического выражения заключаются в скобки.
Например, такая запись предыдущего оператора будет неверной:
if a>b and b <> 0 then ...// Ошибка так как фактически (с учетом приоритета операции) компилятор будет рассматривать эту строку как эту:
if a>(b and b)<>0 then...
Условные операторы могут содержать внутри себя другие условные операторы, в том числе, и неполные. Таким образом, может быть реализован весьма сложный алгоритм. Однако, нужно стремиться избегать большой вложенности условных операторов, так как это приводит к усложнению написания, отладки и чтения листинга программы.