Условный оператор реализует алгоритмическую конструкцию "ветвление" и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора.
Неполная форма условного оператора
if <условие> then
begin
<оператор1_1;>
<оператор1_2;>
…………….
<оператор1_n;>
end;
Полная форма условного оператора
if<условие> then
begin
<оператор1_1;>
<оператор1_2;>
…………….
<оператор1_n;>
end
else
begin
<оператор2_1;>
<оператор2_2;>
…………….
<оператор2_n;>
end;
<условие> - некоторое логическое выражение, истинность которого проверяется;
<оператор 1> - операторы, который выполняется, если логическое выражение <условие> истинно;
<оператор 2> - оператор, который выполняется, если логическое выражение <условие> ложно.
В качестве условия после служебного слова if может применяться любое выражение, результатом которого является логическая величина. Это может быть простое логическое условие, сложное логическое условие составленное из простых условий с помощью логических союзов, выражения с операциями отношения, просто логические переменные и т. д.
В качестве операторов после служебных слов then и else может применяться любой оператор языка, в том числе и условный оператор.
ПРИМЕР: Написать программы вычисления корней квадратного уравнения.
{Программа для решения квадратного уравнения}
program kvad_urav; var a,b,c:real; {коэффициенты квадратного уравнения} x1,x2:real; {корни квадратного уравнения} D:real; {дискриминант квадратного уравнения}
BEGIN writeln ('Программа решения квадратного уравнения'); {Ввод с клавиатуры значений коэффициентов уравнения} write('Введите значение коэффициента а: '); readln(a); write('Введите значение коэффициента b: '); readln(b); write('Введите значение коэффициента c: '); readln(c); {Вычисление дискриминанта} D:=b*b-4*a*c; {Вычисление корней уравнения и вывод значений на экран} if D<0 then writeln('Уравнение корней не имеет'); if D=0 then begin x1:=-b/(2*a); writeln('Уравнение имеет один корень x=', x1) end; if D>0 then begin x1:=(-b-sqrt(D))/(2*a); x2:=(-b+sqrt(D))/(2*a); writeln('Первый корень уравнения x1=',x1); writeln('Второй корень уравнения x2=',x2); end; END.