
- •Дані як основа, з якою працює програмне забезпечення. Модифікація даних. Вимоги до даних в частині швидкості пошуку та модифікації. Навести приклади із баз даних різного призначення.
- •Структура даних мови Object Pascal, коротка характеристика складених типів даних, приклади використання.
- •Масиви статичні та динамічні, переваги та недоліки. Використання масивів для організації роботи з даними. Заповнення масивів з файлу.
- •Формування типізованого файлу на базі таблиці Excel. Приклад програми.
- •Масиви статичні та динамічні. Додавання, видалення та модифікація даних (робота із даними). Приклад програмного коду.
- •Стек: призначення, приклади, застосування. Організація та робота стеку на базі масиву. Приклад програмного коду.
- •Черга: призначення, приклади , застосування. Організація та робота черги на базі масиву. Приклад програмного коду.
- •Пошук даних в масиві. Послідовний та бінарний методи пошуку. Переваги та недоліки. Приклад програмного коду.
- •Сортування масивів на місці, прості та складні алгоритми сортування. Приклад програмного коду (але не бульбашкою).
- •Сортування масивів на місці, метод вставок.
- •Сортування масивів на місці, метод простого вибору.
- •Сортування масивів на місці, метод Shaker (одночасний пошук мінімального та максимального елементів.
- •Динамічний список: призначення, організація, формування, ініціалізація, наприклад з файлу. Переваги та недоліки порівняно з масивами. Приклад програмного коду.
- •Лінійний динамічний список: додавання, видалення та модифікація даних (робота з даними, порівняти із масивами). Приклад програмного коду.
- •Кільцевий динамічний список: переваги та недоліки порівняно з лінійним. Додавання, видалення та модифікація даних (робота із даними). Порівняти з лінійним. Приклад програмного коду.
- •Сортування даних у динамічних списках по одному та декільком полях. Приклад програмного коду.
- •Стек: призначення, приклади , застосування. Організація стеку за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Включення/забирання елемента до/з стеку. Приклад програмного коду.
- •Включення/забирання елемента до/з черги. Приклад програмного коду.
- •Черга: призначення, приклади застосування. Організація черги за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Формування черги: принципи вставки заявок у чергу, використання приоритетів при формування черги. Позачерговий пріоритет (0).
- •Визначення характеристик черги: середня довжина черги, середній час виконання заявки.
- •Наведіть алгоритми додавання (insert) заявки у чергу.
- •Наведіть алгоритми обслуговування (service) заявки у черзі.
- •Робота із плоским файлом. Додавання, видалення та модифікація даних (робота із даними). Файли переповнення. Порівняти з масивами та списками. Приклад програмного коду.
- •Пошук даних у плоских файлах (послідовний та бінарний). Сортування файлів по одному та декільком полям. Приклад програмного коду.
- •Пошук даних у плоских декількох логічно зв’язаних файлах. Приклад програмного коду.
- •Індексні файли: призначення, створення та використання. Переваги та недоліки. Приклад програмного коду.
- •Сторінкова організація файлу: переваги та недоліки порівняно з плоским файлом. Файли переповнення.
- •Індексна організація файлу. Одно- та багаторівнева індексація. Переваги та недоліки порівняно з плоским файлом. Ознаки необхідності реорганізації файлу. Навести схему з поясненнями.
- •Динамічна організація при сторінковій організації файлу, організація файлів переповнення. Навести схему з поясненнями.
- •Файли прямого доступу. Визначення адрес в залежності від значення даних. Функції хешування. Файл переповнення. Загальні алгоритми.
- •Функції хешування: алгоритми ділення, складання.
- •Функції хешування: алгоритми зсуву розрядів, .
- •Функції хешування: алгоритми ділення, .
- •Колізії при хешуванні, шляхи (декілько) розв’язання цих проблем.
- •Дерева: загальна характеристика, структура вузла, приклади використання.
- •Бінарні дерева пошуку: приклади призначення, структура вузла, алгоритм формування.
- •Бінарні ідеально сбалансовані дерева: приклади призначення, структура вузла, алгоритм формування.
Наведіть алгоритми додавання (insert) заявки у чергу.
Смотри 20 вопрос
Наведіть алгоритми обслуговування (service) заявки у черзі.
Смотри 20 вопрос
„Плоскі” файли, призначення, організація на диску. Приклад зберігання таблиці у типізованому файлі (навести програмний код).
Файл – це така іменована структура даних на зовнішній пам’яті, яка складається із записів певного типу. Плоским файлом називають такий файл, структура усіх записів якого є постійною. Запис може складатися із полів та/або із агрегатів полів. Так, в мовах програмування Паскаль и Си агрегати даних можна визначати такою структурною композицією як запис (record), яка складається з кількох полів не обов’язково одного типу. Іменована сукупність файлів, між записами яких існують асоціативні зв’язки, називається базою даних. В сучасних базах даних полю відповідає атрибут таблиці. Він має ім’я та характеризується формою представлення даних, яка відповідаю типу даних атрибута.
Прийнято виділяти три типи файлової організації даних:
Послідовні файли (ПФ);
Індексно-послідовні файли (ІПФ);
Файли прямого (довільного) доступу (ФПД або ФДД).
Відповідно розрізняють такі моделі внутрішньої організації даних: послідовна для ПФ; індексно послідовна, індексно довільна та інвертовані списки для ІПФ; за допомогою хешування.
Прийнято виділяти два критерія ефективності файлової організації даних: ефективність доступу та ефективність зберігання. Ефективність доступу – величина, що є зворотною числу фізичних звернень до зовнішньої пам’яті. Ефективність зберігання – величина, що є зворотною числу середній кількості одиниць пам’яті, яка потрібна для зберігання одиниці логічної одиниці структури даних.
Робота із плоским файлом. Додавання, видалення та модифікація даних (робота із даними). Файли переповнення. Порівняти з масивами та списками. Приклад програмного коду.
У плоскому файлі, як правило зберігається по одному запису у кожному рядку.
Поля повинні мати фіксовану ширину або розділені знаками табуляції, білими символами, комами (CSV) або іншими символами.
Класичним прикладом плоскої бази даних може вважатися телефонний довідник, що містить невеликі записи фіксованої довжини: Імені, Адреси та Номера телефону. Інший дуже поширений, хоча й не традиційний приклад, проста (не складена) HTML таблиця, яка складається із рядків і стовпців.
Реалізації
Телефонний довідник можна написати від руки у звичайній алфавітній книжці, можна на листі паперу і скористатися друкарською машинкою або текстовим редактором на комп'ютері і роздрукувати на принтері.
Хоча є багато прикладів програмного забеспечення написаного спеціально для зручного створення і використання тих чи інших плоских баз даних.
1. INSERT (APPEND) – вставляє (додає) визначений запис у визначений файл.
2. DELETE – видаляє з визначеного файлу всі записи, що містять зазначені значення в зазначених полях.
3. UPDATE (MODIFY) – змінює всі записи у визначеному файлі, задавши зазначені значення визначеним полям у тих записах, які містять зазначені значення в інших полях.
4. SELECT (RETRIEVE) – відшукує всі записи, що містять зазначені значення в зазначених полях.
Пошук запису з зазначеними значеннями у визначених полях здійснюється шляхом повного перегляду файлу та перевірки кожного його запису на наявність у ній заданих значень.
Вставку (додавання) запису у файл можна виконувати шляхом приєднання відповідного запису до кінця файлу.
У випадку зміни записів необхідно переглянути файл, перевірити кожен запис і з'ясувати, чи відповідає він заданим умовам (значенням у зазначених полях). Якщо відповідає, у запис вносяться необхідні зміни.
Принцип дії операції видалення майже той же, але коли ми знаходимо запис, поля якої відповідають значенням, заданим в операції видалення, ми повинні знайти спосіб видалити її.
Один з варіантів — зрушити всі послідовні записи у своїх блоках на одну позицію вперед, а перший запис у кожнім наступному блоці перемістити на останню позицію попереднього блоку даного файлу.
Однак такий підхід не годиться, якщо записи є закріпленими, оскільки покажчик на 1-ий запис у файлі після виконання цієї операції буде вказувати на (i + 1)-ий запис.
procedure SortTwo();
var NewP, NewFirst: TNode;
P:Node;
begin
NewFirst:=First;
while NewFirst^.Next<>nil do
begin
NewP:=NewFirst^.Next;
while NewP<>nil do
begin
if NewFirst^.p>NewP^.p then
begin
P.p:=NewP^.p; P.w:=NewP^.w;
NewP^.p:=NewFirst^.p;NewP^.w:=NewFirst^.w; NewFirst^.p:=P.p; NewFirst^.w:=P.w; end
else
if (NewFirst^.p=NewP^.p) and (NewFirst^.w>NewP^.w) then
begin
P.p:=NewP^.p; P.w:=NewP^.w;
NewP^.p:=NewFirst^.p; NewP^.w:=NewFirst^.w; NewFirst^.p:=P.p; NewFirst^.w:=P.w;
end;
NewP:=NewP^.Next;
end;
NewFirst:=NewFirst^.Next;
end;
end;