- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни Рекомендовано Міністерством освіти України
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни
- •Тема 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. Побудувати алгоритм обчислення значень функції
у = х tg (x/ 2) + 2 ln cos (x/ 2) ,
де х = 0,5; 0,6 ... 1,5.
Результат надрукувати у вигляді таблиці.
Для побудови цього алгоритму треба ввести граничні значення х1= 0,5, х2 = 1,5 та крок зміни h = 0,1. До тіла циклу входитимуть операції обчислення y та друку пap значень х, у.
2. Побудувати алгоритм обчислення найбільшого цілого додатного числа n, що задовольняє умову:
–n3+ 30n – 1 > 0.
Цей циклічний алгоритм відрізняється тим, що вихід із нього організується за допомогою перевірки умови, яку задано нерівністю. Отже, алгоритм матиме такий вигляд (рис. 5.26):
Рис. 5.26. Алгоритм задачі 2
3. Побудувати алгоритм знаходження у = х! (y =1 2 3 ... х)
4. Дано натуральне число n < 10000. S — сума його цифр. Побудувати алгоритм пошуку S.
Отже, маємо ціле число (не більше 4 цифр). Для обробки інформації, представленої у вигляді рядка цифр, використовують операції цілочисельного ділення div та mod, результатом операції div є найближче ціле число, що не перевищує частки від ділення.
7 div 3 = 2;
2 div 3 = 0.
Результатом операції mod є ціле число — остача від ділення:
7 mod 3 = 1;
2 mod 3 = 2.
Отже, використовуючи ці дві операції, можна визначити кількість цифр у числі, значення кожної цифри.
Алгоритм цієї задачі зображено на рис. 5.27.
Рис. 5.27. Алгоритм задачі 4
5. Дано натуральне число n. Утворити нове натуральне число m, взявши цифри числа n у зворотному порядку (n < 10000).
6. Дана послідовність 6 цифр. Чи може вона визначати дату? (ЧЧММГГ).
Існують класи задач, які є алгоритмічно нерозв’язними, але, використовуючи наближені методи, можна побудувати алгоритми їх розв’язання деяких підкласів або з деякими припущеннями, які не є суттєвими у певних умовах. До таких класів належать, наприклад, задачі інтегрування. Існують різні методи обчислення інтегралів. Розглянемо один із них, а саме — визначення інтегралу як площі, обмеженої графіком, підінтегральної функції (рис. 5.28).
Рис. 5.29. Алгоритм обчислення визначеного
інтегралу
Рис. 5.28. Визначення
інтегралу як площі фігури
f(x)dx = S.
S можна обчислити як суму площ маленьких прямокутників, висота яких — значення f(x) у точках відрізку [а, b], отриманих із кроком h, а основа у всіх однакова — h. Таким чином, чим дрібніший крок розділення відрізку [а, b], тим ближче будуть значення S до результату інтегрування.
Побудуємо загальний алгоритм (рис. 5.29).
7. Побудувати алгоритм визначення інтегралу з кроком 0,01
8. Побудувати алгоритм визначення інтегралу з кроком 0,01
Заняття 3: Алгоритмізація обробки одновимірних масивів
Запитання для перевірки знань
1. Індекси масивів та циклічні змінні.
2. Принцип розміщення елементів масиву у пам’яті ЕОМ.
3. Організація обробки одновимірних масивів.
Приклади задач
1. Дано одновимірний масив А = {аі}, і = 1, 2 ... n. Побудувати алгоритм пошуку максимального елемента масиву та його індексу.
Цикл повторюється n разів, параметр циклу — і. Позначимо максимальний елемент через М, його індекс — k. Зауважимо, що коли шукаємо максимальний (мінімальний) елемент, то спочатку присвоїмо йому значення першого елемента, щоб потім у циклі порівнювати його з усіма іншими елементами масиву.
Алгоритм розв’язання цієї задачі зображено на рис. 5.30.
Рис. 5.30. Алгоритм пошуку максимального елемента масиву та його індексу
2. Дано одномірний масив А = {аі}, і = 1, 2 ... n. Побудувати алгоритм упорядкування за зростанням елементів масиву, використовуючи метод попарного порівняння.
Зауважимо, що попарне порівняння двох сусідніх елементів та їх впорядкування не обов’язково приведуть одразу до впорядкованого масиву, адже перестановка двох елементів може спричинити порушення попередньої впорядкованості. Отже, процес попарного впорядкування треба повторювати, доки не прийдемо до ситуації, коли при перегляді масиву не зроблено жодної перестановки. Звідси випливає, що треба ввести спеціальну змінну, яка стане лічильником перестановок при кожному перегляді масиву.
Таким чином, необхідно ввести змінну циклу і та лічильник перестановок k.
Для введення масиву треба організувати окремий цикл, для виводу впорядкованого масиву теж, і для впорядкування елементів ще один, який повторюватиметься, поки змінна k не залишиться рівною 0 після чергового виходу із циклу. Побудуємо алгоритм (рис. 5.31).
3. Дано масиви А = {аі}, В = {bі}, і = 1, 2 ... n. Побудувати масив С ={сі} за правилом:
Рис. 5.31. Алгоритм упорядкування масиву за зростанням елементів методом попарного порівняння
Принципово ця задача не відрізняється від попередніх. Побудуємо алгоритм (рис. 5.32).
Рис. 5.32. Алгоритм сумісної обробки двох масивів
4. Утворити вектор В із вектора А = (aі), і = 1, 2 ... n, взявши його компоненти у зворотньому порядку.
5. Дано масив A = (aі), і =1, 2 ... n. Впорядкувати його за зростанням за допомогою сортування вибором (відшукується максимальний елемент і переноситься у кінець. Серед тих елементів, що залишились, відшукується max елемент і т. д.).
6. Утворити вектор В = (bj) з вектора А = (aі), і = 1, 2 ... n, викинувши з нього всі від’ємні елементи.
7. Дано масив значень Х = (xі), і = 1, 2 ... n та сукупність значень F = (fі) статистичної ваги значень хі. Знайти середнє квадратичне зважене за формулою:
Заняття 4. Алгоритмізація обробки двовимірних масивів
