- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни Рекомендовано Міністерством освіти України
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни
- •Тема 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. Запитання для самоконтролю засвоєння теми
Список працюючих жінок
№ п/п |
Прізвище |
Вік |
Сімейний стан |
Оклад |
Кількість дітей |
Для формування полів вихідного рядка введемо для них позначення (відповідно до послідовності полів): i, FI01, VIK, CIM1, OKL1, DIT1. Крім того, позначимо поточний рік — GOD. Побудуємо алгоритм формування та друкування списку (рис. 6.7).
Рис. 6.7. Алгоритм прикладу формування списку за окремими записами (6.4)
6.1.5. Розрахунки підсумків на основі всіх записів (6.5)
Обробка запитів з використанням усіх записів файла зазвичай містить накопичення значень деяких полів для всіх записів. Ясно, що ці поля мають числові значення.
Після вводу всіх записів файла і накопичення необхідних підсумків виконуються операції їх обробки. Результати обробки у певній формі виводяться під шапкою у вигляді одного або декількох рядків.
Отже, необхідно визначити, які підсумкові величини треба знайти у процесі зчитування записів файла, задати їм початкові значення, тобто підготувати до входу в циклічний процес обробки записів файла.
Треба зазначити, що вивід шапки вихідного документа може здійснюватись як до входу в циклічний процес обробки, так і після нього.
Алгоритм обробки запиту з використанням усіх записів файла для розрахунків підсумків у загальному вигляді зображено на рис. 6.8.
Приклад 4. Надати інформацію про середню заробітну плату чоловіків та жінок. Для обробки цього запиту скористаємося файлом KADR, що був створений у першому прикладі.
Проведемо аналіз запиту та побудуємо вихідний документ. Він може бути представлений, наприклад, у такій формі:
Д О В І Д К А
Про середню заробітну плату
-
Працюючі
Середня з/п
Чоловіки Жінки
Щоб обчислити середню зарплату, необхідно встановити кількість чоловіків та жінок (два лічильники — К1 та К2) та їх сумарні заробітні плати (дві суми — S1 та S2).
Рис. 6.8. Загальний алгоритм 6.5 обробки запиту з використанням усіх записів файла
Вся потрібна інформація міститься у вхідному файлі. Оскільки значення всіх лічильників накопичуватимуться у процесі послідовного перегляду записів вхідного файла, то їх необхідно обнулити до входу в цикл обробки. Будуємо алгоритм обробки запиту з використанням усіх записів файла (рис. 6.9).
Рис. 6.9. Алгоритм прикладу 4 обробки запиту з використанням усіх записів файла KADR
6.1.6. Розрахунки проміжних підсумків на основі частини записів (6.6)
Записи файлів за якимись ознаками можуть впорядковуватись, групуватись, сортуватись. Ознакою може бути як окреме значення деякого елемента (поля) запису, так і його приналежність до деякого діапазону значень, або змінна, яка не належить запису, але може бути обчислена з використанням значень полів запису. Зауважимо, що будь-які впорядкування записів файла можуть проводитись за декількома ознаками одночасно, але пріоритет цих ознак повинен бути встановлений з аздалегідь. Наприклад, якщо це файл співробітників підприємств, то він може бути впорядкований за кодами підприємств, потім за внутрішніми кодами підрозділів, а в підрозділах — за прізвищами або табельними комерами.
Один і той самий файл можна впорядкувати за різними ознаками, якщо це спрощує алгоритм і скорочує час обробки файла.
Якщо файл упорядковано за декількома ознаками, то можна вважати, що його розбито на стільки груп, та угруповань, скільки різних значень мають комбінації цих ознак. По кожній із таких груп та угруповань можна вести будь-які розрахунки. Наприклад, для попереднього вхідного файла можна вести розрахунки для окремих підрозділів, підприємств або для всіх працівників взагалі й по кожний частині записів визначати певні підсумки для вихідного документа або файла. Приналежність запису до певної групи перевіряється порівнянням значення його ознаки зі значенням ознаки поточної групи записів, яке треба зафіксувати при вході до групи. Загальне правило обробки записів окремими частинами — це окреме введення 1-го запису файла, послідовне фіксування значень усіх кодових ознак та запам’ятовування їх у спеціальних полях для подальшого використання у визначенні груп записів.
Загальний алгоритм групової обробки записів зображено на рис. 6.10 (тут КО — кодова ознака).
Приклад 5. На основі запиту обчислити по цехах кількість працівників у розрізі груп загального стажу роботи: до 5 років, від 5 до 10 років, від 10 до 20 років та понад 20 років. Знайдені показники занести у таблицю, складену за наступною формою:
Р О З П О Д І Л
працівників за загальним стажем робіт
Код підпри- ємства |
Код цеху |
Кількість працівників зі стажем |
|||
до 5 років |
від 5 до 10 років |
від 10 до 20 років |
понад 20 років |
Використовуючи створений раніше вхідний файл KADR, проведемо розрахунки. Крім того, необхідно виділити поля для збереження зафіксованого значення коду підприємства (PRED) та коду цеху (ZEX).
Рис. 6.10. Загальний алгоритм групової обробки записів файла (6.6)
Закінчення рис. 6.10
Рис. 6.10. Загальний алгоритм групової обробки записів файла (6.6)
Необхідно зарезервувати по 4 лічильники кількості працівників для цеху (ZEX5, ZEX10, ZEX20, ZEXB), для підприємства (PRED5, PRED10, PRED20, PREDB) та підсумкових значень по усьому файлу. Отже, 12 лічильників, 4 з них обнулюються найчастіше при зміні коду цеху, ще 4 обнулюються тільки при зміні коду підприємства, 4 лічильники підсумкових значень обнулюються до входу в циклічний процес обробки файла.
Побудуємо алгоритм обробки запису, використовуючи загальний алгоритм 6.6 (рис. 6.11):
Рис. 6.11. Приклад групової обробки записів файла KADR (6.6)
Закінчення рис. 6.11
Рис. 6.11. Приклад групової обробки записів файла KADR (6.6)