Лабораторная работа №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(‘Если Вы нажмете ENTER, f будет’);
writeln(‘связан c “default.dat”. ‘) ;
writeln(‘Для изменения связывания f введите имя файла: ‘);
readln( st );
if st<>‘ ‘ then fn := st;
assign(f, fn);
…
end.
Если пользователь желает связать имя f с файлом, внешнее имя которого default.dat, то ему достаточно лишь нажать клавишу [Enter]. Если ему нужно задать другое связывание, то он может набрать на клавиатуре имя физического файла, например newname.dat, и нажать [Enter].
Итак, после вызова процедуры Assign физический файл можно обозначать именем файловой переменной. Но работать с элементами можно лишь после открытия соответствующей файловой переменной. Процедура Assignне задает открытия файла – открытие задается процедурами, которые рассматриваются далее.
Сейчас мы опишем лишь закрытие файла, которое задается процедурой CLOSE:
close (f)
Выполнение такого вызова не разрывает связи имени f с физическим файлом, но чтение и запись с помощью этого имени невозможны до следующего открытия или нового связывания с дальнейшим открытием.
Попытка закрыть уже закрытую или еще не открытую файловую переменную приводит к аварийному завершению программы.
Таким образом, стандартный порядок действий с файловой переменной можно представить в таком виде:
связывание
открытие
обработка
закрытие
новое открытие или связывание и открытие
обработка
закрытие
и т.д.
Прежде чем рассматривать подпрограммы открытия и обработки файлов, рассмотрим файловые переменные подробнее.
После связывания физический файл становится составной частью файловой переменной. Он расположен на внешнем носителе, а не в оперативной памяти компьютера, поэтому его элементы не являются обычными переменными программы. Основной особенностью файла является то, что в любой момент выполнения программы из всех его элементов можно обрабатывать, т.е. читать или записывать, лишь один. Он называется доступным элементом файла. Все остальные элементы в этот момент недоступны для обработки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.