Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по Информатике 2011.doc
Скачиваний:
6
Добавлен:
04.11.2018
Размер:
557.06 Кб
Скачать
    1. Ввод и вывод. Нетекстовые файлы. Типизированные файлы.

3.2.1. Ввод и вывод информации.

Операции ввода-вывода играют большую роль в любой программе, так как их реализация позволяет пользователю получать результаты вычислительного процесса в удобном для него виде.

В Паскале существуют три класса файлов: типизированные, текс­товые и нетипизированные. Файловая система на Паскале наиболее полно использует возможности операционной системы DOS по передаче данных.

1. Объявление файла Assign.

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

Assign(f, Name : string); {Для Pascal}

AssignFile(f, Name : string); {Для Delphi}

где f - переменная любого файлового типа, а строковое выражение Name содержит полное имя файла, удовлетворяющее требованиям операционной системы Обобщенный вид имени файла выглядит следующим образом:

Диск:\ИмяПодКаталога\. \ИмяПодКаталога\ИмяФайла.

Идентификатор <диск> задается литерой логического устройства от А до Z, и если он опущен, то подразумевается логическое устройство, принятое по умолчанию. Если опущены идентификаторы <ИмяПодКаталога>, то по умолчанию принимается, что файл находит­ся в текущем подкаталоге. Максимальная длина полного имени файла не должна превышать 79 символов.

Процедура Assign всегда предшествует другим процедурам работы с файлами, так как ставит в соответствие конкретному файлу на внешнем устройстве логическую файловую переменную языка, к кото­рой впоследствии будут обращаться все другие файловые процедуры Недопустимо использование процедуры Assign для уже открытого файла. Это значит, что если было назначено имя конкретного набо­ра данных файловой переменной с помощью процедуры Assign, а за­тем этot файл был открыт, то прежде, чем использовать ту же фай­ловую переменную для нового набора данных, необходимо с помощью процедуры Close(см.далее) закрыть этот файл.

Удобство использования процедуры Assign (AssignFile) при работе с внешними файлами не ограничивается только дисковыми файлами. Вместо дис­кового файла может выступать любое устройство ввода-вывода: кла­виатура, печать либо дисплей. Единственное отличие от приведен­ного выше описания будет заключаться в использовании параметра Name. В данном случае параметр Name будет содержать символичес­кое имя устройства ввода-вывода, соответствующее стандартным соглашениям операционной системы Следующие символические имена доступны для использования их стандартными файловыми процедура­ми:

con - устройство консоли, для которого вывод осуществляется на экран дисплея, а ввод с клавиатуры. В этом случае Delphi-приложение должно создаваться как Console Application. Стандартные текстовые файлы Input и Output, приведенные в спецификации Interface моду­ля System, при инициализации по умолчанию устанавливаются на ус­тройство CON, что соответствует строкам:

Assign(Input, 'CON'), Reset(Input),

Assign(0utput, 'CON');Rewrite(Output);

После этого все процедуры записи Write и чтения Read работают соответственно с файлами Output и Input.

LPT1, LPT2 и LPT3 - соответствуют трем возможным именам уст­ройств печати, которые поддерживаются операционной системой. Ес­ли к компьютеру подсоединено одно печатающее устройство, то ис­пользуется символическое имя 'LPT1' либо его синоним - 'PRN'. Устройство печати является устройством вывода, поэтому после назначения его файловой переменной типа Text с помощью процедуры Assign открытие такого файла для последующей записи должно осу­ществляться процедурой Rewrite. И хотя в языке предусмотрен соответствующий модуль Printer, стандартно поддерживающий вывод на печать, мы можем привести здесь корректную последовательность команд, позволяющую добиться этого в рамках модуля System.

Var

Lst : text;

Begin

Assign(Lst, ‘LPT1’);

Rewrite(Lst);

Write(Lst, 'Печать из модуля System');

close(Lst);

End.

В результате на печать будет выдано сообщение "Печать из модуля System".

СОМ1, COM2 - соответствуют двум устройствам последовательного ввода-вывода, т.е двум последовательным портам связи, которые используются для обмена данными между компьютерами Синонимом имени устройства 'СОМ' может выступать символическое имя 'AUX'

NUL - нулевое устройство, для которого вывод означает "путь в никуда", а при попытке чтения немедленно возникает ситуация кон­ца файла, это устройство очень часто используется с уровня ко­манд операционной системы для запрещения вывода сообщений на эк­ран. Так, например, команда

C:>DIR выдает список файлов текущего каталога на экран, а команда

c:>dir > NUL ничего не выдает на экран, хотя и производит считывание списка файлов с диска.

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

CRT - устройство текстового ввода-вывода, не поддерживаемое операционной системой и аналогичное по действию устройству CON. Вследствие лучшей реализации это устройство помимо стандартных функций устройства CON поддерживает много полезных дополнитель­ных функций.

Интерпретация любого внешнего устройства как внешнего файла приводит к единообразию процесса передачи данных. На практике это приводит к поразительным эффектам, при перенаправлении пото­ков передачи данных, а также дает возможность использовать стандартный программный аппарат обработки файлов Эта стратегия по­лучила свое полное завершение в Unix-подобных операционных системах.

Итак, процедура Assign позволяет связать любую файловую переменную в программе с конкретным внешним файлом или устройст­вом. Далее рассмотрим общие операции, которые можно производить над всеми внешними файлами независимо от их специфики.