
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни Рекомендовано Міністерством освіти України
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни
- •Тема 1. Введення в теорію алгоритмів 6
- •Тема 2. Форми та засоби представлення алгоритмів 14
- •Тема 3. Алгоритмічні системи 23
- •Тема 4. Класифікація задач і процесів обробки інформації 44
- •Тема 5. Типи алгоритмічних процесів та принципи їх побудови 49
- •Тема 6. Алгоритми обробки соціально- економічної інформації 88
- •Тема 7. Визначення та короткий огляд мов програмування 123
- •Тема 8. Технологія програмування 133
- •Типова програма
- •Дисципліни «Алгоритмізація і програмування
- •Процедур обробки інформації»
- •Частина і
- •Тема 4. Класифікація задач і процесів обробки інформації
- •Тема 5. Типи алгоритмічних процесів та принципи їх побудови
- •Тема 6. Алгоритми обробки соціально-економічної інформації
- •Тема 7. Визначення та короткий огляд мов програмування
- •Тема 8. Технологія програмування
- •Навчально-методичне забезпечення
- •1.1. Методичні вказівки до вивчення теми
- •1.1.1. Визначення та властивості алгоритму
- •1.1.2. Алфавітні оператори
- •1.1.3. Характеристики алгоритму
- •1.2. Практичне заняття
- •1.3. Термінологічний словник
- •1.4. Завдання для перевірки знань
- •Тема 2. Форми та засоби представлення алгоритмів
- •2.1.1. Словесна форма
- •2.1.2. Словесно-формульна форма
- •2.1.3. Граф-схеми
- •2.1.4. Блок-схеми
- •2.1.5. Операторні схеми
- •2.1.6. Ніро-схеми
- •2.1.7. Таблиці рішень
- •2.2. Термінологічний словник
- •2.3. Практичні заняття
- •2.4. Задачі
- •3.1. Методичні вказівки до самостійного вивчення теми
- •3.1.1. Визначення алгоритмічної системи
- •3.1.2. Рекурсивні функції
- •3.1.3. Нормальні алгоритми Маркова
- •3.1.4. Машини Поста
- •3.1.5. Машини Тьюринга
- •3.1.6. Абстрактні автомати
- •3.1.7. Формальні граматики
- •3.1.8. Алгоритмічні основи еом
- •3.2. Термінологічний словник
- •3.3. Навчальні завдання
- •3.4. Завдання для перевірки знань
- •Тема 4. Класифікація задач і процесів обробки інформації
- •4.1. Методичні вказівки до самостійного вивчення теми
- •Науково-технічні задачі
- •Задачі обробки спискових структур
- •Задачі обробки символьної інформації
- •Інформаційно-пошукові задачі
- •Задачі моделювання та ділові ігри
- •Економічні задачі
- •4.2. Питання для перевірки знань
- •Тема 5. Типи алгоритмічних процесів та принципи їх побудови
- •5.1. Методичні вказівки до вивчення теми
- •5.1.1. Лінійні алгоритми (5.1)
- •5.1.2. Розгалужені алгоритми (5.2)
- •5.1.3. Прості циклічні процеси з параметром (5.5)
- •5.1.4. Ітераційні циклічні процеси ( 5.6 )
- •5.1.5. Складні циклічні процеси (5.7)
- •5.2. Термінологічний словник
- •5.3. Плани практичних занять
- •Запитання для перевірки знань
- •Запитання для перевірки знань
- •Приклади задач
- •Запитання для перевірки знань
- •Приклади задач
- •Запитання для перевірки знань
- •Приклади задач
- •Запитання для перевірки знань
- •5.4. Навчальні завдання Завдання до 1-го заняття
- •Завдання до 2-го заняття
- •Завдання до 3-го заняття
- •Завдання до 4-го заняття
- •Завдання до 5-го заняття
- •5.5. Завдання для перевірки знань
- •Тема 6. Алгоритми обробки соціально-економічної інформації
- •6.1. Методичні вказівки до вивчення теми
- •6.1.1. Створення та контроль наборів даних (6.1)
- •6.1.2. Коригування наборів даних (6.2)
- •6.1.3. Сортування наборів даних (6.3)
- •6.1.4. Розрахунки підсумків на основі окремого запису (6.4)
- •Список працюючих жінок
- •6.1.5. Розрахунки підсумків на основі всіх записів (6.5)
- •Про середню заробітну плату
- •6.1.6. Розрахунки проміжних підсумків на основі частини записів (6.6)
- •6.1.7. Обробка запитів з використанням довідників (6.7)
- •Список підприємств
- •6.1.8. Розрахунки підсумків на основі багатьох запитів з використанням декількох вхідних файлів (6.8)
- •6.2. Плани практичних занять Заняття 1.
- •Заняття 2
- •Запитання для перевірки знань
- •Наявна кількість матеріалу____________
- •Запитання для перевірки знань:
- •Поділ працівників за статтю
- •Поділ працівників за неперервним стажем роботи
- •Поділ заробітної плати за розрядами робіт
- •Списки робітників, молодших за 20 років
- •Запитання для перевірки знань:
- •Список підприємств, що замовили
- •Перелік матеріалів
- •Справка про попит / пропозицію на
- •Сума затрат на матеріали
- •Результат обліку матеріалів на складах
- •Перелік матеріалів на складах
- •6.3. Термінологічний словник
- •6.4. Навчальні завдання
- •Тема 7. Визначення та короткий огляд мов програмування
- •7.1. Методичні вказівки до самостійного вивчення теми
- •7.1.1. Визначення мови програмування
- •7.1.2. Вимоги до мов програмування
- •7.1.5. Програмні інтерфейси та інструментальні засоби розробки програмних продуктів
- •7.2. Термінологічний словник
- •7.3. Запитання для самоконтролю засвоєння теми
- •Тема 8. Технологія програмування
- •8.1. Методичні вказівки до самостійного вивчення теми
- •8.1.1. Способи розробки програм
- •8.1.2. Основні технологічні етапи розробки програм
- •8.1.4. Розробка проекту програми
- •8.1.5. Написання програми
- •8.1.6. Налагодження програми
- •8.1.8. Супроводження програми
- •8.2. Запитання для самоконтролю засвоєння теми
3.1.4. Машини Поста
Ідея машини полягає у тому, що:
1) алгоритмічні процеси є послідовністю досить простих «механічних» операцій;
2) на результат не впливає, хто виконує алгоритм і скільки разів, — він завжди один і той самий;
3) отже, алгоритмічні процеси може виконувати машина.
Таким чином, можна винайти машину, яка вміє виконувати певний набір операцій. Яких? Якою повинна бути сукупність операцій, щоб можна було реалізувати або імітувати будь-які алгоритмічні процеси?
В гіпотетичній (умовній) машині Поста (1936 р.) інформацію представляють у двійковому алфавіті А = {1,0}. Вона має інформаційну стрічку необмеженої довжини — пам’ять машини. Стрічка поділена на окремі комірки. В кожній комірці можна розмістити 0 або 1.
Машина має «зчитувальну головку» (спеціальний чутливий елемент), яка оглядає зміст однієї комірки. Інформаційна стрічка переміщується в обидва боки так, щоб у кожний момент часу головка знаходилась навпроти однієї певної комірки стрічки.
Машина має керуючий пристрій, який у кожний момент часу перебуває у певному стані. Таких станів є скінченна множина. Один із таких станів є заключним і керує завершенням роботи машини.
q j
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Керуючий пристрій знаходиться у стані q, «зчитувальна головка» оглядає j-ту комірку.
Машина може виконувати певний перелік правил (або наказів). Машина Поста може виконувати 6 типів наказів:
1. Записати у розглядувану комірку 1 та перейти до i-го наказу.
2. Записати у розглядувану комірку 0 та перейти до i-го наказу.
3. Зсунути стрічку праворуч на 1 комірку та перейти до i-го наказу.
4. Зсунути стрічку ліворуч на 1 комірку та перейти до i-го наказу.
5. Якщо у розглядуваній комірці записано 1, то перейти до i-го наказу, а якщо 0 — то перейти до j-го наказу.
6. Останов. Закінчення роботи алгоритму.
Алгоритми, побудовані з будь-якого скінченного числа правил машини Поста, називають алгоритмами Поста. Вони можуть бути зведені до алгоритмів, побудованих у системі рекурсивних функцій (і навпаки).
3.1.5. Машини Тьюринга
Машина Тьюринга відрізняється від машини Поста тим, що алфавіт може мати більше двох символів. Взагалі перелік операцій може бути розширений. Наприклад, додати команди зміни змісту комірки перед просуванням стрічки пам’яті (стандартна машина Тьюринга). Тобто будь-яка команда машини Тьюринга може бути представлена як послідовність команд машини Поста.
Нехай алфавіт машини Тьюринга А = (S0, S1, ..., Sn), де S0 = ; сукупність станів — це множина Q = {q0, q1, ..., qm},
де q0 — заключний стан;
А — зовнішній алфавіт машини;
Q — внутрішній алфавіт.
У кожний момент часу машина має певну послідовність станів комірок та 1 стан керуючого пристрою, а зчитувальна головка знаходиться навпроти якоїсь комірки. Сукупність усіх елементів, що визначають стан машини, називають конфігурацією машини.
Наприклад:
qi
|
S0 |
Sj |
Sj |
Sj |
... |
|
|
Sj |
|
|
|
|
Sj |
Sj |
S0 |
1 2 3 ... ... ... k ... ... ... ... r-1 r
Конфігурація машини у вигляді слова:
... S0 Sj1 Sj2 Sj3 ... qj Sjk ... Sjr-1 Sjr S0 ... ,
де S0 — пуста комірка,
Sj1 — стан (зміст) першої непустої лівої комірки;
Sjk — стан комірки, що розглядається у даний момент часу;
r — кількість зайнятих комірок;
qi — стан керуючого пристрою; i = 0,1 … m.
Якщо машина перебуває у стані qі , має доступ до комірки із символом sk , переходить у стан qj , замінюючи символ sk на sm, a стрічка пересувається ліворуч на одну комірку, то це означає, що вона виконує команду
qi sk qj sm Л або qi sk qi sm Л.
Замість Л можуть стояти П або С:
де Л — рух стрічки ліворуч;
П — рух стрічки праворуч;
С — стрічка не рухається.
Отже, перехід від однієї до іншої конфігурації здійснюється за допомогою команди. Загальний вигляд команди
qi sk qj sm T ,
де T = Л, П, С.
Сукупність усіх команд машини називають її програмою.
Щоб задати машину Тьюринга, треба задати її внутрішній та зовнішній алфавіт, програму, початкову конфігурацію, якими символами позначені пуста комірка та заключний стан керуючого пристрою.
Програму машини Тьюринга можна задати у вигляді таблиці.
Наприклад, задано таблицю:
Q |
0 |
1 |
* |
S0 |
q2 |
— |
q2 0 Л |
q1*Л |
q0C |
q1 |
q21Л |
— |
— |
— |
q0 |
останов |
|
|
|
Машина Тьюринга, представлена цією таблицею, здійснює перетворення слова 1*0 у слово 0*1. Наведемо алгоритм переносу 0 разом зі зміною конфігурацій після виконання кожної команди.
Нехай початкова конфігурація машини має вигляд: s0 q2 1* 0 s0. Тоді:
q1 1 q2 0 Л s0 0 q2 * 0 s0
q2 * q1 * Л s0 0 * q1 0 s0
q1 0 q1 1 Л s0 0 * 1 q2 s0
q2 s0 q0 s0 C s0 0 * 1 q0 s0 — заключна
конфігурація машини.
З часом з’явилися різні модифікації машини Тьюринга залежно від кількості використовуваних стрічок пам’яті, кількості станів керуючого пристрою. Так, існує машина Тьюринга з двома виходами. Якщо додати у керуючий пристрій певний стан q*, то: якщо керуючий пристрій переходить у стан q0 для заданого вхідного слова Х, то машина допускає Х; якщо керуючий пристрій переходить у стан q*, то машина забороняє стан Х.
Багатострічкова машина Тьюринга має декілька стрічок, поділених на комірки. В кожній комірці може знаходитись один із символів зовнішнього алфавіту А. Керуючий пристрій може знаходитись в одному зі станів Q = {q0, q1 ... qm}, де q0 — заключний стан. Конфігурація машини вважається заданою, якщо відомий стан керуючого пристрою, стан всіх комірок, всіх стрічок та вказані комірки, що доступні на даний момент зчитувальним головкам. Конфігурація складається з К слів, якщо машина має К стрічок пам’яті.