Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике все.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
987 Кб
Скачать
☆

Типизированные файлы

    Типизированный ( или компонентный) файл - это файл с объявленным типом его компонент.     Компонентные файлы состоят из машинных представлений значений переменных они хранят данные в том же виде, что и память ЭВМ.     Описание величин файлового типа имеет вид:                 type M= File Of T; где М - имя файлового типа, Т - тип компоненты. Например:

type

FIO= String[20];

SPISOK=File of FIO;

var

STUD, PREP: SPISOK;

    Здесь STUD, PREP - имена файлов, компонентами которых являются строки.     Описание файлов можно задавать в разделе описания переменных:

var

fsimv: File of Char;

fr: File of Real;

    Компонентами файла могут быть все скалярные типы, а из структурированных - массивы, множества, записи. Практически во всех конкретных реализациях языка ПАСКАЛЬ конструкция "файл файлов" недопустима.     Все операции над компонентными файлами производятся с помощью стандартных процедур:                 Reset, Rewrite, Read, Write, Close. Для ввода - вывода используются процедуры:                 Read(f,X);                 Write(f,X); где f - имя логического файла, Х - либо переменная, либо массив, либо строка, либо множество, либо запись с таким же описанием, какое имеет компонента файла.     Выполнение процедуры Read(f,X) состоит в чтении с внешнего устройства одной компоненты файла и запись ее в X. Повторное применение процедуры Read(f,X) обеспечит чтение следующей компоненты файла и за пись ее в X.     Выполнение процедуры Write(f,X) состоит в записи X на внешнее устройство как одной компоненты. Повторное применение этой процедуры обеспечит запись X как следующей компоненты файла.     Для работы с компонентными файлами введена расширенная форма операторов ввода и вывода:                 Read(f,X1,X2,...XK)                 Write(f,X1,X2,...XK)     Здесь f - компонентный файл, а переменные Х1, Х2,...ХК должны иметь тот-же тип, что и объявленный тип компонент файла f.

Нетипизированные файлы

    Нетипизированные (или бестиповые) файлы позволяют записывать на диск произвольные участки пвмяти ЭВМ и считывать их с диска в память. Операции обмена с бестиповыми файлами осуществляется с помощью процедур BloсkRead и BlockWrite. Кроме того, вводится расширенная форма процедур Reset и Rewrite. В остальном принципы работы остаются такими же, как и с компонентными файлами.     Перед использованием логический файл                 var f: File; должен быть связан с физическим с помощью процедуры Assign. Далее файл должен быть открыт для чтения или для записи процедурой Reset или Rewrite, а после окончания работы закрыт процедурой Close.     При открытии файла длина буфера устанавливается по умолчанию в 128 байт. TURBO PASCAL позволяет изменить размер буфера ввода - вывода, для чего следует открывать файл расширенной записью процедур:                 Reset(var f: File; BufSize: Word) или                 Rewrite(var f: File; BufSize: Word)     Параметр BufSize задает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значение BufSize - 1 байт, максимальное - 64 К байт.     Чтение данных из нетипизированного файла осуществляется процедурой: BlockRead( var f: File; var X; Count: Word; var QuantBlock: Word );     Эта процедура осуществляет за одно обращение чтение в переменную X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера. Значение Count не может быть меньше 1. За одно обращение нельзя прочесть больше, чем 64 К байтов. Необязательный параметр QuantBlock возвращает число блоков (буферов), прочитанных текущей операцией BlockRead. В случае успешного за вершения операции чтения QuantBlock = Count, в случае аварийной ситуации параметр QuantBlock будет содержать число удачно прочитанных блоков.     Отсюда следует, что с помощью параметра QuantBlock можно контролировать правильность выполнения операции чтения.     Запись данных в нетипизированный файл выполняется процедурой: BlockWrite( var f: File; var X; Count: Word; var QuantBlock: Word ); которая осуществляет за одно обращение запись из переменной X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера.     Необязательный параметр QuantBlock возвращает число блоков (буферов), записанных успешно текущей операцией BlockWrite.