Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1 оп.doc
Скачиваний:
14
Добавлен:
14.08.2019
Размер:
181.76 Кб
Скачать

Лінійний алгоритм

П риведемо приклад запису алгоритму у вигляді блок-схеми, псевдокодів і на мові Паскаль. Ручне тестування і підбір системи тестів виконуються аналогічно попередньому завданню.

Алгоритм, що розгалужується

Приведемо приклад запису алгоритму, що розгалужується, для знаходження найбільшого з двох чисел.

Циклічний алгоритм

Р озглянемо алгоритм знаходження суми перших натуральних непарних чисел до n. Представимо запис алгоритму трьома способами: у вигляді блок-схеми, шкільної алгоритмічної мови і на мові програмування Pascal.

Блок-схема складається з наступних базових структур: дві складені команди (команда проходження і команда повторення з передумовою), далі проста команда. Всі команди сполучені послідовно. Конструкції оформлені стандартним чином, тому їх легко розпізнати і перекласти мовою програмування. Кожна конструкція має один вхід і один вихід.

Пунктирні стрілки в таблиці відображають послідовність виконання технологічного ланцюжка. Після запису алгоритму у вигляді блок-схеми кожна команда перекладається шкільною алгоритмічною мовою, а вже потім на мову програмування.

4. Створення алгоритму

Будь-який алгоритм треба розглядати як опис процедури, яка обробляє вхідні дані й отримує вихідні дані. Вхідні дані ще називають входом алгоритму, або його аргументами, а вихідні дані - виходом алгоритму, або результатом.

Алгоритм вважається правильним, якщо при будь-якому допустимому для даної задачі наборі вхідних даних він завершує свою роботу і отримує результат, що задовольняє вимоги задачі. У цьому випадку кажуть, що алгоритм розв'язує дану задачу. Неправильний алгоритм може або не зупинитися, або дати неправильний результат.

Усі алгоритми поділяються на два великі класи. Це алгоритми з повторениями та рекурсивні алгоритми.

В основі алгоритмів з повторениями лежать операції переходу та умовні вирази, аналіз яких і виконує відповідні переходи. Для аналізу таких алгоритмів треба оцінити кількість операцій усередині циклу та кількість повторень цих циклів.

Рекурсивні алгоритми поділяють велику задачу на підзадачі, до кожної з яких окремо знову застосовуються ці самі алгоритми. Такі алгоритми ще відносять до алгоритмів, основою створення яких є ідея «розділяй і володарюй». Перевагою таких алгоритмів є невеликий, простий і зрозумілий запис. Аналіз рекурсивних алгоритмів вимагає підрахунку кількості операций, необхідних для поділу задачі на підзадачі, виконання алгоритму в кожній із них та об'єднання отриманих результатів для розв'язування задачі в цілому.

Отже, створення алгоритму - це один з етапів розв'язування поставленої задачі. Але він не відокремлений від усіх інших етапів, таких як:

  • визначення моделі задачі, що розв'язується;

  • запис алгоритму мовою програмування;

  • тестування програми на комп'ютері;

  • отримання розв'язку поставленої задачі шляхом виконання завершеної програми.

5. Математична модель, вибір структури даних

Практично будь-яку галузь математики або інших наук можна застосувати до побудови моделі певного кола задач. Для задач із символьними або текстовими даними можна застосувати моделі, що базуються на формальних граматиках, символьних послідовностях тощо. Як приклад можна навести задачі розпізнавання певних слів у списках.

Крім вибору моделі для сформульованої задачі, визначення найоптимальнішого алгоритму її розв'язування, не менш важливим є вибір структури вхідних і вихідних даних. Під структурою даних будемо розуміти спосіб представления інформації, що обробляється й отримується в результаті виконання алгоритму.