Файлы будут подробно рассмотрены несколько позже. Здесь же будут приведены лишь основные сведения, необходимые для организации ввода из текстового файла.
Текстовый файл, содержащий исходные данные, ничем не отличается от файла, содержащего текст Паскаль-программы. Формирование этих файлов производится одним и тем же способом. Если в такой файл записываются числовые данные, то здесь должны быть выполнены лишь два основных требования:
- числа должны иметь форму правильных констант;
- разделителем между числами являются один или несколько пробелов.
При этом не имеет значения, сколько чисел записано в каждой строке текстового файла.
Предположим, что файл на диске имеет имя 'Mas.dat'. Программа ввода из этого файла может иметь вид:
ConstNmax = 500;
TypeAr = array[1..Nmax] of real;
Vari,n : word;
X : Ar;
F : text;
Begin
Assign(F,'Mas.dat');
Reset(F);
Read(F,n); Writeln('n= ',n);
Fori:=1 to n do
Read(F,x[i]);
Close(F);
Здесь F - имя текстового файла, объявленное в разделе Var(внутреннее имя файла);
Assign - процедура, устанавливающая связь между внутренним именем F и именем файла на диске (внешним именем);
Reset, Close - процедуры открытия и закрытия файла.
По объявлению
Var F : text;
в программе создается файловая переменная F, в состав элементов которой входит, в частности, информация об имени файла на диске. Эта информация содержится в процедуре Assign и заносится в переменную F при открытии файла с помощью процедуры Reset. При срабатывании процедуры Close информация о внешнем имени файла удаляется из переменной F.
Внешнее имя файла формируется по правилам, принятым в операционной системе MS DOS.
В файле Mas.dat можно не размещать значение переменной n (количество элементов массива), возложив определение этого значения непосредственно на программу ввода.
Const Nmax = 500;
TypeAr = array[1..Nmax] of real;
Vari,n : word;
X : Ar;
F : text;
Begin
Assign(F,'Mas.dat');
Reset(F);
n:=0;
While not SeekEof(F) do
Begin
n:=n+1; Read(F,x[n]);
End;
Close(F);
В Турбо Паскале имеются две логические функции, выходным значением которых является true при достижении конца файла: Eof(F) и SeekEof(F) (eof - сокращение слов End Of File). Как будет показано позже при рассмотрении текстовых файлов, при вводе числовых массивов более предпочтительна функция SeekEof(F).
В приведенной выше программе цикл While работает до тех пор, пока не будет достигнут конец файла F.