УДК 681.3.06 f
ФАЙЛЫ ДАННЫХ ПРЯМОГО И ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА. СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ
Л.К. Биболова
Павлодарский государственный университет им. С. Торайгырова
Мак,алада пике.чей жоне пйзбеюпелген режимдег1 файлдармен жумыапы уйъшдастыру к,арастырылады.
В статье рассматривается организация работы с файлами прямого и последовательного доступа.
The article deals with the organization file work of direct and consistent
Одним из важнейших и практически значимых разделов при изучении языков программирования является работа с файлами.
При традиционном подходе «лекция - практические задания» понятие файла и операции с файлами трудно воспринимаются. Много времени уходит на изложение теоретического материала.
К моменту изучения данного раздела обучаемые уже имеют некоторый опыт программирования, поэтому нужно шире привлекать их самих к изучению теоретического материала.
В соответствии с данной идеей предлагается нижеследующий набор примеров и заданий для работы с файлами последовательного и прямого доступа.
В начале работы приведены краткие теоретические сведения, необходимые при разборе примеров и для выполнения предложенных заданий.
Удобным способом сохранения информации, получаемой во время выполнения программы, служит запись этой информации на магнитный носитель: диск, гибкий диск. Для записи информации на внешний носитель в языках программирования предусмотрены специальные объекты - файлы.
Файл [1] - набор данных, который имеет свое имя и размещается в каксм-либо месте: на жестком диске, дискете, экране или вводится с клавиатуры.
Данные, вводимые с клавиатуры или выводимые на экран дисплея, являются стандартным текстовым файлом. Файл*ы данных на жестком диске или дискете будем называть внешними. На практике целесообразность применения файлов диктуется следующими причинами:
- большие объемы данных, подлежащих обработке, могут быть заранее подготовлены и, главное, неоднократно применяться и модифицироваться, если их записать в отдельный файл.
- файл данных может быть подготовлен другой программой, становясь, таким образом, связующим звеном между разными задачами.
По способу доступа различают файлы последовательного и прямого доступа.
Файлом последовательного доступа [1] - называется файл, к элементам которого обеспечивается доступ в той последовательности, в какой они записывались.
Файлом прямого доступа [1] - называется файл, доступ к элементам которого осуществляется по адресу элемента.
Средства обработки фатов
Для организации ввода-вывода в программе определяются специальные переменные (файловые типы) и процедуры работы с файлами.
Файловые переменные необходимо объявить в разделе переменных следующим образом:
var f,ff: text; {text - это файл из символов}
В разделе операторов необходимо связать физическое имя - путь к файлу и его полное имя.
Например: assign(f,'f.txt'); assign(ff,'a:\p.txt'); assign(f,'c:\prog.pas');.
Операции с текстовыми файлами в Pascal программах можно разбить на следующие группы:
- «открыть» файл и объявить, для чего он открыт (для ввода - reset;
- для вывода - rewrite;
- для ввода, корректировки и последующего вывода - append)
Формат операторов следующий:
Reset (идентификатор файла); Reset (f);
Rewrite (идентификатор файла); Rewrite (f);
Append (идентификатор файла); Append (f).
В операторах ввода-вывода необходимо указать идентификатор файла и список переменных.
Оператор ввода - Readln(f,a,b,c);
Оператор вывода - Writeln(ff, а, Ь, с); «Закрыть» файл в конце программы: Close (идентификатор файла); Close (f); Close (ff):
Функция eof - позволяет вводить с клавиатуры в файл любое количество данных, после последнего данного нажимаются клавиши <ctrl> + <z>. При чтении из файла используется для анализа на признак конца файла. К языковым средствам также относятся процедуры: Rename (f,newname) - переименование файла; Erase (f) - удаление файла. Рассмотрим примеры программ с текстовыми файлами. Пример 1. Составить программу, обеспечивающую создание на диске текстового файла и запись в него текста. Имя создаваемого файла и количество строк в нем вводится с клавиатуры, program creat_txt; type fil=text; var f:fil;
i,count:integer; inf:string;
name:string[12];
begin
write('BBeflH имя файла?');геас11п(пате); assign(f.name); {связь логического и физического имени} rewrite(f); {открыть файл для записи}
writeln('введи кол-во 3annceii?');readln(count); {считать кол-во записей} for i: = l to count do {запись информации в файл} begin
шШе1п('введи инфopмaцию,);readIn(inf); writeln(f,inf); end;
close(i); {закрыть файл} end.
Пример 2. Составить программу, обеспечивающую создание на диске текстового файла и запись в него текста. Имя создаваемого файла вводится с клавиатуры, запись текста производится до тех пор, пока не встретится "enter".
program creat_txt; type fil=text; var Frill; inf:string; name:string[12]; begin
\угке('введи имя фaйлa?');readln(name); assign(f,name); {связь логического и физического имени} rewrite(f); {открыть файл для записи}
writeln('введи информацию, для окончания ввода нажмите "ENTER'"); writeln;
repeat Л
write(':>'); readln(inf); writeln(f,inf); until inf=";
close(f); {закрыть файл}
end.
Для закрепления практических навыков работы с файлами можно предложить выполнить следующие задания самостоятельно.
Задание 1. Составить программу, в которой открывается созданный в первом примере файл и содержимое файла распечатывается на экран а) по количеству записей б) по концу файла.
Задание 2. Составить программу, в которой производится добавление записей к существующему файлу.
Задание 3. Используя программы, полученные в приведенных примерах и в вышеизложенных заданиях, составить программу, которая выполняет работу с процедурами создания, записи и добавления записей в файл. Запрос на выполнение определенной процедуры выдается основной программой через меню в начале программы.
По всем заданиям представить отчет по форме:
1. Алгоритм работы программы.
2. Текст программы.
3. Протокол работы.
В Паскале имеются три класса файлов: типизированный файл, текстовый файл и не типизированный файл.
Любой файл, представляет собой линейную последовательность элементов, каждый из которых имеет тип элемента (или тип записи) файла. Каждый элемент файла имеет номер. Нумерация элементов файла начинается с нуля.
Обычно доступ к файлам организуется последовательно, то есть, когда элемент считывается с помощью стандартной процедуры Read или записывается с помощью стандартной процедуры Write, текущая позиция файла перемещается к следующему по порядку элементу файла.
Типизированные файлы
К типизированным файлам относятся файлы определенного типа, чаще всего это файлы, состоящие из записей. В программе они описываются следующим образом.
Type
Filerec = record
end;
var
f: file of Filerec;
К типизированным файлам можно организовать прямой доступ с помощью стандартной процедуры Seek, которая перемещает текущую позицию файла к заданному элементу. Для определения текущей позиции в файле и текущего размера файла можно использовать стандартные функции:
FilePos (f) - возвращает для файла текущую позицию;
FileSize (f) - возвращает размер(количество записей файла).
Когда программа завершает обработку файла, он должен закрываться с помощью стандартной процедуры Close. После полного закрытия файла связанный с ним внешний файл обновляется. Затем файловая переменная может быть связана с другим внешним файлом.
По умолчанию при всех обращениях к стандартным функциями процедурам ввода-вывода автоматически производится проверка на наличие ошибок. При обнаружении ошибки программа прекращает работу и выводит на экран сообщение об ошибке. С помощью директив компилятора {$1+} и {$1-} эту автоматическую проверку можно включить или выключить. Когда автоматическая проверка отключена, то есть когда прогедура или функция была скомпилирована с директивой {$1-}, ошибки ввода-вывода, возникающие при работе программы, не приводят к ее останову. При этом, чтобы проверить результат выполнения операции ввода-вывода, нужно использовать стандартную функцию IOResult.
Для очистки ошибки, которая может произойти, вы можете вызвать функцию IOResult. Если вы это не сделали, и текущим состоянием является {$1+}, то из-за оставшейся ошибки IOResult следующая операция ввода-вывода завершится с ошибкой.
Рассмотрим примеры работ с типизированными файлами
Пример 1. Составить программу, обеспечивающую создание на диске типизированного файла и запись в него текста. Имя создаваемого файла и
количество записей в нем вводится с клавиатуры.
„ . ^ С. Тооа^рьоов
program creat_tip;
uses crt; type fil= record
fio:string[20];
oa!:byte;
атындш-Ы ПМУ-дщ академик С.Бейсембаев атындагы тылы-'и
лПХ.
orus:byte; ofis:byte;
end; N
var
f:file of fil;
i,count:integer; inf:string; name:string[l 2]; work:fil; begin
write('BBefln имя фaйлa?');readln(name);
assign(f,name);
rewrite(f);
\угке1п0количество 3ariHceH?'):readln(count); for i:=l to count do with work do begin
шгйе1п('введи фaмилию');readln(flo);
writeln('BBeAH оценки no алгебре, русскому, физикe');readln(oal,oшs,ofls); write(f.work); end; close(f); end.
Пример 2. Составить программу, которая открывает существующий типизированный файл и распечатывает содержимое файла на экран по признаку конца файла (в листинге программы в виде комментариев предусмотрена возможность распечатывания содержимого файла по количеству записей), i:: program read_tip; ,uses crt; type fil= record
fio:string[20]; oal:byte; orus:byte; ofis:byte; end;
var
f:file of fil;
i,count:integer; inf.string;
name:string[l2];
work:fil;
begin
\мйе('имя фaйлa?,);readln(name);
assign(f,name);
reset(f);
{шп1е1п('количество 3anHcefi?');readln(count);} seek(f,0);
{for i:=l to count do with work do } while (not eof(f)) do begin
read(f.work);
with work do ^
begin
wnteln(fio:20.oal:2.orus:2,ofis:2): end: end:
close(f):
end.
Подобное построение материала позволяет не только освоить работу с файлами, а также повторить и закрепить такие сложные темы, как работа с процедурами и записи.
ЛИТЕРАТУРА
1. Попов В.П. Turbo-Pascal 7.0- M: Финансы и статистика. 1996.-458 с.
2. Поляков Д.Б., Круглое И.Ю. Программирование в среде Турбо-Паскаль,- М. Унитех. 1991 - 358 е.: ил.
3. Зуев Е.А. Язык программирования Turbo-Pascal 6.0 - М.: Унитех, 1992.298 е.: ил.
4. Епанешников А., Епанешников В. Программирование в среде Turbo Pascal 7.0. 3-е изд. Стер,- М.: ДИАЛОГ-МИФИ. 1995,- 288 с.