Автор работы: Пользователь скрыл имя, 16 Января 2015 в 17:09, творческая работа
К типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных баз данных.Типизированный файл - это файл, все компоненты которого одного типа, заданного при объявлении файловой переменной. Компоненты файла хранятся на диске во внутреннем (двоичном) формате и нумеруются с 0.
Версия шаблона |
2.1 |
ЦДОР |
Ачинский филиал |
Вид работы |
Творческое эссе |
Название дисциплины |
Программирование |
Тема |
Типизированные файлы. процедуры работы с типизированными файлами |
Фамилия |
Кузнецов |
Имя |
Сергей |
Отчество |
Сергеевич |
№ контракта |
1430011400501193 |
Типизированный, или компонентный, файл – это файл с объявленым типом его компонентов, т.е. файл с наборами данных одной и той же структуры. Объявление такого файлового типа имеет вид
Type f : File Of <Тип>.
К типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных баз данных.Типизированный файл - это файл, все компоненты которого одного типа, заданного при объявлении файловой переменной. Компоненты файла хранятся на диске во внутреннем (двоичном) формате и нумеруются с 0. Если посмотреть такой файл любым текстовым редактором, то можно распознать только символьную информацию, на месте же чисел в файле будут располагаться пробелы или символы псевдографики. Стандартное задание в программе такой файловой переменной осуществляется следующим образом:
type
FileRec = record
end;
var F : file of FileRec;
Для работы с типизированными файлами
используют специальные процедуры
и функции.
1. Процедура Read(Var f; с1, с2, ...,сn) - осуществляет чтение очередных компонентов
типизированного файла. Список переменных
ввода содержит одну или несколько переменных
того же типа, что и компоненты файла, разделенных
запятыми. Если файл исчерпан, обращение
к процедуре вызывает ошибку ввода-вывода.
2. Процедура Write(Var f; c1, с2, ...,cn) - осуществляет запись данных в типизированный
файл. Список вывода содержит одно или
более выражений того же типа, что и компоненты
файла, разделенных запятыми.
3. Процедура Seek(Var f; numcomp:word) - осуществляет установку указателя файла
на компонент файла с номером numcomp.
4. Функция FileSize(Var f):longint - возвращает количество компонент файла,
указанного файловой переменной. Может
использоваться для установки на конец
файла совместно с Seek(): Seek(f, FileSize(f));...
5. Функция FilePos(Var f):longint - возвращает порядковый номер компонента,
который будет обрабатываться следующей
операцией ввода-вывода.
После открытия файла для чтения или записи указатель файла стоит в его начале и указывает на первый компонент, имеющий номер 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Поскольку длина каждой компоненты файла строго постоянна, помимо последовательного возможно осуществление прямого доступа к компонентам файла. По той же причине, если требуется изменить компонент файла, то не обязательно переписывать компоненты в другой файл, а достаточно установить указатель файла на изменяемый компонент и записать новый компонент на место старого.
Добавление компонентов в конец файла выполняется в режиме чтения. Для этого указатель файла устанавливается на его конец (как показано выше), после чего все выводимые компоненты дописываются в конец файла.
Добавление компонентов в середину или начало файла может выполняться следующим образом: определяем место, в которое должны быть добавлены элементы, все последующие компоненты переписываем во временный файл, вставляем новые компоненты и, наконец, дописываем в файл компоненты, переписанные во временный файл.
Удаление компонент обычно требует перезаписи файла.
Работа в режиме последовательного и прямого доступа.
Если содержимое текстовых файлов рассматривается как набор символов, подготовленный специальным образом с учетом общепринятых соглашений о представлении текстовой информации, то содержимое типизированных файлов рассматривается как последовательность записей определенной структуры. Единицей измерения такого набора данных является сама запись. Длина записи определяется как SizeOf(FileRec).
Так как длина любого компонента типизированного файла строго постоянна, это дает возможность организовать прямой доступ к любому компоненту по его порядковому номеру, поэтому типизированные файлы часто называют файлами прямого доступа.
Для того, чтобы считать данные из файла или записать данные в файл, необходимо выполнить процедуру инициализации файла. Инициировать файл означает указать для этого файла направление передачи информации. В Турбо Паскале можно открыть файл для чтения, для записи информации, а также для чтения и записи одновременно. Для инициализации типизированных файлов существуют следующие процедуры:
1) Reset (f);
где f – файловая переменная, связанная ранее процедурой Assign с уже существующим файлом или логическим устройством–приемником информации. При выполнении этой процедуры дисковый файл или логическое устройство подготавливается к чтению информации. В результате специальная переменная–указатель, связанная с этим файлом, будет указывать на начало файла, т.е. на компонент с порядковым номером 0;
2) Rewrite (f);
инициирует запись информации в файл или логическое устройство, связанное ранее с файловой переменной f. Процедурой Rewrite нельзя инициировать запись в ранее существовавший дисковый файл. При выполнении этой процедуры старый файл уничтожается и никаких сообщений об этом в программу не передается.
Процедура Close (f) закрывает файл. При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Функции процедуры Close выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы.
Для чтения данных из типизированного файла предназначена процедура
Read (f, <сп. ввода>);
где <сп. ввода> – список ввода, содержащий одну или более переменных такого же типа, что и компоненты файла (того же типа, что и тип в предложении File Of < тип >). Перед первым обращением к процедурам ввода–вывода указатель файла стоит в его начале и указывает на первый компонент с номером 0. После каждого чтения или записи указатель сдвигается к следующему компоненту файла. Если этих переменных в списке несколько, указатель будет смещаться после каждой операции обмена данными.
Для записи данных в типизированный файл используется процедура
Write (f, <сп. ввода>);
Параметры аналогичны параметрам процедуры Read. При записи в типизированные файлы записывается машинное представление очередного компонента, будь то число, массив, запись или строка. Внутри файла компоненты не отделяются ничем друг от друга. Поэтому не имеет смысла применять к типизированным файлам операторы Readln и Writeln. В них просто не существует такого понятия, как строка и ее конец.
Функция Eof (f) возвращает результат типа Boolean: True, если считан последний компонент файла, и False – в противном случае. Файл f должен быть открыт.
Файл – это последовательная структура данных. Естественным способом доступа к компонентам файла является последовательный доступ. После открытия файла он “ждет” чтения или записи первого компонента. После каждого очередного обращения к файлу он готов выдать или принять очередной по счету компонент. Пусть нужно прочитать из файла f пятый элемент и записать его в переменную V соответствующего типа. Это можно сделать, считав “впустую” четыре первых значения:
Reset (f); For i := 1 to 5 do Read (f, V); Writeln(V);
В V останется последнее, пятое, значение из файла. Это не самое удачное решение проблемы. Существуют встроенные процедуры и функции Турбо Паскаля для прямого доступа к компонентам файла.
Процедура Seek (f , <N компонента>) – устанавливает номер текущего компонента файла f. Назначенный компонент будет считан или записан последующей операцией ввода–вывода. Эта процедура непосредственно реализует прямой доступ в файл.
Функция FilePos (f) возвращает номер текущего компонента. Результат типа Longint.
Функция Filesize (f) возвращает реальное число записей в открытом файле. Результат типа Longint.
Truncate (f) – усекает файл f по текущему положению указателя.
Допустим, мы имеем дело с файлом, в котором записываются переменные типа Word, тогда переменная файлового типа может быть введена двояко – с явным объявлением файлового типа:
Type |
или без объявления файлового типа:
Var |
Приведем примеры переменных файлового типа с другими объявлениями:
Type |
Напомним, что файловые переменные имеют специфическое применение: их можно использовать только для выполнения операций с файлами (чтения, записи, удаления файла и т.д.) и получения информации о конкретном файле (тип, параметры, имя файла и т.д.).
Работа с файлами заключается в записи и считывании его компонентов. Для того, чтобы определить, какие данные будут участвовать в операции, используется неявно заданная переменная – указатель на текущий элемент файла. При открытии файла процедурами reset, rewrite указатель устанавливается на его начало. Запись и чтение производятся поэлементно, причем в них участвует тот элемент файла, на который "смотрит" указатель. В результате выполнения действия указатель перемещается к следующему элементу.
Пример. Приведем шаблон программы для записи данных в типизированный файл.
Program Writing; |
Задача. Составить программу, которая переписывает существующий файл, заменяя все латинские буквы на заглавные.
Рrogram Writing; Letter : char; {читаемый из файла символ} {$I-} {отключен контроль ввода/вывода} {$I+} {включен контроль ввода/вывода} begin |
№ п/п |
Наименование интернет-ресурса |
Ссылка на конкретную используемую страницу интернет-ресурса |
1 |
http://www.soft-uprating.ru/ |
http://www.soft-uprating.ru/ |
Информация о работе Типизированные файлы. Процедуры работы с типизированными файлами