Базові структури

Базові структури алгоритмів

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

Всього існують чотири базових структури алгоритмів:

  • лінійні
  • розгалужені
  • циклічні
  • змішані

Найпростіша в написанні та виконанні перша з цих структур - лінійна. До неї відносяться алгоритми, що складаються лише з простих команд. Простими з точки зору комп'ютера являються ті команди, що виконуються виконавцем безумовно, тобто після першої команди виконується друга, потім третя і т.д.
Загальний вигляд лінійного алгоритму, поданий мовою блок-схем, наступний:
Лінійним можна назвати алгоритм ранкового збирання до школи.

  • проснутися
  • зробити ранковий туалет
  • одягнутися
  • поснідати
  • зібрати речі
  • одягнути верхній одяг
  • вийти до школи.

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


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

В інформатиці використовують прості та складені умови. Складені умови містять кілька простих умов і об'єднуються між собою словами "або" або "та". Перше з цих слів ("або") використовується у тих випадках, коли необхідно виконання хоча б однієї з умов, тобто хоча б одна з умов являється істиною. Друге слово ("та"), навпаки, використовується лише в тих випадках, коли тільки одночасне виконання всіх умов призводить до результату.

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

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

Мовою блок-схем обидва типи циклів виглядають наступним чином:

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

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

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