Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO_PASCAL.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
8.23 Mб
Скачать

Глава 12. Ввод-вывод данных и файловая система

Любой обмен данными подразумевает наличие источника информации, канала передачи и ее приемника. В случае обмена данными между программой и периферийными устройствами одним концом канала обмена данными всегда является оперативная память ПЭВМ. Другой конец этого канала в Турбо Паскале определен как файл.

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

Операция вывода данных означает пересылку данных из рабочей памяти (ОЗУ) в файл, а операция ввода — заполнение ячеек памяти данными, полученными из файла.

Файловая система, реализуемая в Турбо Паскале, состоит как бы из двух уровней: логических файлов и физических файлов.

12.1. Понятие логического файла

Логический файл описывается как переменная одного из файловых типов, определенных в Турбо Паскале. После того как в программе в разделе описания переменных объявлена файловая переменная, она может быть использована как средство общения с любым физическим файлом, независимо от природы последнего. Само имя физического файла может появиться в программе только один раз, когда специальной процедурой устанавливается, что объявленный логический файл будет служить средством доступа именно к этому физическому файлу (данным на диске, портам, печати и т.п.) Если, например, мы хотим работать с текстовым файлом 'A:\TEXT.DOC', то в программе должны быть такие строки: {220}

VAR

f : Text; { объявляем файловую переменную f (вводим

логический файл типа "текст") }

BEGIN

Assign( f, 'A:\TEXT.DOC' ); { связываем физический файл 'a:\text.doc'

на диске А: с логическим файлом f }

...

END.

После этого все обращения к файлу на диске будут производиться через файловую переменную f.

Введение логического файла позволяет программисту не задумываться о технических проблемах организации обмена данными, а заняться программированием самого потока данных. Различные физические файлы имеют различные механизмы ввода и вывода информации. Все особенности физических файлов «спрятаны» в механизме логических файлов, которые сами определяют, как наладить обмен данными со связанными физическими файлами. Иными словами, логические файлы унифицируют работу с файлами, позволяя работать не непосредственно с устройствами ПЭВМ, а с их логическими обозначениями.

12.2. Физические файлы в ms-dos

Что такое физические файлы? Ответ на этот вопрос лучше искать не в руководствах по Турбо Паскалю, а в описаниях MS-DOS. Все, что является файлом в MS-DOS, является физическим файлом в Турбо Паскале. Банальный пример — файл с данными на диске (гибком, жестком, виртуальном — все равно). Определяется физический файл строкой с его названием (именем). В Турбо Паскале имена могут быть строковыми константами или храниться в строковых переменных. Имя файла на диске может иметь адресную часть, оформленную в соответствии с правилами MS-DOS:

'C:\PAS\TESTFILE.PAS' ,

'A:TEST.TXT'

'..\PRIMER.BAS'

Другая разновидность физических файлов — это устройства MS-DOS. MS-DOS не делает особого различия между «традиционными» файлами и устройствами (портами коммуникаций). Устройства имеют свои фиксированные имена и во многом схожи с файлами: имя устройства, например, может встать на место имени файла на диске при копировании. Имена устройств {221} MS-DOS и необходимые замечания по ним сведены в табл. 12.1.

Таблица 12.1

Имя

Расшифровка устройства

Примечание

CON

Консоль (клавиатура и экран)

Ввод из CON — это чтение с клавиатуры, а вывод в CON — это запись на экран

LPT1

LPT2

LPT3

Параллельные порты (типа Centronix) номер 1…3 (если установлены)

Через эти имена файлов происходит вывод данных на принтеры или другие устройства с интерфейсом типа Centronix

PRN

Принтер. Синоним имени LPT1

Имя обращения к принтеру, включенному в порт LPT1

COM1

COM2

Последовательные порты (типа RS-232) номер 1..2 (если установлены)

Имена файлов-устройств для ввода-вывода данных через серийные порты коммуникации.

AUX

Синоним имени COM1

Файл-устройство COM1

NUL

Фиктивное устройство

Это бездонный файл, принимающий что угодно, но всегда пустой

Физические файлы-устройства организуются как текстовые файлы, и для нормальной работы их надо связывать с текстовыми логическими файлами. Хотя, если понадобится, можно устанавливать связь и с бестиповымн файлами (например, при работе с 'COM1' или 'COM2').

Как видно из табл. 12.1, у устройства есть свои особенности. Например, 'CON' — одно имя двух устройств. Если логический файл, которому назначено устройство 'CON', открывается для чтения, то в действительности он связывается с клавиатурой, но если для записи, то — с экраном! В то же время 'LPT1'...'LPT3', 'PRN', а с ним и 'NUL', могут быть открыты только для записи в них, а если все же они открыты для чтения, то сразу же возвращают признак конца файла. Никакого сбоя при этом не будет. Серийные порты — двусторонние. Позволяют считывать из себя и принимать данные. «Файл-пустышка» 'NUL' нужен для отладки программ, использующих другие порты.

Имена физических файлов-устройств должны быть записаны так же, как и в таблице: без точек и прочих знаков после них. Регистр букв роли не играет: 'CON', 'con' — консоль, 'PRN' — принтер, но {222} 'CON.' — это файл на текущем диске, с именем CON и пустым расширением. Можно приписывать после имени устройства двоеточие, но лучше обходится без этого. Так, 'PRN' и 'PRN:' — это одно и то же.

Не определена такая структура данных, как файл в памяти ПЭВМ. Любой объявленный логический файл имеет смысл только после связи с внешним физическим файлом.

Турбо Паскаль позволяет программировать собственные механизмы для работы с периферией ПЭВМ или виртуальными устройствами — так называемые драйверы текстовых устройств. Но для этого надо вручную переписать почти всю библиотеку процедур работы с файлами. Заинтересованные читатели могут найти нужную им информацию в справочном руководстве по Турбо Паскалю [2].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]