Вычислительный процесс называется разветвляющимся, если в зависимости от выполнения определенных условий он реализуется по одному из нескольких, заранее предусмотренных (возможных) направлений. Каждое отдельное направление называется ветвью вычислений. При составлении программы должны быть учтены все возможные ветви вычислений. Для программной реализации таких вычислений в языке Паскаль имеются специальные операторы передачи управления, которые дают возможность перейти из одного места в другое место программы и заменить последовательный порядок выполнения ее операторов. Если такой переход осуществляется только при выполнении какого-либо условия, то он называется условным, а соответствующий ему оператор – оператором условного перехода. Если переход осуществляется в любом случае, то он называется безусловным, а соответствующий оператор – оператором безусловного перехода.
Пример: Вычислить корни квадратного уравнения общего вида а <>0, ax2+bx+c=0 в области действительных чисел. Введем следующие обозначения: A, B, C – коэффициенты уравнения;
D – дискриминант;
X1, X2 – корни;
E – допустимая погрешность вычислений.
Схема алгоритма представлена на рис.4.
{ОПРЕДЕЛЕНИЕ КОРНЕЙ КВАДРАТНОГО УРАВНЕНИЯ}
PROGRAM KU;
CONST
E=1E-4; {погрешность вычислений}
VAR
A, B, C, X1, X2, D: REAL;
BEGIN
READ (A, B, C);
WRITELN (‘A=’, A,’B=’, B,’C=’, C);
D: =SQR (B)-4*A*C;
IF D <0
THEN WRITELN (‘корни мнимые’)
ELSE BEGIN
IF ABS (D)<E
THEN BEGIN
X1: =-B/(2*A);
X2: =X1;
END
ELSE BEGIN
X1: =(-B+SQRT (D))/(2*A);
X2: =(-B-SQRT (D))/(2*A);
END;
WRITELN (‘X1=’, X1, ’X2=’, X2);
END;
END.
Для каждого условного оператора конструкции THEN, ELSE записаны под соответствующим IF; операторы, ограниченные операторными скобками BEGIN – END, записаны так же друг под другом и смещены вправо относительно BEGIN и END.
В примере структура выбора входит составной частью в одну из ветвей (ветвь - НЕТ) другой структуры выбора, такие ветвления называются сложными.