
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни Рекомендовано Міністерством освіти України
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни
- •Тема 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. Запитання для самоконтролю засвоєння теми
5.1.4. Ітераційні циклічні процеси ( 5.6 )
Розв’язання систем лінійних алгебраїчних рівнянь з десятками та сотнями невідомих, пошук коренів алгебраїчних рівнянь високих степенів та коренів трансцендентних рівнянь, розв’язання систем диференційних рівнянь, інтерполяція та екстраполяція функцій, обчислення значень функції за допомогою рядів, інтегрування тощо — усі ці задачі розв’язуються за допомогою циклічних алгоритмів, що реалізують циклічні ітераційні процеси, для яких заздалегідь неможливо визначити кількість повторень циклу. Тому необхідно сформулювати умову виходу з циклу з використанням особливостей самої задачі. Найчастіше в умові виходу використовується задана точність обчислень саме тому, що в усіх цих методах рішення наближається до свого точного значення як завгодно близько. Точність наближення збігається з точністю обчислень.
Схему циклічного ітераційного процесу 5.6 зображено на рис. 5.15:
Розглянемо різні приклади циклічних обчислень.
Рис. 5.15. Схема ітераційного циклічного процесу 5.6
Приклад 1. Обчислити корінь р-го степеня х за ітераційною формулою:
уn+1 = (1/ р) [(p — 1)yn + x/ ynp-1 ],
де початкове значення у0 = х, а точність обчислень = 0,001. Ідея таких обчислень міститься у тому, що, задаючи у0 , можна обчислити у1, потім у2 ... уn, уn+1 ... Цей процес можна виконувати нескінченно, але на якомусь кроці обчислень з’ясується, що різниця між двома сусідніми наближеннями стала меншою за , отже, вона стає несуттєвою для цієї задачі, процес обчислень можна припинити і вважати останнє значення у саме шуканим. Таким чином, можна побудувати алгоритмічний процес обчислення кореня р-го степеня (рис. 5.16). Оскільки немає потреби зберігати усі послідовні значення у1 ... уi, yi+1 ..., то можна спростити ітераційну формулу, а саме
у1 = (1/ р) [(p — 1)y0 + x / y0p-1]
Якщо необхідно обчислити значення деякої функції, застосовуючи її розклад у деякий ряд, то циклічний алгоритмічний процес будується з використанням . У таких випадках ряди повинні обов’язково збігатися, тобто члени ряду зменшуються у напрямку від його початку. Отже, починаючи з деякого моменту, члени ряду стають меншими за , і їх можна відкинути та вийти з циклу за цієї умови.
Для обчислення кожного елемента ряду використовується попередній член ряду та деякий коефіцієнт d, який можна визначити, поділивши (k + 1)-й елемент на k-й.
Рис. 5.16. Приклад 1 ітераційного циклічного алгоритму 5.6
Приклад 2. Обчислити з точністю до значення функції еx, використовуючи її розклад у ряд:
;
.
Поточне
значення доданка суми позначимо ч
ерез
p
(рис. 5.17)
Будь-яку функцію можна наближено представити у вигляді деякого ряду. Підставивши значення аргумента, знайдемо часткову суму ряду і вважатимемо її значенням функції від того самого аргумента з певною точністю наближення. Чим більша точність нам потрібна, тим більший відрізок ряду треба буде обчислювати.
Рис. 5.17. Приклад 2 ітераційного циклічного алгоритму 5.6
5.1.5. Складні циклічні процеси (5.7)
З алгоритмічних процесів згаданих типів можна будувати складні циклічні процеси із вкладеними циклами. При цьому кожний із циклів готується самостійно, зовнішній цикл повторюється певну кількість разів, а внутрішній — необхідну кількість разів для кожного значення зовнішнього параметра.
Загальну схему складного циклічного процесу зображено на рис. 5.18.
Треба зауважити, що як внутрішній, так і зовнішній цикли можуть бути параметричними та ітераційними, кожен, у свою чергу, — бути складним. Але вони повинні цілком вкладатися один в одний, ніколи не перетинатися частково.
Приклад 1. Дано матрицю А = (аij), і = 1, 2 ... n; j = 1, 2 ... m (або двовимірний масив) цілих чисел. Визначити кількість ненульових елементів у кожному рядку матриці.
Рис. 5.18. Схема складного циклічного процесу 5.7
Необхідно організувати n полів-лічильників (за кількістю рядків матриці), тобто масив R = (ri), і = 1, 2 ... n, обнулити їх. Зовнішній цикл матиме параметр і (лічильник рядків), внутрішній вкладений цикл — параметр j (лічильник стовпців). Перегляд (як і ввід матриці) відбувається по рядках (рис. 5.19).
Р
ис.
5.19. Приклад 1 складного циклічного
алгоритму 5.7
Цей алгоритм можна замінити еквівалентним, якщо сумістити процес введення з обробкою матриці (рис. 5.20).
Рис. 5.20. Приклад 1 складного циклічного процесу 5.7
(II варіант).