logo search
2012_METODICh_POSOBIE_PASCAL

Лабораторная работа № 12. Обработка информации из файлов последовательного доступа.

При выполнении работы необходимо знать:

Теоретический минимум:

Типы данных, о которых шла речь до сих пор, предназначены для манипулирования информацией, содержащейся в оперативной памяти компьютера. Однако известно, что оперативная память способна хранить информацию только временно – пока компьютер включен. Очевидно, что для эффективной работы с большим количеством данных необходим какой-то способ продолжительного хранения информации, чтобы ею можно было воспользоваться после выключения и включения компьютера снова. И такой способ существует. Для долговременного хранения информация из оперативной памяти переносится в файлы.

Файл (от англ. file-досье, документ) - это произвольная последовательность данных некоторой длины, имеющая имя. Другими словами, файл - это поименованное место на внешнем носителе.

Кроме «долговременности» у файлов имеется еще одна особенность: их неопределенный объем (или длина). Если для каждого из прочих структурированных типов всегда точно определено, сколько элементов содержит то или иное значение, то сколько элементов в файле при объявлении файлового типа не указывается. Длина файла в процессе выполнения программы может изменяться. Максимальная длина файла ограничивается только свободным пространством на диске. Длина файлов измеряется в байтах.

В языке предусмотрена возможность определять файловые типы и файловые переменные. Файлы могут быть разных видов: текстовые, типизированные, нетипизированные.

Таблица 12. Объявление файловых переменных для файлов различных видов.

Вид файла

Содержимое файла

Примеры описания переменных

Типизированный

Совокупность элементов, принадлежащих к любому одному типу, кроме файлового

f1: file of Integer;

f2: file of Real;

f3: file of Boolean;

Текстовый

Совокупность строк

f: text;

Нетипизированный

Последовательность элементов произвольного типа

f: file;

Текстовые файлы можно создать в текстовом редакторе и ввести туда некоторый текст (произвольный набор символов) прямо с клавиатуры. Компонентами текстового файла являются строки. Считывать информацию из текстового файла можно построчно или посимвольно.

Текстовые файлы являются файлами последовательного доступа. Мы можем считывать их только последовательно, с первой строки до последней. Запись информации в текстовый файл происходит либо от начала файла (при этом вся информация, находившаяся там ранее, стирается), либо в конец файла (добавление информации в файл).

Текстовые файлы удобны тем, что мы можем заранее ввести в них всю необходимую информацию в редакторе.

Типизированные файлы содержат информацию определенного типа. Компонентами файла являются элементы одного типа, кроме типа файл. Типизированные файлы можно заполнить данными только из программы (не в редакторе). Числа преобразуются в двоичный вид.

Типизированные файлы являются файлами прямого доступа, то есть мы можем обратиться к любой компоненте файла с номером N (указатель текущей позиции файла настраивается на заданную компоненту).

Файл в один и тот же момент времени может находиться либо в состоянии чтение, либо в состоянии запись, либо в состоянии чтения и записи одновременно. В каждый момент может быть доступен только один элемент файла.

Схема работы с файлами в программе в любом языке программирования всегда одна и та же.

  1. Сначала файл открывается. Это означает, что программа нашла файл и подготовила его для считывания данных или записи. Такое разделение режимов работы удобно тем, что в режиме чтения нельзя изменить содержимое файла, а в режиме записи нельзя читать данные из файла.

  2. Осуществляется обработка данных в файле: они либо меняются, либо удаляются, либо добавляются.

  3. Файл закрывается. Это означает, что заканчиваются все операции изменения данных и файл становится доступен для обработки другим приложением.

Рассмотрим команды работы с файлами, некоторые процедуры и функции, необходимые для обработки информации из файлов.

Команды для текстовых файлов.

Чтение из текстового файла осуществляется посимвольно или построчно:

Read(f, x); - чтение из файла одного символа в переменную x.

Read(f, x1, x2,x3,..xn); - чтение из файла нескольких символов в переменные.

Readln(f, S); - чтение из текстового файла одной строки в переменную S типа String.

Append(f); -открытие текстового файла для добавления информации в конец файла.

Writeln(f, S); - запись в текстовый файл строки S.

Используя изученные команды работы с файлами, приведем пример обработки данных из текстового файла.

Задача 12.

Из двух текстовых файлов создать третий, в котором чередуются одна строка из первого файла и по три строки из второго файла, причем в строках из первого файла точки заменить на *.

Решение: создадим в редакторе два текстовых файла: 1.txt и 2.txt и занесем в каждый из них произвольные строки, например:

Содержимое файла 1.txt

  1. В чем измеряется длина файла?

  1. Какой вид файла позволяет

обратиться к любой компоненте?

Содержимое файла 2.txt

В сантиметрах.

В байтах.

В битах.

Типизированный.

Текстовый. Нетипизированный.

Текст программы к задаче 12. Схема программы к задаче 12.

Program Ex_10;

Uses Crt;

Var f1, f2, f3:text;

i, j: integer;

Begin

ClrScr;

Assign(f1, ‘g:\sum\1.txt’);

Assign(f2, ‘g:\sum\2.txt’);

Assign(f3, ‘g:\sum\3.txt’);

Reset(f1);

Reset(f2);

Rewrite(f3);

While not Eof (f1) do begin

Readln (f1, x);

Readln(f2, y1);

Readln(f2, y2);

Readln(f2, y3);

For i:=1 to Length(x) do

If x[i]=’.’ then x[i]:=’*’;

Writeln(f3, x);

Writeln(f3, y1);

Writeln(f3, y2);

Writeln(f3, y3);

End;

Writeln(‘Результирующий файл:’);

Reset(f3);

While not Eof(f3) do begin

Readln(f3, x);

Writeln(x);

End;

Close(f3);

Readln;

End.