При отладке даже небольших программ может потребоваться их выполнить не раз, не два и даже не десять. При этом ввод исходных данных с клавиатуры может стать утомительным и испортить все удовольствие от процесса. Удобнее заранее подготовить исходные данные в текстовом файле и считывать их в программе. Помимо всего прочего это дает возможность не торопясь продумать, какие данные требуется ввести для полной проверки программы, и заранее рассчитать, что должно получиться в результате.
Результат работы программы тоже бывает полезно выводить не на экран, а в текстовый файл для последующего неспешного анализа. Ниже приведена версия предыдущей программы, использующая файлы:
program num_positive_2;
const n = 10;
var
f_in, f_out : text; { 1 }
a : array [1 .. n] of integer;
i, imax, imin, ibeg, iend, count : integer;
begin
assign(f_in, 'E:\input.txt'); { 2 }
reset(f_in); { 3 }
assign(f_out, 'E:\output.txt'); { 4 }
rewrite(f_out); { 5 }
for i :=1 to n do read(f_in, a[i]); { 6 }
imax := 1; imin := 1;
for i:=1 to n do begin
if a[i] > a[imax] then imax := i;
if a[i] < a[imin] then imin := i;
end;
if imax < imin then ibeg := imax else ibeg := imin;
if imax < imin then iend := imin else iend := imax;
count := 0;
for i := ibeg + 1 to iend - 1 do
if a[i] > 0 then inc(count);
writeln(f_out, ' Количество положительных:', count); { 7 }
close(f_out); { 8 }
end.
Для того чтобы использовать в программе файлы, необходимо сделать следующее:
1. Объявить файловую переменную (оператор 1).
2. Связать ее с файлом на диске (операторы 2 и 4).
3. Открыть файл для чтения (оператор 3) или записи (оператор 5).
4. Выполнить операции ввода-вывода (операторы 6 и 7).
5. Закрыть файл (оператор 8).
В этой программе объявляются две переменные f_in и f_out стандартного типа «текстовый файл». Процедура assign связывает эти переменные с файлами на диске, путь к которым задается с помощью строк символов. Если полный путь не указан, предполагается, что файл находится в текущем каталоге. Процедура reset открывает файл для чтения, a rewrite — для записи. Если файл, который требуется открыть для записи, существует, он стирается и создается заново.
Входной файл input.txt можно создать в любом текстовом редакторе. Он, естественно, должен существовать до первого запуска программы. Если файл, открытый для чтения, не существует, выдается сообщение об ошибке.
При вводе из файла и выводе в файл используются процедуры read, readln, write и writeln, первым аргументом в которые передается файловая переменная. Файл, в который выполняется запись, после окончания работы нужно обязательно закрывать с помощью процедуры close, иначе информация может быть потеряна.