Прямой доступ

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

Прямой доступ предполагает, что файл представляет собой линейную последовательность блоков. Если файл содержит n блоков, то они нумеруются от 1 через 1 до n. Кроме того, вводится понятие условной границы между блоками, при этом условная граница с номером 0 расположена перед блоком с номером 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 должен быть задан номер условной границы, предшествующей блоку, к которому будет производиться последующее обращение. Например, чтобы работать с блоком 4, необходимо задать значение N, равное 3. Процедура Seek работает с открытыми файлами.

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

Типовое задание

Разработать программу решения задачи поиска в массиве упорядоченных записей, находящихся в файле компонентного типа COMP.DAT, сформированного в ЛПР№16, с использованием алгоритма двоичного поиска по варианту (ЛПР№15). Чтение и файла производить методом прямого доступа.

ЛИТЕРАТУРА

  1. Игошина Л.В. Методическое пособиепо курсу "Алгоритмические языки и программирование". - Пенза: ПГТУ, 1999г.
  2. Могилев Л.В. и др. Практикум по информатике. - М.: «Академия», 2005г.
  3. Иллюстрированный самоучитель по Turbo Pascal. – http://pascal.sources.ru/

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: