Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование - 09 - Файлы.doc
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
235.01 Кб
Скачать

13

9 Файлы

Под файломпонимается либо поименованная область внешней памяти компьютера (жесткого диска, дискеты и др.) — тексты программ, выполняемые файлы, файлы данных и т.п., либо логическое устройство — потенциальный источник или приемник информации.

9.1 Логические устройства

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

CON— логическое имя, которое определяет клавиатуру или экран дисплея. Ввод с клавиатуры буферизируется: символы по мере нажатия на клавиши помещаются в специальный строковый буфер, который передается программе только после нажатия клавишиEnter.Буферизация ввода дает возможность редактирования вводимой строки.

PRN— логические имя принтера. Если подключено несколько принтеров, доступ к ним осуществляется по логическим именамLPT1,LPT2,LPT3. Стандартный библиотечный модульPRINTERобъявляет имя файловой переменнойLSTи связывает его с логическим устройствомLPT1.

AUX— логическое имя коммуникационного канала, который обычно используется для связи компьютера с другими машинами. Как правило, в составе персонального компьютера имеются два коммуникационных канала, которым даются имена логических устройствСOM1иCOM2.

NUL— логическое имя «пустого» устройства. Это устройство чаще всего используется в отладочном режиме и трактуется как устройство-приемник информации неограниченной емкости.

    1. Файлы данных

Часто встречаются следующие ситуации:

  • программа формирует или использует в качестве исходных данных большие наборы данных, которые не понадобятся до следующего запуска этой программы;

  • такие наборы данных могут использоваться несколькими программами.

При этом часто:

  • эти наборы данных мало изменяются во времени и их ввод с клавиатуры при каждом запуске программы нерационален;

  • эти наборы данных часто бывают настолько велики, что даже превышают по объему доступную память;

  • из-за большого объема их ввод с клавиатуры при каждом запуске очень трудоемок, а часто просто невозможен из-за временных ограничений.

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

Наборы данных, размещаемые на внешних носителях, называются файлами данных.

Файлы бывают:

  • входными — из них программа получает данные (ввод из файла);

  • выходными — формируются программой (вывод в файл).

Каждый файл имеет имя: собственное_имя[.тип], которое заносится в директорий (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— файловая переменная).