
- •Зробите титулку бо я хз як ви називаєтесь)) Анотація
- •2 Розробка структури і компонентів
- •1 Аналіз вимог та уточнення специфікації
- •1.1 Аналіз завдання і вибір технології, мови та середовища розробки
- •1.2 Аналіз методу сортування Шелла
- •1.3 Аналіз збереженої інформації і вибір структур даних для її представлення
- •1.4 Вибір алгоритму розв‘язку задачі
- •2 Розробка структури і компонентів програмного продукту
- •2.1 Проектування інтерфейсу користувача
- •3 Вибір стратегії тестування та розробка тестів
- •Висновки
- •Список використаних джерел
- •(Титулкузробите, бо я хз як воно там у вас все називається)
- •1. Вступ
- •2. Призначення
- •3. Вимоги до програми або програмного виробу
- •Додаток б. Довідка. Використання програмного продукту
1.3 Аналіз збереженої інформації і вибір структур даних для її представлення
Наступним кроком реалізації курсової роботи є визначення специфікації розроблюваного програмного забезпечення.
Діаграма варіантів використання – це граф, що складається з множини акторів, прецедентів, асоціацій між акторами та прецедентами, відношень серед прецедентів, та відношень узагальнення між акторами.
Діаграми прецедентів відображають елементи моделі варіантів використання (дивитися рисунок 1.2).
Рисунок 1.2 – Діаграма варіантів використання
Потік даних визначає інформацію, яка передається через деяке з'єднання від джерела до приймача. Першим кроком при побудові ієрархії ДПД є побудова контекстних діаграм. Звичайно при проектуванні простих ІС будується єдина контекстна діаграма із зіркоподібною топологією, у центрі якої знаходиться так званий головний процес, який сполучений із приймачами і джерелами інформації, за допомогою яких з системою взаємодіють користувачі та інші зовнішні системи.
Якщо ж для складної системи обмежитися єдиною контекстною діаграмою, то вона міститиме дуже велику кількість джерел і приймачів інформації, які важко розташувати на листі паперу нормального формату, і крім того, єдиний головний процес не розкриває структури розподіленої системи.
Рисунок 1.3 – Діаграма потоків даних
Функціональна схема використовується, щоб показати розроблювані функції системи, процес реалізації діаграми даних. Крім того, функціональна діаграма використовуватиметься для визначення частоти появи меншого процесу у діаграмі потоків даних.
Функціональна схема тільки показує, що робити, а не як робити. У ній функція ділиться на багато менших функцій і кожна менша функція містить багато дрібніших функцій. Побудова діаграми полягає у процесі поділу, від вищої функції до необхідних менших функцій. Діаграми потрібно представляти чітко, просто, точно, повністю і збалансовано (дивитися рисунок 1.4).
Інформація, яка потребуватиме збереження та обробки - це одномірний масив заданого розміру. Тож структура даних, що буде використовуватись у ході роботи - це одномірні масиви.
Даний проект передбачає збереження інформації у типізованому файлі.
Рисунок 1.4 – Функціональна діаграма
Аналіз збереженої інформації і вибір структур даних для її представлення
Даний проект передбачає збереження інформації у типізованому файлі.
1.4 Вибір алгоритму розв‘язку задачі
На
початку обираються m-елементів:
,
причому,
.
Потім
виконується m впорядкувань методом
включення, спочатку для елементів, що
стоять через
,
потім для елементів через
і т. д.
до
.
Ефективність досягається тим, що кожне наступне впорядкування вимагає меншої кількості перестановок, оскільки деякі елементи вже стали на свої місця.
Сам алгоритм не залежить від вибору m і d, тому будемо вважати, що вони задані.
Псевдокод алгоритму
1.
for
to
2.
do
for
to
3.
do
4.
5.
while
і
6.
do
7.
8.
Оскільки то на останньому кроці виконується звичайне впорядкування включенням всього масиву, а отже кінцевий масив буде впорядкованим.
Час роботи залежить від вибору значень елементів масиву d. Існує декілька підходів вибору цих значень:
При
виборі
час
роботи алгоритму, в найгіршому випадку,
.
Якщо
d — впорядкованний за спаданням набір
чисел виду
,
то час роботи
.
Якщо
d — впорядкованний за спаданням набір
чисел виду
,
то час роботи
.
Програмна реалізація алгоритму:
void Shell(int n) {
int i, j, d,tmp;
d=n;
d=d/2;
while (d>0){
for (i=0; i<n-d; i++){
j=i;
while (j>=0 && X[j]>X[j+d]){
tmp=X[j];
X[j]=X[j+d];
X[j+d]=tmp;
j--;
count++;
}
}
d=d/2;
}