Урок. Розгалуження. Загальна структура оператора розгалуження у виляді блок-схеми та опис Навчальною Алгоритмічною Мовою.

Розгалуження в алгоритмах.

Приклади розгалужених алгоритмів: завантажити презентацію

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

Із цієї схеми ми бачимо, якщо значення умови буде істинним, то буде виконано серію команд 1, а потім завершено оператор розгалуження. А якщо умова має хибне значення, то буде виконаносерію команд 2 і також завершено оператор розгалуження. При цьому ні в якому разі не потрібно виконувати серію команд 1. Серії команд на блок-схемах домовилися позначати прямокутниками.

У Навчальній Алгоритмічній Мові для цього призначено оператор розгалуження.

Якщо < умова >
то < серія команд 1 >
інакше < серія команд 2 >;


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

Скорочена форма мовою НАМ записується так:

Якщо < умова >
то < серія команд 1 >;

Задача. Дуся спіймала х метеликів, а песик Айбоша вполював y метеликів. Зазирнуши до .червоної книги, Айбоша відпустив на волю а метеликів. Дуся відпустила с хижих метеликів. Хто з песиків наловив більше метеликів?
Аргументи (дано):
х— кількість метеликів, яких вполювала Дуся,
у — кількість метеликів, яких вдалося впіймати Айбоші,
а — кількість метеликів, яких відпустив песик, оскільки їх занесено до Червоної книги,
с — кількість хижих метеликів, яких відпустила Дуся.
X, y,a,c – цілого типу
Результати (знайти): Дуся >Айбоші?
Дуся, Айбоша – цілого типу.
Розв’язок: Дуся: = х -с; Айбоша: = у - а;
Якщо Дуся > Айбоша то Вивести ('Перемогла Дуся') інакше Вивести ('Переміг Айбоша');

Текст програми:
Програма Метелик;
Змінна X, у, а, с, Дуся, Айбоша: ціла;
Початок
Вивести ('Кількість метеликів, яких вполювала Дуська =>');
Ввести (х);
Вивести ('Кількість метеликів, яких вполював Айбоша =>');
Ввести (у);
Вивести ('Кількість метеликів, яких відпустив Айбоша =>');
Ввести (а):
Вивести ('Кількість хижих метеликів, яких позбулася Дуся =>');
Ввести (с);
Дуся: = х -с;
Айбоша: =у - а;
Якщо Дуся > Айбоша
То Вивести ('Перемогла Дуся')
інакше Вивести ('Переміг Айбоша')
Кінець.

ПЕРЕВІР СЕБЕ
Для чого використовують оператор розгалуження? Як записати за правилами НАМ загальну структуру оператора розгалуження? Як розуміти вислови «умова істинна» та «умова хибна»? Які умовні позначення використовують на блок-схемах? Зобразіть за допомогою блок-схеми оператор розгалуження.

Задача додому: Антилопа робить х стрибків за хвилину, довжина її стрибка становить y метрів. Ягуар мчить за антилопою зі швидкістю v км/год. Чи зможе ягуар наздогнати антилопу?