Файлы Паскаль, файловый тип, Процедуры и Функции в Pascal


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

Любой файл имеет три характерные черты:

  • — наличие имени, дает возможность программе работать одновременно с несколькими файлами.
  • — содержит компоненты одного типа. Типом может быть любое тип кроме типа — файл, то есть не может быть «файл файлов».
  • — длина создаваемого файла не оговаривается и ограничивается только объемом памяти носителя, на котором создается файл.

Файловый тип или файловую переменную можно задать одним из трех способов:

  • <Имя> = FILE OF <тип>
  • <Имя> = TEXT
  • <Имя> = FILE

Например:

В зависимости от способа объявления можно выделить три вида файлов:

  • * Типизированные файлы (создаются с помощью FILE OF)
  • * Текстовые файлы (определяются типом TEXT)
  • * Нетипизированные файлы (определяются типом FILE)
Читать  Понятие о языке программирования Turbo Pascal, главное окно Turbo

В нашем случае F1, F4, F5 — типизированные файлы, F2 — текстовый, F3 — нетипизированный файл.

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

RESET (ф. з.) — инициируется чтения файла (указатель стоит на 0)

REWRITE (ф. з.) — инициирует запись в файл (создает новый, старый удаляет без вопроса)

APPEND (ф. з.) — инициирует запись в ранее созданный файл (указатель в конце, применяется только к текстовым файлам)

Процедура Assign (var f; FileName: String) связывает логический файл f с физическим файлом, полное имя которого задано в строке FileName.

Читать  Одномерные массивы – Понятие массива и его свойства, инициализация массива

Процедура Reset (var f) открывает логический файл f для последующего чтения данных или, как говорят, открывает входной файл. После успешного выполнения процедуры Reset файл готов к чтению из него первого элемента.

Процедура Rewrite (var f) открывает логический файл f для следующей записи данных (открывает выходной файл).После успешного выполнения этой процедуры файл готов к записи в него первого элемента.

Процедура Close (var f) закрывает открытый до этого логический файл. Вызов процедуры Close необходим при завершении работы с файлом. Если по какой-то причине процедура Close не будет выполнено, файл все же будет создан на внешнем устройстве, но содержание последнего буфера в него не будет перенесено. Для входных файлов использование оператора закрытия файла необязательно.

Логическая функция EOF (var f): Boolean возвращает значение TRUE, когда при чтении достигается конец файла. Это означает, что уже прочитано последний элемент в файле или файл после открытия оказался пустым.

Процедура Rename (var f; NewName: String) позволяет переименовать физический файл на диске, связанный с логическим файлом f. Переименование возможно после закрытия файла.

Процедура Erase (var f) уничтожает физический файл на диске, который был связан с файловой переменной f. Файл к моменту вызова процедуры Erase должен быть закрыт.

Функция IOResult: Integer возвращает целое число, соответствующее кодовые последней ошибки ввода-вывода. При нормальном завершении операции функция вернет значение 0. Значение функции IOResult необходимо присваивать любой переменной, так как при каждом вызове функция обнуляет свое значение. Функция IOResult работает только при выключенном режиме проверок ошибок ввода — вывода или с ключом компиляции {$ I-}.

Читать  Тема 3 Паскаль: Указания разветвления, Составной оператор и оператор перехода

Функция SeekEOLn (var f: Text): Boolean возвращает значение True, если до конца строки остались только пробелы.

Функция SeekEOF (var f: Text): Boolean возвращает значение True, если до конца файла остались сроки, заполненные пробелами.

Текстовые файлы представляют собой последовательность строк, а строки — последовательность символов. Строки имеют переменную длину, каждая строка завершается признаком конца строки. С признаком конца строки связана функция EOLn (var T: Text): Boolean, где Т — имя текстового файла. Эта функция принимает значение TRUE, если достигнут конец строки, и значение FALSE, если конец строки не достигнуто.

Для операций над текстовыми файлами, кроме перечисленных, определены также операторы обращения к процедурам:

  • ReadLn (T) — пропускает срока до начала следующей;
  • WriteLn (T) — завершает срока файла, в которую производится запись, признаком конца строки и переходит к началу следующей.

Для работы с текстовыми файлами введена расширенная форма операторов ввода и вывода. оператор

Read (T, X1, X2, … XK)

Эквивалентный группе операторов

Здесь Т — текстовый файл, а переменные х1, х2, … Хк могут быть переменными целого, действительного или символьного типа, или строкой. При чтении значений переменных из файла они преобразуются из текстового представления в машинное.

Читать  Лекция Паскаль 6 – Условные операторы, логика в Паскаль

Оператор

Write (T, X1, X2, … XK)

Эквивалентный группе операторов

Begin

Write (T, X1)

Write (T, X2)

Write (T, XK) end;

Здесь Т — также текстовый файл, но переменные Х1, Х2, … ХК могут быть целого, действительного, символьного, логического типа или строкой. При записи значений переменных в файл они превратятся из внутреннего представления в текстовый.

К текстовым файлам относятся стандартные файлы INPUT, OUTPUT.

Рассмотренные ранее операторы ввода-вывода является частным случаем операторов обмена с текстовыми файлами, когда используются стандартные файлы ввода-вывода INPUT, OUTPUT.

Работа с этими файлами имеет особенности:

  • — имена этих файлов в списках ввода-вывода не указываются;
  • — применение процедур Reset, Rewrite и Close к стандартным файлов ввода-вывода запрещено;
  • — для работы с файлами INPUT, OUTPUT введен разновидность функции EOLn без параметров.

PASCAL вводит дополнительные процедуры и функции, применимые только к текстовым файлам, это SetTextBuf, Append, Flush, SeekEOLn, SeekEOF.

[Всего голосов: 3    Средний: 5/5]