Методи розробки алгоритмів. Програмування мовою С++

Посилання на програмні проекти з навчального посібника Сергія Ярошко, Оксани Ярошко

Львів, ЛНУ імені Івана Франка, 2022

Вступ

Навчитися складати алгоритми – одне з перших і головних завдань майбутнього програміста. На жаль, не існує простої відповіді на запитання, як це зробити? Майже кожна задача з програмування вимагає індивідуального підходу, недарма програмування порівнюють з мистецтвом. Однак як у живописі чи музиці є основні прийоми і навички, якими зобов’язаний володіти кожен митець, так і в програмуванні є класи задач, для розв’язування яких створено типові алгоритми. Відомі також певні підходи до розробки алгоритмів розв’язування нових задач, чи методи розробки алгоритмів.

Кожному випускникові вищого навчального закладу, що вивчав програмування, необхідно навчитися класифікувати задачі, застосовувати до їхнього розв’язування відомі алгоритми, враховуючи особливості конкретної задачі, необхідно оволодіти основними методами розробки алгоритмів. Саме описові алгоритмів та методів їхньої розробки присвячено цей посібник. У його першій частині (розділи 1–8) наведено розв’язки окремих типових задач, докладно описано процес створення та удосконалення кожного алгоритму. Її можна використовувати і як своєрідний «розв’язник» задач з програмування, і для того, щоб набути початкового досвіду проектування алгоритмів. Друга частина (розділи 9–15) розрахована на читачів, що зважилися іти далі. Її присвячено описові та ілюстрації основних методів розробки алгоритмів. Вони стануть у пригоді тим, кому доведеться створювати програми для зовсім нових, ще не розв’язаних раніше задач.

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

Нижче наведено посилання на тексти розділів та програмні проекти до них.

1. Задачі цілочислової арифметики

Програми: IntArithm

Текст: клацніть, щоб переглянути pdf.

2. Програми з простим повторенням

Програми: StepByStep

Текст: клацніть, щоб переглянути pdf.

3. Поєднання повторення з галуженням

Програми: IterationWithBranching

Текст: клацніть, щоб переглянути pdf.

4. Вкладені цикли в матричних задачах

Програми: NestedLoops

Текст: клацніть, щоб переглянути pdf.

5. Основні алгоритми сортування

Програми: Sortings

Текст: клацніть, щоб переглянути pdf.

6. Сортування структур даних

Програми: SortStructures

Текст: клацніть, щоб переглянути pdf.

7. Обчислення з заданою точністю

Програми: AccuracyCalc

Текст: клацніть, щоб переглянути pdf.

8. Опрацювання текстової інформації

Програми: StringProcessing

Текст: клацніть, щоб переглянути pdf.

9. Покрокова розробка програм

Програми: UpDownDevelopment

Текст: клацніть, щоб переглянути pdf.

10. Рекурсія

Програми: Recursion

Текст: клацніть, щоб переглянути pdf.

11. Програмування з поверненням назад

Програми: Backtracking

Текст: клацніть, щоб переглянути pdf.

12. Метод часткових цілей

Програми: PartialGoal

Текст: клацніть, щоб переглянути pdf.

13. Метод підйому. Евристики

Програми: HillClimbing

Текст: клацніть, щоб переглянути pdf.

14. Генетичні алгоритми

Програми: Console, Application

Текст: клацніть, щоб переглянути pdf.

15. Об’єктно-орієнтоване проектування

Програми: ShooterGame, ShooterGame-Refactored

Текст: клацніть, щоб переглянути pdf.