Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типізація даних.doc
Скачиваний:
4
Добавлен:
25.11.2018
Размер:
503.81 Кб
Скачать

Теорія структур даних

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

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

 Окреме дане, наприклад, число, можна розглядати як частковий, тривіальний випадок структури даних.

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

З урахуванням практичних задач представлення і використання даних універсальна мова повинна мати в своєму розпорядженні декілька методів структуризації даних. Вони можуть бути еквівалентні в математичному сенсі і розрізнятися лише операціями побудови їх значень і вибору компонент цих значень (доступу до них). Основними такими методами є методи структуризації, що дозволяють будувати наступні структури: масив, запис, множину і послідовність (файл).

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

Оскільки за визначенням статичні структури відрізняються відсутністю мінливості, пам'ять для них виділяється автоматично - як правило, на етапі компіляції або при виконанні - у момент активізації того програмного блоку, в якому вони описані. Ряд мов програмування (Pl/1, Algol-60) допускають розміщення статичних структур в пам'яті на етапі виконання на явну вимогу програміста, але і в цьому випадку об'єм виділеної пам'яті залишається незмінним до знищення структури. Виділення пам'яті на етапі компіляції є настільки зручною властивістю статичних структур, що у ряді задач програмісти використовують їх навіть для представлення об'єктів, що характеризуються мінливістю. Наприклад, коли розмір масиву невідомий заздалегідь, для нього резервується максимально можливий розмір.

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

Послідовний файл, або просто послідовність, в цій класифікації є проміжним. Його довжина, звісно, змінюється, але ця зміна форми вважається тривіальною.

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

Загальна класифікація структур даних наведена на рис. 1.

Рис. 1. Класифікація структур даних.

Оскільки типи компонент структур можуть також бути складеними, то можна побудувати цілу ієрархію структур, але при цьому кінцеві компоненти структури мають бути простими.

Часто разом зі структурою даних пов'язується і специфічний перелік операцій, які можуть бути виконаними над даними, організованими в таку структуру. Наприклад, у мові Pascal для типу «множина» визначені такі специфічні операції, як об’єднання множин, їх переріз, тощо.

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

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

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

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

АЛГОРИТМИ + СТРУКТУРИ ДАНИХ = ПРОГРАМИ

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

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