Вычислительный процесс называется разветвляющимся, если он содержит несколько направлений, отличающихся друг от друга содержанием выполняемых действий.
В языке Turbo Pascal для реализации разветвляющихся вычислительных процессов служат следующие операторы:
· условный оператор if;
· оператор выбора case;
· оператор перехода goto.
Оператор if используется в программе, когда в зависимости от некоторого условия надо выбрать одно из двух действий, или когда какое-либо действие должно быть выполнено только при выполнении заданного условия.
В общем виде оператор if записывается так:
if <условие> then
Begin
{операторы, выполняемые, если условие истинно}
End
Else
Begin
{операторы, выполняемые, если условие ложно}
end;
Выполняется оператор if следующим образом.
Сначала вычисляется значение выражения <условие>. Затем, если условие выполняется (то есть значение выражения <условие> равно true), то выполняются операторы, следующие за ключевым словом then, находящиеся между begin и end. Если условие не выполняется (значение выражения <условие> равно false), то выполняются операторы, следующие за словом else, находящиеся между begin и end.
Если при выполнении (или невыполнении) условия надо выполнить только один оператор, то ключевые слова begin и end после then (else) можно не писать.
Если какое-либо действие нужно выполнить только при выполнении некоторого условия и пропустить это действие в случае невыполнения условия, то оператор if может быть записан в другой форме:
if <условие>
Then
Begin
{операторы, выполняемые, если условие истинно}
end;
П р и м е р 1. Вычислить корни квадратного уравнения ax2+bx+c=0.
Блок-схема алгоритма решения задачи приведена на рис. 1.
Рис. 1
Текст программы:
Program Korni;
var
a, b, c: real; {коэффициенты уравнения}
d: real; {дискриминант}
x1, x2: real; {корни уравнения}
label 1,2;
Begin
writeln(‘Введите коэффициенты a, b, c’);
readln(a, b, c);
d := b*b-4*a*c;
ifd=0 then
beginx1:= -b/(2*a); x2:=x1; goto 1 end
Else
ifd>0 then
beginx1:= (-b-sqrt(d))/(2*a); x2:= (-b+sqrt(d))/(2*a) end
else beginwriteln (‘Уравнение не имеет действительных корней’);
goto 2;
end;
1: writeln(‘x1=’,x1:6:2, ‘x2=’,x2:6:2);
2: end.
Оператор caseпозволяет реализовать множественный выбор и в общем виде записывается так:
case <выражение> of
<список констант 1> :begin
{последовательность операторов 1}
end;
<список констант 2> :begin
{последовательность операторов 2}
end;
<список констант N> :begin
{последовательность операторов N}
end;
Else
Begin
{последовательность операторов, выполняемая}
{в случае, если значение выражения не попало}
{ни в один из списков констант}
end;
end;
Здесь: <выражение>- выражение, от значения которого зависит дальнейший ход программы (то есть одна из последовательностей операторов, которая должна быть выполнена);
<список констант>- константы, разделенные запятыми. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками. Например, список 1,2,3,4,5,6 может быть заменен диапазоном 1..6.
Если между beginи endнаходится только одна оператор, то слова beginи endможно не писать.
Примеры:
1. casedayof
1, 2, 3,4, 5: write ('Рабочий день. ');
6 : write (' Суббота ! ') ;
7 : write (' Воскресенье ! ') ;
end;
2. casedayof
1..5 : write ( ' Рабочий день . ' );
6: write (' Суббота ! ') ;
7: write ('Воскресенье! ');
end;
Оператор case выполняется следующим образом. Сначала вычисляется значение выражения, стоящего после case, затем полученное значение последовательно сравнивается с константами из списков констант. Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку последовательность операторов, и на этом выполнение оператора case завершается. Если значение выражения не совпадает ни с одной константой из всех списков, то выполняется последовательность операторов, следующая за else. Допускается не указывать else и соответствующую последовательность операторов. В этом случае, если значение выражения не совпадает ни с одной константой из всех списков, то выполняется следующий за саsе оператор программы.
П р и м е р 2. Составить программу, имитирующую работу микрокалькулятора.
Блок-схема алгоритма решения представлена на рис. 2.