русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Последовательный и прямой доступ


Дата добавления: 2013-12-23; просмотров: 1179; Нарушение авторских прав


Операции над типизированными файлами

Для типизированных файлов применимы процедуры Assign, Reset, Rewrite, Close, Rename, Erase, Eof, IOResult, рассмотренные ранее. Именно с помощью указанных процедур над типизированными файлами производятся такие операции, как связывание с физическим файлом, открытие и закрытие файла и т.п.

Для организации же ввода-вывода в типизированных файлах используются процедуры Read и Write:

Read(f, X);

Write(f, X);

где f – имя типизированного файла, а Х – переменная с таким же описанием, какое имеет компонента файла.

Выполнение процедуры Read(f, X) состоит в чтении с внешнего устройства одной компоненты файла и записи ее в X. Повторное применение процедуры Read(f, X) обеспечит чтение следующей компоненты файла и запись ее в X.

Пример: напечатать на экране все числа из файла

var

f: file of integer;



x: integer;

begin

assign(f, ‘c:\test.dat’);

reset(f);

while not eof(f) do

begin

read(f, x);

writeln(x);

end;

close(f);

end.

Выполнение процедуры Write(f, X) состоит в записи X в файл как одной компоненты. Повторное применение этой процедуры обеспечит запись X как следующей компоненты файла.

Пример: записать в файл 5 чисел, заданных пользователем

var

f: file of integer;



x: integer;

begin

assign(f, ‘c:\test.dat’);

rewrite(f);

for i:=1 to 5 do

begin

write(‘Введите число для записи в файл: ’);

readln(x);

write(f, x);

end;

close(f);

end.

Для работы с типизированными файлами можно использовать и расширенную форму записи операторов ввода и вывода:

Read(f, X1, X2, …, XK);

Write(f, X1, X2, …, XK);

Здесь f – типизированный файл, а переменные Х1, Х2, … ХК должны иметь тот же тип, что и объявленный тип компонент файла f.

Пример: записать в файл 5 чисел

var

f: file of integer;



x: integer;

begin

assign(f, ‘c:\test.dat’);

rewrite(f);

write(f, 10, 12, 32, 43, 24);

close(f);

end.

К типизированным файлам можно организовать не только последовательный, но и прямой доступ.

Смысл последовательного доступа заключается в том, что в каждый момент времени доступна лишь одна компонента из всей последовательности. Для того, чтобы обратиться (получить доступ) к компоненте с номером К, необходимо просмотреть от начала файла К-1 предшествующую компоненту. После обращения к компоненте с номером К можно обращаться к компоненте с номером К+1. Отсюда следует, что процессы записи и чтения компонент файла не могут произвольно чередоваться. Файл вначале строится при помощи последовательного добавления компонент в конец, а затем может последовательно просматриваться от начала до конца.

Рассмотренные ранее средства работы с файлами обеспечивают именно последовательный доступ.

Прямой доступ означает возможность заранее определить в файле блок, к которому будет применена операция ввода-вывода. В случае нетипизированных файлов блок равен размеру буфера, для компонентных файлов блок – это одна компонента файла.

Прямой доступ предполагает, что файл представляет собой линейную последовательность блоков. Если файл содержит n блоков, то они нумеруются от 1 до n. Кроме того, вводится понятие условной границы между блоками, при этом условная граница с номером 0 расположена перед блоком с номером 1, граница с номером 1 расположена после блока с номером 1 и перед блоком с номером 2. Наконец, условная граница с номером n находится после блока с номером n.

Реализация прямого доступа осуществляется с помощью функций и процедур FileSize, FilePos, Seek и Truncate.

Функция FileSize(var f): Longint возвращает количество блоков в открытом файле f (не путайте с размером файла в байтах – каждый блок может занимать несколько байтов памяти).

Функция FilePos(var f): Longint возвращает текущую позицию (номер условной границы) в файле f. Для только что открытого файла текущей позицией будет граница с номером 0. Это значит, что можно записать или прочесть блок с номером 1. После чтения или записи первого блока текущая позиция переместится на границу с номером 1, и можно будет обращаться к блоку с номером 2. После прочтения последней записи значение FilePos равно значению FileSize.

Процедура Seek(var f; N: Longint) обеспечивает назначение текущей позиции в файле (позиционирование). В параметре N должен быть задан номер условной границы, которая должна стать текущей позицией. Естественно, что процедура Seek работает с открытыми файлами.

Процедура Truncate(var f) устанавливает в текущей позиции признак конца файла и удаляет (стирает) все последующие блоки.

Пример: если файл содержит более 10 компонент, то удалить все компоненты, следующие после 10-ой.

var

f: file of real;

begin

assign(f, ‘c:\test.dat’);

reset(f);

if filesize(f)>10 then

begin

seek(f, 10);

truncate(f);

end;

close(f);

end.



<== предыдущая лекция | следующая лекция ==>
Описание типизированных файлов | Текстовые файлы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.