Для реализации ветвления можно использовать условный оператор:
if условие then оператор1
else оператор2;
где условие – это выражение логического типа (например, а>0, (d<0) and (c=5) и другие). Например, в операторе if x < y then z:=x else z:=y; мы указываем программе, что если значение переменной x меньше y, то переменной z мы присваиваем значение x, в противном случае z равно y.
Подробное описание использования логических выражений будет приведено далее.
При выполнении такого оператора, компьютер проверяет, выполняется ли условие. Если условие верно, то выполняется ветвь then, т.е. оператор1; если условие не выполняется – то ветвь else - оператор2.
Если в какой-либо ветви нужно выполнить не один, а несколько операторов, необходимо поместить эти операторы внутри составного оператора begin ... end, как в приведенной ниже программе. В этом случае последовательность операторов, объединенная в группу внутри begin ... end рассматривается как один оператор или блок. Т.о. составной оператор используется в тех случаях, когда по правилам языка допускается использовать только один оператор, а требуется выполнить несколько действий. Такой случай часто возникает при написании условных операторов, операторов выбора и цикла.
Общий вид составного оператора
begin
Оператор 1;
Оператор 2;
………
Оператор n;
end;
Вся совокупность из n операторов внутри операторной скобки begin … end рассматривается как один оператор или блок.
Описанную выше задачу 1.2.1 реализует следующая программа.
program vetv1;
var x, f, A: real;
begin
write(‘Введите x ’);
read(x);
A:=sqr(x) – 3*x – 15;
if A>0 then
begin
f:=1/sqrt(A);
writeln(‘f(‘,x:4:1,’)=’,f:7:3);
end {точка с запятой не ставится}
else writeln (‘при x=’,x:4:1,’ функция не определена’);
end.
Обратите внимание на то, что, так как составной оператор begin ... end стоит в ветви then и после него условный оператор не заканчивается (далее есть ветвь else), то точка с запятой (знак конца оператора) не поставлена.
Если бы по логике задачи нужно было бы выполнить несколько действий в ветви else, то составной оператор нужно было бы использовать и там. Например, так:
if A>0 then
begin
f:=1/sqrt(A);
writeln(‘f(‘,x:4:1,’)=’,f:7:3);
end
else
begin
writeln (‘при x=’,x:4:1,’ функция не определена’);
writeln (‘A=’,A:6:2);
end; {точка с запятой стоит, т.к. это конец оператора IF}
Еще один пример - вычисление
значения функции
.
program vetv1_2;
var x,f:real;
begin
write(‘введите х’);
readln(x);
if x>=1 then begin
f:=sqrt(sqr(x)-1);
writeln(‘f(x)=sqrt(sqr(x)-1)=’,f:6:3);
end
else begin
f:=1-sqr(x);
writeln(‘f(x)=1-sqr(x)=’,f:6:3);
end;
end.