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

ЗМІСТ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.3. Тестування програмного модуля сортування безтипового

масиву ……………………………………………………………………

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

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

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

Додатки

Додаток А. Блок-схема модуля перетворення поліномів…………….

Додаток Б. Узагальнена структурна схема програмного модуля для операцій над поліномами ………………………………………………….

Вступ

Метою даної курсової роботи є написання завершеного програмного продукту – «Реалізація методів сортування та пошуку елементів у класі безтипового одновимірного масиву (сортування методом злиття)», який буде відповідати всім умовам заданим у завданні.

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

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

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

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

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

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

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

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

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

Розділ 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, згенеруємо кількість символів в рядку, а потім, в циклі, за допомогою цієї ж функції будемо генерувати маленький символ латинського алфавіту. В результаті ми отримаємо рядок випадкових символів латинського алфавіту.