Стандартные текстовые файлы

Процедуры и функции для работы с текстовыми файлами

Файловые типы

Работа с текстовыми файлами. Тип запись. Алгоритмы сортировки

Лекция 6

Рассмотрим только работу с текстовыми файлами. Файловые переменные для текстовых файлов описываются с помощью типа Text.

 Пример

VAR

F:Text;

Файловые переменные являются структурированными и содержат различную информацию, необходимую для работы с файлом на диске, с которым они связаны. Это имя файла, его размер, текущая позиция в файле и т.д. Если вы пишите процедуры или функции для работы с файлами, передавать в них файловые переменные можно только с модификатором VAR.

Процедура или функция Описание
Процедура Assign (F,<Имя>) Назначает имя файла файловой переменной F
Процедура Reset (F) Открывает файл для чтения. Если файла с назначенным именем нет, возникает ошибка ввода-вывода
Процедура Rewrite (F) Создает файл и открывает его для записи. Если файл уже есть, он перезаписывается
Процедура Close (F) Закрывает файл, открытый ранее процедурами Reset или Rewrite
Процедура Read [ Ln ](F,<Список переменных>) Читает из файла значения указанных переменных. ReadLn после чтения значений пропускает все оставшиеся данные до конца текущей строки и переходит на следующую
Процедура Write [ Ln ](F,<Список значений>) Работает, как и обычный оператор вывода, но данные записываются в текстовый файл, задаваемый переменной F
Функция Eof (F) Возвращает истину, если достигнут конец файла при чтении

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

Входной файл (Test. txt) Двумерный массив (A) Выходной файл (Out. txt)
1.2 5 7.3 3.3 9 4 8 6 1.1 ...         13.5 16.3 15.1 ...
  1.2   7.3
  3.3    
      1.1

 Текст программы

VAR

F:Text;

n,i:Integer;

A:ARRAY [1..100,1..3] OF Real;

BEGIN

Assign(F,'Test.txt');

Reset(F);

n:=0;

WHILE NOT Eof(F) DO

BEGIN

Inc(n);

Readln(F,A[n][1],A[n][2],A[n][3]);

END;

Close(F);

Assign(F,'Out.txt');

Rewrite(F);

FOR i:=1 to n DO

Writeln(F,A[n][1]+A[n][2]+A[n][3]);

Close(F);

END.

В языке Паскаль имеется два стандартных текстовых файла: Input и Output.

Input – это файл для ввода, чтение из которого равносильно вводу данных с клавиатуры. Например, если в программе используется оператор ввода Readln (a, b), то он выполняется аналогично оператору Readln (Input, a, b).

Файл Output – стандартный текстовый файл для вывода, запись в который приводит к выводу данных на экран. Аналогично предыдущему оператор вывода Writeln (a, b) будет выполняться как Writeln (Output, a, b).

Файлы Input и Output можно использовать только в консольных приложениях.

Возвращаясь к предыдущему примеру (в котором каждая запись представляла три вещественных числа), заметим, что не всегда данные имеют такую однородную структуру. Часто каждая запись представляет собой разнотипные данные о некотором объекте. К примеру, можно представить себе список студентов института. Для каждого студента необходимо задать такие данные, как фамилия, имя, отчество, факультет, на котором он обучается, номер группы и т.д., как показано в следующей таблице.

Фамилия Имя Отчество Факультет Группа
Иванов Петр Николаевич ММ  
Петров Иван Алексеевич ЭТ  

Каждый атрибут имеет свой тип. Как же можно описать такой список студентов в программе? Это можно сделать, например, с помощью нескольких массивов:

 Пример

VAR

FIO:ARRAY [1..100,1..3] OF STRING;

Fakultet:ARRAY [1..100] OF (MM,RT,MT, …);

Group:ARRAY [1..100] OF Integer;

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: