Файл (File). Язык программирования Turbo Pascal 7.0
Обычно доступ к элементам файла осуществляется последовательно, т. е. когда элемент считывается или записывается, то текущая позиция файла перемещается к следующему по порядку элементу файла. Однако для типизированных и нетипизированных файлов можно организовать прямой доступ к любому элементу с помощью стандартной процедуры Seek, которая перемещает текущую позицию файла к заданному элементу… Читать ещё >
Файл (File). Язык программирования Turbo Pascal 7.0 (реферат, курсовая, диплом, контрольная)
Файл — это совокупность данных, имеющих общее имя и назначение, и существующая на некотором носителе. Компоненты файла могут быть любого типа, за исключением типа-файла и типа-объекта. Число компонент в файле не объявляется.
Файл — это логическое понятие, связанное с физически существующим набором данных. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати или другие устройства. Связь обеспечивается операционной системой при выполнении программы пользователя. При работе с файлами выполняются операции ввода-вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода — это пересылка данных из основной памяти на внешнее устройство (в выходной файл).
Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид: 'LAB1.DAT', 'c:ABC150pr.txt'.
Любой файл и соответствующий ему набор данных представляют собой линейную последовательность произвольного числа элементов, каждый из которых имеет номер (первый элемент номер 0).
Для задания типа-файла следует использовать зарезервированные слова file и of, после чего указать тип компонент файла.
type.
Number = file of Integer; {тип-файл целых чисел}.
Symb = file of 'A'.'Z'; {тип-файл прописных латинских букв}.
Текстовые файлы определяются в разделе Var:
Var Имя_текстового_файла: Text;
Input, Output: Text;
Fl, F2: file of Integer;
Тип-файл можно определять и непосредственно при введении файловых переменных. Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций. Их можно использовать лишь для выполнения операций с файлами.
В Паскале определены три типа файлов:
- 1) текстовые; состоят из строк символов. Конец записи определяется концом строки. Чтение и запись в файл осуществляется посимвольно.
- 2) типизированные могут состоять из записей любого типа.
- 3) нетипизированные файлы фактически представляют собой каналы ввода/вывода нижнего уровня, используемые в основном для прямого доступа к любому файлу на диске, независимо от его типа и структуры.
Обработка файла может производиться двумя способами:
- 1) с использованием последовательного доступа;
- 2) с использованием прямого (произвольного) доступа.
Обычно доступ к элементам файла осуществляется последовательно, т. е. когда элемент считывается или записывается, то текущая позиция файла перемещается к следующему по порядку элементу файла. Однако для типизированных и нетипизированных файлов можно организовать прямой доступ к любому элементу с помощью стандартной процедуры Seek, которая перемещает текущую позицию файла к заданному элементу.
Когда программа завершает обработку файла, его нужно закрыть. Только после этого связанный с ним внешний набор данных будет обновлен. Затем файловая переменная может быть связана с другим набором данных, или обновленный набор данных может быть связан с другой файловой переменной.
Для чтения и записи в текстовые файлы используются стандартные операторы Read (Readln) и Write (Writeln):
Readln (имя файла, запись);
Writeln (имя файла, запись);
где запись — имя данного, которое читается (записывается) из файла. Это может быть символ, строка или число.
Работа с существующим файлом обычно включает в себя операции открытия его для чтения, и затем считывания из него записей, пока не появится признак «Конец файла» — Eof (Файл). Поэтому соответствующие программы содержат циклы вида.
While Not Eof (Файл) do readln (Файл, Запись);
Процедуры и функции для работы с файлами приведены в табл. 3.3.
Таблица 3.3.
Процедуры и функции для работы с файлами.
ФУНКЦИЯ. | ОПИСАНИЕ. |
Procedure Append (var f: text). | Открывает существующий файл, связанный с файловой переменной f, для добавления в него новых записей. |
Procedure Assign (var f: String). | Связывает внешний файл, имя которого указано в строковой константе String, с файловой переменной f. |
procedure BlockRead (var R file; var But; Count: Word). | Считывает из нетипизированного файла, связанного с файловой переменной f, одну или несколько записей (их количество задается целочисленным выражением Count) в переменную Buf. |
Procedure BlockWrite (var R file; var Buf; Count: Word). | Записывает в нетипизированный файл, связанный с файловой переменной f, одну или несколько записей (их количество задается целым выражением Count) из переменной Buf. |
Procedure ChDir (S: String). | Выполняет смену текущего каталога на каталог, маршрут к которому указан в текстовой переменной S. |
Procedure Close (var F). | Закрывает открытый файл, связанный с файловой переменной F. |
Procedure Erase (var F). | Стирает внешний файл, связанный с файловой переменной F. |
function Eof (var F): Boolean. | Возвращает состояние End-of-file (конец файла) для файла, связанного с файловой переменной F: True — если текущее положение указателя находится в конце файла или файл пустой; False — во всех остальных случаях. |
Function FilePos (var F): Longlnt. | Возвращает текущую позицию для файла, связанного с файловой переменной F. При положении текущего указателя в начале файла возвращает нулевое значение. Для текстовых файлов не используется. |
function FileSize (var F): Longtnt. | Возвращает текущий размер файла, связанного с файловой переменной F. Если файл пустой, возвращает нулевое значение. Для текстовых файлов не используется. |
procedure Flush (var F: text). | Сбрасывает буфер текстового файла, связанного с файловой переменной F и открытого для вывода процедурой Rewrite или Append. Это дает гарантию того, что вся информация, записываемая в файл, будет сохранена во внешнем файле. Не влияет на файлы, открытые для ввода. |
procedure GetDir (D: Byte; varS: String); | Возвращает текущий каталог на заданном диске. Имя каталога находится в строковой переменной S, а диск задается значением параметра D: 0 — текущий диск; 1 — диск А; 2 — диск В; 3 — диск С, и т. д. Если значение, заданное в параметре D, неверное, возвращается результат «Х:». |
function IOResult: Integer. | Возвращает целое значение, являющееся состоянием последней выполненной операции ввода-вывода. Нулевое значение соответствует нормальному завершению операции. |
procedure MkDir (S: String). | Создает подкаталог, имя для которого задается строковой переменной S. |
procedure Read (var R text;v1,…). | Считывает одно или несколько значений из файла, связанного с файловой переменной F, в одну или несколько переменных vl, … |
procedure ReadLn (var R text; v1,…). | То же, что и Read, но выполняет пропуск до начала следующей строки текстового файла. |
procedure Rename (var F, S). | Переименовывает внешний файл, связанный с файловой переменной F, присваивая ему имя, содержащееся в строковой переменной S. |
procedure Reset (var F). | Открывает существующий файл, связанный с файловой переменной F. Текущий указатель устанавливается в начало файла. Текстовый файл открывается только для чтения. |
procedure Rewrite (var F). | Создает и открывает новый файл, связанный с файловой переменной F. Если файл с указанным именем уже существует, старый файл стирается, а на его месте создается новый пустой файл. Текущий указатель устанавливается в начало файла. |
procedure RmDir (S: String). | Удаляет пустой подкаталог, маршрут которого указан в строковой переменной S. |
procedure Seek (var F, N: Longint). | Перемещает текущую позицию в файле, связанном с файловой переменной F, на заданный элемент. Началу файла соответствует нулевое значение N. Для текстовых файлов не используется. |
function SeekEof (var R text): Boolean. | Возвращает состояние «конец файла» для текстового файла, связанного с файловой переменной F. |
function SeekEoln (var R text): Boolean. | Возвращает состояние «конец строки» для текстового файла, связанного с файловой переменной F. |
procedure SetTextBuf (var F. text; var Buf). | Назначает буфер ввода-вывода для текстового файла, связанного с файловой переменной F. Никогда не применяется к открытым файлам, поскольку в этом случае возможны потери данных. |
procedure Truncate (var F). | Усекает размер файла, связанного с файловой переменной F, до текущей позиции. Вся информация после текущего положения указателя теряется. Для текстовых файлов не используется. |
procedure Write (var P. text, vl,…). | Записывает в файл, связанный с файловой переменной F, одно или несколько значений, хранящихся в переменных vl, … Файловая переменная может быть связана не только с текстовым файлом. В случае текстового файла значения могут иметь целый, вещественный, строковый, символьный или булев типы. В случае типизированного файла тип значений должен совпадать с типом компонентов файла. |
Procedure WriteLn (var R text, v1,…). | Делает то же, что Write, но затем записывает в текстовый файл признак конца строки. |