Чтение и запись - две самые распространенные операции, выполняемые при работе с файлами. Для их осуществления применяются специальные функции файлового ввода/вывода.
Итак, для выполнения операции чтения или записи необходимо произвести следующие действия:
1. Объявить файловую переменную необходимого типа.
2. При помощи функции AssignFile связать эту переменную с требуемым
файлом.
3. Открыть файл при помощи функций Append, Reset, Rewrite.
4. Выполнить операции чтения или записи. При этом, в зависимости от сложности задачи и структуры данных, может использоваться целый ряд вспомогательных функций.
5. Закрыть файл при помощи функции СloseFile.
Для контроля за текущей позицией в файле применяются две основные функции. Функция EOF(F) возвращает значение True, если достигнут конец файла. Функция EOLN(F) аналогично сигнализирует о достижении конца строки. Естественно, в качестве параметра в функции необходимо передавать файловую переменную.
Процедура Seek(var F; N: Longint); - обеспечивает смещение текущей позиции на N элементов. Размер одного элемента в байтах зависит от типа данных файла (от типизированной переменной).
Erase(f) - удаляет файл
FilePos(f) - возвращает текущую позицию чтения/записи в файл
Flush(f) - сбрасывает кэшированные файловые операции на диск
Пример 3. Дан файл с именем «shisla.txt», содержащий целые числа. Проверить, является ли файл упорядоченным (отсортированным).
program hhh;
var
f:text;
n,i,K:integer;
begin
assign(f,'shisla.txt');
reset(f);
readln(f,N);
K:=N;
while not eof(f) do
begin
readln(f,N);
if K>N then
begin
writeln('file ne uporyadochen');
exit;
end
else
K:=N;
end;
writeln('file uporyadochen');
readln;
close(f);
end.
Пример 4.Дан файл, содержащий данные о сотрудниках: фамилия, год, месяц и день рождения. Выбрать и записать в другой файл данные тех сотрудников, которые родились в год быка, а затем выбрать тех сотрудников, которые родились осенью.
program t2;
label l1;
type
sotryd1=record
fam:string[8];
godrog:integer;
mes:integer;
den:integer;
end;
var
f1,f:text;
sotryd:sotryd1;
i:integer;
begin
assign(f,'a:\ishod.txt');
reset(f);
assign(f1,'a:\vish.txt');
append(f1);
writeln(f1,'Список сотрудников, родившихся в год быка: ');
if (sotryd.mes=9) or (sotryd.mes=10) or (sotryd.mes=11) then
writeln(f1,sotryd.fam,sotryd.mes);
end;
close(f);
close(f1);
end.
Пример 5.Составить программу для создания типизированного файла, содержащего информацию о студенте: имя, возвраст, является ли читателем городской библиотеки, № зачетки, группа.
program F_stud;
type
strud=record
name:string[8];
Age:integer;
Membbibl:boolean;
N_zachetki:integer;
Gruppa:string[4];
end;
var f:file of stud;
student:stud;
begin
AssignFile(f, 'c:\MyFile.rec');
Rewrite(f);
student.Name := 'Vitaly'; // или readln(student.name);
student.Age := 17; // или readln(student.Age);
student.Membbibl := True; // или readln(student.Membbibl);
student.N_zachetki := 12345; // или readln(student.N_zachetki);
student.gruppa := ‘2T2’; // или readln(student.gruppa);
Write(f, student);
Closefile(f);
End.
ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
Любая программа, выполняемая на ЭВМ, обрабатывает данные с целью получения требуемого результата. В современных языках программирования имеются базовые типы данных и средств построения структурных типов данных из базовых; они облегчают составление программ для решения сложных задач,однако не избавляют программиста от проблем разработки алгоритмов и выбора подходящей структуры данных. При разработке алгоритма выбирается некоторая удобная абстрактная структура данных и алгоритм разрабатывается в терминах операций над этим абстрактным типом данных. После разработки алгоритма выбирается представление абстрактной структуры данных с помощью структуры данных языка программирования.