Алгоритм як модель діяльності

Знову повернемося до поняття алгоритму, яке обговорювалося в §9. Однак тепер будемо аналізувати поняття алгоритму з нової точки зору. У науці про моделювання серед багатьох видів інформаційних моделей називаються і алгоритмічні моделі.
Що таке алгоритмічна модель
Спробуємо розібратися, чому алгоритм можна назвати моделлю і що він моделює.
Як вам відомо, алгоритм – це зрозуміле і точне розпорядження конкретному виконавцю здійснити кінцеву послідовність дій, що приводить до поставленої мети. З визначення випливає, що поставлена ​​мета досягається через діяльність (послідовність дій) деякого виконавця.
Етапи діяльності від визначення мети (постановки задачі) до отримання результату такі:
1) визначення мети;
2) планування роботи виконавця;
3) робота виконавця;
4) отримання результату.
Де ж тут місце алгоритмом? Алгоритм – це детальний план роботи виконавця, це опис послідовності елементарних дій, які має вчинити виконавець. Але всякий план чи опис є інформаційна модель. Отже:
Алгоритм є інформаційною моделлю діяльності виконавця.
Таку модель будемо називати алгоритмічної.

Щоб побудувати реальний план-алгоритм, який виявиться здійсненним, потрібно точно знати можливості виконавця. Ці можливості визначаються системою команд виконавця (СКІ). Складаючи алгоритм, не можна виходити за рамки СКІ. У цьому полягає властивість зрозумілості алгоритму.
Виявляється, набагато простіше побудувати алгоритм для програмно керованого автомата (у тому числі комп’ютера), ніж для людини. Для автомата СКІ – це строго певний кінцевий набір команд, закладений в нього конструкторами. Тому алгоритм являє собою точний опис його роботи, і автомат виконує роботу, формально слідуючи вказівкам алгоритму. Для управління автоматом або комп’ютером неважко придумати формалізована мова опису алгоритмів. Такі мови називаються мовами програмування, а алгоритм, представлений на мові програмування, називається програмою.
Складніша справа з людиною, яку важко назвати формальним виконавцем. І що абсолютно очевидно, СКІ людини неможливо повністю описати.
Приклад алгоритмічної моделі
Обговоримо описані вище проблеми на конкретному прикладі. Повернемося до задачі, яку розглядали в §11, – вгадування цілого числа із заданого діапазону методом половинного ділення. Нагадаємо постановку задачі. Перший гравець загадує ціле число із заданого діапазону чисел, наприклад від 1 до 100. Другий повинен вгадати це число за найменшу кількість питань.
Запишемо алгоритм вгадування числа методом половинного ділення, орієнтований на виконавця-людини.

Наскільки багатослівний цей алгоритм! І ще немає впевненості, що виконавець «Вася з 8Б» правильно виконає всі його пункти, хоча освіту восьмикласника повинно це йому дозволяти.
У цьому прикладі використано словесний опис алгоритму. Даний алгоритм орієнтований на виконавця-людини, а не на комп’ютер. Тому тут немає жодних вводів, присвоювань, висновків та інших формальних команд комп’ютерного алгоритму. Як вже зазначено вище, одна людина його зможе виконати, а інший – ні.
Алгоритм, складений для комп’ютера і перекладений на мову програмування, буде точно виконаний будь-яким комп’ютером, «розуміючим» цю мову. На рис. 3.9 наведено алгоритм пошуку числа методом половинного ділення для виконавця-комп’ютера у формі блок-схеми і на навчальному алгоритмічній мові, знайомому вам з базового курсу інформатики. (.Прімечаніе. МЕТ позначає функцію виділення цілої частини аргументу.)

Нагадаємо основні правила зображення блок-схем.
Блок-схема – це орієнтований граф, вказуючий порядок виконання команд алгоритму виконавцем. Блоки – вершини цього графа – позначають окремі команди, які віддаються виконавцю, а дуги вказують на послідовність переходів від однієї команди до іншої.
У прямокутниках на блок-схемах записуються команди – дії, в ромбах – умови, що визначають напрямок подальшого виконання команд; в параллелограммах – команди введення чи виведення інформації; в овалах – початок або кінець виконання алгоритму. Тут можна говорити про шляхи проходження графа в ході виконання алгоритму. Будь-який шлях починається від вершини «Початок» і закінчується виходом на вершину «Кінець». Усередині ж шлях може бути різним у залежності від вихідних даних і від результатів перевірки умов.
Блок-схема і алгоритмічну мову – це дві різні форми подання алгоритмічної моделі. Блок-схема – графічна форма, алгоритмічний мова – текстова форма. Блок-схема володіє більшою наочністю, на ній легше побачити структуру алгоритму. Алгоритмічна мова ближче за формою до мов програмування. Від запису алгоритму на алгоритмічній мові легко перейти до запису програми на мові програмування.
Структура побудованого алгоритму – цикл з вкладеним розгалуженням. З базового курсу інформатики вам повинно бути відомо, що будь-який алгоритм можна побудувати з поєднання трьох основних алгоритмічних структур: слідування, розгалуження і циклу. Це твердження – основа методики, яка називається структурним програмуванням. Сучасні мови програмування дозволяють легко переходити від опису алгоритму до програми, якщо алгоритм побудований структурно. Тому найбільш раціональною моделлю діяльності виконавця є структурна алгоритмічна модель.
Не складе великих труднощів запрограмувати описаний вище алгоритм на якомусь мові програмування, наприклад на Паскалі або Бейсіку.
Трасування алгоритму – модель роботи процесора
Для того щоб перевірити правильність алгоритму, зображеного на рис. 3.9, зовсім не обов’язково переводити його на мову програмування і виконувати тести на комп’ютері. Протестувати алгоритм може і осіб – шляхом трасування. Виконуючи ручну трасування, людина моделює роботу процесора, виконуючи кожну команду алгоритму і заносячи результати виконання команд в трасувальні таблицю. У базовому курсі ви це вже робили. Побудуємо трасувальні таблицю для алгоритму «Полювання ділення». Виберемо інтервал вгадуваних чисел від 1 до 8. Нехай гравець задумав число 3. Перевіримо, як з даного алгоритму буде отримано це число.

Посилання на основну публікацію