Сприймання і усвідомлення нового навчального матеріалу

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

Команди розгалуження

ВОСЬМИНІЖКА стоїть перед коридором відомої довжини. У верхній стіні цього коридору в невідомих місцях є одноклітинні виступи. Потрібно зафарбувати клітинки в цих виступах.

Очевидно, ВОСЬМИНІЖКА має йти по коридору і перевіряти, чи є зверху перешкода. Якщо перешкоди немає, то зайти у виступ, зафарбувати клітинку, повернутися назад у коридор і рухатися далі. Якщо перешкода є, то просто рухатися далі по коридору.

Отже, маємо ситуацію, коли ВОСЬМИНІЖКА має виконати різні дії в залежності від результату перевірки умови. Тобто маємо знайоме нам розгалуження в алгоритмі.

ВОСЬМИНІЖКА може виконувати таку команду розгалуження:

Якщо <умова> <Послідовність команд 1> Інакше <Послідовність команд 2> Все

Нагадаємо, що виконується ця команда розгалуження таким чином: виконується команда перевірки умови; якщо результат виконання цієї команди Так, то виконується <Послідовність команд 1>, а <Послідовність команд 2> не виконується; якщо ж результат виконання команди перевірки умови Ні, то виконується <Послідовність команд 2>, а <Послідовність команд 1> не виконується.

Система команд виконавця ВОСЬМИНІЖКА містить такі команди перевірки умови:

Команда Результат виконання
Зліва перешкода Так Якщо в клітинці, зліва від поточної, є перешкода.
Ні Якщо в клітинці, зліва від поточної, немає перешкоди.
Справа перешкода Так Якщо в клітинці, справа від поточної, є перешкода.
Ні Якщо в клітинці, справа від поточної, немає перешкоди.
Вгорі перешкода Так Якщо в клітинці, вгорі від поточної, є перешкода.
Ні Якщо в клітинці, вгорі від поточної, немає перешкоди.
Внизу перешкода Так Якщо в клітинці, внизу від поточної, є перешкода.
Ні Якщо в клітинці, внизу від поточної, немає перешкоди.
Зліва вільно Так Якщо в клітинці, зліва від поточної, немає перешкоди.
Ні Якщо в клітинці, внизу від поточної, є перешкода.
Справа вільно Так Якщо в клітинці, справа від поточної, немає перешкоди.
Ні Якщо в клітинці, справа від поточної, є перешкода.
Вгорі вільно Так Якщо в клітинці, вгорі від поточної, немає перешкоди.
Ні Якщо в клітинці, вгорі від поточної, є перешкода.
Внизу вільно Так Якщо в клітинці, внизу від поточної, немає перешкоди.
Ні Якщо в клітинці, внизу від поточної, є перешкода.
Зафарбовано Так Якщо поточна клітинка зафарбована.
Ні Якщо поточна клітинка не зафарбована.
Не зафарбовано Так Якщо поточна клітинка не зафарбована.
Ні Якщо поточна клітинка зафарбована.

Крім зазначених команд перевірки умови з системи команд виконавця ВОСЬМИНІЖКА, умовами можуть бути звичайні рівності або нерівності. Наприклад, 15>7, 5<0, а>3.

Алгоритм розв'язування поставленої задачі буде такий:

Вправо Повтори 10 разів Якщо Зверху вільно Вгору Зафарбуй Вниз Вправо Інакше Вправо Все Все

Звертаємо увагу на те, що й у випадку, коли результат перевірки умови Зверху вільні – Так, і в протилежному випадку повинна виконати команду Вправо. У таких випадках цю команду можна вилучити з команди розгалуження і поставити її після неї. Але тоді після слова Інакше взагалі команди відсутні. Для таких випадків використовується інший вид команди розгалуження:

Якщо <умова> <Послідовність команд> Все

Виконується ця команда розгалуження так: виконується команда перевір умови; якщо результат виконання цієї команди Так, то виконується <Послідовність команд>; якщо ж результат виконання команди перевірки умови Ні, то одразу виконується наступна команда алгоритму.

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

Вправо Повтори 10 разів Якщо Зверху вільно Вгору Зафарбуй Вниз Все Вправо Все

Перша з розглянутих форм команди розгалуження називається повною, а друга – неповною.

Команда присвоювання

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

Нехай ВОСЬМИНІЖКА знаходиться перед горизонтальним коридором заданої довжини, деякі клітинки якого зафарбовані. Потрібно підрахувати кількість зафарбованих клітинок.

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

Для підрахунку кількості зафарбованих клітинок використаємо змінну з іменем кількість. Перед початком руху виконавцю ВОСЬМИНІЖКА присвоїмо значення 0. Це абсолютно логічно, адже ВОСЬМИНІЖКА поки що не знайшла в коридорі жодної зафарбованої клітинки. Це можна зробити командою: кількість:=0.

Зі змінними ви вже зустрічалися і в 6-му, і в 7-му класах, коли використовували процедури з аргументами. Ці змінні набували своїх значень при кожному виклику такої процедури, і ці значення вказувалися саме в команді виклику.

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

Її загальний вигляд такий:

<ім'я змінної> := <число, ім'я змінної або арифметичний вираз> (":="знак присвоєння)

Наведемо приклади таких команд:


X:=45

а:=–496

ЧИСЛО:=а

у:=X

X:=4*5+22

сума:=2*с+а

КІЛЬКІСТЬ:=4

кількість:=кількість+2


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

Звертаємо увагу на те, що дія множення, на відміну від математики, позначається значком *, а дія ділення – значком /.

Якщо в правій частині команди присвоювання стоїть число, то в результаті її виконання значення змінної, ім'я якої вказано в лівій частині команди, дорівнюватиме цьому числу. Наприклад, після виконання команди а:=–496 змінна а матиме значення –496.   Якщо в правій частині команди присвоювання стоїть ім'я змінної, то в результаті її виконання змінна, ім'я якої вказано в лівій частині команди, одержує значення змінної, ім'я якої стоїть у правій частині команди. Наприклад, після виконання команди y:=х змінна матиме значення, що дорівнює значенню змінної на момент виконання цієї команди. Зазначимо, що після виконання цієї команди значення змінної не змінюється.   Якщо в правій частині команди присвоювання стоїть арифметичний вираз, то спочатку обчислюється значення цього виразу, а потім змінна, ім'я якої вказано в лівій частині команди, одержує значення, що дорівнює обчисленому. Наприклад, після виконання команди х:=4*5+22 змінна х буде мати значення 42. А при виконанні команди х:=2*с+а комп'ютер помножить поточне значення змінної с на 2, до результату додасть поточне значення змінної, після чого одержане значення присвоїть змінній х. Так, якщо на момент виконання цієї команди с=25 і а=55, то після її виконання змінна х матиме значення 105.   Якщо в результаті виконання команди присвоювання деяка змінна набула певного значення, то вона зберігає його при подальшому виконанні програми до того часу, поки в програмі не виконається інша команда присвоювання, у лівій частині якої буде вказано ім'я цієї змінної.

Звернемо особливу увагу на такі приклади команди присвоювання:

кількість:=4

кількість:=+2

У першій з них змінна кількість одержує значення 4, а в другій до цього значення додається 2, у результаті чого змінна одержує нове значення6. Іншими словами, виконання команди кількість:= кількість+2 збільшує значення змінної кількість на 2. Аналогічно, виконання команди с:= с-1 зменшує значення змінної на 1, а команда і:=і*4 множить поточне значення змінної і на 4.

Зважаючи на вищесказане, алгоритм для розв'язування поставленої задачі виглядатиме так:

Вправо кількість:=0 Повтори 9 разів Якщо Зафарбовано Кількість:= Кількість+1 Все Вправо Все Повідомлення ("Кількість зафарбованих клітинок у коридорі:", кількість)

Звертаємо увагу на те, що останній алгоритм містить нову команду – команду виведення повідомлення. За цією командою відкривається спеціальне вікно, у якому й виводиться повідомлення. Текст, як узято в лапки, виводиться повністю, як він і записаний у самій команді. Потім після коми вказано ім'я змінної, значення якої потрібно вивести.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: