Одним із найголовніших конструкцій у програмуванні без яких неможливо уявити жодної програми, що містить елемент "штучного інтелекту", є конструкція розгалуження. У цьому матеріалі - моя спроба пояснити, що таке конструкція розгалуження і як вона використовується мовами програмування. У житті людини трапляється безліч ситуацій. Але щоразу потрапляючи у неї ми ніколи не задумуємось над діями які будемо виконувати. Це робиться підсвідомо і для людини це природньо. Інша справа з технікою. Вона не наділена інтелектом. Вона вміє лише виконувати команди. А отже у її наборі команд повинні бути інструкції, що дають можливість вибору йти чи стояти, піднімати вантаж чи опускати. І будуючи складні механізми, здатні виконувати складні операції, людина повинна передбачити усі ці ситуації. Процес передбачення полягає у тому, що ми повинні описати для виконавця інструкції на випадок: Читаючи ці рядки Ви вже звернули увагу на підкреслені фрази чи виділені напівжирним шрифтом слова. Підкреслені фрази - це і є ті самі висловлювання які знову ж таки зрозумілі людині. Але як було написано раніше - висловлювання повинно бути зрозумілими насамперед виконавцеві, зрозумілим настільки, щоб він міг сказати сам собі - істинне воно чи хибне. Відповідями на висловлювання "батарея розрядилася", "чайник закипів" і безліч інших є два прости слова - ТАК і НІ. Відповідь на висловлювання ТАК означає, що воно істинне, а відповідь НІ означає, що висловлювання хибне. Можливо правильніше буде запитати у себе коли висловлювання "пароль правильний" буде істинним? Очевидно, що воно буде істинним тоді, коли комбінація символів яка надійшла виконавцеві співпадає з оригіналом, що є у виконавця. Якщо "відстань від Ваших вуст до його вух" менша "20 сантиметрів". І на цьому етапі ми і повинні подбати про те, щоб робот мав можливіть виконати правильні команди, а отже нам портібно скласти висловлювання на яке програма скаже так чи ні. Якщо ми хочемо щоб робот таки дістався до кратера то відстань яку він може подолати повинна бути більшою відстані до кратера. А це значить, що наше висловлювання з потрібною нам відповіддю ТАК може мати наступний вигляд: "відстань яку можна подолати" > "відстань до кратера" або "відстань до кратера" < "відстань яку можна подолати" Сформулювавши одне з таких висловлювань можна оформити конструкцію у якій виконавець буде виконувати деякі дії якщо відповіддю на висловлювання буде ТАК і передбачити інші команди колли відповіддю буде НІ.Розгалуження у програмуванні
Розгалуження і Висловлювання
Розгалуження - це конструкція мови програмування, що містить деяке висловлювання зрозуміле виконавцеві і на яке він, виконавець, може дати відповідь - істинне воно чи хибне. В залежності від істинності чи хибності висловлювання виконавець виконує той чи інший набір команд які також входять до складу розгалуження.
У повсякденному житті людина стикається з тим, що "передбачає" для себе план дій на випадок якоїсь ситуації. Наприклад учень, що не виконав домашнє завдання йдучи до школи планує свої дії на випадок якщо викличе вчитель, а ще планує свої дії на випадок якщо мама лаятиме. Щодня перед тим як перейти дорогу наш мозок робить перевірку істинності висловлювання формулюючи його приблизно так: "якщо машин немає" і в залежності від істинності дає вказівку ногам "йти" чи "стояти". Отже і для робота програміст повинен передбачити і ситуацію і дії, які потрібно виконати у випадку її настання.
Що означає висловлювання "пароль правильний"?
Коли висловлювання "чайник закипів" буде істинним? І тут є очевидна відповідь - температура води у чайнику дорівнює 100 градусам. І попереднє висловлювання з точки зору математики буде істинним коли фраза (набір символів), що надійшла від користувача дорівнює фразі-оригіналові, що є у виконавця. У якій ситуації Ви зможете прошепотіти на вухо товаришеві якийсь секрет?
Уявімо ситуацію у якій робот-марсохід повинен дістатися до якогось кратера. Звичайно, для марсохода, фраза "відстань до кратера" малозрозуміла, але програма яку виконує робот може у пам'яті зберігати число після того як робот виміряє (а ми повинні подбати про те, щоб він умів це робити) відстань до об’єкта. А вже маючи це число робот повинен(програміст повинен передбачити):