Основы программирования. Файлы. Рекурсия - 12 стр.

UptoLike

Составители: 

14
Пример 4. Составить процедуру, сортирующую методом «пузырька» эле-
менты файла целых чисел по возрастанию.
Решение.
При сортировке методом «пузырька» обмениваются соседние элементы, что
удобно для файловой сортировки. Будем считывать из файла за один раз пару
элементов и, если их следует поменять местами, записывать эти элементы в об-
ратном порядке. Перед каждой
операцией считывания/записи будем позициони-
ровать файловый указатель с помощью операции Seek.
type RealFile=file of real;
procedure SortFile(var f: RealFile);
var i,j: integer;
x,y: real;
begin
for i:=FileSize(f)-1 downto 1 do
for j:=0 to i-1 do
begin
Seek(f,j);
read(f,x,y);
if x>y then
begin
Seek(f,j);
write(f,y,x);
end;
end;
end;
Следует обратить внимание на уже отмеченный факт, что файловую пере-
менную можно передавать
в подпрограмму только по ссылке.
Отметим также, что задачу можно решить и так: считать данные из файла в
массив, отсортировать его, после чего записать полученный массив в файл. Оче-
видно, сортировка в оперативной памяти пройдет быстрее, и такой метод пред-
почтителен для небольших файлов. Однако если содержимое файла не помещает-
ся
целиком в оперативную память, то сортировка непосредственно в файле
единственный путь.
2.6 Текстовые файлы
Напомним, что текстовые файлы имеют тип text и состоят из строк разной
длины, разделяемых маркером конца строки EOLN. Символ с кодом 26 воспри-
нимается как признак конца текстового файла. Будем называть его маркером кон-
ца текстового файла и обозначать EOF. При обращении к файлу из программы
считается, что в конце файла обязательно находится символ
EOF, даже если он
отсутствует в физическом файле. Например, файл, состоящий из четырех строк