9 Файлы
Под файломпонимается либо поименованная область внешней памяти компьютера (жесткого диска, дискеты и др.) — тексты программ, выполняемые файлы, файлы данных и т.п., либо логическое устройство — потенциальный источник или приемник информации.
9.1 Логические устройства
Стандартные аппаратные средства персонального компьютера, такие как клавиатура, экран дисплея, принтер и коммуникационные каналы ввода-вывода, определяются специальными именами, которые называются логическими устройствами.Все они рассматриваются как потенциальные источники или приемники текстовой информации.
CON— логическое имя, которое определяет клавиатуру или экран дисплея. Ввод с клавиатуры буферизируется: символы по мере нажатия на клавиши помещаются в специальный строковый буфер, который передается программе только после нажатия клавишиEnter.Буферизация ввода дает возможность редактирования вводимой строки.
PRN— логические имя принтера. Если подключено несколько принтеров, доступ к ним осуществляется по логическим именамLPT1,LPT2,LPT3. Стандартный библиотечный модульPRINTERобъявляет имя файловой переменнойLSTи связывает его с логическим устройствомLPT1.
AUX— логическое имя коммуникационного канала, который обычно используется для связи компьютера с другими машинами. Как правило, в составе персонального компьютера имеются два коммуникационных канала, которым даются имена логических устройствСOM1иCOM2.
NUL— логическое имя «пустого» устройства. Это устройство чаще всего используется в отладочном режиме и трактуется как устройство-приемник информации неограниченной емкости.
Файлы данных
Часто встречаются следующие ситуации:
программа формирует или использует в качестве исходных данных большие наборы данных, которые не понадобятся до следующего запуска этой программы;
такие наборы данных могут использоваться несколькими программами.
При этом часто:
эти наборы данных мало изменяются во времени и их ввод с клавиатуры при каждом запуске программы нерационален;
эти наборы данных часто бывают настолько велики, что даже превышают по объему доступную память;
из-за большого объема их ввод с клавиатуры при каждом запуске очень трудоемок, а часто просто невозможен из-за временных ограничений.
Выход из ситуации — такие наборы данных естественно записывать на внешних носителях. При необходимости их можно считать с внешних носителей, откорректировать и т.д.
Наборы данных, размещаемые на внешних носителях, называются файлами данных.
Файлы бывают:
входными — из них программа получает данные (ввод из файла);
выходными — формируются программой (вывод в файл).
Каждый файл имеет имя: собственное_имя[.тип], которое заносится в директорий (books.dat,abc).
Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: INPUT— для чтения данных с клавиатуры, иOUTPUT— для вывода на экран.
Файлы в Паскале:
типизованные
текстовые
без типа
9.3 Типизованные файлы
Типизованный файл— структурированный тип данных, состоящий из последовательности компонент одного типа и одной длины.
Число компонент файла (размер файла)не указывается(не фиксируется) при определении файла.
Файл, не содержащий ни одной компоненты — пустой файл.
Формат описания:
1-ый способ:
Type
имя_типа_файла=File of тип_компонент;
Var
имя_переменной_файла:имя_типа_файла;
2-ой способ:
Var
имя_переменной_файла:File of тип_компонент;
Тип_компонент— любой стандартный или ранее определенный, простой или структурированный тип, за исключениемFileиObject. На практике чаще всего тип_компонент— тип запись (т.к. задачи требуют использования данных разных типов, а синтаксис требует использования компонент одного типа и одной длины).
Пример:
Type
StrVed = Record
TabNom : Integer ;
FIO : String [ 30 ] ;
Oklad : LongInt
End ;
TypeVed=File of StrVed ;
Var
Vedomost:TypeVed ;
Переменные файлового типа нельзя использовать как обычные переменные:
им нельзя присваивать значения
над ними нельзя выполнять никакие операции
их нельзя использовать в выражениях
Их можно использовать только для выполнения операций над файлами (чтение, запись, удаление и т.д.), т.к. файл хранится на внешнем носителе, а данные из него по мере необходимости считываются в оперативную память для обработки (или наоборот).
При каждом описании новой файловой переменной автоматически вводится дополнительная переменная такого же типа, что и тип компонент файла. Она называется буфернойпеременной файла (указателем файла). При чтении из файла или при записи в файл этот указательперемещается к следующей компоненте файлаи делает ее доступной для обработки. Указатель файла также не может быть использован как обычная переменная.
В Паскале доступ к информации в файлах осуществляется с помощью файловых переменных. Вначале файловая переменная должна быть связана с конкретным файлом, затем файл должен бытьоткрытдля чтения или записи. После работы с файлом, он (как правило) должен бытьзакрыт— это обязательно для файла, в который производилась запись.
При работе с файлами автоматически проверяются ошибки ввода/вывода (I/O). Это производится по умолчанию (если не были изменены установки) или с помощью директивы компилятора{$I+}. Проверку можно отключить:{$I-}и контролировать ввод/вывод с помощью функцииIOResult.
Работа с файлами осуществляется с помощью процедур и функций (ниже F— файловая переменная).