Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснювальна записка моя.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157.2 Кб
Скачать

ЗМІСТ

Вступ…………………………………………………………………………3

Розділ 1. Огляд засобів та методів реалізації сортування

безтипового масиву ………………………………………………………5

    1. Розгляд алгоритмів сортування…………………………………5

    1. Алгоритм пошуку заданого значення в масиві…………………5

    1. Алгоритм видачі випадкових значень різних типів…………...6

    1. Аналіз користувацького інтерфейсу……………………………7

1.5 Висновок до першого розділу……………………………………8

Розділ 2. Проектування програмного модуля сортування

безтипового масиву…………………………………………………………9

2.1. Блок-схема алгоритму сортування…………………………………9

2.2. Блок-схема алгоритму пошуку заданого значення в

масиві …………………………………………………………………...11

2.3. Висновок до другого розділу ……………………………………11

Розділ 3. Реалізація та тестування продукту сортування

безтипового масиву …………………………………………………..…12

3.1. Реалізація основних функцій програмного продукту ………….12

3.2. Реалізація користувацького інтерфейсу ………………………….13

3.3. Тестування програмного продукту сортування

безтипового масиву …………………………………………………… 14

3.4. Висновок до третього розділу……………………………………15

Висновки …………………………………………………………………16

Список інформаційних джерел ………………………………………… 18

Вступ

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

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

Зважаючи на важливість та актуальність задачі сортування в програмуванні нами було обрано тему «Реалізація методів сортування та пошуку елементів у класі безтипового одновимірного масиву (сортування методом злиття)».

Метою курсової роботи є написання завершеного програмного продукту, який буде відповідати всім умовам заданим у завданні.

Завдання необхідно виконувати на мові програмування, яка або підтримує об’єктно-орієнтоване програмування або ж є цілком об'єктно-орієнтованою.

Об'єктно-орієнтоване програмування (ООП) — одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. Використання ООП має багато переваг, серед яких: менша кількість помилок, за рахунок того, що програма розробляється з великою кількістю класів, у кожного з яких можуть бути свої дані, до яких ззовні не можна доступитися, прискорене налагодження програми, оскільки більшість даних і методів строго прив'язані до свого класу й інші класи не мають до них доступу та інше.

Щоб забезпечити успішне виконання роботи необхідно реалізувати такі завдання:

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

  2. Визначитися з основними алгоритмами, які будуть використовуватися в даній роботі і сформулювати їх у вигляді блок-схем.

  3. Програмно реалізувати алгоритм керування програмою та інтерфейс користувача.

  4. Протестувати створену програму і в разі виникнення помилок усунути їх.

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

Починаючи з 7-ї версії в середовищі Delphi для розробки програм використовується мова програмування Delphi, основу якої складає мова Object Pascal (об’єктно-орієнтоване розширення стандартної мови програмування Pascal). Програмування на мові Delphi означає роботу в інтегрованому середовищі розробки програм (IDE) фірми Borland. При цьому система накладає ряд обмежень, які виходять за рамки специфікації мови Object Pascal.

Розділ 1. Огляд засобів та методів реалізації сортування безтипового масиву

    1. Розгляд алгоритмів сортування

Алгоритми сортування відрізняються між собою декількома факторами: складністю в розумінні і написанні, необхідними затратами пам’яті і часом виконання.

Розрізняють алгоритми за часом виконання:

  • За час

  • За час

  • За час

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

Як правило, алгоритми, які виконуються за час – прості в розумінні, але вони не ефективні при великих n. Алгоритми ж, які виконуються за час – складні, але ефективніші ніж алгоритми, які виконуються за час .

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

    1. Алгоритм пошуку заданого значення в масиві

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

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

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

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

    1. Алгоритм видачі випадкових значень різних типів

В роботі потрібно сортувати дані різних типів, тому для економії часу, затраченої на введення даних, потрібно розробити заповнення масиву випадковими значеннями.

Оскільки в програмі буде реалізовано сортування трьох основних типів(Integer, Real і String), то розробимо можливість випадкового заповнення лише для них.

Генерацію випадкового значеннями типу Integer реалізувати найпростіше. Для цього використаємо функцію RandomRange, вказавши межі випадкового значення.

Delphi функція RandomRange генерує довільне ціле число (integer) в межах діапазону RangeFrom і RangeTo.

Delphi використовує генератор псевдовипадкових чисел, який щоразу, при виконанні програми, повертає одну і ту ж послідовність значень (232). Щоб уникнути цього, використаємо процедуру Randomize. Адже вона в якості початкового псевдовипадкового значення встановлює поточний час.

Для генерації випадкового значення типу Real необхідно буде скористатися функцією RandomRange, яка щойно була розглянута. З її допомогою ми отримаємо цілу частину числа. Дробову частину ми отримаємо, використавши функцію Random.

Функція Random генерує випадкові числа. Це можуть бути числа з плаваючою крапкою (в діапазоні: 0 <= Number <1.0) або цілі числа (в діапазоні: 0 <= Number)[1].

Генерація випадкових значень типу String потребує генерації кожного символу окремо. Для цього спочатку ми , за допомогою функції RandomRange, згенеруємо кількість символів у рядку, а потім - у циклі. За допомогою цієї ж функції будемо генерувати маленький символ латинського алфавіту. В результаті ми отримаємо рядок випадкових символів латинського алфавіту.