
- •Лекція №6 Принципи побудови управлінських
- •Лекція №1 інформаційні процеси та інформаційні системи
- •Контрольні запитання
- •Лекція №2 історичні етапи розвитку інформаційних систем
- •Контрольні запитання
- •Лекція №3 архітектура інформаційної системи
- •Контрольні запитання
- •Лекція №4 класифікація інформаційних систем
- •Контрольні запитання
- •Лекція №5 локальні інформаційні системи
- •Контрольні запитання
- •Лекція №6 принципи побудови управлінських інформаційних систем
- •Контрольні запитання
- •Лекція №7 фактори, що обумовлюють впровадження інформаційної системи
- •7.1 Основні фактори, які впливають на впровадження інформаційних систем
- •7.2 Стримуючі фактори впровадження інформаційних систем
- •7.3 Аналіз причин неефективної роботи
- •Контрольні запитання
- •Лекція №8 елементарні та складні структури даних
- •Елементарні структури даних:
- •Більш складні структури даних:
- •Контрольні запитання
- •Лекція №9 стек, черга, список
- •9.1 Лінійний список
- •9.2 Стек
- •9.2.1 Операції зі стеком
- •9.2.2 Додаткові операції зі стеком (присутні не у всіх реалізаціях стеку)
- •9.2.3 Організація в пам'яті комп'ютера
- •9.2.4 Приклади застосування стеків
- •9.2.5 Реалізація базових алгоритмів
- •9.3 Черга
- •9.3.1 Основні операції з чергою
- •9.3.2 Реалізація черги на мовах програмування
- •9.4 Зв'язаний список
- •9.5 Зв'язані списки та масиви
- •9.6 Двобічне та однобічне зв'язування
- •Контрольні запитання
- •Лекція №10 збереження і сортування масивів даних
- •Контрольні запитання
- •Лекція №11 дерево. Бінарне дерево пошуку
- •11.1 Бінарне дерево
- •Різновиди бінарних дерев:
- •Параметром для процедури видалення елементу є вказівник на вершину, що видаляється. Тут можливі три варіанти дій:
- •Процедура вставки елементу починається аналогічно вставці елементу в бінарне дерево пошуку та фарбування його у червоний колір. Подальші дії залежать від кольорів сусідніх вершин. Зазначимо, що:
- •Контрольні запитання
- •Лекція №12 купа
- •Контрольні запитання
- •Перелік рекомендованих джерел
9.6 Двобічне та однобічне зв'язування
Двобічне зв'язування потребує більше пам'яті на елемент та більших обчислювальних затрат на виконання елементарних операцій. Але такими списками легше маніпулювати, тому що вони дозволяють проходження по списку в обох напрямах, що є необхідною умовою функціонування деяких алгоритмів.
Контрольні запитання
1 Що таке “лінійний список” в інформатиці та програмуванні?
2 Які операції виконуються з лінійними списками?
3 Які окремі випадки лінійних списків, в яких операції додавання та вилучення певних значень можуть бути виконані лише для першого чи останнього елементу, Вам відомі?
4 Що таке “стек” в інформатиці та програмуванні?
5 Які основні операції зі стеком Вам відомі?
6 Які додаткові операції зі стеком Вам відомі?
7 Для чого використовують стек компілятори мов програмування?
8 Що таке “черга” в програмуванні?
9 Які основні операції з чергою?
10 Що таке “зв'язаний список” в програмуванні?
11 Які є різновиди зв'язаних списків?
12 Де застосовуються списки?
13 Які Переваги та недоліки списків?
14 В чому полягає відмінність зв'язаних списків та масивів?
Лекція №10 збереження і сортування масивів даних
Однією з переваг масивів є можливість компактного збереження послідовності їх елементів в локальній області пам'яті (що не завжди вдається, наприклад, для зв'язаних списків), що дозволяє ефективно виконувати операції з послідовного обходу елементів таких масивів.
Масиви є дуже економною щодо пам'яті структурою даних. Для збереження 100 цілих чисел в масиві необхідно рівно в 100 разів більше пам'яті, ніж для збереження одного числа (плюс, можливо, ще декілька байтів). В той же час, усі структури даних, які базуються на вказівниках, потребують додаткової пам'яті для збереження самих вказівників разом з даними. Однак, операції з фіксованими масивами ускладнюються тоді, коли виникає необхідність додавання нових елементів у вже заповнений масив. Тоді його необхідно розширювати, що не завжди можливо і для таких задач слід використовувати зв'язані списки, або динамічні масиви.
У випадках, коли розмір масиву є досить великий та використання звичайного звертання за індексом стає проблематичним, або великий відсоток його комірок не використовується, слід звертатись до асоціативних масивів, де проблема індексування великих об'ємів інформації вирішується більш оптимально.
Оскільки масиви мають фіксовану довжину, слід дуже обережно ставитись до процедури звертання до елементів за їхнім індексом, тому що намагання звернутись до елементу, індекс якого перевищує розмір такого масива (наприклад, до елементу з індексом 6 в масиві з 5 елементів), може призвести до непередбачуваних наслідків.
Слід також бути уважним щодо принципів нумерації елементів масиву, яка в одних мовах програмування може починатись з 0, а в інших – з 1.
Збереження одновимірного масиву в пам'яті є тривіальним, тому що сама пам'ять комп'ютера є одновимірним масивом. Для збереження багатовимірного масиву ситуація ускладнюється.
Найпоширеніші способи його організації в пам'яті такі:
розташування “рядок за рядком”. Це найбільш уживаний на сьогодні спосіб, який зустрічається у більшості мов програмування (1 2 3 4 5 6 7 8 9);
розташування “стовпчик за стовпчиком”. Такий метод розташування масивів використовується, зокрема, в мові програмування Fortran (1 4 7 2 5 8 3 6 9).
Масив з масивів. Багатовимірні масиви репрезентуються одновимірними масивами вказівників на одновимірні масиви. Розташування може бути як “рядок за рядком” так і “стовпчик за стовпчиком”.
Перші два способи дозволяють розміщувати дані компактніше (мають більшу локальність), однак це одночасно і обмеження: такі масиви мають бути “прямокутними”, тобто кожний рядок повинен містити однакову кількість елементів. Розташування “масив з масивів”, з іншого боку, не дуже ефективне щодо використання пам'яті (необхідно зберігати додатково інформацію про вказівники), але знімає обмеження на “прямокутність” масиву.