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

Файл- это самостоятельная последовательность символов, записанная в память компьютера. Использование файлов в программировании обусловлено следующими задачами:

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

2. файлы используются, когда объем данных настолько велик, что задание их в ручном режиме непосильно, невозможно, затратно.

3. файлы требуются для сохранения выходных данных (при многократном сохранении или при сохранении больших объемов).

Бинарные файлы хранят информацию в том виде, в котором она представляется в памяти ПК. Однако эти неудобства компенсируются скоростью работы. Кроме того, текстовые файлы являются структурами послед доступа, а бинарные файлы – прямого доступа. Это означает, что в любой момент времени в структурах прямог доступа можно обратиться к любому элементу по его номеру.

Бинарные файлы делятся на типизированные и нетипизированнные.

Типизированные.

Замечание: переменные структурированных типов данных (кроме строковых) невозможно считать из текстового файла. Например, необходимо ввести из текстового файла данные поля заполнения записи toy

Type toy=record name:string[20];

Price:real;

ageLset of 9..18; {в файле задано границами}

end;

выход из такой ситуации предоставляют типизированные файлы. Их элементы могут принадлежать любому базовому или структурированному типу. Ограничение – все элементы должны ыть одного и того же типа. Если длина компонта может быть известна, то компоненты вычисляются по простой формуле

<начало_структуры>+

<номер_компонента>*

<длина_компонента>

Описание типизированных файлов

Var <файловая перем>:file of

<тип элементов файла>;

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

Assign (f,’<им файла>’);

Открытие и закрытие типизированного файла

Reset (f) – процедура для открытия файла для считывания информации и одновременно для записи в него информации. Если файла не существует, возвращается ошибка. Указатель ставится в начало файла.

Rewrite (f) – открытие файла для записи информации. Если нет файла, он будет создан. Курсор ставится в начало файла. Если файл существовал, вся информация из него исчезнет.

Close (f) – также как и в текстовых файлов.

Считывание из типизированного файла

Считывать из файла можно только переменные, тип данных которых совпадает с типом данных файла.

Поиск в типизированном файле

Eof(f:file):Boolean – смотри текстовые файлы

Filepos(f:file):longint – функция возвращает текущее положение указателя. Если курсор указывает на самый конец файла, содержащего N элементов, то возвращаемое значение будет N.

Filesize(f:file):longint – вычисляет длину файла f в байтах.

Seek(f:file,n:longint) – передвигает указатель в файле на начало записи с номером N. Если окажется, что N больше длины файла, то указатель будет передвинут за реальный конец файла.

Truncate(f:file) – обрезает хвост файла. Все элементы, начиная от текущего и до самого конца файла будут «удалены».

Файлы. Текстовые файлы.

Файл- это самостоятельная последовательность символов, записанная в память компьютера. Использование файлов в программировании обусловлено следующими задачами:

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

2. файлы используются, когда объем данных настолько велик, что задание их в ручном режиме непосильно, невозможно, затратно.

3. файлы требуются для сохранения выходных данных (при многократном сохранении или при сохранении больших объемов).

Текстовые файлы

Бинарные файлы хранятся в памяти компьютера в машинном коде. Текстовые в понятном для пользователя виде.

Var f1,f2:text; {текстовые файлы}

g: file of <тип _элементов_файла>; {типизированные файлы}

in,out:file; {нетипизированные файлы}

Процедуры для работы с тестовыми файлами:

1. Назначение файла

Assign(f,’имя файла’);

Assign (f, ‘input.txt’);

Assign(f,’output.txt’);

2. Открытие файла.

Reset(f) – открытие файла для считывания из него информации. Если такого файла не существует процедура reset вызовет ошибку и аварийное закрытие программы. Эта же процедура ставит курсор на начало файла.

Rewrite(f) – процедура открытия файла для записи в него информации. Если такой файл не существует, он будет создан. Если файл с таким именем уже есть, вся информация в нем существующая будет стерта.

Append(f) – открытие файла для записи в него информации, при открытии указатель ставится в конец файла. Если такого файла не существовало, он будет создан. Если файл существовал, информация в ней хранящаяся будет сохранена.

Close(f) – процедура закрытия файла.

Read (f,a,b,c) – читает из файла f три переменные a,b,c. После выполнения этой процедуры указатель в файле переместится за переменную с.

Writeln(f,a,b,c) – запись в файл.

Замечание: Пробел в файле является отдельным символом, который тоже можно считать.

Пробельные символы

Это символы, при считывании которых компилятор получает информацию о структуре файла

Специальные символы – специальные процедуры:

Eof(f) – возвращает значение true, если достигнут конец файла. То есть, указатель стоит сразу за последним символом файла.

Seekeof(f) – значение true возвращается в том случае, если конец файла «почти» достигнут (после курсора стоят только пробельные символы и конец файла).

Eoln(f) – возвращает true, если достигнут конец строки файла.

Seekeoln(f) – возвращает true, если конец строки почти достигнут

Замечание: в текстовом файле при записи чисел границами чисел служат пробельные символы. И при считывании чисел эти пробельные символы игнорируются, сколько бы их не было.

Т.О. если ввод многих чисел производится при помощи процедуры read, нет никакой разницы, как именно записаны эти числа: в строку, столбец или несколько строк.

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

В большинства случаев предпочтительнее использование процедур seekeolf и seekeoln, т.к. они предназначены специально для текстовых файлов. Поскольку функции seekeolf и seekeoln пытаются проигнорировать все пробельные символы, результаты их работы отличаются от результатов функции eof и eoln. Даже если это не диагностируется визуально.

Наши рекомендации