
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни Рекомендовано Міністерством освіти України
- •Алгоритмізація і програмування процедур обробки інформації Навчально-методичний посібник для самостійного вивчення дисципліни
- •Тема 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. Запитання для самоконтролю засвоєння теми
8.1.8. Супроводження програми
Розробку програми завершено. Далі йде процес використання чи експлуатації програми, який передбачає:
передачу і копіювання програми, внаслідок чого можуть з’явитися помилки, а значить, їх потрібно виявити і виправити;
коригування програми в цілях збільшення швидкодії;
коригування програми при зміні вимог до програми, сформульованих у постановці задачі;
коригування програм при виявленні помилок, які не виявлені на тестових даних;
удосконалення програми;
коригування програми (якщо вона працює у комплексі з іншими програмами) при спільній експлуатації чи при зміні інших програм комплексу;
тестування програми безпосередньо перед використанням;
адаптацію програми при зміні компонентів обчислювальної системи;
коригування програми з метою полегшення супроводження програми (корислива мета програміста, і, якщо всі коригування виконуються за рахунок замовника, то в останньому випадку умовити його заплатити дуже важко).
Всі перелічені дії забезпечують підтримку програми в робочому стані та складають поняття супроводження програми. Як свідчить практика, витрати на розробку і супроводження програмного забезпечення розподіляються по етапах нерівномірно і значною мірою залежать від того, на якій стадії виявлено помилки, оскільки чим пізніше помилку виявлено, тим більші витрати на її виправлення. При проектуванні програми з’являється до 64% помилок, при програмуванні — 36%. Однак при налагодженні програм виявляють тільки 40% помилок, решта виявляється вже на стадії приймання і супроводження програми.
Розвиток мов і технологій програмування з самого початку мали полегшити працю програмістів. Коли з’ясувалося, що користувачами програм можуть бути професіонали з прикладних галузей, а не тільки програмісти, змінилася ідеологія програмування, постали інші вимоги до програм: це й дружній інтерфейс, новий зміст понять мобільності та надійності і взагалі програмування без програмістів. Тобто програмно-машинні комплекси левову частину роботи з розробки програм переймають на себе, отже, на долю людини залишається «зв’язати» готові модулі в єдину програму, як скласти споруду з блоків-кубиків, але споруда більше схожа на піраміду перевернуту догори основою. Ясно, що надійність таким чином покращитися не могла.
З другого боку, у певного прошарку користувачів виникли ілюзії, що програмування — це просто. Просто, коли є з чого складати програму, є автоматизовані засоби тестування, налагодження та супроводження.
Крім того, неабиякого значення набуває відповідь на запитання: для кого призначена програма — для власного використання чи на продаж? Бо в першому випадку вона повинна бути зручною, надійною, економічною, раціональною, довговічною, призначеною для вирішення проблеми; у другому — програма перш за все товар, вона має окупити витрати та приносити прибуток. Її користувач — перш за все покупець, і треба зробити так, щоб він не просто купив програму, а був зацікавлений купувати її нові версії або замінити її новою, більш привабливою програмою.
Отже, тут точки зору виробника та споживача програми не збігаються, хоча виробник повинен задовольняти всі потреби споживача і випускати тільки потрібну йому продукцію. Але виробник робить усе, щоб користувач не зміг обійтися без нього, щоб був прикований до нього всіма припустимими законними способами.
У корпорації Cutter була розроблена нова технологія економного створення програмного забезпечення (ЕСПЗ), аналіз якої показав, що вона дозволяє втричі швидше реалізувати проект, зробити його втричі дешевше та припуститися втричі меншої кількості помилок.
ЕСПЗ заснована на концепції динамічної стабільності, здатності компанії швидко та ефективно адаптуватися до вимог замовника, зберігаючи при цьому стабільний внутрішній процес розробки ПЗ, придатний для виробництва великого діапазону програмних продуктів, який неперервно покращується.
Було розроблено 12 принципів ЕСПЗ:
Найвищий пріоритет — задоволення вимог замовника, виявлення його конкретних потреб, підтримка зворотного зв’язку з ним. Можливості продукту, про які клієнт не згадував, є непотрібними, отже недоцільно витрачати на них зусилля (як з’ясувалося, близько 45% можливостей більшості програмних продуктів користувачі ніколи не використовують).
Треба так скоординувати властивості продукту, щоб вони задовольняли клієнта в замовлений термін і в межах встановленого бюджету.
Необхідною є активна участь замовника в роботі для організації максимально швидкої адаптації до зміни вимог.
Концентрація командних зусиль, поєднання різноманітних вмінь розробників.
Всі методології розпочинаються з визначення вимог до проекту. Їх зміна постійно контролюється. В ЕСПЗ прийнято вважати цей процес неперервним, тому бажано передбачати, які зміни можуть виникнути та як пристосувати до них проект.
Бажано створювати глобальні рішення, щоб програмний продукт можна було використовувати в різних компаніях, ринках, продуктах.
Програмний продукт краще зібрати, використовуючи готові компоненти та шаблонні рішення, ніж конструювати, або купити його, ніж побудувати.
Краще сьогодні мати на 80% готовий продукт, ніж завтра готовий на 100%, бо замовник здебільшого згоден пожертвувати функціональними можливостями продукту заради скорішого його отримання.
Можливості продукту та обсяги паперової роботи з ним повинні бути мінімальними в розумних межах.
Необхідно перш за все створити технологію роботи, спочатку визначивши цілі, а вже потім — способи їх вирішення.
Розвиток продукту — це збільшення його можливостей, а не розміру, при цьому важливо визначити критичні властивості продукту, а саме ті, які впливають на бізнес-процеси користувача.
ЕСПЗ найкраще підходить для розробки прикладних програм.