Работа с текстовыми файлами. Физические файлы и файловые переменные. Подпрограммы открытия и обработки файлов

Страницы работы

Содержание работы

Лабораторная работа №4

Работа с текстовыми файлами

Цель работы: Изучить перевод текста из обычной формы в шестнадцатеричный формат.

Краткие теоретические сведения.

1. Физические файлы и файловые переменные

Оксфордский толковый словарь английского языка представляет слово “файл” так:

·  это любой из разнообразных типов выдвижных ящиков, полок, коробок и т.п., как правило, с металлическим стержнем для хранения бумаг вместе и в порядке так, чтобы их легко было отыскать;

·  это ряд людей или вещей, расположенных друг за другом. 

Авторы операционной системы MSDOS называют файлом именованную область на внешнем носителе информации, например на диске. Эта область содержит какую-то информацию, например программу или входные данные к ней. Но как обработку этой области задать в Паскаль-программе? На этот вопрос мы попробуем ответить на примере системы Turbo Pascal.

Система программирования Turbo Pascal, как и другие, имеет в своем составе целый набор средств работы с файлами – систему ввода-вывода. Язык Turbo Pascal  не имеет операторов, которыми описывается обработка файлов. Вся обработка задается с помощью программ и переменных, собранных в несколько библиотек, или модулей. Так, нам уже известны такие процедуры, как Readln и Writeln.

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

В Паскаль-программе файл задается именем файловой переменной, т.е.  переменной,  которая служит представителем файла в программе. Тип в ее определении задает способ, посредством которого рассматривается и обрабатывается файл. Далее мы будем называть области на внешних носителях физическими файлами, а под словом “файл” понимать именно файловую переменную.

Практически у всех подпрограмм первым параметром является имя файловой переменной. Пусть далее имя f обозначает файловую переменную. Хотя никто не мешает давать файловым переменным совсем другие имена, например filevariableили inpfil и т.п.

Работа с файловой переменной начинается с того, что ее имя связывается с конкретным физическим файлом. Для этого идентификатор файловой переменной и имя физического файла в операционной системе, или внешнее имя, задаются в вызове процедуры ASSIGN, например:

assign(f‘myfile.dat’)

Второй аргумент, внешнее имя, задается выражением строчного типа, в частности string. Например, если строки s1 и s2 имеют значение ‘c:\mydir\book’ и ‘txt’, тo:

assign(f,  s1 +  ‘.’ + s2)

задает связывание файловой переменной f с файлом c:\mydir\book.txt.

Файловые переменные с именами INPUT и OUTPUT связываются неявно (т.е. без указания в программе) со стандартными файлами ввода и вывода – клавиатурой и экраном компьютера. Их еще называют стандартными устройствами ввода-вывода. Определять явно имена input и output и связывать их с другими физическими файлами не запрещено, но делать это не рекомендуется. Они также могут не указываться в вызовах подпрограмм обработки файлов.

Пример:

Пусть выполняется программа со следующими определениями и операторами:

var f : text;

  fn, st : string;

begin     

fn :=‘default.dat’;                                               {default –“поумолчанию”}

write(‘Если Вы нажмете ENTERf будет’);

writeln(‘связан c “default.dat”. ‘) ;

writeln(‘Для изменения связывания f введите имя файла: ‘);

readln( st );

if st<>‘ ‘  then fn := st;

assign(ffn);

end.

Если пользователь желает связать имя f с файлом, внешнее имя которого default.dat, то ему достаточно лишь нажать клавишу [Enter]. Если ему нужно задать другое связывание, то он может набрать на клавиатуре имя физического файла, например newname.dat, и нажать [Enter].

Итак, после вызова процедуры Assign физический файл можно обозначать именем файловой переменной. Но работать с элементами можно лишь после открытия соответствующей файловой переменной. Процедура Assignне задает открытия файла – открытие задается процедурами, которые рассматриваются далее.

Сейчас мы опишем лишь закрытие файла, которое задается процедурой CLOSE:

close   (f)

Выполнение такого вызова не разрывает связи имени f  с физическим файлом, но чтение и запись с помощью этого имени невозможны до следующего открытия или нового связывания с дальнейшим открытием. 

Попытка закрыть уже закрытую или еще не открытую файловую переменную приводит к аварийному завершению программы.

Таким образом, стандартный порядок действий с файловой переменной можно представить в таком виде:

связывание

открытие

обработка

закрытие

новое открытие или связывание и открытие

обработка

закрытие

и т.д.

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

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

Похожие материалы

Информация о работе