Використання послідовних та вкладених розгалужень
Розгалуження алгоритму є необхідним, якщо програма містить умову виконання визначених інструкцій (тобто для їх виконання дані повинні задовольняти визначеній умові). Для цього у мовах програмування існує оператор розгалуження IF…ELSE. Розглянемо роботу цього оператора у мові програмування Pascal.
Оператор розгалуження у мові Pascal має вигляд:
IF (умова) Then (оператор_1) ELSE (оператор_2);
Після оператора умови IF (якщо) задають умову розгалуження. Якщо дані задовольняють умові, то обчислювальний процес йде за гілкою True (істина), у противному випадку за гілкою False (неправда). Якщо вказана тільки конструкція IF (умова) Then (оператор), то розгалуження йде на один напрям (неповна форма розгалуження): якщо умова задовольняється (результат True), то виконується оператор після ключового слова Then (тоді), а у разі незадоволення умови ніякі інструкції не виконуються і програма переходить до наступних операторів.
Якщо ж оператор IF використовується у зв’язці з ELSE (у противному випадку), то розгалуження йде на 2 напрямки (повна форма розгалуження) – у разі незадоволення умові даних обчислювальний процес йде за гілкою False, де виконується оператор, що був вказаний після слова ELSE.
Розгалуження бувають послідовними та вкладеними. Послідовні розгалуження – це такі розгалуження, що йдуть один за одним, наприклад:
IF (умова) Then (оператор_1);
IF (умова) Then (оператор_2) ELSE (оператор_3);
Якщо ж одне розгалуження входить у інше то воно називається вкладеним. Наприклад:
IF (умова) Then if (умова) then (оператор_1) else (оператор_2)
ELSE if (умова) then (оператор_3) else (оператор_4);
Слід зазначити, що послідовні і вкладені розгалуження можуть бути як повними, так і неповними:
IF (умова) Then
begin if (умова) then (оператор_1) end
ELSE if (умова) then (оператор_2) else (оператор_3);
Для того, щоб компілятор правильно розпізнав неповне вкладене розгалуження, його слід взяти в операторні лапки begin…end.
У послідовному розгалуженні спочатку перевіряється умова першого розгалуження (True або False), потім виконується оператор на однойменній результату перевірки гілці, і після цього (а якщо ELSE не вказано і результат умови False, то одразу) програма переходить до перевірки умови наступного розгалуження і подальших операцій.
Послідовне розгалуження доцільно використовувати у тому разі, якщо кількість умов, яким повинні задовольняти дані для вибору необхідних операцій, не більше двох (дві умови об’єднуються логічними операціями AND, XOR або OR). Перевірка наступної умови розгалуження не залежить від результату попередньої.
При вкладеному розгалуженні аналогічно послідовному спочатку перевіряється перша умова, але за результатом перевірки цієї умови може бути обраний як оператор, так і перевірка іншої умови.
Наприклад, якщо перша умова виконується то буде вибраний оператор, а якщо не виконується, то перевіряється друга умова, в результаті чого може бути перевірена третя (якщо 2-га виконується) або четверта (якщо 2-га не виконується), і так далі до тих пір, доки дані за гілками розгалужень не «дійдуть» до визначеного оператору (інструкцій).
Структура вкладених розгалужень є ієрархічною: кожне розгалуження на нижньому рівні може мати зв’язок тільки з одним на верхньому рівні.
Вкладене розгалуження дозволяє перевірити дані за більш, ніж двома умовами і має перевагу над послідовним розгалуженням при необхідності реалізації у програмі складних алгоритмів сортування даних за визначеними властивостями.