
- •Модуль 2 Алгоритми
- •2.1 Поняття алгоритму
- •2.2 Види алгоритмів
- •2.2.1 Лінійні алгоритми
- •2.2.2 Алгоритми з розгалуженням
- •3 Якщо діаметр більший за заданий, то помістити виріб в магазин № 1.
- •2.2.3 Циклічні алгоритми
- •1 Поки на конвеєрі є виріб, виконувати дії:
- •7 Кінець циклу.
- •1 Початок циклу.
- •6 Поки у вагоні є вільне місце, повторювати дії циклу.
- •1 Початок циклу.
- •7 Поки у вагоні є вільне місце, повторювати дії циклу.
- •8 Кінець циклу.
- •1 Початок циклу.
- •1 Поки вміст лічильника менше 10, виконувати дії:
- •2.2.4 Допоміжні алгоритми
- •2.3 Способи запису алгоритмів
- •2.3.1 Словниковий запис
- •2.3.2 Графічне представлення
- •2.3.3 Алгоритмічна мова
1 Поки на конвеєрі є виріб, виконувати дії:
2 Встановити виріб у вимірювальний пристрій.
3 Виміряти діаметр виробу.
4 Якщо діаметр більший за заданий, то помістити виріб в магазин № 1.
5 Інакше помістити виріб в магазин № 2.
6 Кінець галуження.
7 Кінець циклу.
Тут напівжирним шрифтом виділені рядки, от-ношение, що мають, до повторення дій, т. е. до циклу. У алгоритмі є і галуження, але воно записане світлим шрифтом.
Для того, щоб виконавцеві було зрозуміле, які саме дії треба повторювати, ці дії (цикл) мають бути якось виділені, тобто мають бути вказані межі циклу. Оскільки повторення циклу залежить від виконання заданої умови 1. Поки на конвеєрі..., рядок з цією умовою може бути одним з границь циклу. Іншу межу встановлюють рядком Кінець циклу. Якщо умова 1 дотримано, то виконуються дії 2... 6, розташовані між вказаними межами. При порушенні умови 1 виконавцю треба буде перейти до дії, що йде за рядком 7. Кінець циклу (якщо є продовження алгоритму).
У розглянутому алгоритмі перевірка умови, що визначає необхідність повторення циклу, робилася до початку виконання самих дій циклу. Але буває і так, що оцінити необхідність повторення циклу можна тільки по результату, отриманому після його виконання. Вибір того або іншого варіанта залежить від сенсу виконуваних дій.
Наприклад, при вантаженні контейнерів в залізничний вагон тільки після завантаження чергового контейнера можна визначити, чи є ще вільне місце у вагоні і чи варто продовжувати завантаження. В цьому випадку рядок з умовою повторення циклу є його нижньою межею, а верхню межу встановлюють строкою Початок циклу.
Складемо циклічний алгоритм вантаження контейнерів у вагон:
1 Початок циклу.
2 Підняти краном черговий контейнер.
3 Перемістити контейнер до вагону.
4 Навантажити контейнер у вагон.
5 Повернути кран в початкове положення.
6 Поки у вагоні є вільне місце, повторювати дії циклу.
7 Закрити і опечатати двері вагону.
При виконанні умови 6 повторюватимуться дії 2...5, після чого знову перевірятиметься виконання умови 6. Якщо воно виявиться порушеним, то повторення циклу не буде і виконавець перейде до команди 7. Закрити і опечатати двері вагону, що йде за умовою 6.
У цей алгоритм можна ввести і попередню умову, перевірену до початку виконання дій алгоритму. Адже призначені для вантаження контейнерів може не виявитися взагалі або їх може виявитися недостатньо для заповнення усього вагону, тоді вантаження робитиметься лише за наявності контейнерів.
В цьому випадку увесь записаний раніше алгоритм буде представляти собою цикл, повторюваний за умови наявності контейнерів, причому перевірка виконання цієї умови теж включається в цикл:
1 Початок циклу.
2 Поки є контейнер для вантаження, виконувати дії:
3 Підняти краном черговий контейнер.
4 Перемістити контейнер до вагону.
5 Навантажити контейнер у вагон.
6 Повернути кран в початкове положення.
7 Поки у вагоні є вільне місце, повторювати дії циклу.
8 Кінець циклу.
При порушенні або умови 2, або умови 7 виконавець переходить до дії, що йде за рядком 8. Кінець циклу.
Ми розглянули два види циклічних алгоритмів : з попередньою умовою (передумовою) і з наступною умовою (постумовою).
Розглянемо другий варіант циклічних алгоритмів — заданою заздалегідь кількістю повторень. Як вже було сказано, по таких алгоритмах працюють виконавці, що не уміють оцінювати виконання (чи невиконання) той або іншої умови, та зате що уміють працювати з числами.
Наприклад, на хімічному підприємстві треба забезпечити автоматичне заповнення рідиною 10 резервуарів. Лічильник кількості операцій, що повторюються, в початковому стані встановлен на нуль. Резервуари розташовані в один ряд, впритул один до одного.
Шланг, з якого витікає рідина, може переміщатися уздовж резервуарів і в початковому положенні знаходиться зблизька першого резервуару.
Кожен резервуар має покажчик, що сигналізує про його заповнення. Алгоритм заповнення резервуарів може бути слідуючим: