Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке лінійна структура алгоритму?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Лінійна структура** алгоритму - це послідовне виконання кроків без розгалужень і циклів: операції йдуть одна за одною по єдиній, заздалегідь визначеній траєкторії від початку до кінця. **Ключове:** лінійна структура може мати будь-яку асимптотику (O(1), O(n), O(n log n) тощо) - усе залежить від операцій усередині кроків, і її не варто плутати з "лінійною складністю O(n)".Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Коротка відповідь Лінійна структура алгоритму - це послідовне виконання кроків без розгалужень і циклів: операції йдуть одна за одною по єдиній, заздалегідь визначеній траєкторії від початку до кінця. ## Розгорнута відповідь ### Визначення Лінійна (послідовна) структура - одна з базових керуючих конструкцій алгоритмів, поряд із розгалуженням (selection) і циклом (iteration). У лінійній структурі всі інструкції виконуються строго по порядку, без умов і повторень. ### Ключові властивості - Один вхід і один вихід: виконання починається в одній точці і завершується в іншій без відгалужень. - Відсутність умов і циклів: немає операторів на кшталт if/else, switch, for/while тощо. - Детермінованість шляху: завжди виконується один і той самий набір кроків в одному й тому самому порядку. - Простота розуміння і тестування: кожен крок слідує за іншим, без розгалужень стану. ### Коли застосовувати - Прості конвеєри перетворень даних (нормалізація рядка, розрахунок підсумкової ціни, форматування дати). - Ініціалізація і конфігурування, де кроки строго впорядковані і не залежать від умов. - Кроки Build/Deploy, які завжди виконуються в одному порядку (наприклад, "зібрати → мінімізувати → завантажити"). ### Не плутати з терміном «лінійний алгоритм (O(n))» «Лінійна структура» описує тип керуючого потоку (послідовність кроків). А «лінійна складність O(n)» - це про залежність часу/пам'яті від розміру входу. Лінійна структура може мати будь-яку асимптотику (O(1), O(n), O(n log n) тощо) - усе залежить від операцій усередині кроків. ### Простий приклад (JavaScript) 1. Прийняти вихідні дані: базова ціна, ставка податку, знижка. 2. Розрахувати податок. 3. Додати податок до ціни. 4. Відняти знижку. 5. Округлити і повернути результат. ```js function finalPrice(base, taxRate, discount) { const tax = base * taxRate; // 1) рахуємо податок const withTax = base + tax; // 2) додаємо податок const withDiscount = withTax - discount; // 3) віднімаємо знижку return Math.max(0, Number(withDiscount.toFixed(2))); // 4) округляємо і захищаємо від < 0 } console.log(finalPrice(100, 0.2, 5)); // 115.00 ``` ### Приклад лінійного конвеєра обробки рядка (JavaScript) ```js function normalizeInput(input) { let s = input.trim(); // 1) прибрати пробіли по краях s = s.toLowerCase(); // 2) привести до нижнього регістру s = s.replace(/\s+/g, ' '); // 3) згорнути зайві пробіли s = s.normalize('NFKC'); // 4) нормалізувати Юнікод return s; // 5) повернути результат } console.log(normalizeInput(' HéLLo WORLD ')); // "héllo world" ``` ### Контрприклад: не лінійна структура Тут є розгалуження і цикл, отже структура вже не лінійна: ```js function process(items) { let sum = 0; for (const x of items) { // цикл → вже не лінійна структура if (x > 0) { // розгалуження → вже не лінійна структура sum += x; } } return sum; } ``` ### Типові помилки і уточнення - Плутанина з асимптотикою: «лінійна» за структурою не тотожна «лінійній за часом O(n)». - Наявність перевірок валідності (if) робить алгоритм не лінійним строго формально; на практиці перевірки часто виділяють в окремий крок перед лінійним конвеєром. - Виклики функцій можуть приховувати всередині розгалуження/цикли; тоді зовні послідовний код не є лінійним за своєю фактичною структурою виконання. ### Підсумок Лінійна структура алгоритму - це простий і передбачуваний потік із послідовних кроків без розгалужень і циклів. Вона зручна для конвеєрів перетворень та ініціалізацій, полегшує читання і тестування, але не описує складність - тільки форму керування виконанням.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.