- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни Рекомендовано Міністерством освіти України
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни
- •Тема 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. Запитання для самоконтролю засвоєння теми
Запитання для перевірки знань
1. Поняття багатовимірного масиву.
2. Розміщення у пам’яті ЕОМ.
3. Використання двовимірних масивів.
4. Організація складних циклічних процесів.
Приклади задач
1. Дано двовимірний масив А = {аij}, і = 1 ... n; j = 1, 2 ... m. Створити одновимірний масив В = {br} із його додатних компонентів.
Максимальне значення r = nm, коли всі аij > 0. У пам’яті ЕОМ двовимірний масив (матриця) розміщується послідовно по рядках, отже, пошук елементів та їх обробка виконуються у такому самому порядку. Обробка двовимірного масиву організується як складний циклічний процес, зовнішній цикл — за рядками, внутрішній — за стовпчиками.
Побудуємо алгоритм обробки двовимірного масиву (рис. 5.33).
Рис. 5.33. Алгоритм обробки прямокутної матриці
2. Дано квадратну матрицю А = {аij}, і, j = 1, 2 ... n. Cформувати та надрукувати значення квадратів елементів її головної діагоналі.
Елементи головної діагоналі аіі. Одновимірний масив шуканих значень: В = {bi}, і = 1, 2 ... n. Побудуємо алгоритм визначення масиву В (рис. 5.34).
Рис. 5.34. Алгоритм обробки квадратної матриці
3. Дано матрицю А = {аij}, і = 1, 2 ... n; j = 1, 2 ... m. Вставити новий стовпчик, що складається з елементів вектора В = {bі}, і = 1 ... n; між r-им та (r + 1)-им стовпчиками (r < m).
Нова матриця С = {cik}, і = 1, 2 ... n; k = 1, 2 ... m + 1. Побудуємо алгоритм розширення матриці (рис. 5.35).
Рис. 5.35. Алгоритм вставки стовпчика у матрицю (початок)
4. Дано матрицю А = {аij}, і = 1, 2 ... n; j = 1 ... m. Знайти суму елементів, прилеглих по прямих напрямках до елемента аkr (1 < k < n, 1 < r < m), та записати її на місце елемента аkr.
5. Якщо рядок матриці А = {аij}, і = 1, 2 ... n; j = 1, 2 ... m; починається з від’ємного елемента, то треба змінити знак на протилежний у всіх елементів цього рядка. Вивести нову матрицю.
Рис. 5.35. Алгоритм вставки стовпчика у матрицю
Заняття 5: Ітераційні циклічні процеси
Запитання для перевірки знань
1. Які задачі розв’язують за допомогою наближених методів?
2. Як використовується розклад функції в ряд для обчислення її значень?
3. Розв’язання трансцендентних та алгебраїчних рівнянь високих степенів за допомогою методу хорд.
4. Визначення значень функцій за допомогою ітераційних методів.
Розглянемо використання методу хорд для розв’язання трансцендентних та алгебраїчних рівнянь високих степенів.
Сутність цього методу полягає в тому, що пошук кореня ведеться послідовним наближенням до його значення з використанням рівняння прямої, що проходить через дві точки, які належать графіку функції (тобто множині значень функції від аргументів із заданого відрізка). Наскільки близьким до кореня повинно бути шукане значення, покаже задана точність обчислень.
У загальному вигляді метод хорд можна представити таким чином.
Нехай маємо рівняння f(x) = 0. Треба знайти його корінь на деякому відрізку [а, b] з певною точністю .
Перш за все необхідно визначити, чи належить відрізок [а, b] області визначення функції у = f(х). По-друге, щоб функція перетворилася на нуль на відрізку [а, b], необхідно, щоб її значення f(a) та f(b) мали протилежні знаки. Отже, її графік може набрати, наприклад, такого вигляду (рис. 5.36).
Рис. 5.36. Графік функції y = f(x)
Замінимо криву у = f(x) хордою, що проходить через точки А(а, f(a)) та В (b, f(b)), яка перетне вісь ох у деякій точці х1. Рівняння прямої, що проходить через точки А та B:
у = 0 в точці х = х1;
.
Знайдемо точку А1(х1, f(х1)). Через неї та точку В(b, f(b)) проведемо нову хорду, яка перетне вісь ох у точці х2:
Продовжуючи цей процес, отримаємо
.
Отже, ми поступово наближаємось до шуканої точки, де функція перетворюється на 0, саме вона і буде значенням кореня рівняння. Важливо, що відстань між двома сусідніми значеннями точок х1 ... хn, хn+1 ... дедалі зменшується, разом із тим значення функції f(хn+1) зменшується і наближається до нуля, що дозволить припинити процес розв’язання рівняння f(х) = 0.
Оскільки для визначення хn+1 потрібне тільки хn, то для зручності перетворимо формулу:
Побудуємо алгоритм (рис. 5.37)
Рис. 5.37. Загальний алгоритм розв’язання рівнянь методом хорд
Для розв’язання таких рівнянь можна використовувати метод дотичних, метод половинного ділення та інші.
Задачі
Використовуючи метод хорд, знайти корені рівнянь на заданих проміжках.
1. 2х + 5х – 3 = 0 –2 x 2;
2. 3х4 + 4х3 — 12х2 — 5 = 0 0 x 2;
3. Sin(х + / 3) – 0,5х = 0 –1 x 2;
4. 2ех = 7х –1 x 1.
Використовуючи ітераційні формули, обчислити значення функцій
5.
;
6.
7.
8.
Використовуючи розклади функцій у ряди, обчислити їх значення:
9.
;
10.
;
11.
