October 21

ФАЙЛЫ.Pascal

Файл это информация , хранящаяся на внешней памяти компьютера , под заданным именем
Имя файла состоят из двух частей из собственного имении расширения
В паскале имеется 3 вида файлов:
- текстовые - типизированные - нетепезированные

Var (name): text, {текстовый файл}
Var (name): file of (type), {типизированные}
Var (name): file, {не типизированные}
Example:
var
f1: text;
f2: file of char
f3: file

Файловые переменные, которые описаны в программе, называют логическими файлами.
Все процедуры и ф-ции обеспечивающие ввод или вывод данных работают только с логическими файлами.
В любой момент времени программе доступен !!ТОЛЬКО!! 1 элемент файла,
на который ссылается указатель текущей позиции файла. Он определяет то место в файле откуда или куда происходит чтение или запись данных. При открытии или создании файла указатель помещается в его начало. А чтение или записывает.
вызывает его автоматическое перемещение.
По способу доступа к файлам разделяют 2-а вида
- файл последовательного доступа:
доступ к элементам выполняется в той же последовательности в которой они записывались.
для поиска нужного элемента необходимо перемещать указатель до тех пор пока он не будет помещен на иском. элемент.
для таких одновременно запрещено чтение и запись.
- файл прямого доступа:
доступ к элементам осуществляется по их адресу.
для таких одновременно возможна чтение и запись.

СХЕМА РАБОТЫ С ФАЙЛАМ


1. Определить переменные файлового типа.
2. К каждому из используемых физических файлов указать переменную файлового типа
3. Инициировать файл - это значит указать направление передачи данных. Работа с файлом возможна если он существует.
Такой файл открывают делая его доступным. В случае отсутсвия файл должен быть создан.
4. Выполнение действий согласно задачи
5. Закрытие файловой переменной

Процедуры и функции

1. assign(Файловая переменная), Имя файла; - Ставит соотвествие физическому файлу логический файл(файл переменную):
assign(f1, 'file.txt'); - имя файла строковый тип, указывается в апострофах.
2. reset(Файловая переменная); - Открывает существующий файл на чтение. И указатель ставит в начало строки.
3. ioresult(Файловая переменная);- Проверяет существует файл на диске.
4. Rewrite(Файловая переменная); - Создает и открывает новый файл для последующей записи данных.
5. Close(Файловая переменная); - Закрывает и сохраняет файл. Без этой переменной файл работать не будет
6. Rename(Файловая переменная); - Переименование физ. файла.
- Rename(f1,'file.txt')
- можно использовать если не открывали файл .В ином случае нужно закрыть и после этого переименовать.
7. Erase(Файловая переменная); - Удаление физического файла. - можно использовать если не открыт файл.
8. Eof(Файловая переменная); - Проверяет проверку не достигнут ли конец файла.

Текстовый файл это последовательность char сгруппированных в строки и заканчивающиеся спец.символом eoln. Текстовые файлы являются файлами последовательного доступа. А типизированного и нетипизированного - произвольного.

append(Файловая переменная); - Открывает существующий файл для дозаписи (курсор устанавливается в конец).

ПРОЦЕДУРЫ ЧТЕНИЯ

Read(Файловая переменная, x1,x2, ... , xn );

Readln(Файловая переменная); - вызов Readln c файловой переменной приводит к перемещению текущей позиции файла на начало следующей строки

Readln(Файловая переменная, x1,x2, ... , xn ); - список ввода содержащий имена переменных разных типов , значения которых процедура read считывает из текстового файла начиная чтение элемента на который установлен текущий указатель. Процедура 'Readln' выполняет те же действия , что и read и дополнительно переход к новой строке

ПРОЦЕДУРА ЗАПИСИ

Write(Файловая переменная);

Writeln(Файловая переменная);

Writeln(Файловая переменная, y1,y2,...,yn); - где y1,y2,...,yn список вывода, содержащий выводимые выражения разных типов, значения которых должны быть записаны в файл , начиная с позиции текущего указателя. Процедура write ln выполняет те же действия , что и write и дополнительно вставляет признак конца строки eoln.

Примеры программ:

Задача написать программу, которая создает новый текстовый файл , содержащий одну строку текста, которая записывается в виде текстовой константы, после должно выводиться значение файла на экран:

program expfile;
var f1: text; st: string;
begin
  assign(f1,'file01.txt');
  rewrite(f1);
  writeln(f1,'Это созданный файл');
  close(f1);
  assign(f1,'file01.txt');
  reset(f1);
  readln(f1,st);
  close(f1);
  writeln('Файл содержит: ',st);
end.
Результат.
Файл содержит: Это созданный файл

Дан файл n2.pas, который содержит текст подсчитать количество строк в этом тексте.

program expfile;
var f1: text; kolvo: integer;
begin
assign(f1,'n2.pas');
reset(f1);
kolvo:=0;
while not eof(f1) do
begin
readln(f1);
kolvo:=kolvo+1;
end;
write('Кол-во строк = ',kolvo);
close(f1);
end.