Под чтением файла понимается ввод данных из внешнего файла в оперативную память ПЭВМ. Этот файл называют входным файлом. Для чтения файла необходимо выполнить следующие действия:
1. Описать файловую переменную и строковое выражение, введя его имя.
2. Записать процедуру Assign.
3. Открыть файл для чтения (Reset).
4. Считать данные из файла (Read).
5. Закрыть файл (Close).
Технологию работы с чтением файлов рассмотрим на примере комплексной задачи создания и последующего чтения файла.
ПРИМЕР 2.Составить Паскаль-программу вычисления значений функции
yi= xi +3; i=1,n; n£3.
Затем предусмотреть вычисление :
xsi=xki +x k-1i;
ysi=yki+ y k-1i
для Кнаборов данных xki в пределах каждого шага цикла. Обозначения в этих выражениях надо понимать так:
xki, yki- текущие значения, т.е. значения, соответствующие К-мунабору xik ;
xk-1i, yk-1i -значения, соответствующие предыдущему набору. Например, если К=2(второй набор), то xk-1i, yk-1iотносятся к первому набору. Полученные результаты для каждого набора данных сначала сохранить во вновь создаваемом файле f1,а затем использовать их при вычислении xsiи ysi.
Для тестирования программы использовать следующие исходные данные:
1. Алгоритм представлен в постановке задачи.
2. Схема машинного алгоритма должна содержать блоки организации циклов и проверок ( здесь она опущена ).
3. Таблица идентификаторов:
xi
yi
xsi
ysi
n
k
xt[i]
yt[i]
Xs[i]
ys[i ]
n
k
4. Составляется текст Паскаль-программы с учётом алгоритма и таблицы идентификаторов:
Program WrRead;
Uses CRT,Printer;
Type (*раздел описания типа *)
m=Array[1..50] of real;
(*раздел описания переменных*)
Var
n,i,k:integer;(*К-№ набора исх.данных)
yt,xt,xs,ys:m; (* массивы *)
f1:text; (* файловая переменная *)
sv:string; (* строковое выражение *)
Begin (* раздел операторов *)
ClrScr;
write(' Ввести имя SV=');
read(sv);
assign(f1,sv); {присвоение файлу f1 имени строк.выр.SV}
Writeln(' Ввести n,k');
read(n,k);
for i:=1 to n do
begin
write(' Ввести xt[',i,']=');
read(xt[i]);
xs[i]:=0; (*подготовка к суммированию *)
ys[i]:=0 (* при к=1 *)
end;
if k>1 then
begin
reset(f1); (*открытие файла для чтения*)
writeln('чтение данных из файла f1:');(*Это заголовок*)