Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_APR_5.doc
Скачиваний:
14
Добавлен:
16.03.2016
Размер:
158.72 Кб
Скачать
  1. ВИВЧЕННЯ МОЖЛИВОСТЕЙ МОВИ С++ ПРИ РОБОТІ З МАСИВАМИ ТА ЗАПИСАМИ

    1. Мета роботи

Вивчення можливостей мови С++ при роботі з масивами та записами. Отримання практичних навичок використання можливостей роботи з масивами та записами при вирішенні практичних завдань.

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

Під час підготовки до виконання лабораторної роботи необхідно вивчити індивідуальне завдання (п. 5.3), виконати розробку алгоритму вирішення задачі та підготовити текст програми щодо реалізації розробленого алгоритму, підготовити відповідні розділи звіту та вивчити відповідний теоретичний матеріал, який викладено у лекціях: „Технологія роботи із масивами та записами у С++”, „Символьні та логічні змінні і вирази. Масиви та текстові строки”, та у наступних підручниках і навчальних посібниках [1, 4, 5, 7, 8].

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

Структура даних реалізується на основі більше простої, яка раніше вже була реалізована, або на основі масиву та набору простих змінних. Необхідно чітко розрізняти опис структури даних з логічної точки зору та опис її реалізації. Різних реалізацій може бути багато, з логічної ж точки зору (тобто з погляду зовнішнього користувача) всі вони еквівалентні та розрізняються, можливо, лише швидкістю виконання приписів.

Оперативна пам'ять із погляду програміста — це масив елементів. Будь-який елемент масиву можна прочитати або записати відразу, за одну елементарну дію. Масив можна розглядати як найпростішу структуру даних. Структури даних, у яких можливий безпосередній доступ до їхніх елементів, називають структурами даних із прямим, або з довільним доступом (по-англійському random access). Поряд з масивом, структурою даних із прямим доступом є множина. В інших структурах даних безпосередній доступ можливий лише до одному або декількох елементам, для доступу до інших елементів треба виконати додаткові дії. Такі структури даних називаються структурами послідовного доступу. Прикладом структури послідовного доступу є магнітофон, на яких записані пісні. У будь-який момент можна прослухати лише чергову пісню. Щоб добратися до інших музичних фрагментів, треба перемотати стрічку вперед або назад.

З логічної точки зору, масивом є найважливіша складова комп'ютера – магнітний диск. Елементарною одиницею зчитування та запису для магнітного диска є блок. Розмір блоку залежить від конструкції конкретного диска, звичайно він кратний 512. За одну елементарну операцію можна прочитати або записати один блок із заданою адресою.

Отже, найбільш важливі запам'ятовувальні пристрої комп'ютера – оперативна пам'ять та магнітний диск – представляють собою масиви. Робота з елементами масиву здійснюється винятково швидко, всі елементи масиву доступні без усяких попередніх дій. Але масивів недостатньо для написання ефективних програм. Наприклад, пошук елемента в масиві, якщо його елементи не впорядковані, неможливо реалізувати ефективно: не можна винайти нічого кращого, крім послідовного перебору елементів. У випадку впорядкованого зберігання елементів можна використовувати ефективний бінарний пошук, але ускладнення виникають при додаванні або вилученні елементів у середині масиву, що призводять до масових операцій, тобто операціям, час виконання яких залежить від числа елементів структури. Від цих недоліків вдається позбутися, реалізуючи множину елементів на базі збалансованих дерев або хеш-функції.

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

Нарешті, масив має обмежений розмір. Збільшення при необхідності розміру масиву призводить до переписування його вмісту в захоплену область пам'яті більшого розміру, тобто знову ж до масової операції. Від цього недоліку вільні посилальні реалізації структур даних: реалізації на основі лінійних списків або на основі дерев.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]