Розгалужений алгоритм: основи, структура та приклади

Історія появи слова «алгоритм» цікава вченим-історикам, але не важливо, де з’явився перший алгоритм і якогось мудреця його приписати.

Безпідставні спроби математики приписати собі заслуги у розвитку і повсюдне застосування слова «алгоритм» за межами математичних категорій. Програмування теж виявився «поза» цього слова, як тільки прийшов до ідеї «сирки», втративши надію формалізувати світ інформації в динаміці його розвитку.

Алгоритм розгалуженої структури ефективно застосовувався з найдавніших часів. Наскельна «живопис» первісних людей була багатоваріантними алгоритмами дій в конкретних ситуаціях. А адже тоді не вміли ні говорити, ні писати. Не було математики і програмування.

Основи алгоритму та його структура

Все, що робить людина — результат застосування знань у конкретній ситуації з конкретною метою. Знання, послідовність дій і мета — головні складові будь-якого алгоритму. Результат — може бути або не бути.

Якщо алгоритм повторюється в процесі досягнення мети — це спіраль. Алгоритм лінійний або циклічний — нонсенс, придуманий теоретиками в математиці.

Алгоритм — це динаміка на вході, в «тілі» і в результаті. Те, що вихідна інформація завжди змінюється — очевидно: ніщо не стоїть на місці. Виконання алгоритму впливає на його «тіло», на складову його послідовність дій. Результат — це фікція, але в будь-якому випадку: кожне виконання алгоритму — це привід повторити все спочатку.

Прочитав, випадково дізнався або сам придумав — не важливо. Важливо, що всяка дія є частиною функції більш високого порядку. Дія слідує за дією. Завжди можна припинити виконання.

Алгоритм є розгалуженим по входу і за змістом: він виконується кожен раз в іншій ситуації і може змінитися сам. Навіть якщо алгоритм виконується в повному вакуумі, тобто створені абсолютні умови для ідеальних (постійних) вихідних даних, ніхто не може змінити протягом часу, ніхто не може передбачити випадковості.

Ідеальних ситуацій не існує, а створювати непотрібні алгоритми не прийнято. Алгоритм — це прагнення до мети шляхом виконання послідовності дій. Так було, так є і так буде.

Прості приклади алгоритмів

Вийти на вулицю — алгоритм. Виконати роботу — алгоритм. Лягти спати — теж алгоритм.

Порахувати квадратне рівняння на калькуляторі або написати програму — набір алгоритмів.

Система протоколів, інструкцій, технічної документації та іншої інформації щодо підготовки до запуску космічного корабля — мільйони алгоритмів, які динамічно розвивалися, удосконалювалися і трансформувалися в доцільні послідовності дій.

Математики і програмісти

Математики вирішили, що алгоритми — це їх стихія і запропонували безліч розумних формулювань:

  • це строга послідовність арифметичних і логічних дій;
  • однозначна асоціація результату з вихідними даними;
  • це сукупність результативності, визначеності, можливості масового застосування;
  • символьна або формульний запис;
  • це аналітичне або графічне подання та ін.

Все це зокрема. Коли з’явилися перші програмісти, процес застосування слова алгоритм ускладнився. Програмісти вирішили відібрати пальму владарювання над алгоритмом у математиків.

З’явилися громіздкі подання програм у вигляді графічних зображень. Все це ускладнювало процес застосування обчислювальної техніки, яка в ті часи була і без того громіздку і повільною: зате гріла навколишній простір краще будь електростанції.

В кінцевому підсумку великі і малі обчислювальні машини пішли в історію, математики залишилися зі своїми ідеями, а програмісти зайнялися своїм прямим справою — формуванням області інформаційних технологій і створенням концепції комп’ютерного справи в цілому.

Прості алгоритми

Після «битви» математиків і програмістів за приналежність алгоритмів до конкретної теоретичної і практичної сфері людської діяльності, все закінчилося мирно, всі повернулися до своєї роботи.

Розгалужений алгоритм залишився у своєму класичному амплуа — це послідовність дій, спочатку багатогранна по входу і по змісту. Немає такого алгоритму, який можна точно означити лінійним і ніколи не буде такого алгоритму, який можна визначити, як циклічний.

Команда розгалуження, настільки популярна в мовах програмування, містить умову і кожен раз воно перевіряється. В алгоритмі немає умов ні в синтаксисі if, ні в синтаксисі switch. Алгоритм — це послідовність дій, а не перевірок для вибору, куди йти далі.

Рекурсивні алгоритми

Класичний розгалужений алгоритм — основи застосування знань для виконання дій. Рекурсивний його аналог — основи застосування самого себе для інших даних або в іншій ситуації. Знання визначає дію, алгоритм визначає сам себе або знання, що визначає дію.

Рекурсивний розгалужений алгоритм — це можливість викликати самого себе на іншому наборі вихідних даних або в іншій ситуації. Система рекурсивних алгоритмів — це можливість адекватно реагувати на систему вихідних даних або динамічний розвиток області застосування (динаміку ситуацій).

Алгоритм у програмуванні

Основні синтаксичні конструкції у програмуванні — це середина 80-х років минулого століття. До цього моменту йшли пошуки, після цього пішла оптимізація. В кінцевому результаті вже до кінця 90-х років сформувалася когорта затребуваних мов програмування, а інша маса мов прийняла статус теоретично і практично непотрібних.

Характерна риса програмування минулого століття — катастрофічна повільність.

Характерна риса програмування цього століття в тому, що зникли відмінності між словами:

  • алгоритм;
  • програма;
  • код;
  • скрипт;
  • сирки.

У програмуванні накопичилося багато фольклору, але «сирки» є найбільш показовим чинником загального прогресу в інформаційних технологіях.

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

Source code («сирки») — це набір кодів (програм, модулів, бібліотек, скриптів), який можна оптом застосувати при першій можливості. Не думаючи і не змінюючи, просто застосувати.

Про якому алгоритмі можна говорити, коли в справі беруть участь «сирки»? Алгоритм включає в себе дії, а не те, що хтось колись написав! Всі дії алгоритму взаємопов’язані, засновані на послідовному прагненні до конкретної мети. Чужого дії в алгоритмі немає місця.

Авторитетний алгоритм

Зазвичай слово програміст асимілювалося зі словом розробник, хоча багато «авторитетні» IT-компанії донині декларують відмінності не тільки між програмістами і розробниками, але і вводять по кожній позиції рівні компетенції (початковий, середній, просунутий).

Особливо цікаві екзотичні змінні в «авторитетних» алгоритмах:

  • coder;
  • frontend;
  • backend;
  • full-stack.

«Розгалужений алгоритм такого роду дій «авторитетних» IT-компаній має під собою серйозні цілі. Програма, написана кодером (coder) — це 1 рубль. А продукт роботи фахівця з повним стеком знань (full-stack) — це 1000 рублів.

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

Алгоритми, програми, скрипти

Що таке алгоритм і програма в первозданному значенні начебто ясно. Що таке скрипт, не зовсім ясно. Ймовірно, це пов’язано з тегом script в HTML-коді, може слово скрипт зобов’язана мові JavaScript. У реальності все це одне і теж.

Як не назви програміста, як не именуй програму, а результат один — послідовність дій. Є вихідні дані, є мета отримати результат. Для її досягнення потрібно щось зробити = алгоритм = програма = скрипт.

Команда розгалуження — найдавніша в синтаксисі мови програмування і сама дивна. Синтаксис мови програмування часом вражає уяву своєю оригінальністю.

  • if (вираз) {набір інструкцій, якщо вираз істинний} {набір інструкцій, якщо вираз хибний}

Для запису виразу використовується або «==», або «===». Використання «=» буде помилкою (це оператор присвоювання).

Дивина полягає в тому, що вираз записано в дужках. Отже, використання в цих дужках «=» дозволяє достовірно визначити: тут «=» — це не призначення, а умовний оператор рівності такий же як оператор менше або більше.

If — не єдиний у своєму роді оригінал. Є ще цикли в широкому асортименті і масиви в реляційному різноманітті. Філософія синтаксису мови програмування, народжена в 80-х роках минулого століття, у своєму первозданному вигляді обросла безліччю ідей і впевнено дивиться в майбутнє.

Програмування — дзеркало інтелекту

Безліч ідей і несумісність синтаксису одного і того ж мови за різними версіями — результат творчих пошуків. Програмування — унікальна сфера людської діяльності, яка дозволяє кваліфікованому програмісту вийти за межі синтаксису будь-якої сучасної мови.

Раніше такого не було, але сьогодні програмування алгоритмів з розгалуженням — питання знань і умінь. Якісна кваліфікація і бажання писати досконалий код дають можливість створювати унікальні рекурсивні алгоритми, що динамічно розвиваються поза волею автора.

Алгоритми, які до цього часу жили всередині свідомості людини тепер можна реалізувати в реальності і надати їм функціонувати в штучної середовищі рівно таким же чином, як вони функціонують в природної середовищі.