3.4.2. Составной оператор
В условном операторе и после then, и после else можно использовать только один оператор. Если при некотором условии требуется выполнить определённую последовательность операторов, то их объединяют в один составной оператор.
Конструкция вида
begin <последовательность операторов> end
называется составным оператором.
Пример. Алгоритм решения квадратного уравнения вам хорошо известен. Запишем соответствующую программу на языке Паскаль.
program n_11;
var a, b, с: real;
var d: real;
var x, x1, x2: real;
begin
writeln ('Решение квадратного уравнения');
write ('Введите коэффициенты а, b, c>>');
readln (a, b, с);
d:=b*b-4*a*c;
if d<0 then writeln ('Корней нет');
if d=0 then
begin
x:=-b/2/a;
writeln ('Корень уравнения х=', х:9:3)
end;
if d>0 then
begin
x1:=(-b+sqrt(d))/2/a;
x2:=(-b-sqrt(d))/2/a;
writeln ('Корни уравнения:') ;
writeln ('x1=', x1:9:3);
writeln ('x2=', x2:9:3)
end
end.
3.4.3. Многообразие способов записи ветвлений
В качестве оператора после then и else можно использовать условный оператор. Например, возможна следующая конструкция:
if <условие1> then
if <условие2> then <оператор1>
else <оператор2>
При использовании таких сложных конструкций (их ещё называют вложенными ветвлениями) следует иметь в виду, что else всегда относится к ближайшему оператору if.
Пример. Воспользуемся вложенным ветвлением для записи на языке Паскаль рассмотренного в п. 2.4.2 (пример 10) алгоритма решения линейного уравнения.
program n_12;
var a, b, x: real;
begin
writeln ('Решение линейного уравнения’);
write ('Введите коэффициенты а, b>>');
readln (a, b);
if a<>0 then
begin
x:=-b/a;
writeln ('Корень уравнения х=', х:9:3)
end
else if b<0 then writeln ('Корней нет')
else writeln (' x - любое число');
end.
Как правило, для решения одной и той же задачи можно предложить несколько алгоритмов. Убедимся в этом, записав программу решения линейного уравнения, не прибегая к вложенным ветвлениям.
program n_l3;
var a, b, x: real;
begin
writeln ('Решение линейного уравнения');
write ('Введите коэффициенты а, b>>');
readln (a, b);
if а<>0 then
begin
x:=-b/a;
writeln ('Корень уравнения х=', х:9:3):
end;
if (a=0) and (b<>0) then writeln ('Корней нет’);
if (a=0) and (b=0) then writeln ('x - любое число’);
end.
Возможно, второй вариант программы покажется вам более наглядным. Но и у первого варианта есть свои преимущества: в нём делается меньше проверок.
Используйте вложенные ветвления для записи программы, определяющей принадлежность точки х отрезку [а, b].
Вопросы и задания
1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий.
2. Как на языке Паскаль записывается полное и неполное ветвление?
3. Является ли условным оператором следующая последовательность символов?
а) if x<y then x:=0 else read(у)
б) if x>=y then x:=0; y:=0 else write(z)
в) if x<y<z then a:=a+l
4. Что такое составной оператор? Для чего он используется в условном операторе?
5. Дан условный оператор:
if a<5 then c:=l
else if a>5 then с: =2
else с:=3
Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3?