Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відповіді до іспиту по СОД.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
191.49 Кб
Скачать
  1. Пошук даних у плоских файлах (послідовний та бінарний). Сортування файлів по одному та декільком полям. Приклад програмного коду.

упорядкування (сортування) записів за значенням одного або сукупності полів. В цьому випадку як при наявності потрібного запису, так і при відсутності, час пошуку пропорційний N/2. Це вірно тільки для тих випадків, коли пошук здійснюється по упорядкованому полю. Для того, щоб була можливість здійснювати пошук і по іншим полям, треба створювати „братів” цих файлів, відсортувавши основний файл за потрібним полем. Такі файли називаються інвертованими відносно основного файлу. Деякі із ранніх систем керування базами даних мали у своїй концепції цей підхід

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

  1. Пошук даних у плоских декількох логічно зв’язаних файлах. Приклад програмного коду.

Смотри 28))

  1. Індексні файли: призначення, створення та використання. Переваги та недоліки. Приклад програмного коду.

Работа с записями в индексном файле ведется с помощью следующих операций:

поместить запись в файл;

прочесть запись из файла;

уничтожить запись;

модифицировать запись.

Операция модификации отличается от операции записи фактически тем, что при ее выполнении в файл помещается новая запись, но со старым ключом.

Для каждой операции в качестве параметра указывается индекс записи, а для операций записи и модификации - еще и длина записи.

При индексной организации таблица индексов должна содержать индексы всех записей файла. Повышение эффективности поиска записей достигается за счет того, что поиск ведется в таблице индексов, имеющей значительно меньшие размеры, чем область данных. Наивысшая эффективность достигается в тех случаях, когда индексы в таблице упорядочены и возможно применение быстрых методов (например, метода двоичного поиска).

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;