Skip to main content

Що таке розгалужений алгоритм?

Коротка відповідь

Розгалужений алгоритм - це алгоритм, у якому залежно від істинності умови обирається і виконується одна з альтернативних гілок дій. У коді реалізується конструкціями if/else, else if, switch і тернарним оператором ?:, при цьому необрані гілки пропускаються.

Докладний розбір

Визначення

Розгалужений алгоритм містить точки прийняття рішень: виходячи з результату перевірки умов обирається одна з можливих гілок виконання. Найчастіше гілки взаємовиключні (if / else if / else). Можливі й незалежні перевірки (кілька if), коли можуть виконатися кілька гілок поспіль.

Коли застосовується

  • Валідація і нормалізація вхідних даних
  • Вибір варіанту бізнес-логіки (різні тарифи, статуси, режими)
  • Обробка помилок і винятків, відновлення після помилок
  • Роутинг/навігація, вибір представлення на UI
  • Feature flags, A/B-тестування
  • Контроль доступу (ролі/дозволи)

Базові форми розгалуження

if / else

javascript
const age = 20; if (age >= 18) { console.log('Дорослий'); } else { console.log('Неповнолітній'); }

Обирається одна з двох гілок залежно від умови.

else if (множинний вибір)

javascript
const score = 73; let grade; if (score >= 90) grade = 'A'; else if (score >= 75) grade = 'B'; else if (score >= 60) grade = 'C'; else grade = 'D'; // Виконується тільки перша відповідна гілка.

switch (вибір за значенням)

javascript
function access(role) { switch (role) { case 'admin': return 'Повний доступ'; case 'manager': return 'Обмежений доступ'; case 'user': return 'Базовий доступ'; default: return 'Гість'; } } // Важливо: не забувати default і уникати "провалювання" (fallthrough), якщо воно не потрібне.

Тернарний оператор (вираз)

javascript
const isMobile = window.innerWidth < 768; const layout = isMobile ? 'mobile' : 'desktop'; // Гарний для компактних присвоєнь, не зловживайте вкладеністю.

Ранні повернення (guard clauses)

javascript
function processOrder(order) { if (!order) return 'Немає замовлення'; if (!order.items?.length) return 'Порожнє замовлення'; if (order.canceled) return 'Замовлення скасовано'; // Основна логіка return 'ОК'; } // Зменшують вкладеність і підвищують читабельність.

Умови і логіка в JavaScript

Порівняння: ===, !==, >, >=, <, <=. Логіка: &&, ||, !. Коротке замикання дозволяє писати компактні перевірки.

Falsy-значення (в умові вважаються хибними): false, 0, -0, 0n, "", null, undefined, NaN. Все інше - truthy.

Типові помилки і best practices

  • Використовуйте строгі порівняння ===/!== замість ==/!=, щоб уникнути неочевидних приведень типів.

  • Не розміщуйте побічні ефекти в умовах; обчислюйте їх заздалегідь.

  • Уникайте глибокої вкладеності if - застосовуйте ранні повернення і виносьте логіку у функції/предикати.

  • У switch не забувайте default; використовуйте break або return, щоб виключити випадкове fallthrough.

  • Намагайтеся робити умови самодокументованими: виносьте складні перевірки у функції з зрозумілими іменами.

  • Якщо вибір залежить від значення ключа (наприклад, за роллю), замість довгого ланцюжка else if можна використовувати відображення:

    javascript
    const accessByRole = { admin: 'Повний доступ', manager: 'Обмежений доступ', user: 'Базовий доступ', default: 'Гість', }; const role = 'manager'; const access = accessByRole[role] ?? accessByRole.default;

Складність і тестування

Кожна точка розгалуження збільшує цикломатичну складність. Тримайте функції короткими, розгалуження - пласкими. Забезпечуйте покриття тестами для кожної гілки: позитивні/негативні сценарії і граничні випадки.

Невеликі приклади з веб-розробки

  1. Валідація форми:
javascript
function validateSignup({ email, password }) { if (!email) return 'Введіть email'; if (!/\S+@\S+\.\S+/.test(email)) return 'Невірний email'; if (!password) return 'Введіть пароль'; if (password.length < 8) return 'Пароль занадто короткий'; return 'OK'; }
  1. Обробка відповіді сервера:
javascript
async function fetchUser(id) { if (!id) throw new Error('id обов\'язковий'); const res = await fetch(`/api/users/${id}`); if (!res.ok) { if (res.status === 404) return null; // гілка: користувача не знайдено throw new Error('Серверна помилка'); // гілка: інша помилка } return res.json(); // гілка: успіх }

Висновок

Розгалужений алгоритм - базовий інструмент керування потоком виконання. Грамотне використання умов, правильний вибір конструкцій (if/else, switch, тернарний оператор), ранні повернення і покриття тестами роблять код передбачуваним, читабельним і стійким.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.