Алгоритм розгалужується структури - це алгоритм, в якому обчислювальний процес здійснюється або по одній, або по іншій гілці, в залежності від виконання деякого умови. Програма розгалужується структури реалізує такий алгоритм.
Умовний оператор IF
У програмі розгалужується структури є один або кілька умовних операторів. Умовний оператор в мові Паскаль має формат:
if <условие> then <оператор1> else <оператор2>; (Повна форма) або
if <условие> <оператор1>; (Скорочена форма).
Крапка з комою перед зарезервованим словом else не ставиться.
При виконанні умови виповнюється оператор1, при невиконанні - оператор2 (при повній формі умовного оператора). Для неповної форми умовного оператора при виконанні умови виповнюється оператор1, в іншому випадку оператор1 пропускається і виповнюється оператор, наступний за умовним оператором.
Оператор1 і оператор2 можуть представляти прості оператори (один оператор), в цьому випадку вони не укладаються в операторні дужки. Якщо ж оператор1 і / або оператор2 представляють складовою оператор (кілька операторів), то їх потрібно укласти в операторні дужки begin ... end.
Як приклад наведемо програму обчислення найбільшого з значень функції y1 = x * x + 1, y2 = 7-x * x або y = x + 1 для будь-якого х.
program razvetvl;
var
x. y1. y2. y3. max. real;
begin
writeln ( 'Введіть x');
readln (x);
y1: = x * x + 1; y2: = 7-x * x; y3: = x + 1;
if y1> y2 then max: = y1 else max: = y2;
if y3> max then max: = y3;
writeln ( 'y1 =', y1: 6: 2 'y2 =', y2: 6: 2, 'y3 =', y3: 6: 2,);
writeln ( 'при x =', x: 6: 2, 'найбільше значення функцій =', max: 6: 2);
readln;
end.
Оператор варіанту Case
Якщо кількість розгалужень програми більше двох, то використовується оператор варіантів Case, який є більш загальним випадком умовного оператора. Оператор Case виконує один з декількох операторів в залежності від значення селектора. Якщо селектор не збігається ні з одним зі значень, то виконується оператор після else або наступний після case, якщо else відсутнє.
Селектор може бути цілого, символьного, перечислимого, інтервального типу або виразом.
Наприклад, визначимо час року по введеному номеру місяця.
Program case1; <множественный выбор>
Label m;
Var num: integer;
begin
m: writeln ( 'Введіть номер місяця');
readln (num);
write ( 'Пора року:', num);
case num of <выбор значений селектора num>
1, 2, 12: writeln ( 'Зима');
3..5: writeln ( 'Весна');
6..8: writeln ( 'Літо');
9..11: writeln ( 'Осінь');
else
begin writeln ( 'немає з таким номером місяці!'); goto m; end;
end;
readln;
end.
У наведеному прикладі програми при введенні номера місяця від 1 до 12 на екрані друкується відповідне час року і виконання програми закінчується. Якщо ж номер місяця перевищує 12 або менше 0, то виводиться повідомлення про невірному вводі місяці, для чого служить зарезервоване слово else і виконується перехід на введення нового значення місяця за допомогою мітки m. У даній програмі num - селектор.