Научная статья на тему 'Файлы данных прямого и последовательного доступа. Создание и использование'

Файлы данных прямого и последовательного доступа. Создание и использование Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
2582
29
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Биболова Л.К.

В статье рассматривается организация работы с файлами прямого и последовательного доступа.Мақалада тікелей және тізбектелген режимдегі файлдармен жұмысты ұйымдастыру қарастырылады.The article deals with the organization file work of direct and consistent

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Файлы данных прямого и последовательного доступа. Создание и использование»

УДК 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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.