UkrReferat.com
найбільша колекція україномовних рефератів

Всього в базі: 75843
останнє поновлення: 2016-12-04
за 7 днів додано 10

Реферати на українській
Реферати на російській
Українські підручники

$ Робота на замовлення
Реклама на сайті
Зворотній зв'язок

 

ПОШУК:   

реферати, курсові, дипломні:

Українські рефератиРусские рефератыКниги
НазваТип безтипових файлів (реферат)
Авторdimich
РозділІнформатика, компютерні науки
ФорматWord Doc
Тип документуРеферат
Продивилось1230
Скачало259
Опис
ЗАКАЧКА
Замовити оригінальну роботу

Реферат на тему:

 

Тип безтипових файлів

 

Розглянемо програму посимвольного копіювання файлів:

 

program StupidCopy;

 

var f, g : file of char; c : char; s : string;

 

begin

 

writeln('Задайте ім'я початкового файла');

 

readln(s); assign(f, s);

 

writeln('Задайте ім'я цільового файла');

 

readln(s); assign(g, s);

 

reset(f); rewrite(g);

 

while not eof(f) do

 

begin

 

read(f, c); write(g, c);

 

end;

 

close(f); close(g);

 

end.

 

Здається, що при виконанні цієї простенької програмки все гаразд,

оскільки за рахунок використання буферів фізичні файли

читаються-записуються порціями по кілька блоків, пристрої при цьому

працюють найкращим чином, а переміщення інформації відбуваються головним

чином усередині оперативної пам’ яті, тобто швидко.

 

Спробуйте запустити її на виконання, указавши вхідним файл розміром у

кілька сотень кілобайтів – виконання займе секунди й десятки секунд.

Напрошується висновок, що при її виконанні дещо здійснюється не

найкращим чином. Розглянемо один із способів прискорення роботи з

файлами.

 

Система Турбо Паскаль дозволяє створити додатковий власний буфер і

власноруч описати його застосування. Це виявляється набагато

ефективнішим від використання буферів, що забезпечуються системою. А

реалізується це за допомогою безтипових файлів.

 

Тип безтипових файлів задається словом file. Файлову змінну цього типу,

як і всіх інших файлових типів, треба спочатку зв’ язати з фізичним

файлом і відкрити, установивши в початковий стан для читання чи запису.

Процедури відкривання RESET і REWRITE тут мають по 2 параметри. Крім

імені файлової змінної, у їх виклику вказується розмір "зовнішнього

буфера" в байтах. Цей буфер ще називається блоком і явно в

Паскаль-програмі не позначається. Через нього дані копіюються з

фізичного файла до "внутрішнього буфера". Розмір блока може бути в межах

від 1 до 65535. Як не дивно, найкраще встановити його рівним 1:

 

ReSet(f, 1) або ReWrite(g, 1).

 

Чому саме так, ми скажемо далі.

 

Уся подальша обробка безтипового файла описується зовсім іншими

засобами.

 

Читання безтипових файлів задає процедура BLOCKREAD із чотирма

параметрами. Усі вони, крім третього – параметри-змінні. У виклику

процедури першим аргументом є ім’ я файлової змінної, другий задає місце

в пам’ яті, з якого починається "внутрішній буфер", третій – кількість

блоків, які треба прочитати з файла, а в четвертому, типу Word,

повертається кількість блоків, яка насправді читається за виконання

виклику. Наприклад, за означеннями

 

var f : file;

 

inbuf : array[1..100] of char;

 

blsz : Longint; numbl, numblre : Longint

 

та операторами й викликами

 

blsz:=4; numbl:=25;

 

reset(f, blsz); blockread(f, inbuf, numbl, numblre)

 

розмір блока встановлюється рівним 4 байти, і 25 таких блоків треба

прочитати з початку файла. Якщо розмір файла насправді не менше 4*25=100

байтів, і ніяких помилок при читанні не було, то значенням змінної

numblre також буде 25. Після читання масив inbuf буде заповнений до

кінця, і треба буде обробити його залежно від конкретної задачі. Крім

того, при виконанні наступного виклику цієї процедури файл f буде

-----> Page:

0 [1] [2] [3]

ЗАМОВИТИ ОРИГІНАЛЬНУ РОБОТУ