
- •Дані як основа, з якою працює програмне забезпечення. Модифікація даних. Вимоги до даних в частині швидкості пошуку та модифікації. Навести приклади із баз даних різного призначення.
- •Структура даних мови Object Pascal, коротка характеристика складених типів даних, приклади використання.
- •Масиви статичні та динамічні, переваги та недоліки. Використання масивів для організації роботи з даними. Заповнення масивів з файлу.
- •Формування типізованого файлу на базі таблиці Excel. Приклад програми.
- •Масиви статичні та динамічні. Додавання, видалення та модифікація даних (робота із даними). Приклад програмного коду.
- •Стек: призначення, приклади, застосування. Організація та робота стеку на базі масиву. Приклад програмного коду.
- •Черга: призначення, приклади , застосування. Організація та робота черги на базі масиву. Приклад програмного коду.
- •Пошук даних в масиві. Послідовний та бінарний методи пошуку. Переваги та недоліки. Приклад програмного коду.
- •Сортування масивів на місці, прості та складні алгоритми сортування. Приклад програмного коду (але не бульбашкою).
- •Сортування масивів на місці, метод вставок.
- •Сортування масивів на місці, метод простого вибору.
- •Сортування масивів на місці, метод Shaker (одночасний пошук мінімального та максимального елементів.
- •Динамічний список: призначення, організація, формування, ініціалізація, наприклад з файлу. Переваги та недоліки порівняно з масивами. Приклад програмного коду.
- •Лінійний динамічний список: додавання, видалення та модифікація даних (робота з даними, порівняти із масивами). Приклад програмного коду.
- •Кільцевий динамічний список: переваги та недоліки порівняно з лінійним. Додавання, видалення та модифікація даних (робота із даними). Порівняти з лінійним. Приклад програмного коду.
- •Сортування даних у динамічних списках по одному та декільком полях. Приклад програмного коду.
- •Стек: призначення, приклади , застосування. Організація стеку за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Включення/забирання елемента до/з стеку. Приклад програмного коду.
- •Включення/забирання елемента до/з черги. Приклад програмного коду.
- •Черга: призначення, приклади застосування. Організація черги за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Формування черги: принципи вставки заявок у чергу, використання приоритетів при формування черги. Позачерговий пріоритет (0).
- •Визначення характеристик черги: середня довжина черги, середній час виконання заявки.
- •Наведіть алгоритми додавання (insert) заявки у чергу.
- •Наведіть алгоритми обслуговування (service) заявки у черзі.
- •Робота із плоским файлом. Додавання, видалення та модифікація даних (робота із даними). Файли переповнення. Порівняти з масивами та списками. Приклад програмного коду.
- •Пошук даних у плоских файлах (послідовний та бінарний). Сортування файлів по одному та декільком полям. Приклад програмного коду.
- •Пошук даних у плоских декількох логічно зв’язаних файлах. Приклад програмного коду.
- •Індексні файли: призначення, створення та використання. Переваги та недоліки. Приклад програмного коду.
- •Сторінкова організація файлу: переваги та недоліки порівняно з плоским файлом. Файли переповнення.
- •Індексна організація файлу. Одно- та багаторівнева індексація. Переваги та недоліки порівняно з плоским файлом. Ознаки необхідності реорганізації файлу. Навести схему з поясненнями.
- •Динамічна організація при сторінковій організації файлу, організація файлів переповнення. Навести схему з поясненнями.
- •Файли прямого доступу. Визначення адрес в залежності від значення даних. Функції хешування. Файл переповнення. Загальні алгоритми.
- •Функції хешування: алгоритми ділення, складання.
- •Функції хешування: алгоритми зсуву розрядів, .
- •Функції хешування: алгоритми ділення, .
- •Колізії при хешуванні, шляхи (декілько) розв’язання цих проблем.
- •Дерева: загальна характеристика, структура вузла, приклади використання.
- •Бінарні дерева пошуку: приклади призначення, структура вузла, алгоритм формування.
- •Бінарні ідеально сбалансовані дерева: приклади призначення, структура вузла, алгоритм формування.
Пошук даних у плоских файлах (послідовний та бінарний). Сортування файлів по одному та декільком полям. Приклад програмного коду.
упорядкування (сортування) записів за значенням одного або сукупності полів. В цьому випадку як при наявності потрібного запису, так і при відсутності, час пошуку пропорційний N/2. Це вірно тільки для тих випадків, коли пошук здійснюється по упорядкованому полю. Для того, щоб була можливість здійснювати пошук і по іншим полям, треба створювати „братів” цих файлів, відсортувавши основний файл за потрібним полем. Такі файли називаються інвертованими відносно основного файлу. Деякі із ранніх систем керування базами даних мали у своїй концепції цей підхід
бінарний пошук. Він може бути застосований тільки для упорядкованих файлів. Суть його полягає в тому, що спочатку покажчик записів встановлюється на середину файлі і значення шуканого поля порівнюється з крайніми елементами напівфайлів, щоб визначити, в якій половині треба продовжити пошук. Так цей процес продовжується до тих пір, доки не отримуємо відповідь, є чи нема шуканого запису. Час пошуку пропорційний log2N. Цей метод є досить ефективним.
Пошук даних у плоских декількох логічно зв’язаних файлах. Приклад програмного коду.
Смотри 28))
Індексні файли: призначення, створення та використання. Переваги та недоліки. Приклад програмного коду.
Работа с записями в индексном файле ведется с помощью следующих операций:
поместить запись в файл;
прочесть запись из файла;
уничтожить запись;
модифицировать запись.
Операция модификации отличается от операции записи фактически тем, что при ее выполнении в файл помещается новая запись, но со старым ключом.
Для каждой операции в качестве параметра указывается индекс записи, а для операций записи и модификации - еще и длина записи.
При индексной организации таблица индексов должна содержать индексы всех записей файла. Повышение эффективности поиска записей достигается за счет того, что поиск ведется в таблице индексов, имеющей значительно меньшие размеры, чем область данных. Наивысшая эффективность достигается в тех случаях, когда индексы в таблице упорядочены и возможно применение быстрых методов (например, метода двоичного поиска).
begin
assignfile(Ft,'Data.bas');
assignfile(FtInd,'Index.bas');
rewrite(Ft);
rewrite(FtInd);
K:=0;
for I:=0 to N do
begin//створення типізованого файлу записів(рядків таблиці)
Mr.NazKaf:=Z[i]; //файл неупорядкований по полю Name
J:=I; //імітація імені у файлі
Str(J,Mr.NazKaf);
mr:=M[K];
Inc(K);
write(Ft,Mr);
//створення індексного файлу записів
end;
CloseFile(Ft);
reset(Ft);
I:=0;
while not Eof(Ft) do
begin
read(Ft,Mr);
MInd.NomKaf:=Mr.NomKaf; //поле, по якому відбувається індексування
MInd.NumbComponent :=I; //номер компоненти з цім значенням поля у файлі таблиці
write(FtInd,MInd);
Inc(I);
end;
CloseFile(Ft);
CloseFile(FtInd);
reset(Ft);
I:=0;
while not Eof(Ft) do
begin
read(Ft,Mr);
//номер компоненти з цім значенням поля у файлі таблиці
MInd.NomKaf:=Mr.NomKaf; //поле, по якому відбувається індексування
MInd.NumbComponent :=J;
St:=IntToStr(Mr.NomKaf)+' '+Mr.NazKaf+' '+Mr.VypKaf+' '+Mr.PrizZavKf+' '+FloatToStr(Mr.ShtatStav);
Memo1.Lines.Add(St);
end;
CloseFile(Ft);
reset(FtInd);J:=0;
Memo3.Lines.Add(('Неупорядкований:'));
while not Eof(Ftind) do
begin
Inc(J);
read(FtInd,MInd);
if j<11 then Memo3.Lines.Add(inttostr(MInd. NumbComponent)+' '+inttostr(MInd.NomKaf));
if j>=11 then Memo3.Lines.Add(inttostr(MInd. NumbComponent)+' '+inttostr(MInd.NomKaf));
end;
CloseFile(FtInd);
end;